1、C程序设计期末复习练习题及参考答案2C程序设计期末复习练习题及参考答案(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列,则在aij之前的元素个数为( )。A. j*n+i B. i*n+j C. i*n+j-1 D. i*n+j+13以下程序执行后的输出结果是( )。#include#includemain() printf(%dn, strlen(IBMn012t0);A) 10
2、 B) 11 C) 16 D) 124有如下程序片段:int i = 0;while(i+ = 2); printf(%d, i);则正确的执行结果是:A) 2 B) 3 C) 4 D) 程序陷入死循环5. 下面哪个定义是合法的 。A) char a8 = language;B) int a5 = 0,1,2,3,4,5;C) char *a = string;D) int a2 = 0,1,2,3,4,5,6;6. 一个C语言的语句必须使用的结束符号是( )。A) , B) 。 C) ; D) :7. 以下叙述正确的是( )。 A)C程序中的注释只能出现在程序的开始位置和语句的后面。 B)C
3、程序书写格式严格,要求一行内只能写一个语句。C)C程序书写格式自由,一个语句可以写在多行上。D)用C语言编写的程序只能放在一个源程序文件中。8. 以下选项中不能作为合法常量的是( )。A) 1.234e04 B) 1.234e+4 C) 1.234e0.4 D) 1.234e09. 以下选项中合法的用户标识符是( )。A) int B) #max C) _3int D) A.max10. 设x和y均是int型变量,则执行下列语句后的输出为( )。x=15;y=5;printf(%dn,x%=(y%2);A) 0 B) 1 C) 6 D) 1211. 设x,y和z都是int型变量,且x=3,y=
4、4,z=5,则下列表达式中,值为0的表达式是( )。A) x&y B) !(xy&!z | 1) C) x=y D) x|+y&y-z12. 以下程序运行结果是( )。#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,%dn,a, b, c ); return 0;A) 1,2,9 B) 2,3,10 C) 1,2,10 D) 2,3,913. 有以下程序,程序执行后的输出结果是( )。#include i
5、nt main() int a = 2, 4, 6, 8, 10, y = 0, x, *p; p = &a1; for(x = 1; x 3; x+) y+=px; printf(%dn,y); return 0;A) 10 B) 11 C) 14 D) 1514. 有以下程序,以下叙述正确的是( )。#include #include int main() char p = a,b,c, q10 = a,b,c; printf(%d %dn,strlen(p),strlen(q); return 0;A)在给p和q数组赋初值时,系统会自动添加字符串结束符,故输出的长度都为3。B) 由于p数
6、组中没有字符串结束符,长度不能确定;但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. 以下选项中不属于字符常量的是A)C B)C C)xCC D) 07217. (15)以下定义语句中正确的是( )。A)int a=b=0; B)char A=65+1,b=b; C)float
7、a=1,*b=&a,*c=&b; D)double a=0 0;b=1.1; 18. 当变量c的值不为2、4、6时,值也为真的表达式是( )。A)(c=2)|(c=4)|(c=6) B)(c=2& c=2&c=2& c=6)&(c%2!=1) 19. 下面说明不正确的是( )。A)char a10=china; B)char a10,*p=a; p=china; C)char *a;a=china; D)char a10,*p; p=a=china;20. 有定义语句:char s10;,若要从终端给s输入5个字符,错误的输入语句是( )。A)gets(&s0); B)scanf(%s,s+1
8、); C)gets(s); D)scanf(%s,s1); 21. 有以下程序,程序执行后的输出结果是( )。#includevoid main() unsigned short a = 65535;short b;b = a;printf(%dn,b);A) 65535 B) 0 C) -1 D) 1 22. 在C语言中,以下叙述不正确的是( )。 A) 在C程序中,无论是整数还是实数,都能被准确无误的表示B) 在C程序中,变量名代表存储器中的一个位置C) 静态变量的生存期与整个程序的生存期相同D) C语言中变量必须先定义后引用23. 以下叙述中错误的是( )。A)在程序中凡是以#开始的语句
9、行都是预处理命令行 B)预处理命令行的最后不能以分号表示结束 C)#define MAX 是合法的宏定义命令行 D)C程序对预处理命令行的处理是在程序执行的过程中进行的24. 设有以下说明语句typedef struct int n; char ch8; PER; 则下面叙述中正确的是( )。A)PER 是结构体变量名 B)PER是结构体类型名 C)typedef struct 是结构体类型 D)struct 是结构体类型名25. 以下叙述中错误的是( )。A)gets函数用于从终端读入字符串 B)getchar函数用于从磁盘文件读入字符C)fputs函数用于把字符串输出到文件 D)fwrit
10、e函数用于以二进制形式输出数据到文件26. 有以下程序#includemain() char p=a, b, c,q10= a, b, c; printf(%d%dn,strlen(p),strlen(q); 以下叙述中正确的是( )。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; 执
11、行 (m=ab)&(n=cd)后,n的值是( )。A)1 B)2 C)3 D)428. 设有如下定义: int x=10,y=3,z;则语句 printf(%dn,z=(x%y,x/y);的输出结果是( )。A) 0 B) 1 C) 3 D) 429. 下面的程序#includevoid main()char ch;scanf(%3c, &ch);printf(%c, ch);如果从键盘上输入 abc回车则程序的运行结果是( )。 A) a B) b C) c D) 程序语法出错30. 以下程序的运行结果是( )。#include void main() int x=1,2,3; int s,
12、i,*p=x; s=1; for(i=0;i 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,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、
13、设有定义:int x=12,n=5; 则表达式 x%=(n%2) 的值为0 。10、设有float x;写出得到x小数部分的表达式 x-(int)x 。(假设x为12.345,则表达式的结果为0.345)三、程序运行结果分析题1#include main( ) int a = 5, b = 4, x, y; x = 2 * a+ ; printf(a=%d, x=%dn, a, x); y = -b * 2; printf(b=%d, y=%dn, b, y);则程序运行结果是:a=6, x=10b=3, y=62#includevoid fun1(int x) x=20;void fun2(
14、int b4) int j; for(j=0; j4; j+) bj=j; main() int x = 10; int a4 = 1,2,3,4, k; fun1(x); printf(x = %dn, x); fun2(a); for(k=0; k4; k+) printf(%dn, ak); 运行结果是:x = 1001233#include main() int x, y; scanf(%2d%*4s%2d, &x, &y); printf(%d, y-x);程序运行时输入:123456789则程序运行结果是:664#include struct date int year; int
15、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,%dn, d.year, d.month, d.day); func(d); printf(%d,%d,%dn, d.year, d.month, d.day);程序运行结果为:1999,4,231999,4,235#includevoid Fun(int *y) printf(*y = %
16、dn, *y); *y += 20; printf(*y = %dn, *y);main() int x = 10; printf(x = %dn, x); Fun(&x); printf(x = %dn, x); 程序运行结果是:x = 10*y = 10*y = 30x = 306. 当运行以下程序时,运行结果是_4332_。#include int main() int s12 = 1,2,3,4,4,3,2,1,1,1,2,3, c5 = 0, i; for(i = 0; i 12; i+) c si +; for(i = 1; i 5; i+) printf(%d,ci);print
17、f(n); return 0;7当运行以下程序时,运行结果是_ _。#include #define N 10float fun(float *array, int n);float max, min;int main() float scoreN=90,80,70.5,98,60.5,95,53,85,75,90; printf(max = %6.2fnmin = %6.2fnaverage = %6.2fn,max,min,fun(score,N); return 0;float fun(float *array, int n) int i; float sum=array0; max=m
18、in=array0; for( i=1;imax)max = arrayi; else if(arrayimin) min = arrayi; sum = sum + arrayi; return sum/n;8当运行以下程序时,从键盘输入如下内容并回车:95 56 75 88 85 ,则下面程序的运行结果是_(输出共2行)。#include void input( float *a, int n ) float *pData, *pEnd; pData = a, pEnd = &an-1; while( pData = pEnd) scanf( %f, pData+ );float sum(
19、 float *a, int n ) float s = 0; float *pData, *pEnd; pData = a, pEnd = &an-1; while( pData = pEnd) s += *pData+; return s;int mink( float *a, int n ) float *pData, *pEnd, *pKData; pData = a, pEnd = &an-1, pKData = a; while( +pData = pEnd) if ( *pData *pKData ) pKData = pData; return pKData - a;main(
20、) float a5; int k; input( a, 5 ); printf( Sum=%6.2fn, sum(a,5) ); k = mink( a, 5 ); printf( Min:a%d=%6.2fn, k, ak );Sum =399.00Min:a1 = 56.009有以下程序#include main() FILE *fp; int a10=1,2,3,i,n; fp=fopen(d1.dat,w); for(i=0;i3;i+) fprintf(fp,%d,ai); fprintf(fp,n); fclose(fp); fp=fopen(d1.dat,r); fscanf(
21、fp,%d,&n); fclose(fp); printf(%dn,n); 程序的运行结果是 123 。 四、程序填空题阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。1. 从键盘任意输入一个年号,判断它是否是闰年。若是闰年,输出“Yes”,否则输出“No”。已知符合下列条件之一者是闰年:能被4整除,但不能被100整除。能被400整除。#include main() int year, flag; printf(Enter year:); scanf(%d, &year ); if ( year%4=0&year%100!=0 | year%400=0 ) fl
22、ag = 1; else flag = 0; if ( flag ) printf(Yesn); else printf(Non); 2. 编程判断m是否为素数。 #include #include int IsPrime(int m);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=s
23、qrt(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 a*max) _ *max=i _; else if(ai 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%dn,max,min); return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1