您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页《C程序设计》期末复习练习题及参考答案(2)

《C程序设计》期末复习练习题及参考答案(2)

来源:意榕旅游网
《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.以下程序执行后的输出结果是( )。 #include #include main()

{ printf(\"%d\\n\

√A) 10 B) 11 C) 16 D) 12

4.有如下程序片段:

int i = 0;

while(i++ <= 2); printf(\"%d\

则正确的执行结果是:

A) 2 B) 3 √C) 4 D) 程序陷入死循环

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程序书写格式严格,要求一行内只能写一个语句。 √C)C程序书写格式自由,一个语句可以写在多行上。 D)用C语言编写的程序只能放在一个源程序文件中。

8. 以下选项中不能作为合法常量的是( )。

A) 1.234e04 B) 1.234e+4 √C) 1.234e0.4 D) 1.234e0

9. 以下选项中合法的用户标识符是( )。

A) int B) #max √C) _3int D) A.max

1

10. 设x和y均是int型变量,则执行下列语句后的输出为( )。

x=15;y=5;printf(\"%d\\n\

√A) 0 B) 1 C) 6 D) 12

11. 设x,y和z都是int型变量,且x=3,y=4,z=5,则下列表达式中,值为0的表达式

是( )。

A) x&&y √B) !(x12. 以下程序运行结果是( )。

#include int fun(int i, int j) { i++, j++; return i + j; }

int main()

{ int a = 1, b = 2, c = 3; c += fun(a,b) + a; printf(\"%d,%d,%d\\n\ return 0; } √A) 1,2,9 B) 2,3,10 C) 1,2,10 D) 2,3,9

13. 有以下程序,程序执行后的输出结果是( )。

#include int main()

{ int a[] = {2, 4, 6, 8, 10}, y = 0, x, *p; p = &a[1]; for(x = 1; x < 3; x++) y+=p[x]; printf(\"%d\\n\ return 0; }

A) 10 B) 11 √C) 14 D) 15

14. 有以下程序,以下叙述正确的是( )。

#include #include int main()

{ char p[] = {'a','b','c'}, q[10] = {'a','b','c'}; printf(\"%d %d\\n\ return 0; }

A)在给p和q数组赋初值时,系统会自动添加字符串结束符,故输出的长度都为3。 √B) 由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3。 C) 由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3。 D) 由于p和q数组中都没有字符串结束符,故长度都不确定。

2

15. 下列可用于C语言用户标识符的一组是( )。

A)void, define, WORD √B)a3_3,_123,Car C)For, -abc, IF Case D)2a, DO, sizeof

16. 以下选项中不属于字符常量的是

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>=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个字符,错误的输入语句是( A)gets(&s[0]); B)scanf(\"%s\ C)gets(s); √D)scanf(\"%s\

21. 有以下程序,程序执行后的输出结果是( )。

#include void main()

{ unsigned short a = 65535; short b; b = a;

printf(\"%d\\n\}

A) 65535 B) 0 √ C) -1 D) 1

22. 在C语言中,以下叙述不正确的是( )。

√A) 在C程序中,无论是整数还是实数,都能被准确无误的表示 B) 在C程序中,变量名代表存储器中的一个位置 C) 静态变量的生存期与整个程序的生存期相同 D) C语言中变量必须先定义后引用

23. 以下叙述中错误的是( )。

A)在程序中凡是以\"#\"开始的语句行都是预处理命令行 B)预处理命令行的最后不能以分号表示结束 C)#define MAX 是合法的宏定义命令行

√D)C程序对预处理命令行的处理是在程序执行的过程中进行的

24. 设有以下说明语句

3

。 )

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函数用于以二进制形式输出数据到文件

26. 有以下程序

#include main()

{ char p[]={′a′, ′b′, ′c′},q[10]={ ′a′, ′b′, ′c′}; printf(\"%d%d\\n\ 以下叙述中正确的是( )。

A) 在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3 √B) 由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3 C) 由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为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\

的输出结果是( )。

A) 0 B) 1 √C) 3 D) 4

29. 下面的程序

#include void main() {

char ch;

scanf(\"%3c\printf(\"%c\}

如果从键盘上输入 abc回车 则程序的运行结果是( )。

4

√A) a B) b C) c D) 程序语法出错

30. 以下程序的运行结果是( )。

#include void main()

