当前位置:文档之家› C语言程序设计试卷及答案

C语言程序设计试卷及答案

C 语言程序设计 笔试试题题号 一 二 三 四 五 六 笔试(70%)综合 (30%)总分分数试卷说明:1. 笔试卷面总分100分,取卷面成绩的70%计入总分;2. 综合成绩为平时成绩(10%)和实验成绩(20%)之和,占总分的30%;3. 答题时禁止拆开试卷钉,试卷背面即为草稿纸;4. 答题时间120分钟。

一、单项选择题。

将正确答案填入下面框中。

(本题16分,每小题1分) 题号 1 2 3 4 5 6 7 8 答案 题号 9 10 11 12 13 14 15 16 答案1. 有以下程序 main() {int a=1,b=0; if(!a) b++;else if(a==0) if(a) b+=2; else b+=3;printf(“%d\n ”,b); }则程序输出( A )。

A) 0B) 1C) 2D) 32. 有以下定义:int a; long b; double x,y;则下列正确的是( A )。

A) a%(int)(x-y) B) a=x!=yC) (a*y)%b D) y=x+y=x3. 若有定义 int (*p)[3];则下列说法正确的是( C )。

号学名姓注意行为规范 遵守考试纪律A) 定义了基类型为int的三个指针变量B) 定义了一个名为*pt、具有三个元素的整型数值C) 定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组D) 定义了基类型为int的具有三个元素的整型数组4. 有以下程序段main(){ int x=10;while(x--);printf("x=%d\n",x);}则最后的输出结果是:( B)。

A) x=0 B) x= -1 C) x=1 D)while构成无限循环5. 有以下程序:int fun(){static int x=1;x *= 2;return x;}main( ){ int i,s=1 ;for(i=1 ;i<=2 ;i++) s=fun() ;printf(“%d\n ”,s) ;}执行后的输出结果为( D)。

A) 0 B) 1 C) 8 D) 46. void main( ){int k=011;printf("%d\n",k++); }}程序输出结果是( D )A)12 B) 11 C) 10 D) 97. 以下C语言标识符中,不合法的是( C)。

A) _2 B) a_b C) a--b D) AaBc8. C语言允许函数类型默认定义,此时该函数值隐含的类型是( B)。

A) float B) int C) long D) double9. 以下程序段运行结果是( B)。

enum weekday{aa,bb=2,cc,dd,ee}week=ee;printf(“%d\n“,week);A) 4 B) 5 C) ee D) 010. 以下对C语言函数的描述中,不正确的是( B )。

A) 不同函数中可以使用相同名字变量B) 函数可以嵌套定义C) 函数可以没有返回值D) 程序由函数组成11. 若有定义语句:double x[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是( D )。

A) *p B) *x C) *(p+1) D) x[5]12. 以下程序段运行结果是( B )。

int a=6;printf(“%d\n“,a>>1);A) 12 B) 3 C) 6 D) 113. 若有定义语句:double x,y,*px,*py;执行了px=&x;py=&y;之后,正确的输入语句是( B )。

A) scanf(“%lf%lf”,x,y); B) scanf(“%lf,%lf”,px,py);C) scanf(“%f%f”,&x,&y); D) scanf(“%f%f”,x,y);14. 以下程序运行结果是( D )。

char str[ ]=“abc“;printf(“%d, %d \n“,strlen(str),sizeof(str));A)6,3 B) 3,3 C) 10,10 D) 3,1015. 以下程序段运行结果是( A )。

#define f(x) x*x*xmain( ){ int a=1,b,c;b=f(a+1);c=f((a+1));printf(“%d,%d\n“,b,c);}A) 4,8 B) 8,4 C) 8,8 D) 4,416. 有以下程序:main(){FILE *f;f=fopen(“fa.txt“,“w“);fprintf(f,“day“);fclose(f);}若文本文件fa.txt中原有内容为:hello,则运行以上程序后,文件fa.txt中的内容为( A )。

A)day B) helloday C) daylo D)dayhello二、填空题。

请按序号把答案填入下面框中,不允许出框线。

(本题20分,每空2分)题号答案题号答案1 a[row][col] 6 k<=n2 x%10或x%100%10 7 k++3 23hE45a8 m%i==0&&n%i==04 fun() 9 p=p->next5 m++ 10 s[i]或’\0’1. 以下fun函数功能是在N行M列的整型二维数组中,选出一个最大值作为函数值返回。

