c语言试题及答案.docx

上传人:b****0 文档编号:18562686 上传时间:2023-08-19 格式:DOCX 页数:17 大小:20.49KB
下载 相关 举报
c语言试题及答案.docx_第1页
第1页 / 共17页
c语言试题及答案.docx_第2页
第2页 / 共17页
c语言试题及答案.docx_第3页
第3页 / 共17页
c语言试题及答案.docx_第4页
第4页 / 共17页
c语言试题及答案.docx_第5页
第5页 / 共17页
c语言试题及答案.docx_第6页
第6页 / 共17页
c语言试题及答案.docx_第7页
第7页 / 共17页
c语言试题及答案.docx_第8页
第8页 / 共17页
c语言试题及答案.docx_第9页
第9页 / 共17页
c语言试题及答案.docx_第10页
第10页 / 共17页
c语言试题及答案.docx_第11页
第11页 / 共17页
c语言试题及答案.docx_第12页
第12页 / 共17页
c语言试题及答案.docx_第13页
第13页 / 共17页
c语言试题及答案.docx_第14页
第14页 / 共17页
c语言试题及答案.docx_第15页
第15页 / 共17页
c语言试题及答案.docx_第16页
第16页 / 共17页
c语言试题及答案.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c语言试题及答案.docx

《c语言试题及答案.docx》由会员分享,可在线阅读,更多相关《c语言试题及答案.docx(17页珍藏版)》请在冰点文库上搜索。

c语言试题及答案.docx

c语言试题及答案

理论考试(120分钟)

一、单项选择题(在每小题的4个备选答案中,选出一个最佳答案,共15小题;每小题2分,共30分)

1.一个C程序的执行是从(A)

A.本程序的main函数开始,到main函数结束

B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C.本程序的main函数开始,到本程序文件的最后一个函数结束

D.本程序文件的第一个函数开始,到本程序main函数结束

2.已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是(B)

if(x>y)z=x;x=y;y=z;

A.10,20,30B.20,30,30C.20,30,10D.20,30,20

3.inta=1,b=2,x=3;表达式:

x*=a+b计算后x的值为:

(B)

A.5B.9C.3D.6

4.下列选项,在C语言中能作为合法标识符的是(D)

A.%xB.a+bC.2_int_12_D.int_2_

5.#include(A)

voidmain()

{

intsum,pad;

sum=pad=5;

pad=sum++;

pad++;

++pad;

printf("%d%d\n",pad,sum);

}

A.76B.65C.75D.66

6.若有说明:

inta[10];则对a数组元素的正确引用是(D)

A.a[10]B.a[3,5]C.a(5)D.a[10-10]

7.请读程序

#include

#defineMUL(x,y)(x)*y

voidmain()

{inta=3,b=4,c;

c=MUL(a++,b++);

printf("%d\n",c);

}

上面程序的输出结果是(A)。

A.12B.15C.20D.16

8.若用数组名作为函数调用的实参,传递给形参的是数组的(A)

A.数组的首地址B.数组第一个元素的值

C.数组中全部元素的值D.数组元素的个数

9.阅读以下程序

voidmain()

{inta=5,b=0,c=1;

if(a=b+c)printf(“***\n”);

elseprintf(“$$$\n”);

}

以上程序(C)

A.语法有错不能通过编译B.可以通过编译但不能通过连接

C.输出***D.输出$$$

10.下列关于函数定义正确的是(D)

A.fun(intx,y){intz;returnz;}

B.voidfun(intx,inty){returnx+y;}

C.fun(x,y){intx,y;doublez;z=x+y;returnz;}

D.doublefun(intx,inty){doublez;z=x+y;returnz;}

11.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(B)

A.地址传递B.单向值传递

C.由实参传给形参,再由形参传回实参D.传递方式由用户指定

12.具有相同基类型的指针变量P和数组Y,下列写法中不合法的是(D)

A.P=YB.*P=Y[i]

C.P=&Y[i]D.P=&Y

13.设x和y均为int型变量,则下列语句:

x+=y;y=x-y;x-=y;的功能是(D)

A.把x和y按从大到小排列。

B.把x和y按从小到大排列。

C.无确定的结果。

D.交换x和y中的值

14.若已定义:

chars[10];则在下面表达式中不表示s[1]的地址的是(B)

A.s+1B.s++C.&s[0]+1D.&s[1]

15.以下定义语句中,错误的是(D)

A.inta[]={1,2};B.char*a[3];

C.chars[10]="text";D.intn=5,a[n];

二、完善程序(本大题5小题,每空1分,共10分)

1.下面程序是将一个字符串的内容颠倒过来,请补充完整程序。

#include

#include

voidchange(charstr[])

(1)/*函数头*/