{ int x[]={1,2,3}; int s,i,*p=x; s=1;

for(i=0;i<3;i++)s*=*(p+i); printf(\"%d\\n\}

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的值是 - 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()

{ int a=4,b=3,c,d; ast(a,b,&c,&d);

printf(\"%d,%d/n\

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 。

10、设有float x;写出得到x小数部分的表达式 x-(int)x 。

(假设x为12.345,则表达式的结果为0.345)

5

三、程序运行结果分析题 1.

#include main( )

{ int a = 5, b = 4, x, y; x = 2 * a++ ; printf(\"a=%d, x=%d\\n\ y = --b * 2 ; printf(\"b=%d, y=%d\\n\}

则程序运行结果是: a=6, x=10 b=3, y=6 2.

#include void fun1(int x) { x=20;}

void fun2(int b[4]) { int j;

for(j=0; j<4; j++) { b[j]=j; } }

main()

{ int x = 10;

int a[4] = {1,2,3,4}, k; fun1(x);

printf(\"x = %d\\n\ fun2(a);

for(k=0; k<4; k++)

{ printf(\"%d\\n\ } }

运行结果是: x = 10 0 1 2 3 3.

#include main()

{ int x, y; scanf(\"%2d%*4s%2d\ printf(\"%d\}

程序运行时输入:123456789↙

6

则程序运行结果是:66 4.

#include struct date { int year; int month; int day; };

void func(struct date p) { p.year = 2000; p.month = 5; p.day = 22; }

main()

{ struct date d; d.year = 1999; d.month = 4; d.day = 23;

printf(\"%d,%d,%d\\n\ func(d);

printf(\"%d,%d,%d\\n\}

程序运行结果为: 1999,4,23 1999,4,23 5.

#include void Fun(int *y)

{ printf(\"*y = %d\\n\ *y += 20; printf(\"*y = %d\\n\}

main()

{ int x = 10; printf(\"x = %d\\n\ Fun(&x); printf(\"x = %d\\n\}

程序运行结果是: x = 10 *y = 10 *y = 30 x = 30

6. 当运行以下程序时,运行结果是____4332____。 #include int main()

7

{

}

7.当运行以下程序时,运行结果是___________ ___。 #include #define N 10

float fun(float *array, int n); float max, min; int 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\ return 0; }

float fun(float *array, int n) { int i; float sum=array[0]; max=min=array[0]; for( i=1;imax)max = array[i]; else if(array[i]8.当运行以下程序时,从键盘输入如下内容并回车:95 56 75 88 85 ,则下面程序的运行结果是_____________________(输出共2行)。 #include

void input( float *a, int n ) { float *pData, *pEnd; pData = a, pEnd = &a[n-1];

while( pData <= pEnd) scanf( \"%f\}

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;

int s[12] = {1,2,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\printf(\"\\n\"); return 0;

8

pData = a, pEnd = &a[n-1], pKData = 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\ k = mink( a, 5 );

printf( \"Min:a[%d]=%6.2f\\n\}

Sum =399.00 Min:a[1] = 56.00

9.有以下程序

#include main()

{ FILE *fp; int a[10]={1,2,3},i,n; fp=fopen(\"d1.dat\

for(i=0;i<3;i++) fprintf(fp,\"%d\ fprintf(fp,\"\\n\"); fclose(fp);

fp=fopen(\"d1.dat\ fscanf(fp,\"%d\ fclose(fp);

printf(\"%d\\n\ }

程序的运行结果是 123 。

四、程序填空题

阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。

1. 从键盘任意输入一个年号,判断它是否是闰年。若是闰年,输出“Yes”,否则输出“No”。已知符合下列条件之一者是闰年:

能被4整除,但不能被100整除。 能被400整除。 #include main() {

int year, flag;

printf(\"Enter year:\");

9

scanf(\"%d\

if ( year%4==0&&year%100!=0 || year%400==0 ) {

flag = 1; } else {

flag = 0; }

if ( flag ) {

printf(\"Yes\\n\"); } else { printf(\"No\\n\"); } }

2. 编程判断m是否为素数。 #include #include int IsPrime(int m);

main() {

int n, flag; printf(\"Input n:\"); scanf(\"%d\ flag = IsPrime(n); if (flag) { printf(\"它是素数\\n\"); } else { printf(\"它不是素数\\n\"); } }

int IsPrime(int m) {

int i, k; if (m <= 1) { return 0;

10

}

for (i=2; i<=sqrt(m); i++) { k = m % i; if (k == 0) { return 0; } }

return 1 ; }

3.以下程序在数组a中同时查找最大元素下标和最小元素下标,分别存放在main函数的变量max和min中,请补齐相应代码使程序能够正确运行。 #include

void find(int *a, int n, int *max, int *min) {

int i;

*max = *min = 0; for(i = 1; i < n; i++) { if( a[i] > a[*max]) ____ *max=i ___; else if(a[i] < a[*min]) ____ *min=i _____; } }

int main()

{ int a[] = {5,9,7,8,2,6,3}; int max,min;

find(_____a,7,&max,&min ______);

printf(\"max = a[%d],min = a[%d]\\n\ return 0; }

11

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务