c语言2级考试

本文提供了一组C语言编程的选择题和程序设计题目,涉及变量、运算符、流程控制、字符串、数组、函数调用等方面的知识。通过这些题目,读者可以检验和提升自己的C语言编程能力,包括理解程序逻辑、计算表达式和实现特定功能的代码编写。
摘要由CSDN通过智能技术生成
本文仅给出第一份试卷试题及答案
 
一、单项选择
26 题 (共计 50 分)
1 题 ( 1.0 分) 题号 :2686
inta=12 ,则执行完语句 a+=a-=a*a 后, a 的值是 ______
A:552
B:264
C:144
D:-264
答案: D
2 题 ( 1.0 分) 题号 :2667
属于合法的 C 语言长整型常量的是()
A:0L
B:(long)123456
C:2e10
D:5876273000
答案: A
3 题 ( 1.0 分) 题号 :2661
下面程序的输出结果是( )。
#include<stdio.h>
voidmain()
{
intm=5;
if(m++>5)printf("%d\n",m);
elseprintf("%d\n",m--);
}
A:7
B:6
C:5
D:4
答案: B
4 题 ( 1.0 分) 题号 :2748 a b c 都是 int 型变量,且 a=3 b=4 c=5 ,则下面的表达式中,值为 0 的表达式是 ______
A:'a'&&'b'
B:a<=b
C:a||+c&&b-c
D:!((a<b)&&!c||1)
答案: D
5 题 ( 1.0 分) 题号 :2760
a b c d m n 均为 int 型变量,且 a=5 b=6 c=7 d=8 m=2 n=2 则逻辑表达式
(m=a>b)&&(n=c>d) 运算后, n 的值为 ______
A:0
B:1
C:2
D:3
答案: C
6 题 ( 1.0 分) 题号 :2739
有以下程序
main()
{chara,b,c,d;
scanf("%c,%c,%d,%d",&a,&b,&c,&d);
printf("c,%c,%c,%c\n",a,b,c,d);
}
若运行时从键盘上输入: 6,5,65,66 。则输出结果是 ______
A:6,5,65,66
B:6,5,6,5
C:6,5,A,B
D:6,5,6,6
答案: C
7 题 ( 1.0 分) 题号 :2737
有以下程序
main()
{intm=3,n=4,x;
x=-m++;
x=x+8/++n;
printf("%d\n",x);
}
程序运行后的输出结果是 ______ A:3
B:5
C:-1
D:-2
答案: D
8 题 ( 1.0 分) 题号 :2693
有如下程序
main()
{
int y=3,x=3,z=1;
printf("%d%d\n",(++x,y++),z+2);
}
运行该程序的输出结果是 ______
A:3 4
B:4 2
C:4 3
D:3 3
答案: D
9 题 ( 1.0 分) 题号 :2797
以下程序的功能是 : 按顺序读入 10 名学生 4 门课程的成绩 , 计算出每位学生的平均分并输出 , 程序
如下 :
#include <stdio.h>
voidmain()
{
intn,k;
floatscore,sum,ave;
sum=0.0;
for(n=1;n<=10;n++)
{
for(k=1;k<=4;k++)
{
scanf("%f",&score); sum+=score;
}
ave=sum/4.0;
printf("NO%d:%f\n",n,ave);
'
}
}
上述程序运行后结果不正确 , 调试中发现有一条语句出现在程序的位置不正确 . 这条语句是
______.
A:sum=0.0;
B:sum+=score;
C:ave=sum/4.0;
D:printf("NO%d:%f\n",n,ave);
答案: A
10 题 ( 1.0 分) 题号 :2799
若有如下程序段 , 其中 s a b c 均已定义为整型变量 , a c 均已赋值 (c 大于 0).
s=a;
for(b=1;b<=c;b++)
s=s+1;
则与上述程序段功能等价的赋值语句是 (
).
A:s=a+b;
B:s=a+c;
C:s=s+c;
D:s=b+c;
答案: B
11 题 ( 1.0 分) 题号 :525
C 语言中不可以嵌套的是()。
A: 函数调用
B: 函数定义
C: 循环语句
D: 选择语句
答案: B 12 题 ( 1.0 分) 题号 :678
当调用函数时,实参是一个数组名,则向函数传送的是()。
A: 数组的长度
B: 数组的首地址
C: 数组每一个元素的地址
D: 数组每个元素中的值
答案: B
13 题 ( 1.0 分) 题号 :2876
有以下程序
main()
{ chars[]="\n123\\";
printf("%d,%d\n",strlen(s),sizeof(s));
}
执行后输出结果是( )。
A: 赋初值的字符串有错
B:6,7
C:5,6
D:6,6
答案: C
14 题 ( 1.0 分) 题号 :651
以下定义语句中,错误的是()。
A:inta[]={1,2};
B:char*a[3];
C:chars[10]="test";
D:intn=5,a[n];
答案: D
15 题 ( 1.0 分) 题号 :641
若有说明 :inta[10]; 则对 a 数组元素的正确引用是()。
A:a[10]
B:a[3,5]
C:a(5)
D:a[10-10]
答案: D
16 题 ( 1.0 分) 题号 :635 若有说明 :inta[][3]={1,2,3,4,5,6,7}; a 数组第一维的大小是()。
A:2
B:3
C:4
D: 无确定值
答案: B
17 题 ( 1.0 分) 题号 :637
若有说明 :inta[3][4]; 则数组 a 中各元素()。
A: 可在程序的运行阶段得到初值 0
B: 可在程序的编译阶段得到初值 0
C: 不能得到确定的初值
D: 可在程序的编译或运行阶段得到初值 0
答案: D
18 题 ( 1.0 分) 题号 :638
设有数组定义 :chararray[]="China"; 则数组 array 所占的
空间为()。
A:4 个字节
B:5 个字节
C:6 个字节
D:7 个字节
答案: C
19 题 ( 1.0 分) 题号 :2913
相同结构体类型的变量之间 , 可以 ______.
A: 相加
B: 赋值
C: 比较大小
D: 地址相同
答案: B
20 题 ( 1.0 分) 题号 :557
打开文件时,方式 “w” 决定了对文件进行的操作是()。
A: 只写盘
B: 只读盘
C: 可读可写盘
D: 追加写盘
答案: A 21 题 ( 5.0 分) 题号 :2820
有以下程序
#include <stdio.h>
voidmain()
{
int i;
for(i=1;i<3;i++)
switch(i)
{case 1:printf("%d",i);
case 2:printf("%d",i);
default:printf("%d",i);
}
}
执行后输出的结果是 ______.
A:11122
B:12
C:12020
D:120
答案: A
22 题 ( 5.0 分) 题号 :2822
有以下程序
#include <stdio.h>
voidmain()
{
ints=0,a=1,n;
scanf("%d",&n); do
{
s+=1;
a=a-2;
}
while(a!=n);
printf("%d\n",s);
}
若要使程序的输出值为 2, 则应该从键盘给 n 输入的值是 (
).
A:-1
B:-3
C:-5
D:0
答案: B
23 题 ( 5.0 分) 题号 :2754
有如下程序
#include<stdio.h>
voidmain()
{
int x=1,a=0,b=0;
switch(x){
case0: b++;
case1: a++;
case2: a++;b++;
}
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
答案: A
24 题 ( 5.0 分) 题号 :2821
有以下程序 #include <stdio.h>
voidmain()
{
int i=0,s=0;
do
{
if(i%2)
{i++;continue;}
i++;
s+=i;
}while(i<7);
printf("%d\n",s);
}
执行后输出的结果是 (
).
A:16
B:12
C:28
D:21
答案: A
25 题 ( 5.0 分) 题号 :2755
有如下程序
#include<stdio.h>
voidmain()
{
float x=2.0,y;
if(x<0.0)y=0.0;
elseif(x<10.0)y=1.0/x;
elsey=1.0;
printf("%f\n",y);
}
该程序输出结果是 ______ A:0.000000
B:0.250000
C:0.500000
D:1.000000
答案: C
26 题 ( 5.0 分) 题号 :2838
以下程序中 f 函数的功能是将 n 个字符串,按由大到小的顺序进行排序。
#include<string.h>
#include<stdio.h>
voidf(charp[][10],intn)
{
chart[20];
inti,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(p[i],p[j])<0)
{
strcpy(t,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],t);
}
}
voidmain()
{
char p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[0]));
}
A:6
B:4
C:5
D:3
答案: C
二、程序填空
1 题 (共计 10 分)
1 题 ( 10.0 分) 题号 :3
/*-------------------------------------------------------
【程序填空】
--------------------------------------------------------- 功能:已定义一个含有 30 个元素的数组 s, 函数 fun1 的功能是按
顺序分别赋予各元素从 2 开始的偶数 , 函数 fun2 则按顺序
每五个元素求一个平均值 , 并将该值存放在数组 w 中。
-------------------------------------------------------*/
floats[30],w[6];
fun1(floats[])
{
intk,i;
for(k=2,i=0;i<30;i++)
{
/***********SPACE***********/
? ;
k+=2;
}
}
fun2(floats[],floatw[])
{
floatsum=0.0;
intk,i;
for(k=0,i=0;i<30;i++)
{
sum+=s[i];
/***********SPACE***********/
? ;
{
w[k]=sum/5;
/***********SPACE***********/
? ;
k++;
}
}
}
main()
{
inti;
fun1(s);
/***********SPACE***********/
? ;
for(i=0;i<30;i++)
{
if(i%5==0)printf("\n");
printf("%8.2f",s[i]); }
printf("\n");
for(i=0;i<6;i++)
printf("%8.2f",w[i]);
}
答案:
1).s[i]=k s[i]=(i+1)*2
2).if((i+1)%5==0) if((i+1)/5*5==i+1)
3).sum=0 sum=0.0
4).fun2(s,w)
三、程序改错
2 题 (共计 20 分)
1 题 ( 10.0 分) 题号 :421
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:给一个不多于 5 位的正整数,要求:
一、求它是几位数,
二、逆序打印出各位数字。
------------------------------------------------------*/
#include"stdio.h"
main()
{
/**********FOUND**********/
longa,b,c,d,e,x,
scanf("%ld",&x);
a=x/10000;
/**********FOUND**********/
b=x/10000/1000;
c=x%1000/100;
d=x%100/10;
e=x%10;
/**********FOUND**********/
if(a==0)
printf("thereare5,%ld%ld%ld%ld%ld\n",e,d,c,b,a);
elseif(b!=0)
printf("thereare4,%ld%ld%ld%ld\n",e,d,c,b);
elseif(c!=0) printf("thereare3,%ld%ld%ld\n",e,d,c);
elseif(d!=0)
printf("thereare2,%ld%ld\n",e,d);
elseif(e!=0)
printf("thereare1,%ld\n",e);
getch();
}
答案:
1).longa,b,c,d,e,x;
2).b=x%10000/1000;
3).if(a!=0) if(!a)
2 题 ( 10.0 分) 题号 :417
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:下题是一段有关结构体变量传递的程序 .
------------------------------------------------------*/
#include"stdio.h"
structstudent
{
intx;
charc;
}a;
main()
{
a.x=3;
/**********FOUND**********/
a.c='a'
f(a);
/**********FOUND**********/
printf("%d,%c",a.x,b.c);
getch();
}
f(structstudentb)
{
b.x=20;
/**********FOUND**********/ b.c=y;
}
答案:
1).a.c='a';
2).printf("%d,%c",a.x,a.c);
3).b.c='y';
四、程序设计
2 题 (共计 20 分)
1 题 ( 10.0 分) 题号 :335
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:求给定正整数 n 以内的素数之积。( n<28
------------------------------------------------*/
#include"stdio.h"
#include"conio.h"
longfun(intn)
{
/**********Program**********/
/********** End **********/
}
main()
{
int m;
printf("Enterm:");
scanf("%d",&m);
printf("\nTheresultis%ld\n",fun(m));
yzj();
getch();
} yzj()
{
FILE*IN,*OUT;
intc;
intt;
longo;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFileError");
}
for(c=1;c<=5;c++)
{
fscanf(IN,"%d",&t);
o=fun(t);
fprintf(OUT,"%ld\n",o);
}
fclose(IN);
fclose(OUT);
}
答案: ----------------------
longi,k;
longs=1;
for(i=2;i<=n;i++)
{for(k=2;k<i;k++)
if(i%k==0)break;
if(k==i)s=s*i;
}
returns;
----------------------
2 题 ( 10.0 分) 题号 :411
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:编写函数 fun 将一个数组中的值按逆序存放,并在
main() 函数中输出。 例如:原来存顺序为 8,6,5,4,1 。要求改为: 1,4,5,6,8
------------------------------------------------*/
#include"stdio.h"
#defineN5
main()
{
inta[N]={8,6,5,4,1},i;
for(i=0;i<N;i++)
printf("%4d",a[i]);
printf("\n");
fun(a,N);
for(i=0;i<N;i++)
printf("%4d",a[i]);
yzj();
getch();
}
intfun(intarr[],intn)
{
/**********Program**********/
/********** End **********/
}
yzj()
{
FILE*IN,*OUT;
intn;
inti[10];
into;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFileError");
} OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFileError");
}
for(n=0;n<10;n++)
{
fscanf(IN,"%d",&i[n]);
}
fun(i,10);
for(n=0;n<10;n++)
{
fprintf(OUT,"%d\n",i[n]);
}
fclose(IN);
fclose(OUT);
}
答案: ----------------------
inti,t;
for(i=0;i<n/2;i++)
{t=arr[i];
arr[i]=arr[n-1-i];
arr[n-1-i]=t;
}
--------
  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值