当前位置:首页 » 招生排名 » 大学c程序设计语言考试试题及答案3套

大学c程序设计语言考试试题及答案3套

发布时间: 2023-05-01 23:07:22

A. 中南大学c语言试题

C 语言程序设计试卷
一、单项选择题(每题1分,共20分)
1. C语言规定:在一个源程序中,main函数的位置( ① )。
A. 必须在最开始
B. 必须在系统调用的库函数的后面
C. 可以任意
D. 必须在最后

2. 下面四个选项中,均是合法浮点数的选项是( ① )。
A. +1e+1 5e-9.4 03e2
B. -.60 12e-4 -8e5
C. 123e 1.2e-.4 +2e-1
D. -e3 .8e-4 5.e-0

3. 若a=-14,b=3,则条件表达式 a<b? a:b+1的值为 。
A. -14 B. -13 C. 3 D. 4

4. 已知:int n,i=1,j=2;执行语句n=i<j?i++:j++;则i和j的值是( ① ).
A. 1,2 B. 1,3 C. 2,2 D. 2,3

5. 为了判断两个字符串s1和s2是否相等,应当使用( ① )
A. if (s1==s2) B. if(s1=s2)
C. if (strcmp(s1,s2))
D. if (strcmp(s1,s2)==0)

6. 以下正确的描述是( ① )。
A. 函数的定义可以嵌套,但函数的调用不可以嵌套。
B. 函数的定义不可以嵌套,但函数的调用可以嵌套。
C. 函数的定义和函数的调用均不可以嵌套。
D. 函数的定义和函数的调用均可以嵌套。

7. 在C语言中,下面对函数不正确的描述是( ① )。
A. 当用数组名作形参时,形参数组值的改变可以使实参数组之值相应改变。
B. 允许函数递归调用。
C. 函数形参的作用范围只是局限于所定义的函数内。
D. 子函数必须位于主函数之前。

8. 如果在一个函数中的复合语句中定义了一个变量,则以下正确的说法是( ① )。
A. 该变量只在该复合语句中有效
B. 该变量在该函数中有效
C. 该变量在本程序范围内均有效
D. 该变量为非法变量

9. 以下正确的函数形式是( ① )。
A. double fun(int x,int y) { z=x+y;return z;}
B. fun(int x,y) { int z; return z;}
C. fun(x,y) { int x,y; double z; z=x+y; return z;}
D. double fun( int x,int y) {double z; z=x+y; return z; }

10. 以下程序的输出结果是( ① )。
#include<stdio.h>
#define F(y) 8.19-y
#define PRINT(a) printf("%d",(int)(a))
void main(void)
{
int x=2;
PRINT(x*F(3));
}
A. 10 B. 13 C. 11 D. 报错

11. 以下程序中编译和运行结果均正确的一个是( ① )。
A. A. void main(void)
{
union
{
int n;
float x;
} comm={1};
printf("%d",comm.n);
}
B. B. void main(void)
{
union
{
int n;
float x;
} comm={12.5};
printf("%f",comm.x);
}
C. C. void main(void)
{
union
{
float x;
int n;
} comm={12.5}
printf("%f",comm.x);
}
D. D. void main(void)
{
union
{
int n;
float x;
} comm=5;
printf("%d", comm.n);
}

12. 设有定义:int a=1,*p=&a; float b=2.0; char c='A'; 以下不合法的运算是( ① )。
A. p++; B. a--; C. b++; D. c--;

13. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是( ① )。
main()
{
int *p,*q,a,b;
p=&a;
printf("input a:");
scanf("%d",*p);

}
A. *p表示的是指针变量p的地址
B. *p表示的是变量a 的值,而不是变量a的地址
C. *p表示的是指针变量p的值
D. *p只能用来说明p是一个指针变量

14. 若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=16,c=32);后num的值为( ① )。
A. 4 B. 16 C. 32 D. 52

15. 已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是( ① ),(注: _ 表示空格)
int al,a2,char c1,c2;
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
A. 10A_20_B B. 10_A_20_B C. 10A20B D. 10A20_B

16. 若有说明:int a[10]; 则对a数组元素的正确引用是( ① )。
A. a[10] B. a[3.5] C. a[5-3] D. a[-1]

17. 在C语言中, 一维数组的定义方式为:
类型说明符 数组名 ① ;
A. [整型常量表达式] B. [表达式]
C. [整型常量] D. [整型表达式]

18. 以下能对一维数组a进行正确初始化的语句是( ① )。
A. in a[10]=(0,0.0,0,0);
B. int a[10]={}; C. int a[]={0};
D. int a[10]={10*1};

19. 以下程序段( ① )。
x=-1;
do
{
x=x*x;
}
while(! x);
A. 是死循环 B. 循环执行二次
C. 循环执行一次 D. 有语法错误

20. 以下关于do-while循环的不正确描述是( ① )。
A. do-while的循环体至少执行一次
B. do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C. 在do-while循环体中,一定要有能使while后面表达式的值变为零("假")的操作
D. do-while的循环体可以是复合语句

二、是非判断题(每题1分,共15分)
1. C语言规定,标识符中的字母一般区分大、小写。
2. 控制台标准输入设备一般是指键盘。
3. 使用while和do-while循环时,循环变量初始化的操作应在循环语句之前处理。
4. 循环体中continue语句的作用是结束整个循环的执行。
5. 关系表达式的值是0或1。
6. 若有说明:int a[3][4]={0},则只有元素a[0][0]可得到初值0。
7. 字符串作为一维数组存放在内存中。
8. 字符数组中的一个元素存放一个字符。
9. 字符数组中的最后一个字符必须是'\0'。
10. 形参为指针变量时,实参必须是数组名。
11. 用数组名作函数参数时传递的是数组的值。
12. 全局变量可以被任何一个函数中的任何一个表达式使用。
13. 一个函数可以带回一个整型值、字符值、实型值等,也可以带回指针型的数据。
14. 表达式i++与++i在任何场合功能完全相同。
15. 在赋值表达式中,赋值号左边的变量和右边的表达式之值的数据类型可以不相同。

