1、C语言程序设计期末复习题C语言程序设计期末复习题一、选择题1能将高级语言编写的源程序转换成目标程序的是( )A 链接程序 B. 解释程序 C. 编译程序 D.编辑程序2.设a为整型变量,则不能正确表达数学关系10a15的C语言表达式是( )。A. 10a10&a15 D.!(a=15)3当调用函数时,实参是一个数组名,则向函数传送的是( )。A. 数组的长度 B. 数组的首地址C. 数组每一个元素的地址 D. 数组每个元素中的值4执行下面的程序段后,k的值是()int k=1,n=325; do k*=n%10;n/=10;while(n);A. 3 B. 30 C. 523 D. 3255若
2、有以下数组说明,则i=6;aai元素数值是()。int a12=1,4,7,10,2,5,8,11,3,6,9,12;A.3 B.8 C.6 D.56若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是()A. for(i=1,p=1;i=5;i+) p*=i;B. for(i=1;i=5;i+) p=1; p*=i;C. i=1;p=1;while(i=5)p*=i; i+;D. i=1;p=1;dop*=i; i+; while(i=5); 7若有:int a3=1,2,3,4,5,6,7,8; 则数组a的第一维的大小为: ( )A. 12 B. 3 C. 4 D.无确定
3、值8设有如下程序段 ,则执行p=s;语句后,以下叙述正确的是( )。char s20= “Bejing”,*p; p=s; A可以用*p表示s0 Bs数组中元素的个数和p所指字符串长度相等 Cs和p都是指针变量 D数组s中的内容和指针变量p中的内容相等 9以下正确的函数定义是( )。Adouble sum(int x, int y) Bdouble sum (int x,y) z=x+y ; return z ; int z ; return z ;Csum (x,y) Ddouble sum (int x, int y) int x, y ; double z ; double z ;z=x
4、+y ; return z ; z=x+y ; return z ; 10已知学生信息描述为struct student int no; char name20; char sex; structint year; int month; int day; birth; ; struct student s; 设变量s中的“生日”应是“1984年11月11日”,下列对“生日”的正确赋值方式是( )。A year=1984;month=11;day=11; B birth.year=1984;birth.month=11;birth.day=11; C s.year=1984;s.month=11
5、;s.day=11;D s.birth.year=1984;s.birth.month=11;s.birth.day=11; 11. 下列数据中,为字符串常量的是( )。A. A B. How do you do. C. A D.$abc12.以下运算符中,优先级最高的运算符是( )。A. | B. % C. ! D.=13.执行以下程序段后,输出结果和a的值是( )。int a=10;printf(%d,+a);A.10和10 B.10和11 C.11和10 D.11和1114. 有定义语句:int x,y;若要通过scanf(%d%d,&x,&y);语句使变量x得到数值11,变量y得到数值
6、12,下面四组输入形式中,正确的是( )。A. 11 12 B. 11,12 C. 11,12 D. 11, 1215. 下列定义数组的语句中,正确的是( )。A. int x0.10; B. int x ;C. #define N 10 D. int N10; int xN; int xN;16. 若已定义x为int类型变量,下列语句中说明指针变量p的正确语句是( )。A. int p=&x; B.int *p=x; C. *p=*x; D. int *p=&x;17. 以下不是无限循环的语句为( )。A. for(y=0,x=1;x+y;x=i+) i=x;B. for(;x+=i);C.
7、 while(1)x+;D. for(i=10;i-) sum+=i;18. 有以下函数,函数的功能是( )。int fun(char *x, char *y) int n0;while ( (*x*y) & *x!0 ) x; y; n;return n ;A.将y所指字符串赋给x所指存储空间B.查找x和y所指字符串中是否有0C.统计x和y所指字符串中最前面连续相同的字符个数D.统计x和y所指字符串中相同的字符个数19. 语言中,定义结构体的保留字是( )。A.union B.struct C.enum D.typedef20. 应用缓冲文件系统对文件进行读写操作,关闭文件的函数名为( )。
8、A.open B.fopen C.close D.fclose21. 在C语言中,if语句后的一对原括号中,用以决定分支的流程的表达式( )。A.只能用逻辑表达式 B.只能用关系表达式C.只能用逻辑表达式或关系表达式 D.可用任意表达式22. 假设所有变量均为整型,表达式:a=2,b=5,ab?a+:b+,a+b的值是( )。A.7 B.8 C.9 D.223. 若有如下代码,则a的值为( )。int a=1,b=2,c=3;if(ab)a=b;if(ac)a=c;A.1 B.2 C.3 D.不一定24.假定所有变量均已正确定义,下列程序段运行后x的值是( )。k1=1;k2=2;k3=3;x
9、=15;if(!k1) x-;else if(k2) x=4;else x=3;A.14 B.4 C.15 D.325. 以下for循环的执行次数是 for(x=0,y=0;(y=123)&(x4);x+);( )。A.是无限循环 B.循环次数不定 C.4次 D.3次26. 以下运算符中,优先级最高的运算符是( )。A. | B. % C. ! D.=27. 有定义语句:int x,y;若要通过scanf(%d,%d,&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是( )。A. 11 12 B. 11,12 C. 11,12 D. 11, 1228. c
10、har a10;不能将字符串abc存储在数组中的是( )。A.strcpy(a,abc); B.a0=0;strcat(a,abc);C.a=abc; D.int i;for(i=0;i3;i+)ai=i+97;ai=0;29. 以下程序段 char *alp=ABC,DEF,GHI; int j; puts(alp1);的输出结果是( )。A.A B.B C.D D.DEF30. 若执行fopen函数时发生错误,则函数的返回值是( )。A.地址值 B.0 C.1 D.EOF二、读程序,写出程序的运行结果1以下程序的输出结果是( )。#include void main() int x=0,y
11、=1,a=0,b=0; switch(x) case 0: switch(y)case 0: a+; case 1: b+; case 1: switch(y)case 0: a=a+5; case 1: b=b+5; printf(“a=%d,b=%dn”,a,b);2.以下程序的输出结果是( ) #include void main() int x=-5,y=2,z=1; if(xy) if(y0) z=0; else z=z+1; printf(“%dn”,z);3以下程序的输出结果是:( )#includestdio.hvoid main( )int j,k, x44,y44;for(
12、j=0;j4;j+) for(k=0;k4;k+) xjk=j+k;for(j=0;j4;j+) for(k=0;k4;k+) ykj=xjk;for(j=0;j4;j+) for(k=0;k4;k+) printf(%d ,yjk); printf(n);4以下程序的输出结果是:( )#include void main() int i,j;for(i=j=1;j10;j+,i+)if(j=5) break; if(i%2) continue;printf(i=%d,j=%dn,i,j);5若有以下程序段,则输出结果是( )。 #include void main() char s2=c:a
13、bc.dat; printf(“%sn”,s2); 6以下程序的输出结果是:( )#include int fun( int n) int s; if(n=1|n=0) s=5; else s=n+fun(n-1); return s;void main() printf(%ldn, fun(3);7以下程序的输出结果是:( )void main() int a=2,4,6,8,10; int y=120,x,*p; p=&a1; for(x=0;x3;x+) y+=*(p+x); printf(y=%dn,y); 8以下程序的输出结果是:( )#includevoid sub(int s,i
14、nt y) static int t=3;y=st; t-;void main() int a=1,2,3,4,i,x=0;for(i=0; i4; i+)sub(a,x); printf(“%d”,x);printf(“n”);9. 以下程序段运行后x的值是:( )k1=1;k2=0;k3=3;x=15;if(!k1) x-;else if(k2) x=4;else x=3;10. 以下程序的输出结果是:( )#include main() int s=0, n; for (n=0; n4; n+) switch(n) default: s+=5; case 1: s+=1; case 2:
15、 s+=2; case 3: s+=3; printf(%dn, s); 11. 以下程序段运行后sum的值是:( )int a33=3,5,8,9,12,35,i,sum=0;for(i=0;i3;i+) sum+=ai2-i;12. 以下程序的输出结果是:( )#include int main() int i=10,n=0,m=0; do if(i%2!=0) n=n+i; else m=m+i; i-; while(i=0); printf(n=%d,m=%dn,n,m); return 0;13. 以下程序的输出结果是:( )#include void main() int a,b;
16、 for(a=1,b=1;a20) break; if(b%4=1) b=b+4; continue; b=b-5; printf(b=%dn,b);14. 以下程序的输出结果是:( )#include funa(int a) int b=0;static int c=4;a=c+,b+;return(a);main() int a=2,i,k;for(i=0;i2;i+)k=funa(a+);printf(%dn,k);15. 以下程序的输出结果是:( )#include void main(void) char a=ABCDEFGH,b=abcDefGh; char *p1,*p2; in
17、t k; p1=a; p2=b; for(k=0;k=7;k+) if (*(p1+k)=*(p2+k) printf(%c,*(p1+k); printf(n);16. 以下程序的输出结果是:( )#include #include int main() int i; char str130=abc,str235=defg,hij0,klm; for(i=1;ibc)a=b;else a=c;printf(%dn,a);19. 以下程序的输出结果是:( )int func(int x,int y) return(x+y);void main()int a=1,b=2,c=3,d=4,e=5;
18、 printf(%dn,func(a+b,b+c,c+a),(d+e); 20.下列程序执行后的输出结果是( )。void main() int a33, *p,i; p=&a00; for(i=0; i9; i+)pi=i+1; printf(%dn,a12);21. 以下程序的输出结果是:( )#include void fun(int a);void main() int i,a5=1,2,3; fun(a); for(i=0;i5;i+) printf(%5d ,ai); printf(n);void fun(int a) int i; for(i=0;i5;i+) ai+=5;22.
19、 以下程序的输出结果是:( )#include void main( ) int i, f10; f0=f1=1; for(i=2;i10;i+) fi=fi-2+fi-1; for(i=0;i5;i+) printf(%d ,fi); 23. 以下程序的输出结果是:( )#includevoid main() int m=1,n=2,*p=&m,*q=&n,*r; r=p;p=q;q=r; printf(%d,%d,%d,%dn,m,n,*p,*q);24. 以下程序的输出结果是:( )#include #include int main() int i; char str20=abcdef
20、; strcpy(str,opqrst); str5=0; for(i=0;istrlen(str)-1;i+) putchar(stri); printf(n); return 0;三、程序填空1. 任意输入一个非负的整数x,求该数的逆序数y,并判断x、y能否被17整除。#includeint main() int x, a,y,t; printf(请输入一个非负的整数n); scanf(%d,&x); t=x; 【1】 do a=x%10; /取得个位数字 【2】 ; /获得逆序数 x=x/10; /去掉个位数字 while( 【3】 ); if( 【4】 ) printf(x能被17整除
21、n); else printf(x不能被17整除n); if(y%17=0) printf(y能被17整除n); else printf(y不能被17整除n); return 0;2. 有一行文字,要求删去某一个字符。此行文字和要删去的字符均由键盘输入,要删去的字符以字符形式输入(如输入 a表示要删去所有的 a字符)。 #include void main() /*str1表示原来的一行文字,str2表示删除指定字符后的文字*/char str1100,str2100; char ch;int i=0,k=0;printf(“please input an sentence:n”);gets(
22、 【5】 ); scanf(%c,&ch); for (i=0; 【6】 ;i+) if (str1i!=ch) str2 【7】 =str1i; k+; str2 【8】 =0; printf(n%sn,str2); 3下面给定程序中函数fun的功能是:求k!,所求阶乘的值作为函数值返回。例如:若k = 10,则应输出:3628800。请按要求把程序补充完整,使它能得出正确的结果。#includelong fun ( int k) if (k 0) return ( 【9】 ); else if ( 【10】 ) return 1L;main() int k = 10 ; printf(%d
23、!=%ldn, k, fun ( k ) ;4. 函数fun的功能是:逆置数组元素中的值。形参n给出数组中的数据的个数。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。请按要求把空白部分补充完整。void fun(int a, int n) int i, t;for (i=0; i 【11】 ; i+) t = ai; ai = an-1- 【12】 ; 【13】 = t;5下面的程序是输出1100之间的全部素数,其中函数prime的功能是判断一个数n是否是素数。当n是素数时,函数prime的返回值为1;当n不是素数时,
24、函数prime的返回值为0。请按要求把程序补充完整。#include #include int prime(int n)int i; for(i=2;i=sqrt(n);i+) if( 【14】 ) return 0; return 1;int main()int i; for(i=2; 【15】 ;i+) if( 【16】 ) printf(%5d,i); printf(n); return 0;6下面程序的功能是:由键盘输入10个整数,计算这10个整数中的奇数和与偶数和。请按要求把程序补充完整。#include void main() int a,b,c,i; a=c=0; for(i=1
25、;i=10;i+) scanf(%d,&b); if( 【17】 ) a=a+b; else 【18】 ; printf(偶数的和=%dn,a); printf(奇数的和=%dn,c);7下面给定程序的功能是:从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请按要求把程序补充完整。#includevoid main() int n=0,c; c=getchar(); while( 【19】 ) if( 【20】 ) n+; c=getchar(); printf( 【21】 个数字n,n);8. 程序的功能是:求矩阵的转置。请按要求把空白部分补充完整。#include #include std
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1