C语言习题.docx

上传人:b****8 文档编号:9536134 上传时间:2023-02-05 格式:DOCX 页数:8 大小:16.80KB
下载 相关 举报
C语言习题.docx_第1页
第1页 / 共8页
C语言习题.docx_第2页
第2页 / 共8页
C语言习题.docx_第3页
第3页 / 共8页
C语言习题.docx_第4页
第4页 / 共8页
C语言习题.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

C语言习题.docx

《C语言习题.docx》由会员分享,可在线阅读,更多相关《C语言习题.docx(8页珍藏版)》请在冰豆网上搜索。

C语言习题.docx

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(6分)

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(8分)

   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;}

}    

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1