三、多项选择题(每题1分,共5分)
1. 若要求在if 后一对圆跨括号中表示a不等于0的关系,则不能正确表示这一关系
的表达式为( ① ).
A.a<>0
B.!a
C.a=0
D.a
E.a!=0

2. 选出所有合法的常量( ① )。
A.3e22.5
B.-e-3
C.-.1e-1
D.'BASIC'
E.'\045'
F.0fd
G.0xfdaL
H.e8
I.'\\'
J."\""

3. 以下关于函数原型说法错误的是:
(1)对变量的定义”和“声明”是一回事,对函数的“定义”和“声明”也是一回事。
(2)在声明函数原型时,允许只写出参数的类型,而不必写出参数的名称。
(3)如果在定义函数时不指定函数类型,系统会隐含指定函数类型为int型。
(4)调用一个函数时,函数名、实参个数、实参类型必须与函数原型一致。
(5)如果被调函数的定义出现在主调函数之前,可以不必加以声明。
(6)所有的函数之间可以互相调用。
(7)在C语言中,所有函数都是平行的,一个函数不能从属于另一个函数,即不能嵌套定义的。
(8)如果函数没有返回值,在定义时可以省略函数类型。
(9)在C语言中,任何函数的定义都不允许为空。
(10)C语言规定,实参变量对形参变量的数据传递是“值传递”。

4. 请从下面关于指针的叙述中, 选出5个正确的叙述。
(1)指针即地址。
(2)指针须先赋值后使用。
(3)当指针p指向数组a的首址后,由于p[i]和a[i]都能引用数组元素,所以这里p和a是等价的。
(4)int *p表示定义了一个指向int类型数据的指针变量p。
(5)数组的指针是指数组的起始地址。
(6)若有定义int a[4],*p=a,则p++后p指向数组a所占内存的第二个字节。
(7)使用指针变量作函数参数采取的是"值传递"的方式。
(8)相同类型的指针可以进行减法运算。
(9)指针变量和许多变量一样可以进行四则运算。
(10)指针p指向数组元素a[2],若要其指向a[4],执行p=p*2即可。

5. 以下关于数组的叙述中,5个最确切的说法是:
(1)在声明一个数组变量时必须指定大小。
(2)必须用常量表达式来说明一个数组变量的大小。
(3)在对数组进行初始化时大括号中的数据个数必须和数组的大小相同。
(4)有变量定义int a[3]={0,1,2},b[3];,可以用b=a,使数组b的每个元素和a的每个元素相等。
(5)在C语言中,可以将字符串作为字符数组来处理。
(6)定义了字符数组char c[11];为了给它赋值,可以用c="china";。
(7)如果有char s[15]={"I am a\0 student"};,则strlen(s)的值为6。
(8)C语言中,二维数组中元素排列的顺序是:按行存放。
(9)在C语言中,不能对局部的数组变量进行初始化。
(10)在声明时对数组进行进行初始化必须指定数组大小。

四、程序运行结果题(每题4分,共20分)
1. (4分)
下面程序的运行结果是( ① ) 。
#include<stdio.h>
void main(void)
{
int i;
char a[]="Time",b[]="Tom";
for(i=0;a[i]!='\0'&&b[i]!='\0';i++)
if (a[i]==b[i])
if (a[i]>='a' && a[i]<= 'z') printf("%c",a[i]-32);
else printf("%c",a[i]+32);
else printf("*");
}

2. (4分)
下面程序段的运行结果是( ① ) 。
i=1;s=3
do
{
s+=i++;
if (s%7==0) continue;
else ++i;
} whlie(s<15);
printf("%d",i);

3. (4分)
若运行时输入:5999,则以下程序的运行结果(保留小数点后一位)是( ① )。
void main(void)
{
int x;
float y;
scanf("%d",&x);
if (x>=0 && x<=2999) y=18+0.12 * x;
if (x>=3000 && x<=5999) y=36+0.6*x;
if (x>=6000 && x<=10000) y=54+0.3*x;
printf("%6.1f",y);
}

4. (4分)
以下程序的运行结果是( ① )。
void main(void)
{
int a=1,k;
for(k=0;k<3;k++) printf("%4d",f1(a))
}
int f1(int x)
{
static int z=3,y=0;
y++;
z++;
return(x+y+z);
}

5. (4分)
以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。
#include<stdio,h>
#include<math.h>
float fun1(float,float);
void main(void)
{
float x,y,z,sum;
scanf("%f%f%",&x,&y,&z);
sum=fun1( ① )+ fun1 ( ② );
printf("sum=%f\n",sum);
}
float fun1(float a,float b)
{
float num;
num=a/b;
return num;
}

五、程序填空题(每题2分,共20分)
1.下面程序的功能是用公式:π×π/6=1/(1×1)+1/(2×2)+1/(3×3)+......
求π的近似值, 直到最后一项的值小于10e-6为止。
#include <stdio.h>
#include <math.h>
void main(void)
{
long i=1;
① pi=0;
while (i*i<=10e+6) { pi= ② ; i++; }
pi=sqrt(6.0*pi);
printf("pi=%10.6f\n",pi);
}

2. 下面程序的功能是把以下给定的字符按其矩阵格式读入数组str1中,并输出行列号之和是3的数组元素。
void main(void)
{
char str1[4][3]={'A','b','C','d','E','f','G','h','I','j','K','i'
};
int x,y,z;
for(x=0;x<4;x++)
for(y=0; ① ;y++)
{
z=x+y;
if ( ② ) printf("%c\n",str1[x][y]);
}
}

