c语言考试题(C语言试题及答案)

2024-03-15 05:54:24

 main()

 { int k, a[10]={1,2,3,4,5};

 for(k=1; k<3; k++) fun(a);

 for(k=0; k<5; k++) printf("%d", a[k]);

 }

 上面程序的输出结果是

 A.34756

 B.23445

 C.35743

 D.12345

 (40) 请读程序:

 #include

 #define SUB(X,Y) (X)*Y

 main()

 { int a=3, b=4;

 printf("%d", SUB(a++, b++));

 }

 上面程序的输出结果是

 A.12

 B.15

 C.16

 D.20(41) 请读程序:

 #include

 main()

 { int mun=0;

 while(num<=2)

 { num++; printf("%d\n",num);}

 }

 上面程序的输出结果是

 A.1

 B.1

 C.1

 D.1

 2 2 2

 3 3

 4

 (42) 请读程序:

 #include

 main()

 { float x,y;

 scan("%f",&x);

 if(x<0.0) y=0.0

 else if((x<5.0)&&(x!=2.0))

 y=1.0/(x+2.0);

 else if (x<10.0) y=1.0/x;

 else y=10.0;

 printf("%f\n",y);

 }

 若运行时从键盘上输入2.0(表示回车),则上面程序的输出结果是

 A.0.000000

 B.0.250000

 C.0.500000

 D.1.000000

 (43) 请读程序:

 #include

 main()

 { int x=1, y=0, a=0, b=0;

 switch(x)

 { case 1:

 switch(y)

 { case 0: a++;break;

 case 1: b++;break;

 }

 case 2:

 a++; b++; break;

 }

 printf("a=%d, b=%d\n",a,

 B.;

 }

 上面程序的输出结果是

 A.a=2, b=1

 B.a=1, b=1

 C.a=1, b=0

 D.a=2, b=2

 (44) 若有下面的程序片段:

 int a[12]={0}, *p[3], **pp, i;

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

 p[i]=&a[i*4];

 pp=p;

 则对数组元素的错误引用是

 A.pp[0][1]

 B.a[10]

 C.p[3][1]

 D.*(*(p+2)+2)

 (45) 请读程序:

 #include

 #include

 main()

 { float x,y,z;

 scan("%f%f",&x,&y);

 z=x/y;

 while(1)

 { if(fabs(z)>1.0)

 { x=y; y=z; z=x/y;

 }

 else break

 }

 printf("%f\n",y);

 }

 若运行时从键盘上输入3.6 2.4(表示回车),则输出的结果是

 A.1.500000

 B.1.600000

 C.2.000000

 D.2.400000

 (46) 请读程序:

 #include

 f(in b[], int n)

 { int i, r;

 r=1;

 for(i=0; i<=n; i++) r=r*b[i];

 return r;

 }

 main()

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

 x=f(a, 3);

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

 }

 上面程序的输出结果是

 A.720

 B.120

 C.24

 D.6

 (47) 请读程序:

 #include

 #include

 void fun( char *s)

 { char a[10];

 strcpy( a, "STRING");

 s=a;

 }

 main()

 { char *p;

 fun(p);

 x=f(a, 3);

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

 }

 上面程序的输出结果是(└┘表示空格)

 A.STRING└┘└┘└┘└┘

 B.STRING

 C.STRING└┘└┘└┘

 D.不确定的值

 (48) 若已建立下面的链表结构,指针p、s分别指向图中所示的结点,则不能将s所指的结点插入到链表末尾的语句组是

 A.s->next=NULL; p=p->next; p->next=s;

 B.p=p->next; s->next=p->next; p->next=s;

 C.p=p->next; s->next=p; p->next=s;

 D.p=(*p).next; (*s).next=(*p).next; (*p).next=s;

 (49) 请读程序:

 #include

 void fun(float *pl, float *p2, float *s)

 { s=( float * )calloc( 1, sizeof(float));

 *s=*p1+ *(p2++);

 }

 main()

 { float a[2]={1.1, 2.2}, b[2]={10.0, 20.0}, *s=a;

 fun(a, b, s)

 printf("%f\n",*s);

 }

 上面程序的输出结果是

 A.11.100000

 B.12.100000

 C.21.100000

 D.1.100000

 (50) 请读程序:

 #include

 #include

 void fun( char *w, int m)

 { char s, *p1, *p2;

 p1=w; p2=w+m-1;

 while (p1{ s=*p1++; *p1=*p2--; *p2=s;}

 }

 main()

 { char a[]="ABCDEFG";

 fun( a, strlen(a));

 puts(a);

 }

 上面程序的输出结果是

 A.GFEDCBA

 B.AGADAGA

 C.AGAAGAG

 D.GAGGAGA

 二、填空题(每空2分,共40分)

 请将每空的正确答案写在答题卡上1-20序号后的横线上,答在试卷上不得分。

 (1) DOS命令分为内部命令与外部命令,XCOPY命令是 1 命令

 (2) 为了列出当前盘当前目录中所有第三个字符为C的文件名的有关信息,应该用命令 2 。

 (3) 设当前盘为A盘,当前目录为\X\Y,A盘上的一个文件QR.C在当前目录下的子目录W中。现已将A盘的当前目录改为\D\XY,当前盘改为C盘,如需指定A盘上该文件应写成 3 。

 (4) 用十六进制给存储器中的字节地址进行编号,其地址编号是从0000到FFFF,则该存储器的容量是4KB。

 (5) 设有两个八位二进制数00010101与01000111相加,其结果的十进制表示为 5 。

 (6) 数学式子 写成C语言表达式是 6 。

 (7) 下面程序的输出结果是 7 。

 #include

 main()

 { static char b[]="Goodbye";

 char *chp=&b[7];

 while( --chp >=&b[0]) putchar( *chp);

 putchar(?\n?);

 }

 (8) 下面程序的输出结果是 8 。

 #include

 void as( int x, int y, int *cp, int *dp)

 { *cp=x+y;

 *dp=x-y;

 }

 main()

 { int a=4, b=3, c, d;

 as( a, b, &c, &d);

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

 }

 (9) 请读程序:

 #include

 main( int argc, char *argv[])

 { int i;

 printf( ?%d\n", argc);

 for( i=0; i<=argc+1; i++) printf( "%s ", argv[i]);

 printf("\n");

 }

 若上面的程序编译、连接后生成可执行文件ABC.EXE,则输入以下命令行

 abc file1 file2(表示回车)

 程序执行后的输出结果是 9 。

 (10) 条件?20(11) 设二进制数a是00101101,若想通过异或运算a^b使a的高4位取反,低4位不变,则二进制数b应是 11 。

 (12) 若有以下说明和定义语句,则变量w在内存中所占的字节数是 12 。

 union aa

 { float x, y;

 char c[6];

 };

 struct st { union aa v; float w[5]; double ave; } w;

 (13) 下面程序的输出结果是 13 。

 #include

 #define N 5

 fun( char *s, char a, int n)

 { int j;

 *s=a; j=n;

 while( ereturn j;

 }

 main()

 { char s[N+1];

 int k, p;

 for( k=1; k<=N; k++)

 s[k]=?A?+k+1;

 printf( "%d\n", fun(s, ?E?, N));

 }(14) 下面程序的输出结果是 14 。

 #include

 void fun( char *a1, char *a2, int n)

 { int k;

 for( k=0; ka2[k]=( a1[k]-?A?-3+26)&+?A?;

 a2[n]=?\0?;

 }

 main()

 { char s1[5]="ABCD", s2[5];

 fun( s1, s2, 4);

 puts( s2);

 }

 (15) 下面的findmax函数返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空。

 findmax( int s[], int t)

 { int k, p;

 for( p=0, k=p; pif( s[p]>s[k]) 15 。

 return k;

 }

 (16) 下面程序的输出结果是 16 。

 #include

 fun( int x)

 { int p;

 if( x==0||x==1) return(3);

 p=x-fun( x-2);

 return p;

 }

 main()

 { printf( "%d\n", fun(9));}

 (17) 下面程序的输出结果是 17 。

 #include

 funa( int a, int b)

 { return a+b;}

 funb( int a, int b)

 { return a-b;}

 sub( int (*t)(), int x, int y)

 { return((*t)( x,y));}

 main()

 { int x, (*p)();

 p=funa;

 x=sub(p,9,3);

 x+=sub(funb, 8, 3);

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

 }

 (18) 下面程序的输出结果是 18 。

 #include

 main()

 { char *p[]={ "BOOL", "OPK", "H", "SP"};

 int i;

 for(i=3; i>=0; i--,i--) printf( "%c", *p[i]);

 printf("\n");

 }

 (19) 为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是向结点的指针域),请填空。

 data next

 struct link { char data; 19 } node;

 (20) 下面的程序用来统计文件中字符的个数,请填空。

 #include

 main()

 { FILE *fp;

 long num=0;

 if(( fp=fopen("fname.dat","r"))==NULL)

 { printf( "Can?t open file! \n"); exit(0);}

 while 20

 { fgetc(fp); num++;}

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

 fclose(fp);

 }

参考答案

 一`选择题((1)~(40)题每题1分,(41)~(50)题每题2分,共60分)

 (1)C (2)A (3)B (4)D (5)D (6)A (7)C (8)B (9)D (10)C

 (11)B (12)D (13)A (14)C (15)B (16)A (17)B (18)A (19)C (20)C

 (21)D (22)B (23)B (24)A (25)C (26)D (27)D (28)B (29)C (30)A

 (31)B (32)B (33)D (34)C (35)A (36)C (37)A (38)B (39)C (40)A

 (41)C (42)C (43)A (44)C (45)B (46)B (47)D (48)C (49)D (50)C

 二` 填空题(每空2分,共40分)

 (第(2)`(3)空允许小写或大小写混合使用,其它空均须与答案一样)

 (1) 外部

 (2) DIR C*.*

 (3) A:\X\Y\W\QR.C

 (4) 64

 (5) 92

 (6) pow(sin(x),2) * (a+b)/(a-b) 或 sit(x) * sit(x) * (a+b)/(a-b)

 (7) eybdooG

 (8) 7 1

 (9) 3 abc.exe file1 file2 (注:两个答案,每个1分)

 (10) ((20 (11) 11110000

 (12) 34

 (13) 3

 (14) XYZA

 (15) k=p

 (16) 7

 (17) 17

 (18) SO

 (19) struct link *next

 (20) (!feof(fp))或(feof(fp)==0)

2020年计算机二级C语言考试每日一练(6月28日)

题目1:

使用if多分支结构:

c

#include<stdio.h>

int main()

{

int score;

printf("请输入学生的成绩:\n");

scanf("%d", &score);

if(score>=90 && score<=99){

printf("学生的成绩等级为A\n");

}else if(score>=80 && score<=89){

printf("学生的成绩等级为B\n");

}else if(score>=70 && score<=79){

printf("学生的成绩等级为C\n");

}else if(score>=60 && score<=69){

printf("学生的成绩等级为D\n");

}else if(score>=0 && score<=59){

printf("学生的成绩等级为E\n");

}else{

printf("输入的成绩不合法\n");

}

return 0;

}

使用switch多分支结构:

c

#include<stdio.h>

int main()

{

int score;

printf("请输入学生的成绩:\n");

scanf("%d", &score);

switch(score/10){

case 10:

case 9:

printf("学生的成绩等级为A\n");

break;

case 8:

printf("学生的成绩等级为B\n");

break;

case 7:

printf("学生的成绩等级为C\n");

break;

case 6:

printf("学生的成绩等级为D\n");

break;

default:

if(score>=0 && score<=59){

printf("学生的成绩等级为E\n");

}else{

printf("输入的成绩不合法\n");

}

break;

}

return 0;

}

题目2:

c

#include<stdio.h>

#include<math.h>

int is_prime(int num)

{

int i;

for(i=2; i<=sqrt(num); i++){

if(num%i == 0){

return 0;

}

}

return 1;

}

int main()

{

int num;

printf("请输入一个整数:\n");

scanf("%d", &num);

if(is_prime(num)){

printf("%d是素数\n", num);

}else{

printf("%d不是素数\n", num);

}

return 0;

}

题目3:

c

#include<stdio.h>

#define N 5

int main()

{

int arr[N];

int i, temp;

printf("请输入%d个数:\n", N);

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

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

}

for(i=0; i<N/2; i++){

temp = arr[i];

arr[i] = arr[N-1-i];

arr[N-1-i] = temp;

}

printf("逆序输出数组:");

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

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

}

printf("\n");

return 0;

}

备考全国计算机二级C语言考试的小伙伴们,复习的都怎么样了呢?环球青藤小编发布了2020年计算机二级C语言考试每日一练供大家参考复习,小伙伴们快来做一做,测试一下自己吧!了解更多全国计算机二级C语言备考资料敬请关注环球青藤计算机二级频道。

2020年计算机二级C语言考试每日一练(6月28日)

1.以下不合法的数值常量是()。

A.8.0E0.5

B.1e1

C.011

D.Oxabcd

答案:A

2.以下关于C语言数据类型使用的叙述中错误的是()。

A.若要处理如?人员信息?等含有不同类型的相关数据,应自定义结构体类型

B.若要保存带有多位小数的数据,可使用双精度类型

C.若只处理?真?和?假?两种逻辑值,应使用逻辑类型

D.整数类型表示的自然数是准确无误差的

答案:C

3.设有定义:int k=0;以下选项的四个表达式中与其他三个表达式的值不相同的是()。

A.++k

B.k+=1

C.k++

D.k+1

答案:C

4.下列关于栈叙述正确的是()。

A.栈顶元素先能被删除

B.栈顶元素后才能被删除

C.栈底元素永远不能被删除

D.栈底元素先被删除

答案:A

5.下列叙述中正确的是()。

A.在栈中,栈中元素随栈底指针与栈顶指针的变化而报考变化

B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而报考变化

C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而报考变化

D.以上说法都不正确

答案:C

更多2020年计算机二级C语言考试每日一练试题,请继续关注环球青藤计算机二级频道。需要及时了解考试动态的小伙伴可? 免费预约短信提醒?届时环球青藤会及时为大家推送2020年计算机二级考试相关信息提醒。环球青藤友情提示:对于想要参加计算机二级考试的小伙伴们,环球青藤特地为您准备了计算机二级考试资料,如有需要请点击文章下方?免费下载>>>计算机二级考试资料?下载学习。

TAGS:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;
3.作者投稿可能会经我们编辑修改或补充。

搜索
排行榜
标签列表