1、《C次序 方案 》期末复习练习 题及参考答案 (2) 一、单项选择 题 1.揣摸 字符串s1与字符串s2相当 ,应当应用 : 。 A) if (s1 = s2) B) if (strcmp(s1, s2)) √C) if (!strcmp(s1, s2)) D) if (strcmp(s1, s2) = 0) 2.二维数组a有m行n列,那么在a[i][j]之前的元素个数为〔 〕。 A. j*n+i √B. i*n+j C. i*n+j-1 D. i*n+j+1 3.以下次序 实行
2、 后的输出结果是〔 〕。
#include
3、5. 下面哪个定义 是合理 的 。 A) char a[8] = "language"; B) int a[5] = {0,1,2,3,4,5}; √C) char *a = "string"; D) int a[2][] = {0,1,2,3,4,5,6}; 6. 一个C语言 的语句必须 应用 的终了标志 是〔 〕。 A) , B) 。 √C) ; D) : 7. 以下表达 精确 的选项是〔 〕。 A)C次序 中的注释只能出现在次序 的开始位置跟 语句的后面。 B)C次序 抄写
4、 格式 严峻,恳求 一行内只能写一个语句。 √C)C次序 抄写 格式 自由,一个语句可以 写在多行上。 D)用C语言 编写的次序 只能放在一个源次序 文 件中。 8. 以下选项中不克不迭 作为合理 常量的是〔 〕。 A) 1.234e04 B) 1.234e+4 √ 9. 以下选项中合理 的用户标识符是〔 〕。 A) int B) #max √C) _3int D) A.max 10. 设x跟 y均是int型变量,那么实行 以下语句后的输出为〔 〕。 x=15;y=5;printf("%
5、d\n",x%=(y%2));
√A) 0 B) 1 C) 6 D) 12
11. 设x,y跟 z根本上 int型变量,且x=3,y=4,z=5,那么以下表达 式中,值为0的表达 式是〔 〕。
A) x&&y √B) !(x
6、)
{ int a = 1, b = 2, c = 3;
c += fun(a,b) + a;
printf("%d,%d,%d\n",a, b, c );
return 0;
}
√A) 1,2,9 B) 2,3,10 C) 1,2,10 D) 2,3,9
13. 有以下次序 ,次序 实行 后的输出结果是〔 〕。
#include
7、p[x];
printf("%d\n",y);
return 0;
}
A) 10 B) 11 √C) 14 D) 15
14. 有以下次序 ,以下表达 精确 的选项是〔 〕。
#include
8、统会自动 添加 字符串终了符,故输出的长度都为3。 √B) 由于 p数组中不 字符串终了符,长度不克不迭 判定 ;但q数组中字符串长度为3。 C) 由于 q数组中不 字符串终了符,长度不克不迭 判定 ;但p数组中字符串长度为3。 D) 由于 p跟 q数组中都不 字符串终了符,故长度都不判定 。 15. 以下可用于C语言 用户标识符的一组是〔 〕。 A)void, define, WORD √B)a3_3,_123,Car C)For, -abc, IF Case D)2a, DO, sizeof 16. 以下选项中不属于字符常
9、量的是 A)′C′ √B)′′C′′ C)′\xCC′ D) ′\072′ 17. 〔15〕以下定义 语句中精确 的选项是〔 〕。 A)int a=b=0; √B)char A=65+1,b=′b′; C)float a=1,*b=&a,*c=&b; D)double a=00;b=1.1; 18. 当变量c的值不为2、4、6时,值也为"真"的表达 式是〔 〕。 A)(c==2)||(c==4)||(c==6) √B)(c>=
10、2&& c<=6)||(c!=3)||(c!=5) C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&& c<=6)&&(c%2!=1) 19. 下面说明不精确 的选项是〔 〕。 A)char a[10]="china"; B)char a[10],*p=a; p="china"; C)char *a;a="china"; √D)char a[10],*p; p=a="china"; 20. 有定义 语句:char s[10];,假设 要从终端给s输出5个字符,差错 的输出语句是〔 〕。
11、
A)gets(&s[0]); B)scanf("%s",s+1); C)gets(s); √D)scanf("%s",s[1]);
21. 有以下次序 ,次序 实行 后的输出结果是〔 〕。
#include
12、A) 在C次序 中,不论是整数仍然 实数,都能被精确无误的表示 B) 在C次序 中,变量名代表存储器中的一个位置 C) 静态变量的生涯 期与全体 次序 的生涯 期一样 D) C语言 中变量必须 先定义 后引用 23. 以下表达 中差错 的选项是〔 〕。 A)在次序 中凡是以"#"开始的语句行根本上 预处理 命令 行 B)预处理 命令 行的最后不克不迭 以分号表示 终了 C)#define MAX 是合理 的宏定义 命令 行 √D)C次序 对预处理 命令 行的处理 是在次序 实行 的过程 中停顿的 2
13、4. 设有以下说明语句 typedef struct { int n; char ch[8]; } PER; 那么下面表达 中精确 的选项是〔 〕。 A)PER 是结构体变量名 √B)PER是结构体典范 名 C)typedef struct 是结构体典范 D)struct 是结构体典范 名 25. 以下表达 中差错 的选项是〔 〕。 A)gets函数用于从终端读入字符串 √B)getchar函数用于从磁盘文件读入字符 C)fputs函数用于把字符串输出到文件 D)fwrite函数用于以二进制方法 输
14、出数据到文件
26. 有以下次序
#include
15、为3 D) 由于 p跟 q数组中都不 字符串终了符,故长度都不克不迭 判定 27. 设有: int a=1,b=2,c=3,d=4,m=2,n=2; 实行 (m=a>b)&&(n=c>d)后,n的值是〔 〕。 A)1 √B)2 C)3 D)4 28. 设有如下定义 : int x=10,y=3,z; 那么语句 printf("%d\n",z=(x%y,x/y)); 的输出结果是〔 〕。 A) 0 B) 1 √C) 3 D) 4 29. 下面的次序 #
16、include
17、p+i); printf("%d\n", s); } A) 7 √B)6 C) 3 D) 8 二、填空题 1、函数add恳求 打算 两个整数之跟 ,并通过形参前去 该值,代码如下: void add(int x, int y, int *sum ) { *sum = x + y; } 2、 次序 方案 中,需要 定义 一个指针变量p,该变量可以 指向一个长度为5的字符型数组,定义 代码如下: char (*p)[5]; 。 3、设整型变量n的值为2,实行 语句“n+=n-=n*n〞后,n
18、的值是 - 4 。 4、共用体跟 结构体的定义 格式 类似,差异 点是 结构体的成员占据 各自差异 的空间,而共用体的各成员放到一致 存储空间。 。 5、 设变量max、a、b已经正判定 义,假设 恳求 a跟 b的最大年夜 值,并赋值给max,代码为:max = a > b ? a:b ;。 6、以下次序 的输出结果是 7,1 。 int ast(int x,int y,int * cp,int * dp) { *cp=x+y; *dp=x-y; } main() {
19、int a=4,b=3,c,d; ast(a,b,&c,&d); printf("%d,%d/n",c,d); } 7、有如下输出语句:scanf(“a=%d,b=%d,c=%d〞,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输出数据的精确 方法 应是 a=1,b=3,c=2 。 8、 一个共用体典范 的变量,其所占内存的大小 是:由占据 内存空间最大年夜 的成员决定 。, 9、 设有定义 :int x=12,n=5; 那么表达 式 x%=(n%2) 的值为 0 。
20、
10、设有float x;写出掉 掉 落 x小数部分的表达 式 x-(int)x 。
〔假设 x为12.345,那么表达 式的结果为0.345〕
三、次序 运行 结果分析题
1.
#include
21、
2.
#include
22、 }
}
运行 结果是:
x = 10
0
1
2
3
3.
#include
23、00;
p.month = 5;
p.day = 22;
}
main()
{ struct date d;
d.year = 1999;
d.month = 4;
d.day = 23;
printf("%d,%d,%d\n", d.year, d.month, d.day);
func(d);
printf("%d,%d,%d\n", d.year, d.month, d.day);
}
次序 运行 结果为:
1999,4,23
1999,4,23
5.
#include
24、y)
{ printf("*y = %d\n", *y);
*y += 20;
printf("*y = %d\n", *y);
}
main()
{ int x = 10;
printf("x = %d\n", x);
Fun(&x);
printf("x = %d\n", x);
}
次序 运行 结果是:
x = 10
*y = 10
*y = 30
x = 30
6. 当运行 以下次序 时,运行 结果是____4332____。
#include
25、3,4,4,3,2,1,1,1,2,3}, c[5] = {0}, i;
for(i = 0; i < 12; i++) c[ s[i] ] ++;
for(i = 1; i < 5; i++) printf("%d",c[i]);
printf("\n");
return 0;
}
7.当运行 以下次序 时,运行 结果是___________ ___。
#include
26、 main()
{ float score[N]={90,80,70.5,98,60.5,95,53,85,75,90};
printf("max = %6.2f\nmin = %6.2f\naverage = %6.2f\n",max,min,fun(score,N));
return 0;
}
float fun(float *array, int n)
{ int i;
float sum=array[0];
max=min=array[0];
for( i=1;i
27、 else if(array[i]
28、 pEnd) scanf( "%f", pData++ ); } float sum( float *a, int n ) { float s = 0; float *pData, *pEnd; pData = a, pEnd = &a[n-1]; while( pData <= pEnd) s += *pData++; return s; } int mink( float *a, int n ) { float *pData, *pEnd, *pKData; pData = a, pEnd = &a[n-1], pKData
29、 a; while( ++pData <= pEnd) {if ( *pData < *pKData ) pKData = pData; } return pKData - a; } main() { float a[5]; int k; input( a, 5 ); printf( "Sum=%6.2f\n", sum(a,5) ); k = mink( a, 5 ); printf( "Min:a[%d]=%6.2f\n", k, a[k] ); } Sum =399.00 Min:a[1] = 56.0
30、0
9.有以下次序
#include
31、
四、次序 填空题
阅读 次序 ,在标有下划线的空白 处填入适当 的表达 式或语句,使次序 残缺并符合 题目 恳求 。
1. 从键盘任意 输出一个年号,揣摸 它是否 是闰年。假设 是闰年,输出“Yes〞,否那么输出“No〞。已经清楚 符合 以下条件 之一者是闰年:
能被4整除,但不克不迭 被100整除。
能被400整除。
#include
32、ar%100!=0 || year%400==0 )
{
flag = 1;
}
else
{
flag = 0;
}
if ( flag )
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
2. 编程揣摸 m是否 为素数。
#include
33、 main() { int n, flag; printf("Input n:"); scanf("%d", &n); flag = IsPrime(n); if (flag) { printf("它是素数\n"); } else { printf("它不是素数\n"); } } int IsPrime(int m) { int i, k; if (m <= 1) { return 0; } for (i=2; i<=sqr
34、t(m); i++)
{
k = m % i;
if (k == 0)
{
return 0;
}
}
return 1 ;
}
3.以下次序 在数组a中同时查寻 最大年夜 元素下标跟 最小元素下标,分不存放在main函数的变量max跟 min中,请补齐呼应 代码使次序 可以 精确 运行 。
#include