3. 以下程序的功能是用递归方法计算学生的年龄,已知第一位学生年龄最小,为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。
递归公式如下:
age(1)=10
age(n)=age(n-1)+2 (n>1)
#include<stdio.h>
int age(int n)
{
int c;
if (n==1) c=10;
else c= ① ;
return c;
}

4. 以下程序的功能是判断输入的年份是否是闰年。
void main(void)
{
int year,yes;
scanf("%d",&year);
if (year%400==0) yes=1;
else if ( ① ) yes=1;
else ② ;
if(yes) printf("%d is ",year);
else printf("%d is not ",year);
printf("a leap year.\n");
}

5. 以下程序实现: 输入三个整数,按从大到小的顺序进行输出。
void main(void)
{
int x,y,z,c;
scanf("%d %d %d",&x,&y,&z);
if ( ① ) { c=y;y=z;z=c;}
if ( ② ) { c=x;x=z;z=c;}
if ( ③ ) { c=x;x=y;y=c;}
printf("%d,%d,%d",x,y,z);
}

六、填空题(每题1分,共20分)
1. 在C语言中,一个float型数据在内存中所占的字节数为( ① )个字节;一个double型数据在内存中所占的字节数为( ② )个字节。

2. 若有定义:char c='\010'; 则变量C中包含的字符个数为( ① )。

3. C源程序的基本单位是( ① )。

4. 在C语言中(以16位PC机为例),一个char型数据在内存中所占的字节数为( ① );
一个int型数据在内存中所占的字节数为( ② )。

5. 已有定义:
int m;
float n,k;
char chl,ch2;
为使m=3, n=6.5, k=12.6, ch1='a', ch2='A', 输入数据的格式为:
3 6.5 12.6aA
则对应的scanf语句是( ① );。

6. 执行下面的程序片段后,x的值是( ① )。
i=10; i++; x=++i;

7. 设a、b、c均是int 型变量,则执行以下for循环后,c的值为( ① )。
for(a=1,b=5;a<=b;a++) c=a+b;

8. 以下do-while语句中循环体的执行次数是( ① )。
a=10;
b=0;
do { b+=2; a-=2+b; } while (a>=0);

9. 设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是( ① )。
for (x=0,y=0;y!=123&&x<3;x++)
scanf ("%d",&y);

10. 若有以下定义和语句:
int *p[3],a[9],i;
for(i=0;i<3;i++) p[i]=&a[3*i];
则*p[0]引用的是数组元素( ① ); *(p[1]+1)引用的是数组元素( ② )。

11. 设a=3,b=4,c=5,则表达式a||b+c&&b==c的值是( ① )。

12. 进行逻辑与运算的运算符是( ① )。

13. 若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是( ① )。

14. 下面程序片段中循环体的执行次数是( ① )次。
for(i=1,s=0;i<11;i+=2) s+=i;

15. 若有以下定义和语句:
int a[4]={0,1,2,3},*p;
p=&a[2];
则*--p的值是( ① )。

16. 执行以下程序段后, s的值是( ① )
int a[]={5,3,7,2,1,5,3,10},s=0,k;
for(k=0;k<8;k+=2)
s+=*(a+k);

17. 执行以下程序段后,m的值是( ① )
int a[]={7,4,6,3,10},m,k,*ptr;
m=10;
ptr=&a[0];
for(k=0;k<5;k+=2)
m=(*(ptr+k)<m)?*(ptr+k):m;

答案:

一、单项选择题(20分)
1.~5.CBACD 6.~10.BDADB
11.~15.CABCC 16.~20.CACCB

二、是非判断题(15分)
√√√×√ √√√×× × √

三、多项选择题(5分)
1.ABC 2.CEGIJ 3.ADFHI 4.ABDEH 5.BEGHI

四、程序运行结果题(20分)
1. t*M
2. 8
3. 3635.4
4. 6 8 10
5. z+y,z-y^x+y,x-y

五、程序填空题(20分)
1. ①double ②pi+1.0/(i*i)
2. ①y<3 ②z==2
3. ①age(n-1)+2
4. ①year%4==0&&yeaar%100!=0 ②yes=0
5. ①z>y ②z>x ③y>x

六、填空题(20分)
1. ①4 / 四 ②8 / 八
2. ①1 / 1个
3. ①函数
4. ①1 / 一 ②2 / 二
5. ①scanf("%d%f%f%c%c",&m,&n,&k,&ch1,&ch2)
6. ①12
7. ①10
8. ①3..9. ①3..10. ①a[0] ②a[4]
11. ①112. ①&&13. ①1.14. ①5
15. ①1
16. ①16
17. ①6

B. 求:C语言程序设计试卷及答案一份

一、选择题(1~40题每题1分,41~50题每题2分,共60分)下列各题A、B、C、D四个选项中,只有一个选项是正确的。请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。

