C语言A卷.docx
- 文档编号:3807463
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:12
- 大小:24.02KB
C语言A卷.docx
《C语言A卷.docx》由会员分享,可在线阅读,更多相关《C语言A卷.docx(12页珍藏版)》请在冰点文库上搜索。
C语言A卷
A
一、选择题(共15小题,每题1分,共计15分)
二、填空题(共15小题,每空1分,共计15分)
三、阅读程序题(共5小题,每题2分,共计10分)
四、完善程序题(共4小题,每空3分,共计30分)
五、编程题(共3小题,每题10分,共计30分)
一、选择题(共15小题,每题1分,共计15分)
1.设charcl;,则cl中为小写英文字母字符的正确表达式为(B)
A.’a’<=c1=’z’
B.(cl>=’a’)&&(cl<=’z’)
C.(cl>=a)&&(c1<=z)
D.(’a’<=c1)||(’z’>=c1)
2.一维数组a的正确说明语句为(D)
A.inta(10);B.intn=10,a[n];
C.intn;D.#defineSIZE10
scanf(″%d″,&n);inta[SIZE];
inta[n];
3.已知字符’A’的ASCII码值是65,且charcl=’A’,c2=’D’;则执行语句
printf(″%d,%d\n″,cl,c2-2);后的输出结果是(D)
A.A,DB.A,B
C.65,68D.65,66
4.设inta=7;floatx=2.5,y=4.7;,则表达式x+3%(int)(x+y)/4的值是(C)
A.2.75B.3.25
C.2.5D.0.0
5.构成C语言程序的基本单位是(B)。
A.过程B.函数C.语句D.命令
6.下列选项中,不正确的赋值语句是(D)。
A.y--;B.x=y=z=0; C.m=n%k; D.t=a+x=3;
7.合法的C语言标识符是(C)。
A.5dmB.a>bC.HhD.$s
8.设intx=2,y=4;,值为非0的表达式是(C)
A.1/x*yB.1/(x*y)
C.1.0/x/yD.1/x/(double)y
9.设inti=l,k=2;,则错误的循环语句是(A)
A.for(i=0,k=k-1;i++,k++)s;B.for(;k-1;i++)s;
C.for(i=1,k=4;k--;i++)s;D.for(;k--;)s;
10.设typedefstruct{inta;chars[10];}TYPE;TYPEu1;
则printf(”%d\n”,sizeof(u1));的输出结果是(B)
A.2B.12
C.14D.16
11.设charsl[]=“string1”,s2[8],*s3,*s4=“string2”;,则对系统函数strcpy的错误调用是(C)
A.strcpy(s1,s4);
B.strcpy(s4,“string2”);
C.strcpy(“string2”,s2);
D.strcpy(s4,s1);
12.正确的数组定义及初始化的是(A)
A.chara[10]={“string”};
B.inta[5]={0,1,2,3,4,5};
C.chara={“string”};
D.inta[]={x,y,z};
13.若有以下定义,则数值为4的表达式是( A )。
inta[3][4]={{1,2},{3,4},{5,6}},(*p)[4]=a;
A.p[1][1]B.p++,*(p+1)C.a[2][2]D.*(p+1*4+1)
14.在循环体中用来强制继续循环的语句是(B)
A.breakB.continue
C.exitD.return
15.有说明struct{charname[15],sex;intage;floatscore;}stu,*p=&stu;
以下语句中正确的是(B)。
A.scanf(“%c”,p->sex);B.scanf(“%s”,stu.name);
C.scanf(“%d”,stu.age);D.scanf(“%f”,p->score);
本题
得分
二、填空题(共15小题,每空1分,共计15分)
1.设有宏定义#defineX2+3,则printf(“%d\n”,4*X);的输出结果是_______11____。
2.设inta=12;,语句printf(″%d\n″,(a/3,a%30));的输出结果是12。
3.函数中未指定存储类型的局部变量,其隐含的存储类型是Auto。
4.若全局整型变量未初始化,则默认的初始值是0。
5.调用系统函数strcmp(),必须在程序的开头写上一条文件包含命令是______#include
6.设chara[20]={‘‘NANJING”},*p=a+2;,则*(p+2)的值是____N_______。
7.在函数间传递数据时,函数的形参和调用时的实参都是数组,传递方式为______地址_____。
8.若文件型指针fp已指向某文件的末尾,则函数feof(fp)的返回值是_____非0值______。
9.请写出数学式
的C语言表达式是sqrt(2*a*b*b)/(2*a*b)。
10.执行以下程序后a的值为5。
inta,k=16,m=3,*p1=&k,*p2=&m;
a=(*p1)/(*p2);
11.若有说明和定义:
enumxyz{cat,rabbit=5,cow=2,dog,mouse};则语句 printf(“%d”,dog);的执行结果是3。
12.下面程序片段,退出while循环时,s的值是24。
intn=234,s=l;
while(n)
{s*=n%10;n/=10;}
13.设a=2,b=1则执行表达式a+=a-=a*=a+2的后a的值是0。
14.设intx=1,y=-1,z;则执行表达式z=x--||++y后y的值为-1。
15.设doublex;,则表达式x=5,x++,(x-5)/2的值是_____0.5______。
本题
得分
三、阅读程序题(共5小题,每题2分,共计10分)
1.程序输出第二行为810
inty;
voidfun(inty)
{staticintx=2;
x=x*y;
y=x+y;
printf(“%3d%3d\n”,x,y);}
main()
{
inti,x=2;
for(i=0;i<2;i++)fun(x);}
2.程序的运行结果为24
main()
{inti=1;
while(i<5)
switch(i)
{case1:
printf(“%d”,i++);
case2:
break;
case3:
printf(“%d”,i++);
default:
break;
case4:
printf(“ABC”);
}
}
3.阅读函数,写出函数的主要功能一维数组平均值
floatav(floata[],intn)
{inti;floats;
for(i=0,s=0;i s=s+a[i]; return(s/n); } 4.程序的运行结果为1,2,8,8 #include intf(inta,intb,int*c) {a=a+b; b=a+b; *c=a+b;return(a+b); } voidmain() {inta=1,b=2,c=3,d=4; d=f(a,b,&c); printf(“%d,%d,%d,%d\n”,a,b,c,d); } 5.程序输出结果为AABBCC。 #include #include char*fun(char*s1,char*s2) {intj=0;char*p=s1; staticchars[50]; for(;*s2! =’\0’;s2++) for(s1=p;*s1! =’\0’;s1++) if(*s1==*s2){s[j]=*s1;j++;} s[j]=’\0’; returns; } main() {charstr1[]=”ABCDDCBA”,str2[]=”ABC”,*p; p=fun(str1,str2); puts(p); } 本题 得分 四、完善程序题(共4小题,每空3分,共计30分) 1.以下程序计算sin(x)的值,精确到小数点后6位。 请填空。 #include voidmain() { floatx,sinx,t; intp,n; sinx=0;p=n=1; scanf(“%f”,&x); t=x; do {sinx=sinx+p*t; p=-p; n=n+2; t=t*x*x/(n*(n-1)); }while(fabs(t)>1e-6); printf(“%f,%f\n”,sinx,sin(x)); } 2.下面函数实现两个字符串比较,若两个字符串相同返回值为0,若两串不同则返回第一个不同字符的ASCII差值。 请填空。 intmycmp(char*s,char*t) { while(*s&&*s==*t) {s++;t++;} return*s-*t; } 3.以下程序的功能是: 从键盘上输入一个字符串,把该字符串中的大写字母变成小写字母,其它字符不变,并写到文件test.dat中。 如输入为abc23XYZ45Az? ,写入文件的内容为: abc23xyz45az? 请填空。 #include main() {FILE*fp; charstr[80];inti=0; if((fp=fopen("test.dat",”w”))==NULL) {printf("can'topenthisfile.\n");exit(0);} printf("inputastring: \n"); gets(str); while(str[i]) {if(str[i]>=’A’&&str[i]<=’Z’) str[i]+=32; fputc(str[i],fp); i++; } fclose(fp); } 4.已知head指向单链表的第一个结点,函数insert向一有序(按data从小到大)的单链表中插入一个结点st(保持有序)。 请在空白处填入正确的内容。 #include typedefstruct {intdata; floatscore; structstud*next; }Node; Node*insert(Node*head,Node*st) {Node*p1,*p2; if(head==NULL) head=st; else {p1=head; while(p1&&p1->data>st->data) {p2=p1;p1=p1->next;} if(p1==head)head=st; else p2->next=st; st->next=p1; } return(head); } 本题 得分 五、编程题(共3小题,每题10分,共计30分) 1.从键盘输入十个整数,用选择排序法对它们按从小到大的顺序排序,输出排序以后的结果。 voidmain() {intx[10],i,,j,k,t; printf(“Input10number: \n”); for(i=0;i<10;i++) scanf(“%d”,&x[i]); for(i=0;i<9;i++) {k=i; for(j=i+1;j<10;j++) if(x[k]>x[j])k=j; if(k! =i) {t=x[k]; x[k]=x[i]; x[i]=t; } } for(i=0;i<10;i++) printf(“%d\t”,x[i]); printf(“\n”); } 2.用循环控制从键盘输入12个整数并存放在一个3×4的数组中,求最大元素与最小元素之差,并输出结果。 .voidmain() {inta[3][4]; inti,j,max,min,t; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf(“%d”,&a[i][j]); max=min=a[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言