C语言习题.docx
- 文档编号:9536134
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:8
- 大小:16.80KB
C语言习题.docx
《C语言习题.docx》由会员分享,可在线阅读,更多相关《C语言习题.docx(8页珍藏版)》请在冰豆网上搜索。
C语言习题
C语言程序设计试卷(A)
一、单项选择题(每小题1分,共5分)
1. 设有如下定义,则对data中的a成员的正确引用是()
structsk{inta;floatb;}data,*p=&data;
A.(*p).data.aB.(*p).aC.p->data.aD.p.data.a
2.设有inti;则表达式i=1,++i,++i||++i,i的值为()
A.1B.2C.3D.4
3.设有inti;则表达式(i=1,i=10)?
i++||++i:
++i的值为()
A.1B.2C.3D.10
4.设有inta[]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是()
A.10,11,12B.11,12,12C.10,12,12D.11,11,12
5.设有说明ints[2]={0,1},*p=s;则下列错误的C语句是()
A.s+=1;B.p+=1;C.*p++;D.(*p)++;
二、填空题(每小题2分,共12分)
1.char(*pa)[10];说明pa是______________。
2.inta=1,b=2,c=3;表达式!
(x=a)&&(y=b)&&1+a==b的值为____________。
3.表达式98&&8&&31&1的值为______________。
4.printf("%5.3f\n",123456.12345);输出为_____________。
5.表达式~3&(2&(3^4))的值为_______________。
6.floatx=3.5,y=4.3;inta=8,表达式y+a%3*(int)((x+y)/4+0.05)/3的值为_____________。
三、改错题(每小题6分,共12分)
1.下列程序是用二分法在递增的数组中查找某个数,若存在,输出该数的下标位置;否则输出-1。
main()
{intlow,hig,mid,flag=0,key;
staticinta[7]={10,13,15,17,19,21,25,28};
scanf(“%d”,&key);
for(low=0,hig=7;low<=hig&&flag==0;)
{mid=(low+hig)/2;
if(a[mid]==key)flag=1;
elseif(a[mid] elselow=mid+1; } if(flag)printf(“%d\n”,mid);elseprintf(“-1”); } 2.下列程序是输入n(0 #defineN100 intsum(int*b,m) {ints=0; for(;m--;) s+=*b++; returns; main() {inti,n,a[N]; do{printf(“Entern(0 scanf(“%4d”,&n); }while(n>0&&n<=100); printf(“Entera[0]---a[%d]\n”,n-1); for(i=0;i scanf(“%d”,a++); printf(“sum=%d\n”,sum(a,n)); } 四、程序分析,给出下列各程序的执行结果(输出) 1.main()(2分) {inta=6; a+=a%=a*=a+a; printf(“%d\n”,a); } 程序的运行结果为: 2.main()(6分) {int*p,*q,n; scanf(“%d”,&n); p=(int*)malloc(n*sizeof(int)); for(q=p+n-1;q>=p;q--) scanf(“%d”,q); for(q=p+n-1;p<=q;p++) printf(“%3d”,*p); } 当输入数据序列为842651387↙时 程序的输出结果为: 3. main()(5分) {inta[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i; for(i=0;i<4;i++)p[i]=&a[i*3]; printf(“%d\n”,p[3][2]); } 程序的运行结果为: 4. main()(5分) {inta[][4]={1,3,5,7,9,11,13,17,19,21,23}; int(*p)[4],i=1,j=2; p=a; printf(“%d\n”,*(*(p+i)+j)); } 程序的运行结果为: 5.#include intf(intn) {staticints=1; while(n)s*=n--; returns; } main() {inti,j; i=f(3);j=f(5); printf("\nTheoutputis: \n\n"); printf("i=%dj=%d\n",i,j); } 程序的运行结果为: 6.#include inta[10]={1,2,3,4,5,6,7,8,9,10}; voidrev(int*m,intn) {intt; if(n>1) {t=*m;*m=*(m+n-1);*(m+n-1)=t; rev(m+1,n-2);} } main() {inti; printf("\nTheoutputis: \n\n"); rev(a+2,6); for(i=0;i<10;i++) printf("%d",a[i]); printf("\n"); rev(a,5); for(i=0;i<10;i++) printf("%d",a[i]); printf("\n"); } 程序的运行结果为: 7.typedefstructnode(3分) {intx; char*s;}node; func(nodet) {t.x=10; t.s=”computer”; return(0); } main() {nodet; t.x=1; t.s=”minicomputer”; func(t); printf(“%d,%s”,t.x,t.s); } 程序的运行结果为: 8.#definen 6(6分) main() {intx[n]={6,2,7,3,9,1},i,j,flag,temp; for(i=0;i {flag=0; for(j=n-1;j>i;j--) if(x[j] if(! flag)break; } for(j=0;j } 程序的运行结果为: 五、在下面程序中横线处填上适当语句或表达式(每个空格3分,共30分)。 1. 本函数是判断整数m是不是素数。 #include voidprime(intm) {intj,k; k=sqrt(m); for(j=2; (1);j++) if( (2))break; if((3))printf(“%disaprimenumber\n”); elseprintf(“%disnotaprimenumber\n”); } 2.本程序是将十进制数n转化为d进制数(2≤d≤16)。 intchange(intn,intd,char*a) {intr,i=0; while( (1)) {r=n%d; if(r<10)r=r+ (2); elser=r+(3); *ai++=r;i++;n=n/d;} returni-1;} main() {intn,d,i,j;charx[100]; printf(“inputn,d: ”); scanf(“%d%d”,&n,&d); j=change((4)); printf(“\noutput: ”); for(i=j;i>=0;i--)printf(“%c”,x[i]); } 3.本程序是将10个学生的信息放在一个链表中。 structstudent {intno; charname[12]; floatscore; structstudent*next; }; main() {structstudent*head,*p,*q; intj; for(j=1;j<=10;j++) {if( (1)){head=(structstudent*)malloc(sizeof(structstudent)); p=head;} else{q=(structstudent*)malloc(sizeof(structstudent)); (2);p=q;} scanf(“%d,%s,%f”,&p->no,&p->name,&p->score); } (3)=NULL; p=head; while((4)) {printf(“\n%d,%s,%4.1f”,p->no,p->name,p->score); p=p->next;} }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题