1.微型计算机的运算器、控制器及内存储器组合在一起,称之为()(本题分值:1分)
【正确答案】D
A.ALU
B.CPU
C.MPU
D.主机
2.下列存储器中,存取速度最快的是()(本题分值:1分)
【正确答案】D
A.软盘
B.硬盘
C.光盘
D.内存
3.系统软件中最重要的是()(本题分值:1分)
【正确答案】A
A.操作系统
B.语言处理程序
C.工具软件
D.数据库管理系统
4、CPU处理的数据基本单位为字,一个字的字长()(本题分值:1分)
【正确答案】D
A.为8个二进制位
B.为16个二进制位
C.为32个二进制位
D.与CPU芯片的型号有关
5.打印当前屏幕内容应使用的控制键是()(本题分值:1分)
【正确答案】D
A.Scroll-Lock
B.Num-Lock
C.PgDn
D.PrtSc(Print Screen)
6.能将高级语言源程序转换成目标程序的是()(本题分值:1分)
【正确答案】C
A.调试程序
B.解释程序
C.编译程序
D.编辑程序
7.二进制数1110111.11转换成十进制数是()(本题分值:1分)
【正确答案】B
A.119.375
B.119.75
C.119.125
D.119.3
8.十六进制数FF.1转换成十进制数是()(本题分值:1分)
【正确答案】A
A.255.0625
B.255.125
C.127.0625
D.127.125
9.中国国家计算机网络设施是()(本题分值:1分)
【正确答案】A
A.NCFC
B.CERNET
C.ISDN
D.Internet
10.控制键^C的功能为()(本题分值:1分)
【正确答案】A
A.终止当前操作
B.系统复位
C.暂停标准输出设备的输出
D.结束命令行
11.COMMAND.COM为命令处理程序,DOS系统启动后,它()(本题分值:1分)
【正确答案】B
A.驻留在外存,需要时装入内存
B.常驻内存,包含所有内部命令
C.不能处理外部命令
D.不能处理后缀为.EXE的可执行文件
12.为了将所有扩展名为.PAS的文件改成扩展名为.P,应使用命令()(本题分值:1分)
【正确答案】C
A.REN *.PAS .?AS
B.REN PAS P
C.REN *.PAS *.P
D.REN *.PAS *.P??
13.设当前盘中文件XY.C的路径为\A\B\XU,当前目录为\A\B。为了查看文件XY.C的内容,应使用命令()(本题分值:1分)
【正确答案】A
A.TYPE XU\XY.C
B.TYPE \XU\XY.C
C.DIR XU\XY.C
D.DIR \A\B\XU\XY.C
14.要将提示符改成当前盘当前目录后加一个大于号“>”,应使用命令()(本题分值:1分)
【正确答案】B
A.PROMPT
B.PROMPT $ p $ g
C.PROMPT $ $
D.PROMPT C\>
15.在多媒体计算机系统中,CD-ROM属于()(本题分值:1分)
【正确答案】D
A.感觉媒体
B.表示媒体
C.表现媒体
D.存储媒体
16.设当前盘为C盘,将A盘根目录下的文件目录信息存放到当前盘当前目录下的文件AB中,应使用命令()(本题分值:1分)
【正确答案】C
A.TYPE A:\>AB
B.DIR >AB
C.DIR A:\>AB
D.DIR \>AB
17.在位运算中,操作数每右移一位,其结果相当于()(本题分值:1分)
【正确答案】B
A.操作数乘以2
B.操作数除以2
C.操作数除以16
D.操作数乘以16
18.在当前盘当前目录下有一个文件A.BAT,其内容为
CD \
MD \XYZ\AB\B\C
CD XYZ\AB\B
在正确执行上述文件后,接着执行下列命令时,不会发生错误的是()(本题分值:1分)
【正确答案】C
A.MD C
B.RD \XYZ
C.RD C
D.RD B
19.下列命令组中两个DOS命令互相等价的是()(本题分值:1分)
【正确答案】D
A.TYPE AB.TXT与DIR AB.TXT
B.DISKCOMP A:B:与COMP A:.* B:*.
C.TYPE AB.TXT>>XY.TXT与COPY AB.TXT XY.TXT
D.TYPE AB.TXT>XY.TXT与COPY AB.TXT XY.TXT
20.设A盘为启动盘,其目录结构为
根目录
DOS子目录 COMAND.COM
USER子目录 AUTOEXEC.BAT
其文件AUTOEXEC.BAT的内容如下:
MD \XYZ
CD \DOS\USER
则由A盘启动成功后,A盘的当前目录是()(本题分值:2分)
【正确答案】C
A.\DOS\USER
B.\XYZ
C.根目录
D.\DOS
21.C语言提供的合法关键字是()(本题分值:1分)
【正确答案】C
A.switch
B.cher
C.case
D.default
22.在C语言中,合法的字符常量是()(本题分值:1分)
【正确答案】B
A.′\084′
B.′\x43′
C.′ab′
D.′\0′
23.若已定义x和y为double类型,则表达式: x=1,y=x+3/2的值是()(本题分值:1分)
【正确答案】C
A.1
B.2
C.2.0
D.2.5
24.合法的数组定义是()(本题分值:1分)
【正确答案】D
A.int a[]=〃string〃;
B.int a[5]={0,1,2,3,4,5};
C.char a=〃string〃;
D.char a[]={0,1,2,3,4,5};
25.设a为整型变量,不能正确表达数学关系10<a<15的C语言表达式是()(本题分值:1分)
【正确答案】A
A.10<a<15
B.a==11||a==12||a==13||a==14
C.a>10&&a<15
D.!(a<=10)&&!(a>=15)

26.若t为double类型,表达式t=1,t+5,t++的值是()(本题分值:1分)
【正确答案】C
A.1
B.6.0
C.2.0
D.1.0
27.若有定义和语句:
char s[10];s=〃abcd〃;printf(〃%s\n〃,s);
则结果是(以下μ代表空格)()(本题分值:1分)
【正确答案】D
A.输出abcd
B.输出a
C.输出abcdμμμμμ
D.编译不通过
28.若有定义和语句:
int **pp,*p,a=10,b=20;
pp=&p;p=&a;p=&b;printf(〃%d,%d\n〃,*p,**pp);
则输出结果是()(本题分值:1分)
【正确答案】D
A.10,10
B.10,20
C.20,10
D.20,20
29.若有以下定义和语句:
int u=010,v=0x10,w=10;
printf(〃%d,%d,%d\n〃,u,v,w);
则输出结果是()(本题分值:1分)
【正确答案】A
A.8,16,10
B.10,10,10
C.8,8,10
D.8,10,10
30.若有以下定义和语句:
char c1=′b′,c2=′e′;
printf(〃%d,%c\n〃,c2-c1,c2-′a′+′A′);
则输出结果是()(本题分值:1分)
【正确答案】B
A.2,M
B.3,E
C.2,E
D.输出项与对应的格式控制不一致,输出结果不确定
31.若有定义:int a[3][4];,()不能表示数组元素a[1][1]。(本题分值:1分)
【正确答案】D
A.*(a[1]+1)
B.*(&a[1][1])
C.(*(a+1))[1]
D.*(a+5)

