百度
360搜索
搜狗搜索

c语言题库及答案免费,急求C语言复习题库加答案详细介绍

本文目录一览: C语言期末试库试题

C语言期末题库试题赶紧复习
1,下列定义变量的语句中错误的是-----
A,int _int B、double int_ C、char For D、float US$答案:D一一知识点:常量、变量和标识符
2.以下不合法的用户标识符是-----
A、j2_KEY B、DoubleC、4d D、_8
答案:C一知识点:常量、变量和标识符
3.以下4组用户定义标识符中,全部合法的一组是-----
A、_main enclude sin B、If -max turbo C、txt REAL 3COMD、int k_2 _001 ???
答案:A一一知识点:常量、变量和标识符
4.以下定义语句中正确的是-----
A、char a='A' b=B;B、float a=b=10.0;(正解a=10.0 b=10.0)
C、int a=10,*b=&a; D、float *a,b=&a;???答案:C一知识点:常量、变量和标识符
5.以下不能定义为用户标识符的是-----
A、scanf B、VoidC、_3com D、int
答案:D一一知识点:常量、变量和标识符
6.以下有4组用户标识符,其中合法的一组是-----
A、For -sub Case B、4d DO Size
C、f2_G3 IF abc D、WORD Void define
答案:C一知识点:常量、变量和标识符
7.C语言中最简单的数据类型包括-----
A、整型、实型、逻辑型B、整型、实型、字符型
C、整型、字符型、逻辑型 D、整型、实型、逻辑型、字符型
答案:B一一知识点:常量、变量和标识符
8.下列选项中,合法的C语言关键字是-----
A、VAR B、cher C、integer D、default答案:D一一知识点:常量、变量和标识符
9,以下不能定义为用户标识符的是-----
A、Main B、_0 C、_int D、sizeof
答案:D一知识点:常量、变量和标识符
10下列叙述中正确的是----
A、C语言中既有逻辑类型也有集合类型
B、C语言中没有逻辑类型但有集合类型
C、C语言中有逻辑类型但没有集合类型
D、C语言中既没有逻辑类型也没有集合类型答案:D一一知识点:常量、变量和标识符
11,当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是-----
A、c=b=a; B、(a=c)ll(b=c);C、(a=c)&&(b=c); D、a=c=b;
答案:C-知识点:赋值表达式
12.以下选项中非法的表达式是-----
A、0<=x<100 Bi=j==0 C、(char)(65+3) D、x+1=x+1
答案:D一一知识点:赋值表达式
13.以下程序的输出结果是-----
#include