int fun(int a[N][M]){ int i,j,row=0,col=0;for(i=0;i<N;i++)for(j=0;j<M;j++)if(a[i][j]>a[row][col]){row=i;col=j;}return( 【1】);}2. 以下程序的功能是:将值为三位正整数的变量x中的数值按照个位、十位,百位的顺序拆分输出。

main(){ int x=123;printf(“%d-%d-%d\n”, 【2】,x/10%10,x/100);}3. 下列程序运行时,若输入23he45a<回车>,输出结果是【3】#include <stdio.h>main(){ char a=0;ch;while((ch=getchar())!=’\n’){if(a%2!=0&&(ch>=’a’&&ch<=’z’)) ch=ch-‘a’+’A’;a++;putchar(ch);}printf(“\n”);}4. 以下程序的功能是,通过函数fun输入字符并统计输入字符个数。

用字符$作为输入结束标志。

#include <stdio.h>long 【4】;/*函数声明语句*/main(){ long n;n=fun(); printf(“n=%ld\n”,n);}long fun(){long m;for(m=0;getchar()!='$'; 【5】);return m;}5. 有以下程序段,且变量已正确定义和赋值for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));printf("s=%f\n\n",s);请填空,是下面程序段的功能与之完全相同s=1.0;k=1;while( 【6】){s=s+1.0/(k*(k+1)); 【7】;}printf("s=%f\n\n",s);6. 以下函数的功能是求两个整数的最大公约数。

fun(int m,int n){ int i=1,t;for(;i<=m&&i<=n;i++)if( 【8】)t=i;return(t);}7. 以下程序将三个struct node型变量链接成一个链表,并在while循环中输出链表节点数据域中的数据。

struct node{int data;struct node *next;}main(){ struct node a,b,c,*p,*q;a.data=10;b.data=20;c.data=30;p=&a;a.next=&b;b.next=&c;c.next=NULL;q=p;while(p){printf(“%d,”,p->data); 【9】;}printf(“\n”);}8. 以下程序的功能是:删除字符串中所有的空格。

main(){ char s[20]=”how are you!”;int i,j;for(i=j=0;s[i]!=’\0’;i++)if(s[i]!=’’){ s[j]=s[i]; j++; }s[j]= 【10】;}三、请把下列程序运行结果填入答案框中,不允许出框线,用“↙”表示回车。

(本题24分,每小题3分)题号 1 2 3 4 5 6 7 8 答案124 43 6 4 121 55555 30 41. main(){ int i,j,a[ ][2]={1,2,3,4};for(i=0;i<2;i++)for(j=i;j<2;j++) printf(“%d”,a[i][j]);printf(“\n”);}2.main(){char ch[ ]=”453cd34”;int i,s=0;for(i=0;ch[i]>’0’&& ch[i]<’9’;i+=2)s=10*s+ ch[i]-’0’;printf(“%d\n”,s);}3. long fib(int n){if(n>2) return(fib(n-1)+fib(n-2));else return(2);}void main(){printf(“%d\n”,fib(4));}{ union example{struct{ int x;int y;}in;int a;int b;}e;e.a=2;e.b=1;e.in.x=e.a+e.be.in.y=e.a*e.b;printf(“%d\n”,e.in.y);}5. struct NODE{int k;struct NODE *link;};void main(){ struct NODE m[3],*p=m,*q=m+2;int i=0;while(p!=q){p->k=++i;p++;q->k=i++;q--; }q->k=i;for(i=0;i<3;i++)printf(“%d”,m[i].k);printf(“\n”);}6. main(){ int j,a[]={1,3,5,7,9},*p=a+3;for(j=3;j;j--){ switch(j){case 1:case 2:printf("%d",*(p++));case 3:printf("%d",*(--p));}}}{int x;for(x=1;x<=50;x++)if(x%2==0)if(x%3==0)if(x%5==0)printf("%d",x);}8.main(){int a,b;for(a=1,b=1;a<=50;a++){ if(b>8)break;if(b%3==1){b+=3;continue;}b-=5; }printf("%d\n",a);}四、根据功能描述改正程序中的错误。

相关主题