32.若i、j已定义为int型,则以下程序段中内循环体的总的执行次数是()(本题分值:1分)
for(i=5;i>0;i--)
for(j=0;j<4;j++){…}
【正确答案】A
A.20
B.24
C.25
D.30
33.若有以下定义和语句:
char *s1=〃12345〃,*s2=〃1234〃;
printf(〃%d\n〃,strlen(strcpy(s1,s2)));
则输出结果是()(本题分值:1分)
【正确答案】A
A.4
B.5
C.9
D.10
34.若有以下定义和语句:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则不能表示a数组元素的表达式是()(本题分值:1分)
【正确答案】B
A.*p
B.a[10]
C.*a
D.a[p-a]
35.下面程序的输出结果是()(本题分值:2分)
【正确答案】C
A.k=3 a=2 b=3
B.k=3 a=3 b=2
C.k=2 a=3 b=2
D.k=2 a=2 b=3
36.下面程序的输出结果是()(本题分值:1分)
main()
{unsigned a=32768;
printf(〃a=%d\n〃,a);}
【正确答案】C
A.a=32768
B.a=32767
C.a=-32768
D.a=-1
37.执行下面语句后的输出结果为()(本题分值:1分)
int i=-1;
if(i<=0) printf(〃****\n〃);
else printf(〃%%%%\n〃)
【正确答案】D
A.****
B.%%%%
C.%%%%c
D.有语法错误,不能正确执行
38.对于条件表达式(M)?(a++):(a--),其中的表达式M等价于()(本题分值:1分)
【正确答案】C
A.M==0
B.M==1
C.M!=0
D.M!=1
39.下述程序段的输出结果是()(本题分值:1分)
int x=10;
int7nbspy=x++;
printf(〃%d,%d〃,(x++,y),y++);
【正确答案】A
A.11,10
B.11,11
C.10,10
D.10,11
40.若有以下的定义:
int a[]={1,2,3,4,5,6,7,8,9,10},*p=a
则值为3的表达式是()(本题分值:1分)
【正确答案】A
A.p+=2,*(p++)
B.p+=2,*++p
C.p+=3,*p++
D.p+=2,++*p
41.假定所有变量均已正确说明,下列是程序段运行后x的值是()(本题分值:2分)
a=b=c=0;x=35;
if(!a) x--;
else if(b);
if(c) x=3;
else x=4;
【正确答案】B
A.34
B.4
C.35
D.3
42.在以下一组运算中,优先级最高的运算符是()(本题分值:2分)
【正确答案】C
A.<=
B.=
C.%
D.&&
43.若有以下定义和语句:
int w[2][3],(*pw)[3];pw=w;
则对w数组元素的非法引用是()(本题分值:2分)
【正确答案】A
A.*(w[0]+2)
B.*(pw+1)[2]
C.pw[0][0]
D.*(pw[1]+2)
44.若有以下程序片段: char str[ ]=〃ab\n\012\\\\〃; printf(〃%d〃,strlen(str));
上面程序片段的输出结果是()(本题分值:2分)
【正确答案】C
A.3
B.4
C.6
D.12
45.函数调用:strcat(strcpy(str1,str2),str3)的功能是()(本题分值:2分)
【正确答案】C
A.将串str1复制到串str2中后再连接到串str3之后
B.将串str1连接到串str2之后再复制到串str3之后
C.将串str2复制到串str1中后再将串str3连接到串str1之后
D.将串str2连接到串str1之后再将串str1复制到串str3中
46.以下对C语言函数的有关描述中,正确的是()(本题分值:2分)
【正确答案】A
A.在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.C函数既可以嵌套定义又可以递归调用
C.函数必须有返回值,否则不能使用函数
D.C程序中有调用关系的所有函数必须放在同一个源程序文件中
47.以下叙述中不正确的是()(本题分值:2分)
【正确答案】C
A.在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值
B.在C中,在调用函数时,实参和对应形参在类型上只需赋值兼容
C.在C中,外部变量的隐含类别是自动存储类别
D.在C中,函数形参可以说明为register变量

48.设有以下定义或语句,则输出的结果是(用small模式编译,指针变量占2个字节)()(本题分值:2分)
struct date
{long *cat;
struct date *next;
double dog;
}too;
printf(〃%d〃,sizeof(too));
【正确答案】D
A.20
B.16
C.14
D.12
49.设有定义:struct sk
{int a;float b;}data,*p;
若有p=&data;,则对data中的a域的正确引用是()(本题分值:2分)
【正确答案】B
A.(*p).data.a
B.(*p).a
C.p->data.a
D.p.data.a
50.以下对枚举类型名的定义中正确的是()(本题分值:2分)
【正确答案】B
A.enum a={one,two,three};
B.enum a{one=9,two=-1,three};
C.enum a={〃one〃,〃two〃,〃three〃};
D.enum a{〃one〃,〃two〃,〃three〃};
二、填空题(每空2分,共40分)请将答案分别写在答题卡中序号【1】至【20】的横线上,答在试卷上不得分。
1、与十进制数101等值的二进制数为。(本题分值:2分)
【正确答案】
【1】1100101
2、DOS命令分为内部命令与外部命令,XCOPY命令属于命令。(本题分值:2分)
【正确答案】
【2】外部
3、设当前盘为A盘,当前系统提示符为“>”,在不改变当前盘的情况下,显示C盘的当前目录路径,应使用命令。 (本题分值:2分)
【正确答案】
【3】CD C:
4、自动批处理文件名必须是。(本题分值:2分)
【正确答案】
【4】AUTOEXEC.BAT