main() [ int a,b,d=241; a=d/100%9;

b=(-1)&&(-1);printf("%d,%d\n"a,b);???

A、61 B、2,1 C、6,0 D、2,0

答案:B一一知识点:赋值表达式

14.以下循环体的执行次数是-----

main() { int j; for (i=0,j=1; i<=j+1;i+=2,j--) printf("%d \n",i);

A、3B、2C、1 D、0

答案:C一一知识点:赋值表达式

15.有以下定义语句double a,b; int w;long c;若各变量已正确赋值,则下列选项中正确的表达式是-----

A、a=a+b=b++ B、w%((int)a+b) C、(c+w)%(int)a D、w=a=b;答案:C一知识点:赋值表达式

16,有如下程序 main()[ int a; char c=10;loat f=100.0;double x;a=f/=c*=(x=6.5);printf("%d %d%3.1f%3.1f\n"a,c,f,x);程序运行后输出结果是-----

A、1 65 1 6.5 B、1 65 1.5 6.5 C、1 65 1.0 6.5

D、2 65 1.5 6.5

答案:B一一知识点:赋值表达式

17.若变量a、i已正确定义,且i已正确赋值,合法的语句是-----

A、a==1 B、++i; C、a=a++=5; D、a=int(i);

答案:B一一知识点: 赋值表达式

18,若变量已正确定义并赋值,下面符合C语言语法的表达式是-----

A、a:=b+1 B、a=b=c+2 C、int 18.5%3 D、a=a+7=c+b答案:B一一知识点:赋值表达式

19,设变量x为float型且已赋值,则以下语句中能将x中的数值保留到

小数点后两位,并将第三位四舍五入的是

A、x=x*100+0.5/100.0 B、x=(x*100+0.5)/100.0C、x=(int)(x*100+0.5)/100.0??? D、x=(x/100+0.5)*100.0

答案:C一一知识点:赋值表达式

20.在一个C程序中----

A、main函数必须出现在所有函数之前

B、main函数可以在任何地方出现

C、main函数必须出现在所有函数之后

D、main函数必须出现在固定位置

答案:B知识点:简单C语言程序的构成和格式

21,以下说法中正确的是----

A、#define和printf都是C语句 B、#define是C语句,而printf不是C、printf是C语句,但#define不是 D、#define和printf都不是C语句答案:D一知识点:简单C语言程序的构成和格式

22,若k是int型变量,且有下面的程序片段----

k=-3 if(k<=0) printf("####") elseprintf("&&&&");

上面程序片段的输出结果是

A、#### B、&&&& C、####&&&& D、有语法错误,无输出结果答案:D一一知识点:简单C语言程序的构成和格式

23.以下4个选项中,不能看作一条语句的是----

A、l;} B、a=0,b=0,c=0; C、if(a>0); D、if(b==0) m=1;n=2;? ??答案:D一一知识点:简单C语言程序的构成和格式

24,有以下程序main() [int a=0b=0;a=10;/* 给a赋值*/ b=20;/* 给b赋值*/ printf("a+b=%d\n",atb) } 程序运行后的输出结果是---

A、a+b=10 B、a+b=30 C、30 D、出错答案:B-一知识点:简单C语言程序的构成和格式

25.以下选项中,不能作为合法常量的是-----

A、1.234e04 B、1.234e0.4 C、1.234e+4 D、1.234e0答案:B一一知识点:实型数据

28,以下符合C语言语法的实型常量是-----

A、1.2E0.5 B、3.14159E C、5E-3 D、E15答案:C一一知识点:实型数据

30,表达式36-5/2+1.2+5%2的值是----

A、4.3 B、4.8 C、3.3 D、3.8

答案:D-一知识点:算术表达式

31,设int a=12,则执行完语句a+=a-=a*a后,a的值是-----

A、552 B、264 C、144 D、-264

答案:D一知识点:算术表达式

32.以下变量x、y、z均为double类型且已正确赋值,不能正确表示数字式子x/(y*z)的C语言表达式是_-----

A、x/y*z B、x*(1/(yz)) C、x/y*1/z D、x/ylz答案:A一一知识点:算术表达式

33,若有定义:int a=8,b=5,c;,执行语句c=a/b+0.4;后,c的值是-----

A、1.4 B、1 C、2.0 D、2

答案:B-一知识点:算术表达式

求c语言试题及答案!急啊!

搜C语言程序设计100例,可以找到有用C写的解题
c语言考试题(一)

一、 单项选择题(每题2分,共20分)
1、以下选项中属于C语言的数据类型是( )
A.复数型 B.逻辑型 C.集合型 D.双精度型
2、一个C程序的执行是从( )
A.main()函数开始,直到main()函数结束 B.第一个函数开始,直到最后一个函数结束
C.第一个语句开始,直到最后一个语句结束 D.main()函数开始,直到最后一个函数结束
3、设有语句int a=3;则执行语句a+=a-=a*a;后,变量a的值是( )
A.3 B.0    C.-12     D.9
4、若有 char c[5]={'c','d','\0','e','\0'};则执行语句printf("%s",c);结果是( )。
A.cd\0e B.'c''d' C.cd D.cd e
5、已知:int a[2][3]={1,2,3,4,5,6}, (*p)[3]=a;则下列表达式不是4的是 ( )。
A.*(*p+3) B.*p+3 C.*(*(p+0)+3) D.a[0][3]
6、以下有宏替换不正确的叙述( ).
A.宏替换不占用运行时间 B.宏名无类型
C.宏替换只是字符串替换 D.宏名必须用大写字母表示
7、执行char str[10]=”Ch\nina”; strlen(str)的值是( )
A.5 B.6 C.7 D.9
8、下面程序的输出结果是:( )
#define POWER(x) (x*x)
main()
{int i=4; printf("%d",POWER(i-2)); }
A. -9 B. -7 C. 5 D. -6
9、在定义int a[3][4][2];后,第10个元素是( )
A.a[2][1][2] B.a[1][0][1] C.a[2][0][1] D.a[2][2][1]
10、下面程序的输出结果是:( )
typedef struct
{long x[2];
short y[4];
char z[8];
}MYTYPE;
MYTYPE a;
main()
{ printf("%d\n",sizeof(a));}
A. 2 B. 8 C. 14 D. 24
二、 填空题(每空1分,共11分)
1、字符串"A"在内存中占用的字节数为 。
2、C语言中的标识符只能由字母、下划线和 组成。
3、若有定义语句“ int a=25,b=14,c=19;",以下语句的执行结果是
if(a++<=25&&b--<=2&&c++) printf("***a=%d,b=%d,c=%d\n",a,b,c);
else printf("###a=%d,b=%d,c=%d\n",a,b,c);
4、有如下定义a[]="B\172\\\'a%%";则执行语句printf("%d",strlen(a));的结果为 。
5、若有定义:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i; for(i=0;i<4;i++) p[i]=&a[i*3];则*(*(p+1)+2)的值为 ,*p[2]的值为 。若数组的首地址为2000,则p[1]指向的地址为 。
6、设a=2,b=3,x=3.5,y=2.5,则表达式(float)(a+b)/2+(int)x%(int)y 的结果是 。
7、设x、y都是int型变量,初值都为1,则执行表达式:--x&&y++后,y的值为 。
8、语句for(i=1;i==10;i++)continue;循环的次数是 。
9、以下程序输出 。
main()
{enum em {em1=3,em2=1,em3};
char *aa[]={"AA","BB","CC","DD"}; printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);
}
三、 写程序结果(每题5分,共35分)
1、#include
main()
{int x,y,z;
x=1,y=2,z=3; x+=y+=z;
printf("1:%d\n",z+=x>y?x++:y++);
x=0x02ff;y=0xff00;
printf("2:%d\n",(x&y)>>4|0x005f);
x=y=z=-1; ++x||++y&&++z;
printf("3:%d,%d,%d\n",x,y,z);
}
2、#define f(x) x*x
main()
{int a=6,b=2,c;
c=f(a+b)/f(b);
printf(“%d\n”,c);
}
3、fun(int k)
{ printf("%d",k);
if(k>0)
fun(k-1);
}
main( )
{ int w=5; fun(w); printf("\n"); }
4、#include
main()
{int x=1,y=0;
switch(x)
{ case 1:
switch(y)
{ case 0:printf(“first\n”);break;
case 1:printf(“second\n”);break;
}
case 2:printf(“third\n”);
}
}
5、#include
main()
{ int k=4;
func(k); func(k);
}
func(int a)
{ static int m=0;
m+=a;
printf("%d",m);
}
6、struct st
{ int x;
int *y;
}*p;
int s[]={30,20};
struct st a[]={1,&s[0],2,&s[1]};
main()
{ p=a; printf("%d,",p->x);
printf("%d\n",++(*(++p)->y));
}
7、假定在当前盘目录下有2个文本文件,其名称和内容如下:
文件名: a1.txt a2.txt
内容: ABCDEF# abcdef#
#include "stdio.h"
main()
{FILE *fp;
void fc();
if((fp=fopen("a1.txt","r"))==NULL)
{printf("Can not open file!\n"); exit(1);}
else{fc(fp);fclose(fp);}
if((fp=fopen("a2.txt","r"))==NULL)
{printf("Can not open file!\n"); exit(1);}
else{fc(fp);fclose(fp);}
}
void fc(fp1)
FILE *fp1;
{char c;
while((c=fgetc(fp1))!='#')putchar(c);
}
四、 程序填空(每空2分,共14分)
1、下面程序求矩阵a的主对角线元素之和,请填空。
main()
{ int a[3][3]={2,4,6,8,10,12,14,16,18};
int sum=0,i,j;
for(i=0;i<3; ① )
for(j=0; ② ;j++)
if(i= =j) sum=sum+ ③ ;
printf("sum=%d\n",sum);
}
2、下列函数coy把字符数组S2中的全部字符复制到字符数组S1中, 复制时’\0’也要复制过去,’\0’后面的字符不用。
coy(char s1[],char s2[])
{ int i;
for(i=0;s2[i]!= ① ;i++)
s1[i]=s2[i];
② ;
}
3、下面程序的功能是将字符串a中的下标为奇数的元素由小到大排序,其他元素不变,请填空。
main()
{ char a[]="students",t; int i,j;
for(i=1;i<7;i+=2)
for(j=i+2;j<8; ① )
if( ② )
{t=a[i];a[i]=a[j];a[j]=t;}
puts(a);
}
c语言考试题(二)
一. 填空题(每题2分,共20分)
1. C语言基本数据类型有:_______________________________;
构造类型有:_____________________________________。 P.13
2. C语言源程序注注释符号是:________________________________,
为表明层次结构,C语言源程序通常采用_____________________格式编写。P.4
3. 源程序TEST.C经编译产生的目标文件是:________________________;
经连接处理后,产生的可执行文件是:__________________________。
4. strlen(“1234 \ 0xy)的值为:_____________________________;
sizeof(float)的值为:____________________________
5. 二维数组a[10] [50]最后一行的首地址为:_________________________;
最后一个元素的首地址为:____________________________________。
6. C标准库函数中,数学函数的原型在:________________头文件中,自定义头文件D :\ MYC \ MY . H应如何包含到源程序文件中:_________________________。P.130
7. 已知函数定义为:int stat(int a,float *p)
{……………}
则此函数的两个参数类型分别是_______________ 、 _____________________。
8. 设int x,y,z=4;
x=y=++z;
x=(y>z)?x+2;x++;则x的值是:_________;
设int a=0,b=0,c=0;c=++a | | b++; ,则a、b、c值分别是:_____________。
9. 与if (x=0) 等价的写法是if ( ! x );
判断两个(float)变量x,z是否相等一般:if ( fabc(x-z)<1e-6 )。
10.已知赋值语句zhang.year=1985;可判断zhang是_______________类型的变量;
定义文件指针的C语句是:_________________________________。
二. 单项选择题 (每题1分,共10分)
1. 组成C程序的基本单位是____________________________。
A.函数 B.标识符 C.表达式 D.语句
2. 设int类型的数据长度为2字节,则该类型数据的取值范围是__________________。
A.0至65536 B.0至65535
C.-32767至32768 D.-32768至32767
3. 在C语言中,逻辑值“真”是用_____________________表示的。
A.预定义为真值的宏 B.非零数
C.正数 D.非零整数
4. C语言对于嵌套if语句规定else总是与_____________________匹配。
A.与最外层的if B.与之前最近的if
C.与之前最近的不带else的if D.与最近的{ }之前的if
5. 数组定义char a[10]={`a`,`b`,`c`}:包括了几个元素____________________。
A.3 B.9 C.4 D.10
6. 数组名作为实参传给被调用的函数时,形参获得的是_____________________。
A.该数组第一个元素的值 B.该数组所有元素的值
C.该数组第一个元素的首地址 D.该数组所有元素的首地址
7. 为表示关系x ≥ y ≥z,正确的C语言表达式为_________________________。
A.(x>=>y>=z) B.(x>=y)AND(y>=z)
C.(x>=y)&&(y>=z) D.(x>y)&(y>=z)
8. 根据定义int a[ ]={1,2,3},i,*p=a; 从语法分析_________________是不正确的。
A. a[p-a] B.*(&a) C.p D.*(*(a+i))
9. 若有语句scanf(“%d%d”,&a,&b);要使变量a,b分别得到12和34;正确的输入形式为____________________________。
A.12 34 B.12,34 C.1234 D.12:34
10.union uex {int i;float f;char c;}ex;则sizeof(ex)的值是____________________。
A.4 B.5 C.6 D.7
三. 分析程序,写出运行结果。(每题4分,共20分)
1. 源程序如下,运行时假定键盘输入字符串为``2004``
#include
void main(void)
{
int n=0;
char c;
while( (c=getchar( )) ! =`\n` ) /*字符型数字*/
{
if (c>=`0`&&c<=`9` )
n = n*10 + c- `0` ; /*数字*/
}
printf(“value=%d|n” ,n);
}
结果为: value=2004 。
2. 源程序如下:
#include
void main(void)
{
int num[9]={399,398,397,396,395,299,290,311,301};
int score[9]={81,85,59,77,90,66,89,93,73};
int iMax,iPos,i;
iPos=0;
iMax=score[iPos];
for(i=1;i<9;i++)
if(score>iMax)
{
iPos=i;
iMax=score[iPox];
}
printf(“num=%d,score=%d”,num[iPos];score[iPos]);
结果为: num=311, score=93 。
3. 源程序如下,运行时假定键盘输入数据为:1 2 3 4 5 6 7 8 9 10
#include
void main(void)
{
int i,a[10];
int *p;
p=a;
for(i=0;i<10;i++)
scanf(“%d“,p++);
for(p=a;p< SPAN>;p++)
if (*p%2)printf(“%3d”,*p);
}
结果为: 1 3 5 7 9 。
4. 源程序如下,两次运行,分别输入数据13和21
#include
#include
void main(void)
{
int n,s;
scant (“%d”,&n);
s=panduan( n);
if(s==1)printf(“yes\n”);
else printf(“no\n);
}
int panduan(int n)
{
int k,j;
k=(int)sqrt((double)n);
for(j=2;j<=k,j++)
{
if(n%j==0) break;
}
if(j>k) retum(1);
else retum(0);
}
结果为 yes
no
5.源程序如下,运行时假定键盘输入字符为:AxByCz
#include
#include
void main(void)
{
char str[80];
int i;
gets(str);
for(i=0;str!=`\0`;i++)
if(str>=`a`&&str<=`z`) str-=32;
else if (str>=`A`&&str<=`Z`) str+=32;
puts(str);
}
结果为: aXbYcZ 。
四. 下列程序中每个划线处有一个错误,改正划线 中的错误,使其实现题目要求。(每体4分,共20分)
1. 求 s=1+2+3+、、、、、、、+100
include 改正为_________________________。
void sum (void) 改正为_________________________。
{
int s,i;
for (s=0,i=1;i<=100;i++)
{
s=s+ i ++; 改正为__________________________。
}
printf (“s=%f”,s) 改正为__________________________。
}
2. 源程序实现求x
#include
double pow(float . int) 改正为_________________________。
void main(void)
{
int i, n;
float x;
scanf (“%f,%d”,&x,&n);
for (i=1; i<9;i++)
printf(“%d,%e\n”, i, pow(i,x);
} 改正为______________________。
double v v pow(float x, int n)
{
int i;
double p=0; 改正为______________________。
for (i=1; i< i++)>改正为_______________________。
p*=x;
retum(p);
}
3. 源程序实现排升序。
#include
void main(void)
{
int i, j, iMin, a[10]={4,3,5,1,10,12,2,6,7,9}, iTemp;
for (i=0; i<9; i++)
{
iMin=0; 改正为_______________________。
for (j=i+1; j<10;j++)
if(a[iMin]< iMin="j;">改正为_______________________。
if (iMin==i) 改正为_________________________。
{ iTemp=a;
a[iMin]=a; 改正为_________________________。
a[iMin]=iTemp;
}
}
for(i=0; i<10; i++)
printf(“%4d”, a):
}
4. 源程序为求平均值。
#include
void main(void)
{
int i, sum; 改正为____________________。
float avg;
int sc[10], *p=sc;
for (i=0, i<10; i++) 改正为____________________。
{
scanf(“%d”, p++);
sum+= *p; 改正为____________________。
}
avg = sum/ 10; 改正为___________________。
printf(“avg=%f”, avg);
}
5. 源程序求 eX=1+x+x2/2!+……+xn/n!前n+1项之和
#include
void main(void>
{
float exp , x , t;
int i, n;
scanf(“%f, %d”,&x, &n);
t=0; 改正为___________________。
exp=1.0;
for(i=1 ; i<=n; i++)
{
if(t<1e-6) loop; 改正为__________________。
t+=x/i; 改正为___________________。
exp*=t; 改正为___________________。
}
printf(“\n%15.6f”, exp);
}
五. 编程题 (每题6分,共30分)
1. 根据以下程序框架,编写子函数,实现交换两个整型变量x和y的值。
#include
void swap (int *, int *);
void main (void)
{
int x, y;
scanf(“%d, %d”, &x, &y);
swap( &x, &y);
printf(“%d, %d”, x, y);
}
void swap( )
{
}
2. 设某班人数36人,参加C语言考试,用一维数组score[36]存放考试成绩,已给出一部分程序,完善以下程序,使其实现统计并输出不及格人数及百分比。
#include
void main (void)
{ int i;
float scoer[36], precent;
int count=0;
for (i=0; i<36; i++)
{
scanf(“%f”, &score);
}
3. 完善以下程序使其实现由键盘任意输入一串字符,统计其中大写字母个数iA、小写字母个数ia、其他字符个数iother。
#include
#include
void main (void)
{
char str [80];
int i, iA=0, ia=0, iother=0;
}
4. 完善以下程序使其实现求方阵主和辅对角线元素之和及其转置矩阵,设方阵用二维数组a表示,转置矩阵用t表示,sl和s2表示主和辅对角线元素之和。
#include
void main(void)
{
int a[3] [3]={1,3,5,7,9,11,13,15,11};
int i, j, s1, s2;
int t[3] [3];
printf(“%d, %d,\n”,s1, s2);
for(i=0; i<3; i++)
for(j=0; j<3; j++)
printf(“%3d”, t [j]);
}
5. 已知字符数组str[80],编写返回指针的子函数,实现在其中查找字符ch首次出现的位置。
#include
#include
#include
char *lstrchar(char*, char);
void main(void)
{
char c, *p, str[80];
gets (str);
scanf(“%c”, &c);
p=lstrchar(str,c);
if(p==NULL) printf(“char %c not found\n”c);
else printf(“The position is %d”, p-str);
char “lstrchar( )
{ }
历年全国计算机二级考试c语言真题及答案
http://jsj.lsxy.com/UploadFiles/20064222324839.rar

阅读更多 >>>  java基础知识点笔记

急求C语言复习题库加答案

一 选择题(7分,每小题0.5分)
1.C语言源程序的基本单位是( B)。
A 过程 B 函数 C 子程序 D 标识符
2.下列程序的输出结果是(C)。
main( )
{ int a=7,b=5;
printf("%d\n",b=b/a);
}
A 5 B 1 C 0 D不确定值
3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是(B)。
A 7 B 8 C 9 D 2
4.设a为int型变量,执行下列赋值语句后,a的取值分别是( B )。
a=125.534; a=(int)125.521%4; a=5<<2;
A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20
5.设有如下程序段,下面描述中正确的是 ( C )。
int k=10; while(k=0) k=k-1;
A 循环执行一次 B循环是无限循环 C循环体语句一次也不执行 D循环体语句执行一次
6.以下程序的输出结果为(A)。
int i;
void prt( )
{ for(i=5;i<8;i++) printf("%c",'*');
printf("\t");
}
main( )
{ for(i=5;i<=8;i++) prt( );
}
A *** B *** *** *** *** C *** *** D * * *
7.在C语言程序中,以下说法正确的是(B )。
A函数的定义可以嵌套,但函数的调用不可以嵌套
B函数的定义不可以嵌套,但函数的调用可以嵌套
C函数的定义和函数的调用都不可以嵌套
D函数的定义和函数的调用都可以嵌套
8.以下函数调用语句中含有(A)个实参。
func((e1,e2),(e3,e4,e5));
A 2 B 3 C 5 D 语法错误
9.以下程序的输出结果为(A)。
#define ADD(x) x*x
main( )
{ int a=4,b=6,c=7,d=ADD(a+b)*c;
printf("d=%d",d);
}
A d=70 B d=80 C d=140 D d=700
10.已知职工记录描述如下,在Turbo C中,系统为变量w分配(C )字节的空间。
struct worker
{ int no;
char name[20];
char sex;
union
{ int day; int month; int year;}birth;
} w;
A 29 B 20 C 25 D 6
11.设有以下定义,值为5的枚举常量是(A )。
enum week{sun,mon=4,tue,wed,thu,fri,sat} w;
A tue B sat C fri D thu
12.下面选项中正确的赋值语句是(设 char a[5],*p=a;)(A)。
A p="abcd"; B a="abcd"; C *p="abcd"; D *a="abcd";
13.设有以下程序段,则值为6的表达式是(B )。
struct st { int n; struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,0 },*p;
p=&a[0];
A p++->n B ++p->n C p->n++ D (*p).n++
14.C语言中的文件类型只有( D )。
A 索引文件和文本文件两种 B 文本文件一种
C 二进制文件一种 D ASCII码文件和二进制文件两种
二 判断对错,对的划“√”,错的划“×”(5分,每小题0.5分)
1.在Turbo C中,整型数据在内存中占2个字节。(× )
2.int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的输出结果为A。(× )
3.break语句用在循环体中,可结束本层循环,continue语句用在循环体中,可结束本次循环。( √ )
4.函数的递归调用不过是一个函数直接或间接地调用它自身。(√)
5.函数strlen("ASDFG\n")的值是7。(× )
6.通过return语句,函数可以带回一个或一个以上的返回值。(×)
7.结构体类型只有一种。 ( × )
8.char *p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。(× )
9.若有定义:char *p(char a[10]);则p是函数名。(√ )
10.用fopen("file","r+");打开的文件"file"可以进行修改。 ( √ )
答案
一 选择题(7分,每小题0.5分)
1. B 2. C 3. B 4. B 5. C
6. A 7. B 8. A 9. A 10. C
11. A 12. A 13. B 14. D
二 判断对错,对的划“√”,错的划“×”(5分,每小题0.5分)
1.× 2.× 3.√ 4.√ 5.×
6.× 7.× 8.× 9.√ 10.√
1选择题(24分,每小题2分)
1.已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是(B)。
A 存放读入数据项的存储区 B 存放读入数据的地址或指向此地址的指针
C 一个指向所读文件的文件指针 D 一个整形变量,代表要读入的数据项总数
2.以下程序的输出结果为( C)。10,10
main( )
{ int i=010,j=10;
printf("%d,%d\n",i++,j--); }
A 11,9 B 9,10 C 8,10 D 9,9
3.设a为int型变量,执行下列赋值语句后,a的取值分别是( B )。a=125.534;a=20.0/3;a=(int)125.521%4;a=5<<2;
A 125,6,31,1 B 125,6,1,20 C 125,6.666666,31,20 D 125.534,6.666666,2,20
4.设i和k都是int类型,则for循环语句(D )。
for(i=0,k=-1;k=1;i++,k++) printf("****\n");
A 循环结束的条件不合法 B 循环体一次也不执行 C 循环体只执行一次 D 是无限循环
5.以下程序的输出结果为(`D )。
main( )
{ char c;
int i;
for(i=65;i<68;i++)
{ c=i+32;
switch(c)
{ case 'a':case 'b':case 'c':printf("%c,",c);break; default:printf("end");}
}
}
A a,b,c,end B a,a,a,end C a,a,a, D a,b,c,
6.函数调用语句:fseek(fp,-10L,2);的含义是(A )。
A 将文件位置指针从文件末尾处向文件头的方向移动10个字节
B 将文件位置指针从当前位置向文件头的方向移动10个字节
C 将文件位置指针从当前位置向文件末尾方向移动10个字节
D 将文件位置指针移到距离文件头10个字节处
7.以下程序的输出结果为(D )。
main( )
{ char s1[40]="country",s2[20]="side";
int i=0,j=0;
while(s1[i]!='\0') i++;
while(s2[j]!='\0') s1[i++]=s2[j++];
s1[i]=0;
printf("%s\n",s1);
}
A side B country C sidetry D countryside
8.下列说法不正确的是(A)。
A 主函数main中定义的变量在整个文件或程序中有效
B 不同函数中,可以使用相同名字的变量
C 形式参数是局部变量
D 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效
9.在下列程序段中,枚举变量 c1的值是( D )。
enum color { red,yellow,blue=4,green,white}c1; c1=yellow; c1=white;
A 1 B 3 C 5 D 6
10.设有说明 int (*ptr)();其中标识符ptr是(B)。
A 是一个指向整形变量的指针 B 是一个指针,它指向一个函数值是int的函数
C 是一个函数名 D定义不合法
11.定义由n个指向整形数据的指针组成的数组p,其正确的方式为( C )。
A int p; B int (*p)[n]; C int *p[n]; D int (*p)( );
12.具有相同类型的指针类型变量p与数组a,不能进行的操作是( B)。
A p=a; B *p=a[0]; C p=&a[0]; D p=&a;
二 判断对错,对的划“√”,错的划“×”(20分,每小题2分)
1.参加位运算的数据可以是任何类型的数据。(× )
2.若有定义和语句:int a;char c;float f;scanf("%d,%c,%f",&a,&c,&f);若通过键盘输入:10,A,12.5,则a=10,c=‘A’,f=12.5。(√)12.500000
3.C语言把文件看作是一个字符(字节)的序列。(√ )
4.若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义,所以此宏定义是错误的。(× )
5.在Turbo C中,下面的定义和语句是合法的:file *fp;fp=fopen("a.txt","r");( × )
6.若有定义:char s[ ]="china";则Turbo C系统为数组s开辟6个字节的内存单元。(√ )
7.若有定义和语句:int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++) sum+=a[i][2-i];则sum=21。(√ )
8.若有定义和语句:struct student { int num; char name[10]; float score;} s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++);输出结果是1。(× )
9.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。(√ )
10.在Turbo C中,此定义和语句是合法的:enum aa{ a=5,b,c}bb;bb=(enum aa)5;( √ )
答案
一 选择题(24分,每小题2分)
1.( B ) 2.( C ) 3.( B ) 4.( D ) 5.( D ) 6.( A )
7.( D ) 8.( A ) 9.( D ) 10.( B ) 11.( C ) 12.( D )
二 判断对错,对的划“√”,错的划“×”(20分,每小题2分)
1.( × ) 2.( √ ) 3.( √ ) 4.( × ) 5.( × )
6.( √ ) 7.( √ ) 8.( × ) 9.( √ ) 10.( √ )

国家二级计算机考试c语言真题

2012年3月全国计算机等级考试二级C语言真题及答案如下:
(考试时间90分钟,满分100分)
一、 选择题
1、 下列叙述中正确的是:
A、循环队列是队列的一种顺序存储结构
B、循环队列是队列的一种链式存储结构
C、循环队列是非线性结构
D、循环队列是一直逻辑结构
1)【答案】A
【解析】为了充分利用存储空间,可以把顺序队列看成一个环状空间,即把顺序队列的头尾指针相连,这样的队列称之为循环队列。它是对顺序队列的改进,故循环队列是队列的一种顺序存储结构
2、 下列叙述中正确的是
A、栈是一种先进先出的线性表
B、队列是一种后进先出的线性表
C、栈和队列都是非线性结构
D、以上三种说法都不对
(2)【D】
【解析】栈是一种后进先出的线性表,队列是一种先进先出的线性表,二者均是线性结构,故选项A)、B)、C)均不对,答案为选项D)。
3、 一棵二叉树共有25个节点,其中5个时子节点,那么度为1的节点数为
A、4 B、6 C、10 D、16
【D】
【解析】由二叉树的性质n0=n2+1可知,度为0的结点数(即叶子结点数)=度为2的结点数+1,根据题意得知,度为2的结点数为4个,那么25-5-4=16即为度为1的结点数,选项D)正确
4、 在下列模式中,能够给出数据库物理存储结构与物理存取方法的是
A、内模式 B、外模式 C、概念模式 D、逻辑模式
【答案】A
【解析】内模式也称存储模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述。所以选项A)正确。
5、 在满足实体完整性约束的条件下
A、一个关系中可以没有候选关键词
B、一个关系中只能有一个候选关键词
C、一个关系中必须有多个候选关键词
D、一个关系中应该有一个或者多个候选关键词
【答案】D
【解析】在关系R中如记录完全函数依赖于属性(组)X,则称X为关系R中的一个候选关键字。在一个关系中,候选关键字可以有多个且在任何关系中至少有一个关键字。所以在满足数据完整性约束的条件下,一个关系应该有一个或多个候选关键字,所以选项D)正确。
6、 有三个关系R、S和T如下:
R
A B C
a 1 2
b 2 1
c 3 1
则由关系R和S得到关系T的操作是
A、自然连接 B、并 C、差 D、交
【答案】C
【解析】R和S的差是由属于R但不属于S的元组组成的集合,运算符为“-”。记为T=R-S。根据本题关系R和关系S运算前后的变化,可以看出此处进行的是关系运算的差运算
7、 软件生命周期中的活动不包括
A、软件维护 B、市场调研 C、软件测试 D、需求分析
【答案】B
【解析】通常把软件产品从提出、实现、使用、维护到停止使用(退役)的过程称为软件生命周期。可以将软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。软件生命周期的主要活动阶段是可行性研究与计划制定、需求分析、软件设计、软件实现、软件测试、运行和维护。软件生命周期不包括市场调研。
8、 下面不属于需求分析阶段任务的是
A、确定软件系统的功能需求 B、确定软件系统的系统的系能需求
B、制定软件集成测试计划 D、需求规格说明书审评
【答案】C
【解析】需求分析是对待开发软件提出的需求进行分析并给出详细的定义。主要工作是编写软件需求规格说明书及用户手册。需求分析的任务是导出目标系统的逻辑模型,解决“做什么”的问题。制定软件集成测试计划是软件设计阶段需要完成的任务
9、 在黑盒测试方式中,设计测试用例的主要根据是
A、程序外部功能 B、程序内部逻辑
C、程序数据结构 D、程序流程图
【答案】A
【解析】黑盒测试也称功能测试或数据驱动测试,设计测试用例着眼于程序外部结构、不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
10、 在软件设计中不使用的工具是
A、系统结构图 B、程序流程图
C、PAD图 D、数据流图(DFD图)
【答案】D
【解析】软件设计包括概要设计和详细设计,软件概要设计中,面向数据流的设计方法有变换型系统结构图和事务型数据流两种。软件详细设计,程序流程图(PDF)和PAD(问题分析图)是过程设计的常用工具。数据流图(DFD图)是软件定义阶段结构化分析方法常用的工具。
11、针对简单程序设计,以下叙述的实施步骤正确的是
A、确定算法和数据结构、编码、调试、整理文档
B、编码、确定算法和数据结构、调试、整理文档
C、整理文档、确定算法和数据结构、编码、调试
D、确定算法和数据结构、调试、编码、整理文档
【答案】A)
【解析】简单程序设计的步骤是首先要确定算法和数据结构,然胡编码、调试,最后整理相关文档。
12、关于C语言中数的表示,以下叙述正确的是
A、只有整型数在允许范围内能精确无误的表示,实型数会有误差
B、只要在在允许范围内整型和实型都能精确表示
C、只有实型数在允许范围内能精确无误的表示,整型数会有误差
D、只有八进制表示的数在不会有误差
【答案】A)
【解析】实型数据在内存中存储的二进制位数是有限的,例如float型数据在内存中有24位二进制尾数。而一个十进制实数转化为二进制实数时,其有效数字位数有可能会超过尾数的存储长度,从而导致有效数字丢失而产生误差
13、以下关于算法叙述错误的是
A、算法可以用伪代码、流程图等多种形式来描述
B、一个正确的算法必须有输入
C、一个正确的算法必须有输出
D、用流程图可以描述的算法可以用任何一种计算机高级语言编写成程序代码
【答案】B)
【解析】一个正确的算法可以有零个或者多个输入,必须有一个或者多个输出
14、以下叙述错误的是
A、一个C程序可以包含多个不同名的函数
B、一个C程序只能有一个主函数
C、C程序在书写时,有严格的缩进要求,否则不能编译通过
D、C程序的主函数必须用main作为函数名
【答案】C)
【解析】一个C程序有且只有一个主函数 main()。一个C 程序可以包含多个不同名字的子函数。C程序在书写时没有严格的缩进要求。
15、设有以下语句
Char ch1,ch2, scanf(”%c%c”,&ch1,&ch2);
若要为变量ch1和ch2分别输入字符A和B,正确的输入形式应该是
A、A和B之间用逗号间隔 B、A和B之间不能有任何间隔符
C、A和B之间可以用回车间隔 D、A和B之间用空格间隔
【答案】B)
【解析】考察C语言中输入格式,因为在输入格式中定义好了”%c%c”,其中没有任何符号,所以中间不能加任何字符,包含不能加逗号、回车和空格,因为这些也算是字符。所以在输入时也不可以有任何间隔符号。
16、以下选项中非法的字符常量是
A、’\102’ B、’\65’ C、’\xff’ D、’\019’
【答案】D)
【解析】字符常量有两种表示方法:
一种是用该字符的图形符号,如'b' ,'y','*'。另外还可以用字符的ASCII码表示,即用反斜符(\)开头,后跟字符的ASCII码,这种方法也称为转义序列表示法,具体方法是:有两种形式:一种是用字符的八进制ASCII码,表示为:\odd.这里,ddd是八进制值(o可以省略)。另一种使用字符的十六进制ASCII码值,表示为 \0xhh或0Xhh 这里hh是两位十六进制值。
本题中D)选项‘\019'使用是八进制表示,不应该出现9,所以错误
17、有以下程序
#include

Main()

{

Int A=0,B=0,C=0;

C=(A-=A-5);(A=B,B+=4);

Printf(“%d, %d, %d\n”,A,B,C)

}

程序运行后输出的结果是

A 0,4,5 B 4,4,5 C 4,4,4 D 0,0,0

【答案】A)

【解析】考察C语言关于赋值的应用,首先执行a-=a-5,即a=a-(a-5),使得a的值为5,然后执行c=(a-=a-5),即将a的值5赋给变量c,使得c的值也为5。然后执行下句逗号表达式中的a=b,把b的值0赋给a,此时a的值为0,然后执行b=b+4,使得b的值为4。最后打印输出。

18、设变量均已正确定义并且赋值,以下与其他三组输出结构不同的一组语句是

A、x++; printf((“%d\n”,x); B、n=++x; printf((“%d\n”,n);

C、++x; printf((“%d\n”,x); D、n=x++; printf((“%d\n”,n);

【答案】D)

【解析】本题考察自增运算符,++x表示先将x值加1后再用,x++表示先使用x值,用后加1,所以本题中ABC选项都会输出x+1的值,只有D选项会输出x值。

19、以下选项中,能表示逻辑值“假”的是

A 1 B 0.000001 C 0 D 100.0

【答案】C)

【解析】在C语言中非0的值表示真,0表示假

20、有以下程序

#include

Main()

{ int a;

Scanf(“%d”,&a);

If(a++<9) printf((“%d\n”,a);

Else printf((“%d\n”,a--);

}

程序运行时键盘输入9

,则输出的结构是

A、10 B 11 C 9 D 8

【答案】A)

【解析】考察if语句和自增自减运算符,判断条件中if(a++<9)是先用后加,即a的值为9,所以条件不成立,但是a已经进行了自增1操作,a的值此时为10。执行else语句时,因为打印a--,是先用后减,所以先输出10,然后a的值变为9。

21、有以下程序

#include

Main()

{int s=0,n;

For (n=0;n<3;n<++)

{switch(s)

{ case 0;

Case 1;s+=1;

Case 2;s+=2;break;

Case 3;s+3;

Case 4;s+=4;

}

printf((“%d\n”,s);

}

}

程序运行后的结果是

A 1,2,4 B 1,3,6 C 3,10,14 D 3,6,10

【答案】C)

【解析】本题考察switch语句的应用,case分支后面如果没有break,那么就会顺序执行下面的case,直到遇到break跳出。所以第一次循环后s的值为3打印输出。第二次s的值为:s=s+3,s=s+4,即为10,打印输出。第三次没有匹配成功直接执行default语句,s=s+4,所以s的值为14,打印输出。

22、若k是int类型变量,且有以下for语句

For(k=-1;k<0;k++) printf(****\n”);

下面关于语句执行情况的叙述中正确的是

A、循环体执行一次 B、循环体执行两次

C、循环体一次也不执行 D、构成无限循环

【答案】A)

【解析】考察for循环语句,本题中k初始值为-1,执行一次循环体,执行完后k值为0,不满足k<0条件,推出循环,所以执行了一次。

23、有以下程序

#include

Main()

{char A,B,C;

B=’1’;C=’A’

For(A=0;A<6;A++)

{if(A%2) putchar(B+A);

Else putchar(C+A);

}

}

程序运行后输出的结果是

A 1B3D5F B ABCDFE C A2C4E6 D 123456

【答案】C)

【解析】考察for语句和if语句,第一次循环a的值为0 ,a%2也为0 ,条件不满足所以打印的是(c+a)即变量c的值“A”。第二次a的值为1,条件a%2的值为1,条件满足打印字符(b+a)即字符 “2”。第三次a的值为2,条件不满足,打印(a+c)即字符”C”。同理打印后续字符为“4E6”。

24、设有如下定义语句

Int m[ ]={2,4,6,8},*k=m;

以下选项中,表达式的值为6的是

A *(k+2) B k+2 C *k+2 D *k+=2

【答案】A)

【解析】考察数组和指针的概念,本题中*k指向数组m的首地址。*(k+2)现将指针后移两个元素,即为m[2]的首地址,然后取出m[2]的值6,所以选择A选项。选项B的值是一个地址无意义。选项C的值为4。选项D使得m[0]的值为4。

25、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下列划线处应该填写的是

#include

#define N 5

Viod fun(int x[N])

{int m;

For(m=N-1;m>0;m--) scanf(“%d\n”, );

}

A &x[++m] B &x[m+1] C x+(m++) D x+m

【答案】D)

【解析】考察指针的概念和应用,数组名本身就是地址,所以不需要在用&符号。C选项不能对所有元素赋值而是反复再给一个数值赋值且是死循环。

26、若有函数

Viod fun(double a[], int *n)

{………}

以下叙述中正确的是

A、 调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送

B、 形参a和n都是指针变量

C、 形参a是一个数组名,n是指针变量

D、 调用fun函数时将把double型实参数组元素一一对应地传送给形参a数组

【答案】B)

【解析】函数中的形参a[]已经退化为一个指针,所以AC都不对,D选项中只是传入一个指针,并没有把数组的元素挨个赋值,正确选项为B。

27、有以下程序

#include

Main()

{int a,b,k,m,*p1,*p2;

k=1,m=8;

p1=&k,p2=&m;

a=/*p1-m; b=*p1+*p2+6;

printf(“%d ”,a); printf(“%d\n”,b);

}

编译时编译器提示错误信息,你认为出错的语句是

A、a=/*p1-m B、b=*p1+*p2+6

C、k=1,m=8; D、p1=&k,p2=&m;

【答案】A)

【解析】选项A中a = /*p1-m;表示方式不正确,未能正确表示出含义

28、以下选项中有语法错误的是

A char *str[ ]={“guest”}; B、char str[10 ]={“guest”};

C、char *str[3] *str[1]={“guest”}; D、char str[3][10];str[1]={“guest”};

【答案】D)

【解析】考察指针数组的概念,D选项中str为二维字符数组,不能够直接把一个字符串赋值到二维数组的某一行中。

29、avg函数的功能是求整型数组中的前若干个元素的平均值,设数组元素个数最多不超过10,则下列函数说明语句错误的是

A、int avg(int *a,int n); B、int avg(int a[10],int n);

C、int avg(int a,int n) ; D、int avg(int a[],int n);

【答案】C)

【解析】考察函数声明基本用法,C选项中函数的第一形参没有指名是数组,代表的是一个整型数,声明不正确。

30、有以下函数

#include

#include

main()

{ printf(“%d\n”,strren”ATS\n012\1”) );}

程序运行后的输出结果是

A 3 B 8 C 4 D 9

【答案】B)

【解析】考察转义字符的用法,strlen函数的作用是求得字符串长度,\n与\1均是反义字符各表示一个字符所以打印值为8。

31、有以下函数

#include

main()

{ char a[20],b[20],c[20];

scanf(”%s%s”,a,b);

get(c);

printf(”%s%s\n”,a,b,c);

}

程序运行时从第一行开始输入 this is a cat!

,则输出结果是

A thisisacat! B this is a C thisis a cat! D thisisa cat!

【答案】C)

【解析】考察scanf和gets输入字符串的区别,scanf语句接收字符时遇到空格就作为一个字符串的结束,所以a数组中为this ,b数组中为is,但是getchar函数见到回车才认为结束所以c数组为 a cat!。所以打印结果如选项C。

32、有以下函数

#include

viod fun(char c)

{if(c>’x’) fun(c-1);

printf (“%c”,c);

}

main()

{fun”z”;}

程序运行输出结果是

A xyz B wxyz C zyxw D zyx

【答案】A)

【解析】考察函数的嵌套调用,当运行fun(‘z’),调用fun(‘y’),然后嵌套调用fun(‘x’),输出结果为先输出x,然后输出y,最后输出z。

33、有以下函数

#include

viod func(int n)

{int i;

for(i=0;i<=n;i++) printf(“*”);

printf(“#”);

main()

{ func(3); printf(“????”); func(4); printf(“\n”); }

程序运行输出结果是

A ****#????***# B ***#????*****#

C **#????*****# D ****#????*****#

【答案】D)

【解析】考察for循环函数调用,执行fun(3)是输出****,然后输出#,执行fun(4)时输出*****,然后输出#,所以选项D)正确。

34、有以下函数

#include

viod fun(int *s)

{staic int j=0;

do {s[j]=s[j]+s[j+1];} wihle(++j<2);

}

main()

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

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

for(K+1;k<5;k++) printf(“%d”,a[k]);

printf(“\n”);

}

程序运行输出结果是

A 12345 B 23445 C 34756 D 35745

【答案】D)

【解析】考察静态局部变量,静态局部变量属于静态存储方式,它具有以下特点:

(1)静态局部变量在函数内定义,它的生存期为整个源程序。

(2)静态局部变量只能在定义该变量的函数内使用该变量。退出该函数后,尽管该变量还继续存在,但不能使用它。

(3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋以0值。

(4) 根据静态局部变量的特点, 可以看出它是一种生存期为整个源文件的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值。

根据这个特点,函数第一次调用时,会将数组a变为35345,当第二次调用时,函数内的j值为2,所以会将数组a的第三个元素更改为7,所以最终结果为35745,选项D)正确。

35、有以下函数

#include

#define S(x) (x)*x*2

main()

{int k=5,j=2;

printf(“%d,”,S[k+j]); printf(“%d\n”,S(k-j)));

}

程序运行输出结果是

A 98,18 B 39,11 C39,18 D98,11

【答案】B)

【解析】考察宏定义的使用,根据该宏的定义,S(k+j)=(k+j)*k+j*2=39, S(k-j)=(k-j)*k-j*2=11,所以答案为39,11选项B)正确。

36、有以下函数

#include

Viod exch(int t[ ])

{t[0]=t[5];}

{int x[10]={1,2,3,4,5,6,7,8,9,10},i=0;

While(i<=4) {exch(&x[i])’i++;}

for(i=0;i<5;i++) printf(“%d”,x[i]);

printf(“\n”);

}

程序运行输出结果是

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

【答案】D)

【解析】通过分析代码,可以看出来,函数的作用就是把数组某个元素的变为这个元素位置加5后对用的元素值,所以执行完之后输出数组x的前五个元素的值,其实就是数组x的后五个元素的值,即6 7 8 9 10

37、设有以下程序段

Struct MP3

{char name[20];

Char color;

Float price;

}std,*ptr;

ptr=& std;

若要引用结构体变量std中的color成员,写法错误的是

A std.color B ptr-> color C std-> color D (*ptr) .color

【答案】C)

【解析】考察结构体的用法,在引用结构体中的成员变量时,可以使用’.’来引用,当指针指向结构体时,可以使用’->’来指向结构体重的成员,C选项引用错误

38、有以下函数

#include

阅读更多 >>>  数据int的取值范围是多少

struct stu

{int mun; char name[10]; int age;};

viod fun(struct stu *p)

{ printf(“%s\n”,p->name);}

mian()

{ struct stu x[3]={{01,”zhang”,20},{02,”wang”,19},{03,”zhao”,18}};

fun(x+2);

}

程序运行输出结果是

A zhang B zhao C wang D 19

【答案】B)

【解析】考察结构体的用法,结构体数组存储了三个人的信息,x+2代表了指向第三个元素,所以输出name为Zhao。

39、有以下函数

#include

mian()

{int a=12,c;

c=(a<<2)<<1;

printf(“%d\n”,c):

}

程序运行输出结果是

A 3 B 50 C 2 D 96

【答案】D)

【解析】考察移位操作,执行c=(a<<2)<<1语句时,首先是 a左移两位,其等效于将a乘以4,得到48,然后将48左移一位,相当于是乘以2,所以结果为c=96,选项D正确

40、以下函数不能用于向文件写入数据的是

A ftell B fwrite C fputc D fprintf

【答案】A)

【解析】考察文件的操作,函数 ftell() 用于得到文件位置指针当前位置相对于文件首的偏移字节数。在随机方式存取文件时,由于文件位置频繁的前后移动,程序不容易确定文件的当前位置。调用函数ftell()就能非常容易地确定文件的当前位置。不能写入数据,其他三个选项都可以向文件中写入。

9月计算机二级《C语言》上机试题及答案

  (1)一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、c、D、E依次入栈,然后再依次出栈,则元素出棱的顺序是(   )。

  A.12345ABCDE

  B.EDCBA54321

  C.ABCDEl2345

  D.54321EDCBA

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

  A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构

  B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况

  C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况

  D.循环队列中元素的个数是由队头指针和队尾指针共同决定的

  (3)在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是(   )。

  A.0(n)

  B.D(n2)

  C.O(1092n)

  D.0(nl092n)

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

  A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的

  B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构

  C.顺序存储结构能存储有序表,链式存储结构不能存储有序表

  D.链式存储结构比顺序存储结构节省存储空间

  (5)数据流图中带有箭头的线段表示的是(   )。

  A.控制流

  B.事件驱动

  C.模块调用

  D.数据流

  (6)在软件开发中,需求分析阶段可以使用的工具是(   )。

  A.N—s图

  B.DFD图

  C.PAD图

  D.程序流程图

  (7)在面向对象方法中,不属于“对象”基本特点的是(   )。

  A.一致性

  B.分类性

  C.多态性

  D.标识唯一性

  (8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是(   )。

  A.一对一

  B.一对多

  C.多对一

  D.多对多

  (9)在数据管理技术发展的三个阶段中,数据共享最好的是(   )。

  A.人工管理阶段

  B.文件系统阶段

  C.数据库系统阶段

  D.三个阶段相同

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

  由关系R和S通过运算得到关系T,则所使用的运算为(   )。

  A.笛卡尔积

  B.交

  C.并

  D.自然连接

  (11)下列叙述中错误的是(   )。

  A.C程序可以由多个程序文件组成

  B.一个c语言程序只能实现一种算法

  C.c程序可以由一个或多个函数组成,

  D.一个C函数可以单独作为一个C程序文件存在(12)以下选项中,能用作数据常量的是(   )。

  A.115L

  B.0118

  C.1.5el.5

  D.0115

  (13)按照c语言规定的用户标识符命名规则,不能出现在标识符中的是(   )。

  A.大写字母

  B.下划线

  C.数字字符

  D.连接符

  (14)设变量已正确定义并赋值,以下正确的表达式是(   )。

  A.X=Y+z+5,++Y

  B.int(15.8%5)

  C.X=Y*5=X+Z

  D.X=25%5.0

  (15)设有定义:int X=2;,以下表达式中,值不为6的是(   )。

  A.2*x.x+=2

  B.x++,2*x

  C.x*=(1+x)

  D.x*!x+1

  (16)有以下程序:

  程序运行后的输出结果是(   )。

  A.2,3,3

  B.2,3,2

  C.2,3,1

  D.2,2,1

  (17)有以下程序:

  已知字母A的ASCIl码为65,程序运行后的输出结果是(   )。

  A)E.68B.

  B)D,69

  C.E,D

  D.输出无定值

  (18)若有定义int x,y;并已正确给变量赋值,则以下选项中与表达式(x—y)?(x++):(y++)中的条件表达式(x—Y)等价的是(   )。

  A.(x—Y<01Ix—Y>O)

  B.(x—y<0)

  C.(x—Y>0)

  D.(x—Y==0)

  (19)有以下程序:

  程序运行后的输出结果是(   )。

  A.3

  B.2

  C.1

  D.0

  (20)若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch语句是(   )。

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





阅读更多 >>>  标识符,标识符是什么?

C语言模拟题答案

一、填空题
1、一个C语言程序的语句至少应包含一个__表达式____。
2、C语言源程序文件的扩展名是__ .C ____,经过编译、连接后,生成文件的扩展名是__ .h ____。
3、结构化程序由顺序结构、___选择结构___和___循环结构___三种基本结构组成。
4、C语言的执行是从__main函数____开始执行的。
5、C源程序的语句分隔符是___;___。
6、在C语言中,用关键字__float____定义单精度实型变量。
7、表达式S=12应当读做“__把12 赋值给 S____”。
8、C语言源程序的基本单位是__函数____。
9、设int x=9,y=8;表达式x-=y+1的结果是___0___。
10、若a为整型变量,a=12,则表达式:a * =2+3的值___60___。
11、调用C语言对输入输出处理的库函数时,在# include命令行中应包含的头文件是___stdio.h___。
12、表达式9%5的结果是__4____。
13、若a为整型变量,a=12,则表达式:a+=4的值___16___。
14、 在C语言中,要求运算数必须是整型的运算符是___%___。
15、在C语言中,用___非0___表示逻辑“真”值。
16、7、表达式10/3的结果是___3___。
17、通常一个字节包含__8____个二进制位。
18、 假设所有变量均为整型,a=2,b=5,b++则表达式a+b的值是__8____。
19、在C语言中,最基本的数据类型只有四种,它们分别是:__int____、__char____、___float___和double。
20、一个C程序有且仅有一个___main___函数。
21、若a为整型变量,a=12,则表达式:a-=2的值___10___。
22、在C语言中,有三种逻辑运算符,它们分别是:___&&___、__||____、___!___。
23、在C语言中,字符输入函数和字符输出函数分别是:__getchar____和__putchar____。
24、C程序开发的四个步骤是__编辑____、__编译____、__链接____和执行。
25、C程序的结构分别是:顺序结构、__选择结构____、___循环结构___。
26、if语句中的表达式可以是关系表达式、___逻辑表达式___、___算术表达式___。
27、__?____是C语言中惟一一个三元运算符。
28、C语言提供的预处理命令主要包括如下三种:宏定义、___文件包含___、__条件编译____。
二、阅读程序,写出下列程序运行结果。
1、#include

main()

{int a=2,b=-1,c=2;

if(a
<b)
if(b<0) c=0;

else c+=1;

printf(“%d\n”,c);

}

结果是2. 注意 else 与最近的 if 结合

2、

#include

main()

{ char c=’A’+10;

printf(“c=%c\n”,c);

}

结果:c=K

3、#include

main()

{char c=’a’;

int I=97;

printf(“%c,%d\n”,c,c);

}

结果:a,97

4、#include

main()

{ int a=5,b=8;

if(a==b) printf("A=B\n");

else if(a>b) printf("A>B\n");

此题你没写完。

1、main函数

2、C,exe

3、选择、循环

4、main函数

5、C源程序的语句分隔符是___;(分号)___。

6、在C语言中,用关键字___float___定义单精度实型变量。

7、表达式S=12应当读做“___S赋值为12___”。

8、C语言源程序的基本单位是______。

9、设int x=9,y=8;表达式x-=y+1的结果是__9____。

10、若a为整型变量,a=12,则表达式:a * =2+3的值__27____。

11、调用C语言对输入输出处理的库函数时,在# include命令行中应包含的头文件是_stdio.h_____。

12、表达式9%5的结果是__4____。

13、若a为整型变量,a=12,则表达式:a+=4的值___16___。

14、 在C语言中,要求运算数必须是整型的运算符是_%_____。

15、在C语言中,用__非零____表示逻辑“真”值。

16、7、表达式10/3的结果是__3____。

17、通常一个字节包含____8__个二进制位。

18、 假设所有变量均为整型,a=2,b=5,b++则表达式a+b的值是__8____。

19、在C语言中,最基本的数据类型只有四种,它们分别是:__int____、__float____、___char___和double。

20、一个C程序有且仅有一个__main____函数。

21、若a为整型变量,a=12,则表达式:a-=2的值___10___。

22、在C语言中,有三种逻辑运算符,它们分别是:__&&(与)____、___||(或)___、___!(非)___。

23、在C语言中,字符输入函数和字符输出函数分别是:__getchar____和__putchar____。

24、C程序开发的四个步骤是___预编译___、__编译___、__链接____和执行。

25、C程序的结构分别是:顺序结构、__选择结构____、_循环结构_____。

26、if语句中的表达式可以是关系表达式、_关系代数_____、_逻辑表达式_____。

27、_:_____是C语言中惟一一个三元运算符。

28、C语言提供的预处理命令主要包括如下三种:宏定义文件包含____、___条件编译

1、#include

main()

{int a=2,b=-1,c=2;

if(a
<b)
if(b<0) c=0;

else c+=1;

printf(“%d\n”,c);

}

答案:2

2、

#include

main()

{ char c=’A’+10;

printf(“c=%c\n”,c);

}

答案:K

3、#include

main()

{char c=’a’;

int I=97;

printf(“%c,%d\n”,c,c);

}

答案:a,97

4、#include

main()

{ int a=5,b=8;

if(a==b) printf("A=B\n");

else if(a>b) printf("A>B\n");

答案:无输出。

</b)

</b)

谁能提供点C语言的试题给我,最好能有答案的,非常感谢!

VC编程经验总结
VC编程资料
VC常见问题集(中文)
VC新手学堂
WinApi参考手册
MFC参考手册
用VC开发ACTIVEX
用DirctX9进行高级3D游戏程序设计
APracticalGuideUsingVisual C++andATL
超级菜鸟黑客速成图文教程
21天学会VC数据库编程
STL轻松入门
InsideAtl
COM+组件服务技术内幕
MFC参考手册
Windows网络编程技术
OpenGL基础图形编程
MFC程序设计
VC技术内幕
Windows核心编程
21天学会ActiveX编程
黑客技巧大全
游戏编程大师技巧(第二版)
VC高级编程
vchome图形图像编程技术篇
VC知识库
vc++ 编程指南
外挂制作教程
Windows程序设计
Winsock程序员疑难解答
Microsoft编程精粹
本试卷共5页共5大题,考生在作答前应先检查是否有缺页、白页、以防漏答。查对无误后,请先填写学号、姓名、专业,再答卷。
一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。(共10小题,每小题2分,共20分)。
1、不是C语言基本数据类型的是( )。
A、指针类型 B、整型
C、字符型 D、实型
2、设有:int a=3, b= 4, c= 5,x , y; 表达式(x=a)&&(y=b)&&0的值为( )。
A、1 B、0 C、3 D、4
3、设有语句 int a=3 ; 则执行了语句 a+ = a - = a后,变量a 的值是( )。
A、3 B、0 C、9 D、-12
4、执行以下程序后,y的值是( )
main()
{ int a[]={2,4,6,8,10};
int y=0,i,*p;
p=&a[0];
for(i=0;i<5;x++)
y+=*(p+i);
printf(“%d\n”,y);
}
A、17 B、18 C、19 D、30
5、有定义语句:float a[4];则分配给数组a的空间为( )字节。
A、 20 B、 12 C、 16 C、10
6、以下描述错误的是( )。
A、break语句可用于do~while语句
B、break语句和continue语句的作用是一样的
C、在循环语句中使用break语句是为了跳出循环,提前结束循环
D、在循环语句中使用continue语句是为了结束本次循环,而不终止整个循环
7、C语言中规定,if语句的嵌套结构中,else总是( )。
A、与最近的if 配对 B、与第一个if 配对
C、按缩进位置相同的if配对 D、与最近的且尚未配对的if 配对
8、说明语句“int (*p)( ); ”的含义是( ) 。
A、p是一个指向一维数组的指针变量
B、p是指针变量,指向一个整型数据
C、p是一个指向函数的指针,该函数返回一个int型数据
D、以上都不对
9、以下对二维数组c的正确声明是 ( ) 。
A、int c[3][ ]; B、int c(3,4); C、int c(2)(2); D、int c[3][2];
10、下述程序段执行后输出结果是( )。
int x=100, y=200;
printf ("% d", (x, y));
A、100 B、200 C、100,200 D、编译出错
二、填空题。(共10空,每空1分,共10分 )
1、C语言提供的三种逻辑运算符是 && 、 || 和!;
2、函数的返回值是通过函数中的 return 语句获得的。
3、在"int a[ ][3]={{1},{3,2},{4,5,6},{0}};"定义后,a[2][2]的值为_6__ _;
4、对于"int *pa[5];" pa是一个具有5个元素的_数组指针_,每个元素是一个指向int型变量的__指针__;
5、单向链表的尾节点next指针应赋值__ NULL___;
6、for(int x=0,y=1;x&&y〈=5;y++)中循环体执行的次数是 0 。
7、int a[5];数组a的首地址为2000,则元素a[1]的地址为 2002 ,元素a[2]的地址为 2004 。
三、程序填空题。(共8空,每空2分,共16分 )
1、以下程序中子函数返回数组s中最大元素,数组中元素的个数由t传入。
Int findmax(int s[],int t)
{
int m,n,*p;
max=0;
p= s ;
for(n=1;n
<t;n++)
if(*(p+max)<*(p+n)) max=n ;

return(*(p+max));;

}

Void main( )

{ int a[10];

int i;

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

scanf(“%d”,&a[i]);

printf(“%d”,findmax{a,10});

}

2、以下程序完成计算1-1/2+1/3-1/4+..前n 项和的功能,请填空。

#include

int main( )

{ int i, n, flag;

float sum;

scanf("%d", &n);

flag= 1 ;

sum=0;

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

{ sum+=(float)flag/i;

flag=-flag ;

}

printf("%.3f\n", sum);

}

3、以下程序的功能是从键盘输入n个整数,统计其中正数、0、负数的个数,请填空。

#include

int main( )

{int a, i, count1,count2,count3;

count1=cout2=count3=0 ;

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

{ scanf(“%d”, &a);

If(a>0) count1++;

Else if(i==0) count2++ ;

Else count3++;

}

printf(“正数:&d个,零:%d个,负数:%d个\n”, count1,count2,count3);

}

四、运行程序结果。(共4小题,每小题6分,共24分)

1、运行时输入100,200,请写出程序运行结果。

Void main( )

{

int a, b,*p1,*p2 ;

scanf ( " % d ", & a , );

scanf ( " % d ", & b );

printf(“a=%d,b=%d”,a,b);

p1=&a; p2=&b;

swap ( p1,p2);

printf(“a=%d,b=%d”,a,b);

}

Void swap ( int *p1, *p2)

{

int t ;

t=*p1; *p1=*p2; *p2=t;

}

运行结果为:

a=100,b=200a=200,b=100

2、运行时若输入1 2 3 4 -5

,写出程序运行结果。

#include

int main( )

{

int x, sum;

scanf("%d", &x);

sum=0;

while(x>0)

{ if(x%2!=0) sum+=x;

scanf("%d", &x);

}

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

}

运行结果为:

sum=4

3、写出程序运行结果。

#include

int max(int a,int b)

{ int c;

c=a>b?a:b;

return(c);

}

int min(int a,int b)

{int c;

c=a
<b?a:b;
return(c);

}

void main()

{ int a=2,b=6;

printf("max=%d\n",max(a,b));

printf(“min=%d\n”,min(a,b));

}

运行结果为:

max=6

Min=2

4、运行时若输入4 1 2 3 0

,写出程序运行结果。

#include

int main( )

{

int i, index, n;

int a[10];

scanf("%d", &n);

for(i=0; i
<n; i++)
scanf("%d", &a[i]);

index=0;

for(i=1;i
<n;i++)
{ if(a[i]
<a[index]) index="i;" }
printf("min=%d,index=%d\n", a[index],index);

}

运行结果为:

min=0,index=3

五、程序设计.( 共3小题,每小题10分,共30分)

1、输入10个字符串,将其按由小到大排序。

#include

#include

Void main( )

{ char c[10][20],t[10];

Int I, j,k;

For(i=0;i<10;i++)

Gets(c[i]);

For(i=0;i<9;i++)

{ k=I;

For(j=i+1;j<10;j++)

If(strcmp(c[k],c[j])>0) k=j;

If(k!=i) { strcpy(t,c[k]); strcpy(c[k],c[i]); strcpy(c[i],t); }

For(i=0;i<10;i++)

Puts(c[i]);

}

2、求出1!+2!+3!+…+8!。

#include

Float fact(int n)

{ float f;

If(n==1||n==0) f=1;

Else f=fact(n-1)*n;

Return(f);

}

Void main( )

{float sum;

Int I;

Sum=0;

For(i=1;i<=8;i++)

Sum+=fact(i);

Printf(“sum=%d\n”,sum);

}

3、请写出在一个单向链表中插入一个结点的函数:

struct student *insert(struct student *head, struct student *stud)

(说明:链表结点有两个成员:数据成员data和指针成员next)。

#include

#include

#define NULL 0

#define LEN sizeof(struct student)

struct student

{ int data;

struct student *next;

};

int n;

struct student *insert(struct student *head, struct student *stud)

{struct student *p0,*p1,*p2;

p1=head;p0=stud; if(head==NULL)

{head=p0; p0->next=NULL;}

else{while((p0->data>p1->data) && (p1->next!=NULL))

{p2=p1; p1=p1->next;}

if(p0->data<=p1->data) {if(head==p1) head=p0;

else p2->next=p0; p0->next=p1;}

else {p1->next=p0; p0->next=NULL;}}

n=n+1; return(head);

}


</n;i++)


</b?a:b;

</t;n++)

计算机二级C语言选择题及答案(2)

  }
  printf("%d\n",num);
  }
  程序执行后的输m结果是(  )。
  A.35
  B.37
  C.39
  D.3975
  32.以下程序的'输出结果是(  )。
  main()
  {char st[20]="hello\0\t\\\";
  printf("%d%d\n",strlen(st).sizeof(st));
  }
  A.9 9
  B.5 20
  C.13 20
  D.20 20
  33.若有以下的定义:‘int t[3][2];”,能正确表示t数组元素地址的表达式是(  )。
  A.&t[3][2]
  B.t[3]
  C.t[l]
  D.t[2][2]
  34.函数fseek(pf,OL,SEEK END)中的SEEK ENE 代表的起始点是(  )。
  A.文件开始
  B.文件末尾
  C.文件当前位置
  D.以上都不对
  35.下述程序的输出结果是(  )。
  #include
  main()
  { int i;
  for(i=l;i<=10;i++)
  {if(i*i>=20)&&(i*i<=100))
  break;
  }
  printf("%d\n",i*i);
  }
  A.49
  B.36
  C.25
  D.64
  36.若有定义“int b[8],*p=b;”,则p+6表示(  )。
  A.数组元素b[6]的值
  B.数组元素b[6]的地址
  C.数组元素b[7]的地址
  D.数组元素b[o]的值加上6
  37.设变量已正确定义,则以下能正确计算f=n!的程序是(  )。
  A.f=0:
  for(i=1;i<=n;i++)f*=i:
  B.F=1:
  for(i=l;i<2n;i++)f*=i:
  C.f=l:
  for(i=n;i>1;i++)f*=i:
  D.f=1;
  for(i=n;i>=2;i--)f*=i:
  38.下述程序执行的输出结果是(  )。
  #include
  main()
  { char a[2][4];
  strcpy(a,"are");strcpy(a[1],"you");
  a[0][3]=’&’;
  printf("%s\n",a):
  }
  A.are&you
  B.you
  C.are
  D.&
  39.设x=011050,则x=x&01252的值是(  )。
  A.0000001000101000
  B.1111110100011001
  C.0000001011100010
  D.1100000000101000
  40.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用(双引号)括起时,寻找被包含文件的方式是(  )。
  A.直接按系统设定的标准方式搜索目录
  B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索
  C.仅仅搜索源程序所在目录
  D.仅仅搜索当前目录
  【答案与解析】
  1.D。【解析】算法的空间复杂度,是指执行这个算法所需的存储空间。算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间、算法执行过程中所需要的额外空间。
  2.D。【解析】数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,用的存储结构有顺序和链式结构。用不同的存储结构,其处理的效率是不同的。
  3.D。【解析】所谓的交换排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序通过相邻元素的交换,逐步将线性表变成有序是一种最简单的交换排序方法。
  4.C。【解析】结构化程序设计的原则和方法之一是限制使用GOT0语句,但不是绝对不允许使用GOT0语句。其他三项为结构化程序设计的原则。
  5.D。【解析】文件系统所管理的数据文件基本上是分散、相互独立的。相对于数据库系统,以此为基础的数据处理存在3个缺点:数据冗余大、数据的不一致性、程序与数据的依赖性强。
  6.C。【解析】面对象的设计方法的基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念而不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。
  7.D。【解析】所谓的后序遍历是指,首先遍历左子树,然后遍历右子树,最后访问根结点,并且在遍历左、右树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。
  8.B。【解析】软件的过程设计是指系统结构部件转换成软件的过程描述。
  9.A。【解析】①对软,牛开发的进度和费用估计不准确:②用户对已完成的软件系统不满意的现象时常发生;③软件产品的质量往往靠不住;④软件常常是不可维护的;⑤软件通常没有适当的文档;⑥软件成本在计算机系统总成本中所占的比例逐年上升;⑦软件开发生产率提高的速度远远跟不上计算机应用迅速普能及深入的趋势。
  10.C。【解析】对象的封装性是指从外面看只能看到对象的外部特性,而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。
  11.C。【解析】数据库系统由如下5个部分组成:数据库(DB)、数据库管理系统fDBMS)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。其中 DB(DataBase)即数据库,是统一管理的相关数据的集合;DBMS即数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,为用户或应用完程序提供访问DB的方法。由以上可知,选C为正确答案。
  12.A。【解析】标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。C 选项do是C语言的一个关键字。D选项标识符只能以字母或下划线开始。
  13.D。【解析】本题考查逻辑运算符的使用。当“&&”的两个运算对象都是逻辑1时,表达式返回值才是1;“||” 的两个运算对象至少有一个是逻辑1时,表达式返回值也是1,x  14.C。【解析】第1个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予输出;第2个printf函数,有两个%说明,第1个%后面的字符要原样输出。本题考查printf函数的格式。①“%x”和“%0”分别表示以十六进制和八进制无符合型输出整型数据(不带前导ox或0);②printf函数中格式说明符之前插入的任何字符都原样输出;③格式说明与输出项的个数,也要相等,如果格式说明的个数少于输出项的个数,则对于多余的输出项不予输出。
  15.C。【解析】函数fun(int x,int y)的功能是返回x+y的值。在主函数中,变量a,b,c的初始值分别为1,2,3。因此,逗号表达式“a++,b++,aq b”的值等于5,表达式c++的值为3,调用于函数的表达式为“fun(5,3);”,其返回值等于8。
  16.D。【解析】在x=2,y=x+3/2中,3/2=1。2+1= 3,因此表达式的值为3,因为x,y为double型变量,故选择D选项。
  17.A。【解析】当x为1时,执行case 1,a自加等于1,因为case 1后没有break,接着执行case 2,此时a的值为2,b自加为1,故选择A选项。
  18.D。【解析】本题考梦自增运算符“++”、逻辑与运算符“&&”和逻辑或运算符“||”。自增运算符“++”出现在变量之前,表示先使用变量的值加l,再使用变量的值进行运算;出现在变量之后,表示先使用变量的值进行运算,再使用变量的值加l。当逻辑与运算符“&&’’两边的运算对象都为真时,逻辑表达式的值才为真;当逻辑或运算符“||”只要一个值为1,值就为1。根据运算符的优先级,题中应先计算内层括号中的值。++j是先自加后运算,因此运算时j的值等于3,所以表达式++j=3成立,即表达式的值为1;1与任何数都为进行或(||)运算,结果都为1,因此k=3的表达式i++是先运算后自加,因此运算时i为1,所以i++=1成立,自加1后i=2。if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。
  19.A。【解析】本题考查switch语句。当i一1时,执行case 1,因为没有遇到break语句,所以依次往下运行,“a=a+ 2=2,a=a+3=5”;当i=2时,执行case 2,因为没有遇到break语句,所以依次往下执行,“a=a+2=7,a=a+3= 10”;当i=3时,执行case 3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a—a+2—13,a—a+3一l6:当i=4时,执行default,a=a+3=19,结束循环。
  20.C。【解析】只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择C选项。
  21.A。【解析】循环的作用是求行下标从1到2列下标从0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][0]+a [2][1]+a[2][2]=3+4+5+6+0=18。
  22.A。【解析】在程序语句中,k的初始值为5,进行第l次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出k,此时k的值变为1。程序执行第2次循环时,k 自减1变为0,为假,退出while循环语句。所以程序的最后结果为1。
  23.A。【解析】通过地址来引用数组元素的方法有下列5种:
  (1)a[i][j];(2)*(a[i]+j);(3)*(*(a+j)+i);(4)* (a[i][j]);(5)(&aE0][0]q-3*i+j)。故A正确。
  24.C。【解析】选项A、B的空间不够;字符串存储要有结束符’\0’,且要占用一个空间,printf用来输出字符,不能输入字符串。
  25.D。【解析】由题目ee线性链表的定义可知,要将q 和r所指的结点交换前后位置,只要使q指向r的后一个结点,p指向r结点,r指向q结点即可。而在选项D由,r-> next=q,这时r指向的节点为q;p->next r,这时p指向的节点为r;q->next=r->next,因为r节点已经指向q,所以执行这个语句后q又指向q,所以选项D不正确。
  26.B。【解析】在第1次外层for循环中,首先x++得到x=1。进入到内层for循环,只有循环j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量x的值自加两次,当退出内层for循环时,x=3,然后执行x++,得到x=4。在进入执行第2次外层for循环中,首先x++得到x=5。进入到内层for循环,只有循环变量j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量X的值自加1两次,当退出内层for循环时,x=7,然后执行x++,得到x=8,所以打印输出变量x的值为8。
  27.C。【解析】子函数fun1(double a)的功能是返回a的平方值的整数部分。子函数fun2(double x,double y)的功能是返回X的平方值的整数部分与Y的平方值的整数部分的和。又因为题中变量w的定义为double型,函数fun(2) 的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。所以双精度型变量w的值为5.O。
  28.C。【解析】在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。
  29.A。【解析】本题在函数int fun(int n)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量x时,递归调用的过程为
  fun(10)=10…fun(9)=104-94-fun(8)=104-9+84- fun(7)
  =10+9++8++7++fun(6)=10+9++8+7+6+fun (6)
  =10+9++8+7+6+5+fun(4)
  =10+9++8+7+6+5+4+fun(3)
  =10+9++8+7+6+5+4+3+fun(2)
  =10+9++8+7+6+5+4+3+2+fun(1)
  =10+9++8+7+6+5+4+3+2=55

2018年计算机二级考试C语言试题及答案(2)

   2018年计算机二级考试C语言试题及答案(2)
  选择题(每小题1分,共40分)
  1[单选题] 若有定义语句:double a,* P=&a;以下叙述中错误的是(  )。
  A.定义语句中的*号是一个间址运算符
  B.定义语句中的*号是一个说明符
  C.定义语句中的P只能存放double类型变量的地址
  D.定义语句中,*P=&a把变量a的地址作为初值赋给指针变量P
  参考答案:A
  参考解析:在变量定义double a,* P=&a;中,*号是一个指针运算符,而非间址运算符,所以A错误。
  6[单选题] 若有定义语句:int x=10;,则表达式x-=x+x的值为(  )。
  A.0
  B.-20
  C.-10
  D.10
  参考答案:C
  参考解析:算术运算符+的优先级高于-=,且-=的结合方向为自右向左,所以表达式x-=x+x可以表示成x=x-(x+x)=10-(10+10)=-10,选择C。
  2[单选题] 若有定义语句:double x,y,*px,*py;执行了px=&x;py=&y;之后,正确的输入语句是(  )。
  A.scanf(”%If%le”,px,py);
  B.scanf(”%f%f”&x,&y);
  C.sceanf(”%f%f”,x.y);
  D.scanf(”%If%If'’,x,y);
  参考答案:A
  参考解析:因为x,y都是double型数据,所以输入时的格式字符应为%lf,所以B与C错误。D选项中scanf("%lf%If",x,y);应为scanf(“%If%If"”,&x,&y);。
  3[单选题] 下列数据结构中,属于非线性结构的是(  )。
  A.循环队列
  B.带链队列
  C.二叉树
  D.带链栈
  参考答案:C
  参考解析:树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结构。
  4[单选题] 对于循环队列,下列叙述中正确的是(  )。
  A.队头指针是固定不变的
  B.队头指针一定大于队尾指针
  C.队头指针一定小于队尾指针
  D.队头指针可以大于队尾指针,也可以小于队尾指针
  参考答案:D
  参考解析:循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构,所以队头指针有时可能大于队尾指针,有时也可能小于队尾指针。
  5[单选题] 若变量已正确定义,在if(W)printf(”%d\n”,k);中,以下不可替代w的是(  )。
  A.a<>b+c
  B.ch=getchar()
  C.a==b+c
  D.a++
  参考答案:A
  参考解析:选项A是非法的表达式,C语言中没有<>运算符。
  6[单选题] 下列排序方法中,最坏情况下比较次数最少的是(  )。
  A.冒泡排序
  B.简单选择排序
  C.直接插入排序
  D.堆排序
  参考答案:D
  参考解析:冒泡排序与筒单插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog2n。
  7[单选题] 数据库管理系统是(  )。
  A.操作系统的一部分
  B.在操作系统支持下的系统软件
  C.一种编译系统
  D.一种操作系统
  参考答案:B
  参考解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等。是一种在操作系统之上的系统软件。
  8[单选题] 以下选项中,能用作用户标识符的是(  )。
  A._0_
  B.8_8
  C.void
  D.unsigned
  参考答案:A
  参考解析:C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。B中以数字8开头,所以错误。C与D中用的是关键字void与unsigned,所以错误。
  9[单选题] 以下叙述中错误的是(  )。
  A.使用三种基本结构构成的程序只能解决简单问题
  B.结构化程序由顺序、分支、循环三种基本结构组成
  C.C语言是一种结构化程序设计语言
  D.结构化程序设计提倡模块化的设计方法
  参考答案:A
  参考解析:使用顺序,选择(分支),循环三种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,所以A错误。
  10[单选题] 下列叙述中正确的是(  )。
  A.栈是“先进先出”的线性表
  B.队列是“先进后出”的线性表
  C.循环队列是非线性结构
  D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
  参考答案:D
  参考解析:栈是先进后出的线性表,所以A错误;队列是先进先出的线性表,所以B错误;循环队列是线性结构的线性表,所以C错误。
  11[单选题] 以下不构成无限循环的语句或语句组是(  )。
  A.n=0:
  do{++n;}while(n<=0);
  B.n=0;
  while(1){n++;}
  C.n=10;
  while(n);{n--;}
  D.for(n=0,i=1;;i++)n+=i;
  参考答案:A
  参考解析:选项A中do后面的语句只执行了一次便结束了循环;B选项中条件while(1)永远成立,所以是死循环;C选项中n的值为10,而循环体为空语句,所以wilile(n)永远为真,进入死循环;D选项中for语句第二个表达式为空,所以没有判别条件,进入死循环。
  12[单选题] 若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是(  )。
  A.1
  B.0
  C.2
  D.不知道a的值,不能确定
  参考答案:A
  参考解析:逻辑或”||”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道a的值,但是若a为l,则左边运算对象为1;若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零,所以结果为真,即1。
  13[单选题] 下列选项中不属于结构化程序设计原则的是(  )。
  A.可封装
  B.自顶向下
  C.模块化
  D.逐步求精
  参考答案:A
  参考解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。
  14[单选题] 某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是(  )。
  A.10
  B.8
  C.6
  D.4
  参考答案:C
  参考解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个,所以本题中是5+1=6个。
  15[单选题] 支持子程序调用的数据结构是(  )。
  A.栈
  B.树
  C.队列
  D.二叉树
  参考答案:A
  参考解析:栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为A。

网站数据信息

"c语言题库及答案免费,急求C语言复习题库加答案"浏览人数已经达到17次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:c语言题库及答案免费,急求C语言复习题库加答案的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!