《大学C语言考试题库(答案)(20220219214742).pdf》由会员分享,可在线阅读,更多相关《大学C语言考试题库(答案)(20220219214742).pdf(50页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、.单项选择=题号:1482 执行以下程序段后,输出结果和a的值是()。int a=10;printf(%d,a+);A、11 和 10 B、11 和 11 C、10 和 11 D、10 和 10 答案:C 题号:2100 已知字符 A 的ASC 代码值是 65,字符变量 c1的值是 A,c2的值是 D.执行语句printf(%d,%d,c1,c2-2);后,输出结果是A、65,66 B、A,B C、65,68 D、A,68 答案:A 题号:5055 相同结构体类型的变量之间,可以()。A、比较大小B、地址相同C、赋值D、相加答案:C 题号:3217 int a10;合法的数组元素的最小下标值为
2、()。A、1 B、0 C、10 D、9 答案:B 题号:45 能正确表示逻辑关系:a 10或a0 的C语言表达式是A、a=0|a=10 or a=10&a=10|a=0 答案:D 题号:157 main()int x=1,a=0,b=0;switch(x)case 0:b+;case 1:a+;case 2:a+;b+;printf(a=%d,b=%d,a,b);该程序的输出结果是()A、2,2 B、2,1 C、1,1 D、1,0 答案:B 题号:4784 设变量 a是整型,f 是实型,i 是双精度型,则表达式 10+a+i*f值的数据类型为()。A、不确定B、double C、int D、f
3、loat 答案:B 题号:1647 以下程序中,while 循环的循环次数是 _ main()int i=0;while(i10)if(ib)=c 的值为 真。答案:正确题号:66 若有#define S(a,b)a*b 则语句 area=S(3,2);area的值为 6。答案:正确题号:758 若有宏定义:#define S(a,b)t=a;a=b;b=t由于变量 t 没定义,所以此宏定义是错误的。答案:错误题号:2158#define 和printf 都不是 C语句。答案:正确题号:5102 关系运算符 100)printf(“%dn”,a 100);else printf(“%dn”,a
4、=100);答案:空 1:1 题号:3255 表达式(int)(double)(5/2)+2.5)的值是 _.答案:空 1:4 题号:2472 阅读下面程序,程序执行后的输出结果为_。#include stdio.h main()char a,b;for(a=0,b=9;ab;a+,b-)printf(%c%c,a,b);printf(n);答案:空 1:0918273645.题号:937 以下程序段的输出结果是_。int i=0,sum=1;do sum+=i+;while(i y)if(xz)printf(%d,x);else printf(%d,y);printf(%dn,z);.答案:
5、空 1:3 程序设计=题号:2660/*-【程序设计】-功能:计算出 k以内最大的 10个能被 13或17整除的自然数之和。(k3000)。-*/#include#includeconio.h void bky();int fun(int k)/*Begin*/*End */main().int m;printf(Enter m:);scanf(%d,&m);printf(nThe result is%dn,fun(m);bky();void bky()FILE*IN,*OUT;int s;int t;int o;IN=fopen(in.dat,r);if(IN=NULL)printf(Rea
6、d FILE Error);OUT=fopen(out.dat,w);if(OUT=NULL)printf(Write FILE Error);for(s=1;s=2)&(b10)if(k%13=0)|(k%17=0)a=a+k;b+;k-;.return a;题号:5854 C语言中不可以嵌套的是()。A、选择语句B、循环语句C、函数调用D、函数定义答案:D 题号:1957 C语言中,逻辑 真 等价于A、非零的整数B、大于零的整数C、非零的数D、大于零的数答案:C 题号:3786 用户定义的函数不可以调用的函数是()。A、本文件外的B、main函数C、本函数下面定义的D、非整型返回值的答案:
7、B 题号:1764 以下叙述中正确的是()。A、C程序中注释部分可以出现在程序中任意合适的地方B、分号是 C语句之间的分隔符,不是语句的一部分C、花括号“和”只能作为函数体的定界符D、构成 C程序的基本单位是函数,所有函数名都可以由用户命名答案:A 题号:299 下面四个选项中,均是不合法的浮点数的选项是()。A、-e3 .234 1e3.B、160.0.12 e3 C、123 2e4.2 .e5 D、-.18 123e4 0.0 答案:C 题号:6131 假定所有变量均已正确定义,下列程序段运行后x的值是()。k1=1;k2=2;k3=3;x=15;if(!k1)x-;else if(k2)
8、x=4;else x=3;A、15 B、14 C、3 D、4 答案:D 题号:3208 若变量已正确定义,以下程序段的输出结果是x=5.16894;printf(“%fn”,(int)(x*1000+0.5)/(float)1000);A、5.17000 B、输出格式说明与输出项不匹配,输出无定值C、5.168000 D、5.169000 答案:D 题号:5043 以下选项中合法的实型常数是()。A、5E2.0 B、1.3E C、E-3 D、.2E0 答案:D 题号:5608 有以下程序 main().int i;for(i=0;ib)=c 的值为 真。答案:正确题号:2316 while 和
9、dowhile 循环不论什么条件下它们的结果都是相同的.答案:错误题号:2989 char c=Very Good;是一个合法的为字符串数组赋值的语句。答案:正确题号:5034 语句scanf(%7.2f,&a);是一个合法的 scanf 函数。答案:错误题号:2067 如果想使一个数组中全部元素的值为0,可以写成int a10=0*10;答案:错误题号:5263 x*=y+8 等价于 x=x*(y+8)。答案:正确题号:3862 如果函数值的类型和 return 语句中表达式的值不一致,则以函数类型为准。答案:正确题号:3558 整数-32100 可以赋值给 int 型和long int型变
10、量。答案:正确填空.=题号:551 请写出以下程序的输出结果_。main()int a=100;if(a 100)printf(“%dn”,a 100);else printf(“%dn”,a=100);答案:空 1:1 题号:1575 对以下数学式,写出三个等价的C 语言表达式是 _、_、_ cba答案:空 1:a/c/b【或】a/(b*c)【或】a/b/c 空 2:a/c/b【或】a/b/c 【或】a/(b*c)空 3:a/b/c【或】a/c/b 【或】a/(b*c)题号:1076 表达式 3.5+1/2的计算结果是 _。答案:空 1:3.5 题号:2758 若x为double 型变量,请
11、写出运算 x=3.2,+x后表达式的值 _和变量的值 _。答案:空 1:4.2 空 2:4.2 题号:582.以下程序的执行结果是 _。main()int k=8;switch(k)case 9:k+=1;case 10:k+=1;case 11:k+=1;break;default:k+=1;printf(%dn,k);答案:空 1:9 题号:2868 若要通过以下语句给 a、b、c、d分别输入字符 A、B、C、D,给w、x、y、z分别输入10、20、30、40,正确的输入形式是 _。请用 代表Enter 键。scanf(“%d%c%d%c%d%c%d%c”,&w,&a,&x,&b,&y,&
12、c,&z,&d);答案:空 1:10A20B30C40D 题号:4063 以下程序段的输出结果是_、_、_、_ double a=513.789215;printf(“a=%8.6f,a=%8.2f,a=%14.8f,a=%14.8lfn”,a,a,a,a);答案:空 1:a=513.789215 空 2:a=513.79 空 3:a=513.78921500 空 4:a=513.78921500.题号:5076 以下程序的输出结果是 _。main()int a=0;a+=(a=8);printf(%dn,a);答案:空 1:16 题号:5410 以下程序的执行结果是 _。main()int
13、a,b,*p=&a,*q=&b;a=10;b=20;*p=b;*q=a;printf(“a=%d,b=%dn”,a,b);答案:空 1:a=20,b=20 题号:6975 以下程序的输出结果是 _。main()int x=2;while(x-);printf(“%dn”,x);答案:空 1:-1.程序设计=题号:58/*-【程序设计】-功能:将字符串中的小写字母转换为对应的大写字母,其它字符不变。-*/#include string.h#include void bky();void change(char str)/*Begin*/*End */main()void change();cha
14、r str40;gets(str);change(str);puts(str);bky();.void bky()FILE*IN,*OUT;char i200;IN=fopen(in.dat,r);if(IN=NULL)printf(Read FILE Error);OUT=fopen(out.dat,w);if(OUT=NULL)printf(Write FILE Error);fscanf(IN,%s,i);change(i);fprintf(OUT,%sn,i);fclose(IN);fclose(OUT);示例代码:int i;for(i=0;stri!=0;i+)if(stri=a&
15、stri=0|a=10 or a=10&a=10|a=0.答案:D 题号:53 若已定义 x为int 类型变量,下列语句中说明指针变量p的正确语句是()。A、int*p=&x;B、int p=&x;C、*p=*x;D、int*p=x;答案:A 题号:2244 字符串指针变量中存入的是A、第一个字符B、字符串C、字符串的首地址D、字符串变量答案:C 题号:3722 下列字符数组长度为 5的是A、char c10=h,a,b,c,d;B、char b=h,a,b,c,d,0;C、char a=h,a,b,c,d;D、char d6=h,a,b,c,0;答案:C 题号:2703 从键盘上输入某字符串
16、时,不可使用的函数是()。A、getchar()B、scanf()C、fread()D、gets()答案:A 题号:3402 以下对整型数组 a的正确说明是:A、int n=10,an;B、.C、D、int a(10);答案:C 题号:130 若char a10;已正确定义,以下语句中不能从键盘上给a数组的所有元素输入值的语句是()。A、scanf(%s,a);B、for(i=0;i c)b=a;a=c;c=b;答案:空 1:3 空 2:2 空 3:2 题号:3925 阅读下面程序,则执行后程序的结果为_。#include stdio.h main()int a=0,b=0;while(a15
17、)a+;while(b+15);printf(%d,%d n,a,b);答案:空 1:15,16 题号:4473 有以下程序段:s=1.0;for(k=1;k=n;k+)s=s+1.0/(k*(k+1);printf(“%fn”,s);请填空,使下面的程序段的功能完全与之等同。s=0.0;_;k=0;.do s+=d;_;d=1.0/(k*(k+1);while(_);printf(“%fn”,s);答案:空 1:d=1.0 空 2:k+空 3:k=n 题号:6975 以下程序的输出结果是 _。main()int x=2;while(x-);printf(“%dn”,x);答案:空 1:-1
18、题号:4423 下列程序的功能是输入一个整数,判断其是否是素数,若为素数输出 1,否则输出 0.请填空。main()int i,x,y=1;scanf(%d,&x);for(i=2;i=_;i+)if_ y=0;break;printf(%dn,y);答案:空 1:x/2.空 2:!(x%i)【或】x%i=0 程序设计=题号:788/*-【程序设计】-题目:用 while 语句求 1100的累计和。-*/void bky();int fun(int n)/*Begin*/*End */void main()int sum=0;sum=fun(100);printf(sum=%dn,sum);b
19、ky();.void bky()FILE*IN,*OUT;int i;int iIN,iOUT;IN=fopen(in.dat,r);if(IN=NULL)printf(Please Verify The Currernt Dir.it May Be Changed);OUT=fopen(out.dat,w);if(OUT=NULL)printf(Please Verify The Current Dir.it May Be Changed);for(i=0;i5;i+)fscanf(IN,%d,&iIN);iOUT=fun(iIN);fprintf(OUT,%dn,iOUT);fclose(
20、IN);fclose(OUT);示例代码:int i=1,sum=0;while(ic)b=a;a=c;c=b;则c的值为()。A、3 B、2 C、不一定D、1.答案:B 题号:961 C语言中 while 和 do-while 循环的主要区别是()。A、while 的循环控制条件比 do-while的循环控制条件更严格B、do-while 的循环体至少无条件执行一次C、do-while 的循环体不能是复合语句D、do-while 允许从外部转到循环体内答案:B 判断=题号:3927 两个字符串中的字符个数相同时才能进行字符串大小的比较答案:错误题号:5124 7&3+12 的值是 15。答案
21、:错误题号:3721 语句 printf(%f%,1.0/3);输出为 0.333333。答案:错误题号:3862 如果函数值的类型和 return 语句中表达式的值不一致,则以函数类型为准。答案:正确题号:6755 若i=3,则printf(%d,-i+);输出的值为 -4。答案:错误题号:4579 通过return 语句,函数可以带回一个或一个以上的返回值。.答案:错误题号:2440 int i,*p=&i;是正确的 C说明。答案:正确题号:4678 a=(b=4)+(c=6)是一个合法的赋值表达式。答案:正确题号:6288 十进制数 15的二进制数是 1111.答案:正确题号:464 若
22、 a=3,b=2,c=1 则关系表达式(ab)=c 的值为 真。答案:正确填空=题号:2713 以下程序段的输出结果是_。printf(“%dn”,strlen(“sn0160end”);答案:空 1:3 题号:2758 若x为double 型变量,请写出运算 x=3.2,+x后表达式的值 _和变量的值 _。答案:空 1:4.2 空 2:4.2.题号:3121 若有定义:int a=8,b=5,c 执行语句 c=a/b+0.4 后,c的值为 _ 答案:空 1:1 题号:4474 当计算机用两个字节存放一个整数时,其中能存放的最大十进制整数是_、最小十进制整数是 _,它们的二进制形式是 _。答案
23、:空 1:65535 空 2:-32768 空 3:1111 1111 1111 1111,1000 0000 0000 0000 题号:4683 若从键盘输入 58,则以下程序输出的结果是_。main()int a;scanf%d,&a);if(a50)printf(%d,a);if(a40)printf(%d,a);if(a30)printf(%d,a);答案:空 1:585858 题号:1262 请写出与以下表达式等价的表达式是 A)_B)_。A)!(x0)B)!0 答案:空 1:x 2 题号:2211 在C 语言程序中,用关键字 _定义基本整型变量,用关键字 _定义单精度实型变量,用关
24、键字 _定义双精度实型变量。答案:空 1:int 空 2:float.空 3:double 程序设计=题号:4003/*-【程序设计】-功能:求一个四位数的各位数字的立方和-*/#include void VV();int fun(int n)/*Begin */*End */main()int k;k=fun(1234);.printf(k=%dn,k);VV();void VV()FILE*IN,*OUT;int iIN,iOUT,i;IN=fopen(22.IN,r);if(IN=NULL)printf(Please Verify The Currernt Dir.it May Be C
25、hanged);OUT=fopen(22.out,w);if(OUT=NULL)printf(Please Verify The Current Dir.it May Be Changed);for(i=0;i0)d=n%10;s+=d*d*d;n/=10;return s;.题号:6991 以下程序的执行结果是 _.main()int w=1,x=2,y=3,z=4;w=(w x)?x:w;w=(w y)?y:w;w=(w z)?z:w;printf(%d ,w);A、2 B、4 C、3 D、1 答案:B 题号:5467 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句
26、是()。A、n=*q;B、p=q;C、p=n;D、*p=*q;答案:C 题号:5820 以下程序的输出结果是void prtv(int *x)printf(“%dn”,+*x);main()int a=25;prtv(&a);A、24 B、26 C、23 D、25 答案:B.题号:6988 以下程序的输出结果是main()int a=2,b=5;printf(“a=%d,b=%dn”,a,b);A、a=%2,b=%5 B、a=%d,b=%d C、a=%d,b=%d D、a=2,b=5 答案:C 题号:6976 语句printf(abrehiyboun);的输出结果是(说明:b是退格符)()。A
27、、abrehiybou B、rehiyou C、abrehiybou D、abrehiybou 答案:B 题号:166 以下关于运算符优先顺序的描述中正确的是()。A、关系运算符 算术运算符 赋值运算符 逻辑运算符B、赋值运算符 逻辑运算符 关系运算符 算术运算符C、算术运算符 关系运算符 赋值运算符 逻辑运算符D、逻辑运算符 关系运算符 算术运算符 赋值运算符答案:B 题号:333 下列语句的结果是()。main()int j;j=3;printf(%d,+j);printf(%d,j+);A、3,4 B、4,4 C、4,3.D、3,3 答案:B 题号:457 设a和b均为double 型变
28、量,且 a=5.5、b=2.5,则表达式(int)a+b/b的值是A、6.000000 B、5.500000 C、6 D、6.500000 答案:A 题号:523 若有定义:int a=7;float x=2.5,y=4.7;则表达式 x+a%3*(int)(x+y)%2/4的值是()。A、3.500000 B、0.000000 C、2.750000 D、2.500000 答案:D 题号:855 若有以下程序段:int a=3,b=4;a=ab;b=ba;a=ab;则执行以上语句后,a和b的值分别是()。A、a=4,b=4 B、a=3,b=3 C、a=3,b=4 D、a=4,b=3 答案:D
29、判断=题号:1325 若有说明 int c;则while(c=getchar();是正确的 C 语句。答案:正确.题号:478 C语言中%运算符的运算对象必须是整型.答案:正确题号:2998 c程序总是从程序的第一条语句开始执行.答案:错误题号:3246 假设有 int a10,*p;则p=&a0 与p=a等价答案:正确题号:2158#define 和printf 都不是 C语句。答案:正确题号:1498 C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。答案:正确题号:6288 十进制数 15的二进制数是 1111.答案:正确题号:5263 x*=y+8 等价于 x=x*(y+8
30、)。答案:正确题号:2691 若有 int i=10,j=2;则执行完 i*=j+8;后的值为 28。答案:错误题号:5102 关系运算符=与=的优先级相同。答案:错误.填空=题号:937 以下程序段的输出结果是_。int i=0,sum=1;do sum+=i+;while(i 5);printf(“%dn”,sum);答案:空 1:11 题号:1076 表达式 3.5+1/2的计算结果是 _。答案:空 1:3.5 题号:1797 以下程序段,要求通过 scanf 语句给变量赋值,然后输出变量的值。写出运行时给k输入100,给a输入25.81,给x输入1.89234时的三种可能的输入形式 _
31、、_、_。int k;flaot a;double x;scanf(“%d%f%lf”,&k,&a,&x);printf(“k=%d,a=%f,x=%fn”,k,a,x);答案:空 1:100 25.81 1.8923 空 2:100 25.81 1.8923 空 3:100 25.81 1.8923 题号:2472 阅读下面程序,程序执行后的输出结果为_。.#include stdio.h main()char a,b;for(a=0,b=9;ab;a+,b-)printf(%c%c,a,b);printf(n);答案:空 1:0918273645 题号:2797 以下程序的输出结果是 _。
32、unsigned fun6(unsigned num)unsigned k=1;do k*=num%10;num/=10;while(num);return k;main()unsigned n=26;printf(“%dn”,fun6(n);答案:空 1:12 题号:4423 下列程序的功能是输入一个整数,判断其是否是素数,若为素数输出 1,否则输出 0.请填空。main()int i,x,y=1;scanf(%d,&x);for(i=2;ic*2b!=5|!(1/2)中,a、b、c的定义和赋值为Int a=3,b=4,c=2;则表达式的值为 _。答案:空 1:1 程序设计.=题号:1124
33、/*请编写一个函数 fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中 x是数组名,n 是x中的数据个数,max 存放最大值,index 存放最大值所在元素的下标。注意:部分源程序存在文件prog.c 中。请勿改动主函数 main和其它函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。*/#include#include#include void fun(int a,int n,int *max,int *d)/*Begin */*End */void NONO()/*本函数用于打开文
34、件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;int i,x20,max,index,n=10,j;fp=fopen(bc06.in,r);if(fp=NULL)printf(数据文件 bc06.in 不存在!);return;wf=fopen(bc06.out,w);for(i=0;i 10;i+)for(j=0;j n;j+)fscanf(fp,%d,&xj);.fun(x,n,&max,&index);fprintf(wf,Max=%d,Index=%dn,max,index);fclose(fp);fclose(wf);main()int i,x20,max,
35、index,n=10;srand(time(0);for(i=0;i n;i+)xi=rand()%50;printf(%4d,xi);printf(n);fun(x,n,&max,&index);printf(Max=%5d,Index=%4dn,max,index);NONO();示例代码:int i,base,subscript;base=a0;/*假定第一个元素的值最大*/subscript=0;/*subscript用于存放数组下标*/for(i=1;ibase)/*将数组中的其他元素与变量base作比较,如果大于它则交换两者的值*/subscript=i;base=ai;*max=
36、base;/*将最大值元素的值赋给*max*/*d=subscript;/*将最大值元素的下标赋给*d*/题号:5537 有定义:char*p1,*p2;则下列表达式中正确合理的是A、p1/=5.B、p1+=5 C、p1=&p2 D、p1*=p2 答案:C 题号:5257 若有定义:int*p3;,则以下叙述中正确的是()。A、定义了一个名为*p的整型数组,该数组含有三个int 类型元素B、定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个 int 类型元素C、定义了一个指针数组 p,该数组含有三个元素,每个元素都是基类型为 int 的指针D、定义了一个基类型为 int 的指针变量
37、p,该变量具有三个指针答案:C 题号:6968 C语言中,定义结构体的保留字是()。A、struct B、union C、enum D、typedef 答案:A 题号:1468 设 char*s=ta017bc;则指针变量 s指向的字符串所占的字节数是()。A、7 B、6 C、9 D、5 答案:B 题号:5300 以下程序的输出结果是main()int a=1,2,3,4,i,x=0;for(i=0;i 4;i+)sub(a,&x);printf(“%d”,x);pritnf(“n”);sub(int *s,int *y)static int t=3;*y=st;t-;.A、4 4 4 4 B
38、、0 0 0 0 C、1 2 3 4 D、4 3 2 1 答案:D 题号:1700 以下叙述正确的是:A、用do-while 构成循环时,只有在 while 后的表达式为非零时结束循环B、do-while 语句构成的循环不能用其它语句构成的循环来代替。C、用do-while 构成循环时,只有在 while 后的表达式为零时结束循环D、do-while 语句构成的循环只能用 break语句退出。答案:C 题号:2823 对两个数组 a和b进行如下初始化:char a=“ABCDEF”;char b=A,B,C,D ,E,F;则以下叙述正确的是A、a与b中都存放字符串B、a数组比 b数组长度长C、
39、a与b长度相同D、a与b完全相同答案:B 题号:4522 以下数值中,不正确的八进制数或十六进制数是()。A、-16 B、0 x16 C、16 D、0 xaaaa 答案:A 题号:1353 对于基本类型相同的两个指针变量之间,不能进行的运算是()。A、+B、c)b=a;a=c;c=b;答案:空 1:3 空 2:2 空 3:2 题号:5307 下列程序的执行结果是 _。int d=1;fun(int p)int d=5;d+=p+;pritnf(“%d“,d);main()int a=3;fun(a);d+=a+;printf(“%dn”,d);答案:空 1:8 4 题号:1540 以下程序的输出结果是 _。.double sub(double x,double y,double z)y-=1.0;z=z+x;return z;main()double a=2.5,b=9.0;printf(“%fn”,sub(b-a,a,b);答案:空 1:15.500000 题号:606 以下程序段的输出结果是_。int k,n,m;n=10;m=1;k=1;while(k y)if(xz)printf(%d,x);else printf(%d,y);printf(%dn,z);答案:空 1:3
限制150内