5、设在当前盘当前目录下有两个文件W.TXT与P.TXT,现要将文件P.TXT连接到文件W.TXT的后面,若使用COPY命令,则完整的命令为。(本题分值:2分)
【正确答案】
【5】COPY W.TXT+P.TXT W.TXT
6、表示条件10<x<100或x<0的C语言表达式是。(本题分值:2分)
【正确答案】
【6】(x>10&& x<100)||x<0
或(10<x&&x<100)||x<0
或x<0 ||(x>10&&x<100)
或0>x ||(10<x&&x<100)
7、以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最笾怠G胩羁铡?br> #define N 3
#define M 4
void LineMax(int x[N][M])
{ int i,j,p;
for(i=0;i<N;i++)
{p=0;
for(j=1;j<M;j++)
if(x[i][p]<x[i][j]) ;
printf(〃The max value in line is %d\n〃,);
}
}
main()
{ int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
;
}
(本题分值:6分)
【正确答案】
【7】p=j
【8】x[i][p]
【9】LineMax(x)
8、以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。
main()
{float x[1000],sum=0.0,ave,a;
int n=0,i;
printf(〃Enter mark:\n〃);scanf(〃%f〃,&a);
while(a>= 0.0 && n<1000)
{sum+=;x[n]=;
n++; scanf(〃%f〃,&a);
}
ave= ;
printf(〃Output:\n〃);
printf(〃ave=%f\n〃,ave);
for(i=0;i<n;i++)
if() printf(〃%f\n〃,x[i]);
}
(本题分值:8分)
【正确答案】
【10】a
【11】a
【12】sum/n或sum/(float)n或sum/(double)n
【13】x[i]<ave或!(x[i]>=ave)或ave>x[i]
9、执行以下程序,输入-10的结果是,输入5的结果是,输入10的结果是,输入30的结果是。
(本题分值:8分)
【正确答案】
【14】0
【15】5
【16】10
【17】5
10、以下程序的功能是。
main()
{int num[10]={10,1,-20,-203,-21,2,-2,-2,11,-21};
int sum=0,i;
for(i=0;i<10;i++)
if(num[i]>0)
sum=num[i]+sum;
printf(〃sum=%6d〃,sum);
}
(本题分值:2分)
【正确答案】
【18】计算数组num中大于零的数据之和
11、以下程序可以把从键盘上输入十进制数(long型)以二到十六进制数的形式输出,请填空。
#include
main()
{char
b[16]={′0′,′1′,′2′,′3′,′4′,′5′,′6′,′7′,′8′,′9′,′A′,′B′,′C′,′D′,′E′,′F′};
int c[64],d,i=0,base;
long n;
printf(〃Enter a number:\n〃); scanf(〃%1d〃,&n);
printf(〃Enter new base:\n〃); scanf(〃%1d〃,&base);
do
{c[i]=;
i++;
n=n/base;
}while(n!=0);
printf(〃The result is:\n〃);
for(--i;i>=0;--i)
{?d=c[i];
printf(〃%c〃,b);
}
}
(本题分值:4分)
【正确答案】
【19】n%base
【20】 [d]

C. c语言二级考试题及答案

2011年3月全国计算机等级考试二级笔试试卷
C语言程序设计
(考试时间90分钟,满分100分)

一、 选择题(1-10,21-40每题2分,11-20每题1分,共70分)

(1)下列关于栈叙述正确的是
A)栈顶元素最先能被删除
B)栈顶元素最后才能被删除
C)栈底元素永远不能被删除
D)以上三种说法都不对

(2)下列叙述中正确的是
A)有一个以上根结点的数据结构不一定是非线性结构
B)只有一个根结点的数据结构不一定是线性结构
C)循环链表是非线性结构
D)双向链表是非线性结构

(3)某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)
A)3 B)4 C)6 D)7

(4)在软件开发中,需求分析阶段产生的主要文档是
A)软件集成测试计划 B)软件详细设计说明书
C)用户手册 D)软件需求规格说明书

(5)结构化程序所要求的基本结构不包括
A)顺序结构 B)GOTO跳转
C)选择(分支)结构 D)重复(循环)结构

(6)下面描述中错误的是
A)系统总体结构图支持软件系统的详细设计
B)软件设计是将软件需求转换为软件表示的过程
C)数据结构与数据库设计是软件设计的任务之一
D)PAD图是软件详细设计的表示工具

(7)负责数据库中查询操作的数据库语言是
A)数据定义语言
B)数据管理语言
C)数据操纵语言
D)数据控制语言

(8)一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是
A)1:1联系 B)1:m联系
C)m:1联系 D)m:n联系

(9)有三个关系R、S和T如下:


则由关系R和S得到关系T的操作是
A)自然连接 B)交 C)除 D)并

(10)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是
A)-369 B)369 C)0.369 D)整数集合{1,2,3,4,5}

(11)计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是
A)C语言程序仅可以编译执行
B)C语言程序仅可以解释执行
C)C语言程序既可以编译执行又可以解释执行
D)以上说法都不对

(12)以下叙述中错误的是
A)C语言的可执行程序是由一系列机器指令构成的
B)用C语言编写的源程序不能直接在计算机上运行
C)通过编译得到的二进制目标程序需要连接才可以运行
D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件

(13)以下选项中不能用作C程序合法常量的是
A)1,234 B)'123'
C)123 D)"\x7G"

(14)以下选项中可用作C程序合法实数的是
A).1e0 B)3.0e0.2
C)E9 D)9.12E

(15)若有定义语句:inta=3,b=2,c=1;,以下选项中错误的赋值表达式是
A)a=(b=4)=3; B)a=b=c+1;
C)a=(b=4)+c; D)a=1+(b=c=4);