{

intlen,i,j;

charc;

len=strlen(str);

for(i=0,j=len-1;i

{

c=str[i];

str[i]=str[j]

(2);

str[j]=c;

}

}

voidmain()

{

charstr[80];

printf("Enterstring:

");

gets(str);

change(str);

printf("\nresultis:

%s\n",str);

}

2.输入一个整数,并在数组中查找这个数。

如果找到这个数,就将对应元素的取值改变为它的相反数。

voidmain()

{inti,x,a[]={3,5,8,2,5,7,9,4};

scanf("%d",&x);/*输入所要查找的数,并把这个数赋值给x*/

for(i=0;i<8;i++)/*在数组中查找这个数*/

if(a[i]==x)

a[i]=-x;

}

3.用折半查找法填空(需要查找的数为m):

intbinary(inta[10],intm)

{intlow=0,high=9,mid;

while(low<=high)

{mid=(low+high)/2;

if(m

elseif(m>a[mid])mid=low(6);

elsereturn(mid);

}

return(-1);

}

4.下面程序是判断输入的字符串是否是回文(顺读和倒读都一样的字符串称为回文),请完成程序。

voidmain()

{chars[81],*p1,*p2;

intn;gets(s);n=strlen(s);

p1=s;p2=s[n-1];

while(p1

{if(*p1!

=*p2)break;

else

{

p1++;p2--(8);

}

}

if(p1

elseprintf("Yes\n");

}

5.下面程序由终端键盘输入字符,存放到文件中去,用!

结束输入。

完善程序。

#include"stdio.h"

voidmain()

{FILE*fp;

charch,fname[10];

printf("Inputnameoffile\n");gets(fname);

if((fp=fopen(fname,"w"))==NULL)

{printf("cannotopenthisfile!

\n");

exit(0);

}

printf("Enterdata:

\n");

while((ch=getchar())!

='!

')fputc(ch,fp);

fclose(fp);

}

三、读程序写结果(本大题5小题,每题4分,共20分)

1.以下程序的输出结果是2143。

voidfun(int*x,int*y)

{

printf(“%d%d”,*x,*y);

*x=3;

*y=4;

}

voidmain()

{intx=1,y=2;

fun(&y,&x);

printf(“%d%d”,x,y);

}

2.以下程序的输出结果是249。

#include

intfun(intn)

{

staticintf=1;

intm=2;

f=f*n;

m++;

return(f+n);

}

voidmain()

{

inti;

for(i=1;i<=3;i++)

printf("%d",fun(i));

}

3.若输入的值是-125,以下程序的运行结果是-125=-5*5*5。

#include"math.h"

voidmain()

{intn;scanf("%d",&n);

printf("%d=",n);

if(n<0)printf("-");

n=fabs(n);

fun(n);

}

fun(intn)

{intk,r;

for(k=2;k

{r=n%k;

while(r==0)

{printf("%d",k);n=n/k;

if(n>1)printf("*");

r=n%k;

}

}

if(n!

=1)printf("%d\n",n);

}

4.以下程序的运行结果是0136。

#include

voidmain()

{inti,k;

for(i=0;i<4;i++)

{k=sub(&i);

printf("%3d",k);

}

printf("\n");

}

intsub(int*s)

{staticintt=0;

t=*s+t;returnt;

}

5.以下程序段的输出结果是70,10。

#include"stdio.h"

struct sp

{inta;

intb;

}*p,*q;

structspt[3]={70,10,80,20,90,30};

voidmain()

{ p=t;

q=p++;

printf("%d,%d",q->a,q->b);

}

四、编程题(本大题共4题,每小题10分,共40分)

1.编写程序,从键盘上输入10个学生的成绩,计算出平均成绩,并输出不及格的成绩和人数。

(简单,自己写)

#include

voidmain(){

intscore[10],i,j=0,sum=0;

floatavg=0;

for(i=0;i<10;i++){

scanf("%d",&score[i]);

}

for(i=0;i<10;i++){

if(score[i]<60){

printf("%d",score[i]);

j++;

}

sum+=score[i];

}

avg=sum/10.0;

printf("\n平均分为%f,不及格人数为%d",avg,j);

}

2.编写程序,实现把键盘输入的数字串转换成对应的整数。

#include

#include

voidmain()

{

inttemp,a;

intnum=0;

chars;

printf("输入数字字符串:

");

while((s=getchar())!

='\n'){

temp=0;

a=s-48;

num=num*10+a;

}

printf("num=%d\n",num);

}

3.找出100以内的所有素数,找出的素数输出到data.txt文件中,要求用自定义函数实现判断素数的功能。

#include

#include

intss(intn)/*检查n是否为素数,如果是则返回1,否则返回0*/

{

inti;

for(i=2;i<=(int)sqrt((double)n);i++)

if(n%i==0)

return0;

return1;

}

intmain(void)

{

FILE*fp;

fp=fopen("data.txt","w");

inti,j=0;

for(i=2;i<=100;i++)

if(ss(i))

{

j++;

fprintf(fp,"%5d",i);

}

fclose(fp);

return0;

}

4.动态创建链表并打印链表各结点信息。

链表每个结点包含学号、姓名、性别三个信息。

当输入学号为-1时表示输入结束。

#include

#defineNULL0

#defineLENsizeof(structstudent)

structstudent{

intNo;

charname[10];

charsex;

structstudent*next;

};

intn;

structstudent*create(void){

structstudent*head,*p1,*p2;

n=0;

p1=p2=(structstudent*)malloc(LEN);

printf("InputNoNameandSex\n");

scanf("%d%s%s",&p1->No,p1->name,p1->sex);

head=NULL;

while(p1->No!

=-1){

n++;

if(n==1)

head=p1;

else

p2->next=p1;

p2=p1;

p1=(structstudent*)malloc(LEN);

printf("InputNoNameandSex\n");

scanf("%d%s%s",&p1->No,p1->name,p1->sex);

}

p2->next=NULL;

return(head);

}

voiddisplaylist(structstudent*head){

structstudent*p;

p=head;

do{

printf("%d%s%d\n",p1->No,p1->name,p1->sex);

p=p->next;

}while(p!

=NULL);

}

voidmain(){

structstudent*head,*p;

head=create();

displaylist(head);

}

 

实验考试(120分钟)

一、改错题(本题共有5处错误,每处错误6分,计30分)

下面程序功能是将一个数组从二分之一处切开(元素个数为奇数时,正中间元素不动;元素个数为偶数时,无正中间元素),然后将中间的元素向两头搬移,同时两头元素向中间平移,共移动了4次。

例如,对于123458899678910

搬移一次后的格局为:

881234567891099。

最后运行结果为:

345881291099678

请改正程序中的错误,使它能得出正确结果。

注意:

1、不得增行或删行;

2、不得更改程序的结构。

3、在运行时如果遇到死循环,按Ctrl+Break键结束运行

#include

#defineN12

intmove(intp[],intm)

{

intk,x;

k=m/2;

if(m%2==0)k--;

x=p[k];

for(;k>0;k--)

p[k]=p[k-1];

p[k]=x;

k=m/2;

if(m%2==1)k++;

x=p[k];

for(;k

p[k+1]=p[k];

p[k]=x;

returnp[k];

}

voidmain()

{

intk;

inta[N]={1,2,3,4,5,88,99,6,7,8,9,10};

for(k=0;k<6;k++)move(a,N);

for(k=0;k<12;k++)

printf("%d",*(a+k));

putchar('\n');

}

二、编程题(本题共3小题,第1,2题各20分;第3题,30分,计70分)

1、编写一程序,将字符串s中的数字字符放入d数组中,最后输出d中的字符串。

字符串s通过键盘输入。

例如:

输入字符串abc123def4567ghf,执行程序后输出结果为1234567。

 

#include

#include

void main(){

  char s[80], d[80];  

  int i, j;

  gets(s);

  for(i=j=0; s[i]!

='\0';i++)

if(s[i]>=48&&s[i]<=57){ 

  d[j]=s[i]; 

  j++;

}

  d[j]='\0';

  puts(d);        

2、求1!

+2!

+3!

+...+20!

,其中计算阶乘编写一个自定义函数fact,在main函数中调用。

  #include 

  long fact(int n){

   int i;

 long p=1;

 for(i=1;i<=n;i++)

 p*=i;

 return p;

}

void main()

{

 long s=0;

 int i;

 for(i=1;i<=20;i++)

  s+=fact(i);

 printf("%ld\n",s);

}

3、有5个学生,每个学生有三门课程的成绩,从键盘输入学生信息(包括学号、姓名、语文成绩、数学成绩、英语成绩),计算每个学生的总分,将原有数据和计算出的总分存放在磁盘文件“stuinfo.txt”中。

(30分)。

#include

void main(){

  struct Student{

   int no;

   char name[20];

   int ch;

   int ma;

   int eng;

   int sum;

  };

  struct Student stu[5];

  int i;

  FILE *fp;

  for(i=0;i<5;i++){

  printf("Please Input Student Information [%d]\n",i+1);

  scanf("%d%s%d%d%d",&stu[i].no,&stu[i].name,&stu[i].ch,&stu[i].ma,&stu[i].eng);

  stu[i].sum=stu[i].ch+stu[i].ma+stu[i].eng;

  }

  if((fp=fopen("stuinfo.txt","wb+"))==NULL){

    printf("Open File Error!

");

return;

  }

  fwrite(stu,sizeof(stu),1,fp);

}

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2