《C程序设计》试卷2参考答案
- 格式:doc
- 大小:54.50 KB
- 文档页数:7
一.填空(每空1分,共20 分)
1. 定义数组 float a[5][7], 则 a[i][j]中i的正确范围值为0-4,
j的正确范围值为 0-6,该数组共占140字节,在
a[i][j] 前的元素个数为 i*7+j 。
2. printf(“\\C++ program\\\n”);的输出结果为\C++ program\。
3. 设 int a=12; 则a+=a-=a*a的值为-264 。
4.取变量地址的运算符是& ,取指针指向的地址的内容的运算符是* 。
5. 计算机系统的五大组成部分是运算器、控制器、
存储器、输入设备和输出设备。
6. 设int i=-1; 则printf(“dec:%d,oct:%o,hex:%x,unsigned:%u\n”,i,i,i,i)的执行结果为 -1 , 177777 , ffff , 65535 。
7.一个C源程序至少包含一个___main_________函数
8.对函数类型的说明,实际上是对函数的返回值作类型说明。
9.若a是int 型变量,则执行下面表达式后a的值为 2 。
a=25/3%3
二.选择题(25分.其中1-9为1分一题,10-17为2分一题)
1.如c为字符变量,则不合法的赋值语句为 B。
A. c=’\65’;
B. c=’65’;
C. c=’\xff’;
D.c=’a’;
2. 若用数组名作为函数调用的实参,传递给形参的是A。
A.数组的第一个元素的地址。
B. 数组第一个元素的值。
C.数组全部元素的地址.
D. 数组全部元素的值。
3.在下列程序段中,哪一个形成无限循环D。
A.int k=100; do {--k;} while (k>0);
B.int s=100; while (s) --s;
C.int i; for (i=1; i<=100; i++);
D.int i=1; while (1) ++i;
4.在C语言中,当一个表达式的值为逻辑“真”时,该表达式的值一定是 C。
A. T B。
TRUE C。
非0数值 D。
数值1
5. 以下哪一个不是结构化程序设计的基本结构B。
A.顺序结构 B。
细化结构 C。
选择结构 D。
循环结构
6. 设有定义语句“int x[ ]={1,3,5,7,9,11,13}, *p=x;”,则不能正确引用数组
x的合法元素的表达式是B。
A. *(p--)
B. *(--p)
C. *(p++)
D. *(++p)
7. 下列符号串中,合法的十进制整形常量是D。
A.09876
B.0x9876
C. 9.876*e4
D. –9876
8. 设x,y均为float型的变量,则以下不合法的赋值语句是B。
A. ++x;
B. y=(x%2)/10;
C. x*=y+8;
D. x=y=0;
9.下面四个选项中,均不合法的用户标识符的选项是 C 。
A. A
B. float
C. b-a
D. _123
P_0 1a0 goto temp
Do _A int INT
10.执行了下面赋值语句后,x的值是 C ?
int i;
float x;
x = i = 7.8;
A. 7
B. 8
C. 7.0
D. 7.8
E. 8.0
11.下面的代码的返回值是 C ?
int j=2, k=3; return (j<k) ? ++j : ++k;
A. 1
B. 2
C. 3
D. 4
E. 5 12.在C 语言中,表达式d c b a x -+=
应表示为 C 。
A.
x = a + b / c – d; B.
x = a + b / (c – d); C.
x = (a + b) / (c – d); D.
x = (a + b) / c – d; E. 上面四个答案都正确
13.对结构体变量rect ,正确的赋值方式是 B :
struct {
int length, breadth;
} rect; A.
rect->length = 3; rect->breadth = 5; B.
rect.length = 3; rect.breadth = 5; C.
rect = { 3, 5 }; D. rect { length=3; breadth=5 };
D. 上面四个答案都正确
14.下面的代码打印出 D 行“Hello”?
int j, k;
for (j=1; j<=5; j++)
for (k=1; k<=j; ++k) printf("Hello\n");
A. 5
B. 9
C. 10
D. 15
E. 25
15.已知:int b, *p= &b; 则下列函数调用中错误的是___B__________。
A. scanf(“%d”, &b );
B. printf(“%d”, p );
C. scanf(“%d”, p );
D. printf(“%d”, b );
16.给定如下所示的六个整型数,用气泡排序法按递增次序进行排序,第一次起泡后六个数的排列次序应为 D :
6, 2, 9, 5, 1, 8
A. 9, 8, 6, 5, 2, 1
B. 1, 2, 5, 6, 8, 9
C. 2, 5, 6, 1, 8, 9
D. 2, 6, 5, 1, 8, 9
E. 2, 6, 5, 9, 1, 8
17.下列语句中的 D 能将字符类型的变量ch的值从小写转换为对应的大写字母?
A. ch += 'A';
B. ch += 'a';
C. ch = (ch – 'A') + 'a';
D. ch = (ch – 'a') + 'A';
E.ch = 'a' – 'A';
三.写出下列代码的输出结果(35分)。
1.i nt A[3] = { 2, 7, 5 }; 2 3
int *p;
p = A;
printf("%d %d\n", *p, ++(*p));
2.m ain() “bqqmf”
{
char A[] = "apple";
magic(A);
printf("%s\n", A);
}
void magic(char *s)
{
while (*s) { (*s)++; s++; }
}
3.f(30) 的返回值是多少? 30!
int f(int n)
{
if (n==1) return 1;
else return n*f(n-1);
}
4.f or (k=0; k<2; ++k); 2 0 2 1 for (m=0; m<2; ++m)
printf("%d %d; ", k, m);
5.f or (i=0, n=12345; n>0; n/=100)
i += n%100; 69
printf("%d\n", i);
6.long f(n) 34
int n;
{ static x=1;
if (n==0) return (1);
else {x=x*n; return(x); }
}
main()
{printf(“%d”,f(0)+f(1)+f(2)+f(3)+f(4));
}
7.main() n=6
{int n=0;
while (n++<=4); printf(“n=%d”,n);
}
四.程序填空(10分)
1.函数delnum的功能是删除字符串s中的数字,请填空。
delnum (char *s)
{int i, j;
for (i=0, j=0;s[i]!=’\0’; ++i)
if ( s[i]<’0’ || s[i]>’9’)
{s[j]=s[i]; j++;}
s[j]=’\0’ ;
}
2.下面程序的功能是从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。
#include “stdio.h”
main()
{int a,b,c;
printf(“\n 红白黑\n”);
for (a=0;a<=3;a++)
for ( b=1 ;b<=5;b++)
{c= 8-a-b ;
if ( c<=6 ) printf(“ %3d %3d %3d\n ”,a,b,c); }
}
五. 编程题[10分]
1.编一程序利用公式e =++++1111213!!!
....求e 的近似值。
要求精度为10-6。
2.编一函数求∑=n
i i 1。