C语言试题.docx
- 文档编号:7837184
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:22
- 大小:22.52KB
C语言试题.docx
《C语言试题.docx》由会员分享,可在线阅读,更多相关《C语言试题.docx(22页珍藏版)》请在冰豆网上搜索。
C语言试题
1.下列程序段的输出结果为(C)。
floatk=0.8567;printf("%4.1f%%",k*100);
A、85.6%
B、85.6%%
C、85.7%
D、.857
2.下面的scanf函数输入数据,使得a=10,b=15,s1='S',s2='s',x1=1.5,x2=-3.75,x3=67.8,
正确的键盘输入方法是(A).
(用"[CR]"表示回车,U表示空格)
main()
{inta,b;
floatx1,x2,x3;
chars1,s2;
scanf("%5d%5d%c%c%f%f%*f%f",&a,&b,&s1,&s2,&x1,&x2,&x3);
}
A、10UUU15Ss1.5U-3.75U+1.5U67.8[CR]
B、10UUU15USUs1.5U-3.75U+1.5U67.8[CR]
C、10UUU15USUsU1.5U-3.75U+1.5U67.8[CR]
D、10UUU15Ss1.5U-3.75U+1.5,67.8[CR]
3.C语言的if语句中,用作判断的表达式为(A)。
A、任意表达式
B、算术表达式
C、逻辑表达式
D、关系表达式
4.以下程序的输出结果是:
(A)
main()
{intm=5;
if(m++>5)printf("%d\n",m);
elseprintf("%d\n",m--);
}
A、6
B、5
C、7
D、4
5.以下for循环的执行次数是for(x=0,y=0;(y=123)&&(x<4);x++);(C)。
A、3次
B、循环次数不定
C、4次
D、是无限循环
6.
以下不能正确进行字符串赋初值的语句是(A)。
A、charstr[5]="good!
";
B、charstr[5]={'g','o','o','d'};
C、char*str="good!
";
D、charstr[]="good!
";
7.函数调用:
strcat(strcpy(str1,str2),str3)的功能是(D)。
A、将串str1复制到串str2中后再连接到串str3之后
B、将串str2连接到串str1之后再将串str1复制到串str3中
C、将串str1连接到串str2之后再复制到串str3之后
D、将串str2复制到串str1中后再将串str3连接到串str1之后
8.以下函数的类型是(C)。
fff(floatx)
{
return5;
}
A、void类型
B、与参数x的类型相同
C、int类型
D、无法确定
9.设有如下函数
fac(intx)
{
floaty=1.0;
return(x*y);
}
则函数的类型为(A).
A、int型
B、float型
C、无法确定
D、void型
10.下列关于指针定义的描述,错误的是(A)。
A、指针是一种变量,该变量用来存放某个变量的值
B、指针是一种变量,该变量用来存放某个变量的地址值
C、指针变量的类型与它所指向的变量类型一致
D、指针变量的命名规则与标识符相同
11.以下程序的输出结果是(A).
main()
{charstr[]="ABCD",*p=str;printf("%d\n",*(p+3));}
A、68
B、不确定的值
C、字符D的地址
D、0
12.对结构体类型的变量的成员的访问,无论成员是何种数据类型都可使用
的运算符是(B)。
A、&
B、.
C、*
D、->
13.在C语言中,各种类型的整型数据在内存中都占2个字节。
(X)
14.若有inti=10,j=2;则执行完i*=j+8;后ⅰ的值为28(X)
15.格式字符%g选用%e或%f格式中输出宽度较长的一种格式输出实数.X
16.C语言程序中输入一个中间带有空格的字符串时,可以用scanf函数.X
17.设d=1,e=2,f=3,则逻辑表达式!
(d+e)+f&&e+f*2的值为0.X
18.已知a=4,b=2,c=3,d=5,表达式a>b?
a:
c c: d的值为4.Y 19.语句if(a>b)printf("%d",a);elseprintf("%d",b);可以用语句printf("%d",a>b? a: b);取代.Y 20.在do-while循环中,任何情况下都不能省略while.Y 21.break语句能够终止当前进行的多层循环.X 22.continue语句对于while和do-while循环来说,意味着转去计算While表达式.Y 23.对静态变量的初始化不是在编译阶段完成的.X 24.gets函数是用来输入一个字符的函数X 25.当全局变量与局部变量同名时,在局部变量的作用域范围之内,局部变量起作用.Y 26.C语言中,通过函数调用只能获得一个返回值.X 27.数组名作为函数调用时的实参,实际上传递给形参的是数组第一个元素的值.X 28.被包含文件与其所在的文件(即用#include命令的源文件),在预编译后,成为同一个文件.Y 29.如果需要向函数内传递多个值,用数组和用指针效果是一样的.Y 30.两个类型相同的结构体变量,可以互相赋值.Y 31.C语言中,在打开文件时,必须说明文件的使用方式,"wb+"只能用于文件的写.X 32,下列语句输出的结果是_-1____. unsignedintb=65535;printf("%d",b); 33.x=5,y=8时,c语言表达式5-2>=x-1<=y-2的值是__1___. 34.设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是___3__. for(x=0,y=0;y! =123&&x<3;x++) scanf("%d",&y); 35.连接字符串的函数是_strcat____,只写函数名即可. 36.定义int*p,a[5];将数组a的首地址赋给指针变量p的语句是 p=a p=&a[0] p=a; p=&a[0]; 37.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是___34__。 structstud{charname[10];floats[4];doubleave;}a,*p; 38./*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能: 编写函数fun(str,i,n),从字符串str中删除第i个 字符开始的连续n个字符(注意: str[0]代表字符串 的第一个字符)。 ------------------------------------------------*/ #include"stdio.h" #include"string.h" main() { charstr[81]; inti,n; voidfun(charstr[],inti,intn); voidTestFunc(); printf("请输入字符串str的值: \n"); scanf("%s",str); printf("你输入的字符串str是: %s\n",str); printf("请输入删除位置i和待删字符个数n的值: \n"); scanf("%d%d",&i,&n); while(i+n-1>strlen(str)) { printf("删除位置i和待删字符个数n的值错! 请重新输入i和n的值\n"); scanf("%d%d",&i,&n); } fun(str,i,n); printf("删除后的字符串str是: %s\n",str); TestFunc(); } voidfun(charstr[],inti,intn) { /*********Begin**********/ /**********End**********/ } voidTestFunc() { FILE*IN,*OUT; chari[200]; /*charo[200];*/ IN=fopen("in.dat","r"); if(IN==NULL) { printf("ReadFileError"); } OUT=fopen("out.dat","w"); if(OUT==NULL) { printf("WriteFileError"); } fscanf(IN,"%s",i); fun(i,2,8); fprintf(OUT,"%s\n",i); fclose(IN); fclose(OUT); } 【参考代码】 while(str[i+n-1]) { str[i-1]=str[i+n-1]; i++; } str[i-1]='\0'; =============== 39./*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能: 请编一个函数voidfun(inttt[M][N],intpp[N]), tt指向一个M行N列的二维数组,求出二维数组每列 中最小元素,并依次放入pp所指一维数组中。 二维 数组中的数已在主函数中赋予。 ------------------------------------------------*/ #include"conio.h" #include"stdio.h" #defineM3 #defineN4 voidfun(inttt[M][N],intpp[N]) { /*********Begin**********/ /**********End**********/ } main() { intt[M][N]={{22,45,56,30},{19,33,45,38},{20,22,66,40}}; voidNONO(); intp[N],i,j,k; printf("Theoriginaldatais: \n"); for(i=0;i { for(j=0;j printf("%6d",t[i][j]); printf("\n"); } fun(t,p); printf("\nTheresultis: \n"); for(k=0;k printf("\n"); NONO(); } voidNONO() { inti,j,array[3][4],p[4]; FILE*rf,*wf; rf=fopen("in.dat","r"); wf=fopen("out.dat","w"); for(i=0;i<3;i++) for(j=0;j<4;j++) fscanf(rf,"%d",&array[i][j]); fun(array,p); for(j=0;j<4;j++) { fprintf(wf,"%7d",p[j]); fprintf(wf,"\n"); } fclose(rf); fclose(wf); } 【参考代码】 inti,j; for(j=0;j { pp[j]=tt[0][j]; for(i=1;i if(tt[i][j] pp[j]=tt[i][j]; } =============== 40.【程序改错】 -------------------------------------------------------- 功能: 求1到20的阶乘的和。 ------------------------------------------------------*/ #include"stdio.h" voidfun() { intn,j; floats=0.0,t=1.0; for(n=1;n<=20;n++) { /**********ERROR**********/ s=1; for(j=1;j<=n;j++) /**********ERROR**********/ t=t*n; /**********ERROR**********/ s+t=s; } /**********ERROR**********/ printf("jiecheng=%d\n",s); } main() { fun(); } 【参考答案】 t=1; t=1.0; 41.【程序改错】 -------------------------------------------------------- 功能: 编写一个函数,该函数可以统计一个长度为3的字符串在另 一个字符串中出现的次数。 例如: 假定输入的字符串为: asdasasdfgasdaszx67asdmklo,字符 串为: asd,则应输出n=4。 ------------------------------------------------------*/ #include"stdio.h" #include"string.h" #include"conio.h" intfun(char*str,char*substr) { /**********ERROR**********/ inti,n=0 /**********ERROR**********/ for(i=0;i<=strlen(str);i++) if((str[i]==substr[0])&&(str[i+1]==substr[1])&&(str[i+2]==substr[2])) /**********ERROR**********/ ++i; returnn; } main() { charstr[81],substr[4]; intn; printf("输入主字符串: "); gets(str); printf("输入子字符串: "); gets(substr); puts(str); puts(substr); n=fun(str,substr); printf("n=%d\n",n); } 【改错1】 【参考答案】 inti,n=0; 【改错2】【参考答案】 for(i=0;i<=strlen(str)-3;i++) for(i=0;i 【改错3】 【参考答案】 n++; n+=1; n=n+1; ++n; 42.程序填空】 --------------------------------------------------------- 功能: 计算平均成绩并统计90分以上的人数,输入的成绩为负时程序结束。 -------------------------------------------------------*/ #include"stdio.h" main() { intn,m;floatgrade,average; /***********FILL***********/ average=n=m=_____; while (1) { /***********FILL***********/ scanf("%f",&grade); if(_______)break; n++; average+=grade; /***********FILL***********/ if(grade<90)_____; m++; } if(n)printf("%f\n%d\n",average/n,m); } 【空1】【参考答案】 0 0.0 【空2】【参考答案】 grade<0 0>grade 【空3】【参考答案】 Continue 43.【程序填空】 --------------------------------------------------------- 功能: 求出二维数组中的最大元素值。 -------------------------------------------------------*/ #include"stdio.h" /***********FILL***********/ intmax_value(intm,intn,int______) { inti,j,max; max=array[0][0]; for(i=0;i for(j=0;j /***********FILL***********/ if(max return(max); } main() { inta[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}}; /***********FILL***********/ printf("maxvalueis%d\n",_____); } 【空1】【参考答案】 array[][4] array[3][4] 【空2】【参考答案】 max=array[i][j] 【空3】【参考答案】 max_value(3,4,a) 44.下述正确的C语言常量是: (C). A、E2 B、5.0E C、3e-3 D、1.5E2.5 45.若有定义: inta=7;floatx=2.5,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是(D)。 A、0.000000 B、2.750000 C、3.500000 D、2.500000 46.根据下面的程序,使i=123,c1='A',c2='B'哪一种是正确的键盘输入方法(C). (规定用[CR]表示回车,U表示空格) main() { inti; charc1,c2; scanf("%d%c%c",&i,&c1,&c2); } A、123AUB[CR] B、123UAUB[CR] C、123AB[CR] D、123[CR]AB[CR] 47.t为int类型,进人下面的循环之前,t的值为0 while(t=1) {……} 则以下叙述中正确的是(C)。 A、循环控制表达式的值为0 B、循环控制表达式不合法 C、循环控制表达式的值为1 D、以上说法都不对 48.针对for循环语句,for(表达式1;表达式2;表达式3),下列说法正确的是(B). A、break语句可以一次性跳出多层嵌套循环 B、break语句只能跳出最内层循环 C、continue语句可以一次性跳出多层嵌套循环 D、continue语句可以跳出最内层循环 49.以下正确的说法是(A). A、函数的类型决定返回值的类型 B、定义函数时,形参的类型说明可以放在函数体内 C、return后面不能为表达式 D、如果形参与实参的类型不一致,以实参类型为准 50.C语言规定,函数返回值的类型是由(A)。 A、在定义该函数时所指定的函数类型所决定 B、return语句中的表达式类型所决定 C、调用该函数时系统临时决定 D、调用该函数时的主调函数类型所决定 51.函数fun用于将一字符串按相反次序显示,则横线上的表达式为(D). voidfun(char*s) {if(! *s) return; _____; printf("%c",*s); } A、printf("%s",s+1); B、fun(*(s+1)); C、printf("%s",s+strlen(s)-1); D、fun(s+1); 52.在宏定义#definePI3.14159中,用宏名代替一个(A). A、字符串 B、常量 C、单精度数 D、双精度数 53.若有说明: int*p1,*p2,m=5,n;以下均是正确赋值语句的选项是(A)。 A、p1=&m;p2=p1; B、p1=&m;p2=&p1 C、p1=&m;*p2=*p1; D、p1=&m;p2=&n;*p1=*p2; 54.下列程序的运行结果是: (B). voidfun(int*a,int*b) {int*k; k=a;a=b;b=k; } main() {inta=3,b=6,*x=&a,*y=&b; fun(x,y); printf("%d%d",a,b); } A、63 B、36 C、00 D、编译出错 55.C语言结构体类型变量在程序执行期间(B)。 A、没有成员驻留在内存中 B、所有成员一直驻留在内存中 C、只有一个成员驻留在内存中 D、部分成员驻留在内存中 56.表达式(j=3,j++)的值是4.X 57.C语言的输入功能是由系统提供的输入函数实现的.Y 58.条件表达式x? 'a': 'b'中,若x=0时,表达式的值为'a'.X 59.若有说明intc;则while(c=getchar());没有语法错误。 Y 60.二维数组在内存中存贮时,是按列的顺序连续存贮各元素的值.X 61.变量根据其作用域的范围可以分作局部变量和全局变量.Y 62.通过return语句,函数可以带回一个或一个以上的返回值。 X 63.函数的返回值可以通过函数中的return语句获得。 Y 64.若有宏定义: #defineS(a,b)t=a;a=b;b=t由于变量t没定义, 所以此宏定义是错误的。 X 65.定义inta[]={1,2,3,4},y,*p=&a[1];,则执行y=(*--p)++后,y的值是2.X 66.一个共用体变量中可以同时存放其所有成员.X 67.用fopen("file","r+");打开的文件"file"可以进行修改。 Y 68.C语言中,数组名是一个不可变的_指针地址___常量,不能对它进行加减和赋值运算. 69.函数调用语句func((e1,e2),(e3,e4,e5))中含有__2___个实参. 70.【程序改错】 --------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 试题