(16)有以下程序段
char name[20];
int num;
scanf("name=%s num=%d",name;&num);
当执行上述程序段,并从键盘输入:name=Lili num=1001<回车>后,name的值为
A)Lili B)name=Lili C)Lili num= D)name=Lili num=1001

(17)if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是
A)必须是逻辑值 B)必须是整数值
C)必须是正数 D)可以是任意合法的数值

(18)有以下程序
#include
main()
{ int x=011;
printf("%d\n",++x);
}
程序运行后的输出结果是
A)12 B)11 C)10 D)9

(19)有以下程序
#include
main()
{ int s;
scanf("%d",&s);
while(s>0)
{ switch(s)
{ case1:printf("%d",s+5);
case2:printf("%d",s+4); break;
case3:printf("%d",s+3);
default:printf("%d",s+1);break;
}
scanf("%d",&s);
}
}
运行时,若输入1 2 3 4 5 0<回车>,则输出结果是
A)6566456 B)66656 C)66666 D)6666656

(20)有以下程序段
int i,n;
for(i=0;i<8;i++)
{ n=rand()%5;
switch (n)
{ case 1:
case 3:printf("%d\n",n); break;
case 2:
case 4:printf("%d\n",n); continue;
case 0:exit(0);
}
printf("%d\n",n);
}
以下关于程序段执行情况的叙述,正确的是
A)for循环语句固定执行8次 B)当产生的随机数n为4时结束循环操作
C)当产生的随机数n为1和2时不做任何操作D)当产生的随机数n为0时结束程序运行

(21)有以下程序
#include
main()
{ char s[]="012xy\08s34f4w2";
int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>='0'&&s[i]<='9') n++;
printf("%d\n",n);
}
程序运行后的输出结果是
A)0 B)3 C)7 D)8

(22)若i和k都是int类型变量,有以下for语句
for(i=0,k=-1;k=1;k++) printf("*****\n");
下面关于语句执行情况的叙述中正确的是
A)循环体执行两次B)循环体执行一次C)循环体一次也不执行D)构成无限循环

(23)有以下程序
#include
main()
{ char b,c; int i;
b='a'; c='A';
for(i=0;i<6;i++)
{ if(i%2) putchar(i+b);
else putchar(i+c);
} printf("\n");
}
程序运行后的输出结果是
A)ABCDEF B)AbCdEf C)aBcDeF D)abcdef

(24)设有定义:doublex[10],*p=x;,以下能给数组x下标为6的元素读入数据的正确语句是
A)scanf("%f",&x[6]); B)scanf("%lf",*(x+6));
C)scanf("%lf",p+6); D)scanf("%lf",p[6]);

(25)有以下程序(说明:字母A的ASCII码值是65)
#include
void fun(char *s)
{ while(*s)
{ if(*s%2) printf("%c",*s);
s++;
}
}
main()
{ char a[]="BYTE";
fun(a); printf("\n");
}
程序运行后的输出结果是
A) BY B) BT C) YT D) YE

(26)有以下程序段
#include
main()
{ …
while( getchar()!='\n');

}
以下叙述中正确的是
A)此while语句将无限循环
B) getchar()不可以出现在while语句的条件表达式中
C)当执行此while语句时,只有按回车键程序才能继续执行
D)当执行此while语句时,按任意键程序就能继续执行

(27)有以下程序
#include
main()
{ int x=1,y=0;
if(!x) y++;
else if(x==0)
if (x) y+=2;
else y+=3;
printf("%d\n",y);
}
程序运行后的输出结果是
A)3 B)2 C)1 D) 0

(28)若有定义语句:chars[3][10],(*k)[3],*p;,则以下赋值语句正确的是
A)p=s; B)p=k; C)p=s[0]; D)k=s;

(29)有以下程序
#include
void fun(char *c)
{ while(*c)
{ if(*c>='a'&&*c<='z') *c=*c-('a'-'A');
c++;
}
}
main()
{ char s[81];
gets(s); fun(s); puts(s):
}
当执行程序时从键盘上输入Hello Beijing<回车>,则程序的输出结果是
A)hello beijing B)Hello Beijing C)HELLO BEIJING D)hELLO Beijing

(30)以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。
#include
#define N 10
void fun(int x[N])
{ int i=0;
while(i<>
}
在程序中下划线处应填入的是
A)x+i B)&x[i+1]C)x+(i++) D)&x[++i]

(31)有以下程序
#include
main()
{ char a[30],b[30];
scanf("%s",a);
gets(b);
printf("%s\n %s\n",a,b);
}
程序运行时若输入:
how are you? I am fine<回车>
则输出结果是
A)how are you? B)how I am fine are you? I am fine
C)how are you? I am fine D)row are you?

(32)设有如下函数定义
int fun(int k)
{ if (k<1) return 0;
else if(k==1) return 1;
else return fun(k-1)+1;
}
若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是
A)2 B)3 C)4 D)5

(33)有以下程序
#include
int fun (int x,int y)
{ if (x!=y) return ((x+y);2);
else return (x);
}
main()
{ int a=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序运行后的输出结果是 A)3 B)6 C)8 D)12

(34)有以下程序
#include
int fun()
{ static int x=1;
x*=2;
return x;
}
main()
{ int i,s=1;
for(i=1;i<=3;i++) s*=fun();
printf("%d\n",s);
}
程序运行后的输出结果是 A)0 B)10 C)30 D)64

(35)有以下程序
#include
#define S(x) 4*(x)*x+1
main()
{ int k=5,j=2;
printf("%d\n",S(k+j));
}
程序运行后的输出结果是 A)197 B)143 C)33 D)28

(36)设有定义:struct {charmark[12];int num1;double num2;} t1,t2;,若变量均已正确赋初值,则以下语句中错误的是
A)t1=t2; B)t2.num1=t1.num1;C)t2.mark=t1.mark; D)t2.num2=t1.num2;

(37)有以下程序
#include
struct ord
{ int x,y;}dt[2]={1,2,3,4};
main()
{
struct ord *p=dt;
printf("%d,",++(p->x));printf("%d\n",++(p->y));
}
程序运行后的输出结果是 A)1,2 B)4,1 C)3,4 D)2,3

(38)有以下程序
#include
struct S
{ int a,b;}data[2]={10,100,20,200};
main()
{ struct S p=data[1];
printf("%d\n",++(p.a));
}
程序运行后的输出结果是 A)10 B)11 C)20 D)21

(39)有以下程序
#include
main()
{ unsigned char a=8,c;
c=a>>3;
printf("%d\n",c);
}
程序运行后的输出结果是 A)32 B)16 C)1 D)0

(40)设fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项中正确的是
A)写操作结束后可以从头开始读 B)只能写不能读
C)可以在原有内容后追加写 D)可以随意读和写

二、填空题
(1)有序线性表能进行二分查找的前提是该线性表必须是 【1】 存储的。

(2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为 【2】 。

(3)对软件设计的最小单位(模块或程序单元)进行的测试通常称为【3】 测试

(4)实体完整性约束要求关系数据库中元组的 【4】 属性值不能为空。

(5)在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称 【5】 是关系A的外码。


(6)以下程序运行后的输出结果是 【6】。
#include
main()
{ int a;
a=(int)((double)(3/2)+0.5+(int)1.99*2);
printf("%d\n",a);
}

(7)有以下程序
#include
main()
{ int x;
scanf("%d",&x);
if(x>15) printf("%d",x-5);
if(x>10) printf("%d",x);
if(x>5) printf("%d\n",x+5);
}
若程序运行时从键盘输入12<回车>,则输出结果为 【7】 。

(8)有以下程序(说明:字符0的ASCII码值为48)
#include
main()
{ char c1,c2;
scanf("%d",&c1);
c2=c1+9;
printf("%c%c\n",c1,c2);
}
若程序运行时从键盘输入48<回车>,则输出结果为 【8】 。

(9)有以下函数
void prt(char ch,int n)
{ int i;
for(i=1;i<=n;i++)
printf(i%6!=0?"%c":"%c\n",ch);
}
执行调用语句prt('*',24);后,函数共输出了 【9】 行*号。

(10)以下程序运行后的输出结果是 【10】。
#include
main()
{ int x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf("%d %d\n",x,y);
}

(11)己知a所指的数组中有N个元素。函数fun的功能是,将下标k(k>0)开始的后续元素全部向前移动一个位置。请填空。
void fun(int a[N],int k)
{ int i;
for(i=k;i
}

(12)有以下程序,请在 【12】 处填写正确语句,使程序可正常编译运行。
#include
【12】 ;
main()
{ double x,y,(*p)();
scanf("%lf%lf",&x,&y);
p=avg;
printf("%f\n",(*p)(x,y));
}
double avg(double a,double b)
{ return((a+b)/2);}

(13)以下程序运行后的输出结果是 【13】。
#include
main()
{ int i,n[5]={0};
for(i=1;i<=4;i++)
{ n[i]==n[i-1]*2+1; printf("%d",n[i]); }
printf("\n");
}

(14)以下程序运行后的输出结果是 【14】。
#include
#include
#include
main()
{ char *p; int i;
p=(char *)malloc(sizeof(char)*20);
strcpy(p,"welcome");
for(i=6;i>=0;i--) putchar(*(p+i));
printf("\n-"); free(p);
}

(15)以下程序运行后的输出结果是 【15】。
#include
main()
{ FILE *fp; int x[6]={1,2,3,4,5,6},i;
fp=fopen("test.dat","wb");
fwrite(x,sizeof(int),3,fp);
rewind(fp);
fread(x,sizeof(int),3,fp);
for(i=0;i<6;i++) printf("%d",x[i]);
printf("\n");
fclose(fp);
}

2011年3月全国计算机等级考试二级笔试试卷
C语言程序设计答案

一.选择题1-5 ABDDB
6-10 ACDCB 11-15 ADBAA
16-20 ADCAD 21-25 BDBCD
26-30 CDCCC 31-35 BBBDB
36-40 CDDCB
二,填空题
1) 顺序 2) DEBFCA 3) 单元测试 4) 主键 5) D 6) 3 7) 1217
8) 09 9) 4 10) 20 0 11) i-1 12) double avg(doublea,double b) 13) 13715
14) e(E)moclew 15) 123456
2010年9月全国计算机等级考试二级C笔试试卷答案
一、选择题
1~5: BCDAA 6~10:DDCCA 11~15:CBBAD 16~20: DAACB
21~25: BCBDC 26~30 :CBDDA 31~35:ACBCD 36~40 :BACBD

二、填空
1.1DCBA2345 2.n-1 3.25 4.结构化 5.物理设计 6.2008
7.15 8.非0 9. 1 4 13 40 10.i 11.2
12.a[row][col] 13.3 14.*s 15.FILE

热点内容
四川农业大学申请考核博士 发布:2025-10-20 08:58:11 浏览:981
福田雷沃重工本科生待遇怎么样 发布:2025-10-20 08:53:49 浏览:575
华为要本科生吗 发布:2025-10-20 08:25:41 浏览:550
2008年青岛本科生工资 发布:2025-10-20 08:04:24 浏览:444
东北大学艺术考研 发布:2025-10-20 07:38:35 浏览:299
我的大学生活txt 发布:2025-10-20 07:35:28 浏览:25
人民大学外语系考研 发布:2025-10-20 07:31:12 浏览:894
上海交通大学考研辅导班 发布:2025-10-20 07:24:54 浏览:420
华中农业大学细胞生物学考研群 发布:2025-10-20 07:09:36 浏览:558
南京大学2016考研线 发布:2025-10-20 06:43:12 浏览:930