首页小程序c语言程序设计题库及答案?c语言代码简单代码大全

c语言程序设计题库及答案?c语言代码简单代码大全

编程之家2026-05-16961次浏览

大家好,感谢邀请,今天来为大家分享一下c语言程序设计题库及答案的问题,以及和c语言代码简单代码大全的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

c语言程序设计题库及答案?c语言代码简单代码大全

全国计算机等级考试二级C语言历年试题及答案

2010年9月全国计算机等级考试二级C语言笔试试题及答案

一、选择题((1)-(10)每题2分,(11)-(50)每题1分.共60分))

(1)下列选项中不属于软件生命周期开发阶段任务的是

A)详细设计 B)概要设计 C)软件维护 D)软件测试

(2)树是结点的集合,它的根结点数目是

A)有且只有1 B)1或多于1 C)0或1 D)至少2

c语言程序设计题库及答案?c语言代码简单代码大全

(3)在面向对象方法中,实现信息隐蔽是依靠

A)对象的继承 B)对象的多态 C)对象的封装 D)对象的分类

(4)程序设计语言的基本成分是数据成分、运算成分、控制成分和

A)语句成分 B)变量成分 C)对象成分 D)传输成分

(5)冒泡排序在最坏情况下的比较次数是

A)n/2 B)nlog2n C)n(n-1)/2 D)n(n+1)/2

(6)下列叙述中,不属于软件需求规格说明书的作用的是

A)作为确认测试和验收的依据

B)反映出用户问题的结构,可以作为软件开发工作的基础和依据

C)便于用户、开发人员进行理解和交流

D)便于开发人员进行需求分析

(7)下列叙述中错误的是

A)一个C语言程序只能实现一种算法 B)C程序可以由多个程序文件组成

C)C程序可以由一个或多个函数组成 D)一个函数可单独作为一个C程序文件存在

(8)下列不属于软件工程的3个要素的是

A)方法 B)过程 C)工具 D)环境

(9)下列叙述中正确的是

A)数据库系统是一个独立的系统,不需要操作系统的支持

B)数据库技术的根本目标是要解决数据的共享问题

C)数据库管理系统就是数据库系统

D)以上三种说法都不对

(10)下列叙述中正确的是

A)每个C程序文件中都必须有一个main()函数

B)在C程序的函数中不能定义另一个函数

C)C程序可以由一个或多个函数组成

D)在C程序中main()函数的位置是固定的

(11)将E-R图转换到关系模式时,实体与联系都可以表示成

A)属性 B)关系 C)键 D)域

(12)下列定义变量的语句中错误的是

A)double int_; B)int _int; C)char For D)float USS

(13)下列叙述中正确的是

A)C语言编译时不检查语法 B)C语言的子程序有过程和函数两种

C)C语言的函数可以嵌套定义 D)C语言的函数可以嵌套调用

(14)以下选项中,合法的一组C语言数值常量是

A) 0x8A B)12 C).177 D) 028

(15)以下叙述中正确的是

A)构成C程序的基本单位是函数

B)可以在一个函数中定义另一个函数

C)main()函数必须放在其他函数之前

D)所有被调用的函数一定要在调用之前进行定义

(16)若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是

A)scanf("%d",&p); B)scanf("%d%d%d",a,b,c);

C)scanf("%d",p); D) scanf("%d",a,b,c);

(17)有以下程序

main()

{int x,y,z;

x=y=1;

z=x++,y++,++y;

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

}

程序运行后的输出结果是

A)2,2,3 B)2,2,2 C)2,3,1 D)2,1,1

(18)若已定义:int a=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);程序输出的结果是

A)***a=25,b=13,c=19 B)***a=26,b=14,c=19

C)### a=25,b=13,c=19 D)### a=26,b=14,c=19

(19)下列程序段的输出结果是

int a=1234;

float b=123.456;

double c=12345.54321;

printf("-,%2.1f,%2.1f",a,b,c);

A)无输出 B)12,123.5,12345.5 C)1234,123.5,12345.5 D)1234,123.4,1234.5

(20)有以下程序

main()

{int a=0,b=0;

a=10;/*给a赋值

b=20;给b赋值*/

printf("a+b=%d\n",a+b);/*输出计算结果*/

}

程序运行后输出结果是

A)30 B)a+b=30 C)a+b=0 D)出错

(21)若运行以下程序时,从键盘输入 ADescriptor(表示回车),则下面程序的运行结果是

#include

main()

{ char c;

int v0=1,v1=0,v2=0;

do{ switch(c=getchar())

{ case′a′:case′A′:

case′e′:case′E′:

case′i′:case′I′:

case′o′:case′O′:

case′u′:case′U′:v1+=1;

default:v0+=1;v2+=1;

}

} while(c!=′\n′);

printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);

}

A)v0=11,v1=4,v2=11 B)v0=8,v1=4,v2=8

C)v0=7,v1=4,v2=7 D)v0=13,v1=4,v2=12

(22)有以下程序

#include

main()

{int y=9;

for( y>0;y--)

if(y%3==0) printf("%d",--y);

}

程序的运行结果是

A)732 B)433 C)852 D)874

(23)设有以下程序段

int x=0,s=0;

while(!x!=0)s+=++x;

printf("%d",s);

A)运行程序段后输出0 B)运行程序段后输出1

C)程序段中的控制表达式是非法的 D)程序段执行无限次

(24)有以下程序

fun(int x,int y){return(x+y);}

main()

{int a=1,b=2,c=3,sum;

sum=fun((a++,b++b,a+b),c++);

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

}

执行后的输出结果是

A)5 B)7 C)8 D)3

(25)执行下面的程序段后,变量k中的值为

int k=3, s[2];

s[0]=k; k=s[1]*10;

A)不定值 B)35 C)31 D)20

(26)以下叙述中错误的是

A)改变函数形参的值,不会改变对应实参的值

B)函数可以返回地址值

C)可以给指针变量赋一个整数作为地址值

D)当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL

(27)以下程序段的描述,正确的是

x=-1;

do

{x=x*x;} while(!x);

A)是死循环 B)循环执行两次 C)循环执行一次 D)有语法错误

(28)有以下程序

fun(int x,int y)

{static int m=0,i=2;

i+=m+1;m=i+x+y; return m;

}

main()

{int j=1,m=I,k;

k=fun(j,m); printf("%d",k);

k=fun(j,m); printf("%d\n",k)

}

执行后的输出结果是

A)5,5 B)5,11 C)11,11 D)11,5

(29)有以下程序

fun(int x)

{int p;

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

p=x-fun(x=2);

retum p;

}main()

{ prinf("%d\n",fun(7));}

执行后的输出结果是

A)7 B)3 C)3 D)0

(30)在16位编译系统上,右有定义int a[ ]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是

A)p向高地址移了一个字节 B)p抽高地址移了一个存储单元

C)p向高地址移了两个字节 D)p与a+1等价

(31)有以下程序

main()

{int a=1,b=3,c=5;

int*p1=&a,*p2=&b,*p=&c;

*p=*p1*(*p2);

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

}

执行后的输出结果是

A)1 B)2 C)3 D)4

(32)下列程序执行后的输出结果是

void func1(int i);

void func2(int i);

char st[]="hello,friend!";

void func1(int i)

{ printf("%c",st[i]);

if(i<3){i+=2;func2(i);}

}

void func2(int i)

{ printf("%c",st[i]);

if(i<3){i+=2;func1(i);}

}

main()

{ int i=0; func1(i); printf("\n");}

A)hello B)hel C)hlo D)hlm

(33)在下述程序中,判断i>j共执行的次数是

main()

{ int i=0, j=10, k=2, s=0;

for(;;)

{ i+=k;

if(i>j)

{ printf("%d",s);

break;

} s+=i;

}

}

A)4 B)7 C)5 D)6

(34)以下函数返回a所指数组中最大值所在的下标值

fun(int*a,int n)

{ int i,j=0,p;

p=j;

for(i=j;iif(a[i]>a[p]);

return(p);

}

在下划线处应填入的内容是

A)i=p B)a[p]=a[i] C)p=j D)p=i

(35)下列程序执行后的输出结果是

main()

{ int a[3][3],*p,i;

p=&a[0][0];

for(i=1; i<9; i++)p[i]=i+1;

printf("%d\n",a[1][2]);

}

A)3 B)6 C)9 D)随机数

(36)有以下程序

#include

void fun(int*a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/

{int t,i,j;

for(i=0;ifor(j=i+1;jif(a}

main()

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

fun(c+4,6);

for(i=0;i<10;i++) printf("%d,",c);

printf("\n");

}

程序运行的结果是

A)1,2,3,4,5,6,7,8,9,0, B)0,9,8,7,6,5,1,2,3,4,

C) 0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,5,0,

(37)以下程序的输出结果是#include

void prt(int*x, int*y, int*z)

{ printf("%d,%d,%d\n",++*x,++*y,*(z++));}

main()

{ int a=10,b=40,c=20;

prt(&a,&b,&c);

prt(&a,&b,&c);

}

A)11,42, 31

12,22,41

B)11,41,20

12,42,20

C)11,21,40

11,21,21

D)11,41,21

12,42,22

(38)有以下程序:

#include

void fun(char*t,char*s)

{

while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{

char ss[10]=”acc”,aa[10]=”bbxxyy”;

fun(ss,aa);

printf(“%s,%s\n”,ss,aa);

}

程序运行结果是

A) accxyy, bbxxyy B) acc, bbxxyy

C) accxxyy,bbxxyy D) accbbxxyy,bbxxyy

(39)有以下程序

#include

main()

{ FILE*fp; int i=20,j=30,k,n;

fp=fopen("d1.dat","w");

fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);

fclose(fp);

fp=fopen("d1.dat","r");

fscanf(fp,"%d%d",&k,&n); printf("%d%d\n",k,n);

fclose(fp);

}

程序运行后的输出结果是

A)20 30 B)20 50 C)30 50 D)30 20

(40)有以下程序

main()

{int x[3][2]={0},I;

for(I=0;I<3;I++) scanf("%d",x[i]);

printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);

}

若运行时输入:246,则输出结果为

A)2 0 0 B)2 0 4 C)2 4 0 D)2 4 6

(41)有以下程序

int add(int a,int b){return+b};}

main()

{int k,(*f)(),a=5,b=10;

f=add;

}

则以下函数调用语句错误的是

A)k=(*f)(a,b); B)k=add(a,b); C)k=*f(a,b); D)k=f(a,b);

(41)有以下程序

#include

main(int argc,char*argv[])

{int i=1,n=0;

while(i<arge){n=n+strlen(argv[i]);i++;}

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

}

该程序生成的可执行文件名为:proc.exe。若运行时输入命令行:

proc 123 45 67

则程序的输出结果是

A)3 B)5 C)7 D)11

(42)有以下程序

void fun2(char a, char b){printi(“%b%c”,a,b);}

char a=‘A’,b=‘B’;

void fun1(){ a=‘C’l b=‘D’;}

main()

{ fun1()

printf(“%c%c”,a,b);

fun2(‘E’,‘F’);

}

程序的运行结果是

A)CDEF B)ABEF C)ABCD D)CDAB

(43)有以下程序

#include

#define N 5

#define M N+1

#define f(x)(x*M)

main()

{int i1,i2;

i1=f(2);

i2=f(1+1);

printf(“%d%d\n”,i1,i2);

}

程序的运行结果是

A)12 12 B)11 7 C)11 11 D)12 7

(44)设有以下语句

typedef struct TT

{char c; int a[4];}CIN;

则下面叙述中正确的是

A)可以用TT定义结构体变量 B)TT是struct类型的变量

C)可以用CIN定义结构体变量 D)CIN是struct TT类型的变量

(45)有以下结构体说明、变量定义和赋值语句

struct STD

{char name[10];

int age;

char sex;

}s[5],*ps;

ps=&s[0];

则以下scanf函数调用语句中错误引用结构体变量成员的是

A)scanf(“%s”,s[0].name); B)scanf(“%d”,&s[0].age);

C)scanf(“%c”,&(ps>sex)); D)scanf(“%d”,ps>age);

(46)若有以下定义和语句

union data

{ int i; char c; float f;}x;

int y;

则以下语句正确的是

A)x=10.5; B)x.c=101; C)y=x; D)printf(“%d\n”,x);

(47)若变量已正确定义,则以下语句的输出结果是

s=32; s^=32;printf(“%d”,s);

A)-1 B)0 C)1 D)32

(48)若程序中有宏定义行:#define N 100则以下叙述中正确的是

A)宏定义行中定义了标识符N的值为整数100

B)在编译程序对C源程序进行预处理时用100替换标识符N

C)对C源程序进行编译时用100替换标识符N

D)在运行时用100替换标识符N

(49)以下叙述中正确的是

A)C语言中的文件是流式文件,因此只能顺序存取数据

B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

D)当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

(50)有以下程序

#include

main()

{FILE*fp; int i;

char ch[]=”abcd”,t;

fp=fopen(“abc.dat”,”wb+”);

for(i=0;i<4;i++)fwriter&ch[],1,1fp;

fseek(fp,-2L,SEEK_END);

fread(&t,1,1,fp);

fclose(fp);

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

}

程序执行后的输出结果是

A)d B)c C)b D)a

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

(1)在面向对象方法中,类之间共享属性和操作的机制称为【1】。

(2)一个关系表的行称为【2】。

(3)耦合和内聚是评价模块独立性的两个主要标准,其中【3】反映了模块内各成分之间的联系。

(4)线性表的存储结构主要分为顺序存储结构和链式存储结构.队列是一种特殊的线性表,循环队列是队列的【4】存储结构.

(5)【5】的任务是诊断和改正程序中的错误。

(6)以下程序的输出结果是【6】.

#include

main()

{ int n=12345,d;

while(n!=0){ d=n%10; printf("%d",d); n/=10;}

}

(7)以下程序运行后的输出结果是【7】。

main()

{

int m=011,n=11;

printf("%d%d\n",++m,n++);

}

(8)有以下程序,若运行时从键盘输入:18,11,则程序输出结果是【8】。

main()

{ int a,b;

printf("Enter a,b:");scanf("%d,%d",&a,&b);

while(a!=b)

{ while(a>b) a-=b;

while(b>a) b-=a;

}

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

}

(9)有以下程序段,且变量已正确定义和赋值

for(s=1.0,k=1;k<=n;k++) s=s+1.0/(k*(k+1));

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

请填空,使下面程序段的功能为完全相同

s=1.0;k=1;

while(_【9】_______){ s=s+1.0/(k*(k+1)); _【10】_______;}

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

(10)执行以下程序的输出结果是【11】______.

#include

main()

{ int i,n[4]={1};

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

{ n=n[i-1]*2+1; printf("%d",n);}

}

(11)以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.请填空.

#include

viod f(int x[],int n)

{ int p0,p1,i,j,t,m;

i=j=x[0]; p0=p1=0;

for(m=0;m{ if(x[m]>i){i=x[m]; p0=m;}

else if(x[m]}

t=x[p0]; x[p0]=x[n-1]; x[n-1]=t;

t=x[p1];x[p1]= _【12】_______;【13】______=t;

}

main()

{ int a[10],u;

for(u=0;u<10;u++) scanf("%d",&a);

f(a,10);

for(u=0;u<10;u++) printf("%d",a);

printf("\n");

}

(12)下列程序中的函数strcpy2()实现字符串两次复制,即将t所指字符串复制两次到s所指内存空间中,合并形成一个新的字符串。例如,若t所指字符串为efgh,调用strcpy2后,s所指字符串为efghefgh。请填空。

#include

#include

void strcpy2(char*s,char*t)

{ char*p=t;

while(*s++=*t++);

s=【14】;

while(【15】=*p++);

}

main()

{ char str1[100]="abcd",str2[]="efgh";

strcpy2(str1,str2); printf("%s\n",str1);

}

(13)以下程序统计从终端输入的字符中大写字母的个数,num[0]中统计字母A的个数,num[1]中统计字母B的个数,其它依次类推.用#号结束输入,请填空.

#include

#include

main()

{ int num[26]={0},i; char c;

while((_【16】_______)!='#')

if(isupper(c)) num[c-‘A’]+=【17】_______;

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

Printf("%c:%d\n",i+'A',num);

}

(14)以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

#include"math.h"

double fun(double x){ return(x*x-2*x+6);}

main()

{

double x,y1,y2;

printf("Enter x:"); scanf("%lf",&x);

y1=fun(【18】);

y2=fun(【19】);

printf("y1=%lf,y2=%lf\n",y1,y2);

}

(15)以下程序的输出结果是_【20】______.

#include

#define M 5

#define N M+M

main()

{ int k;

k=N*N*5; printf("%d\n",k);

}

一、选择题答案:

1-10:CACDC DADBA 11-20:BDDBA CCCCB 21-30:DCBCA CCBCA

31-40:CCDAB DCDAB 41-50:CABCD BBBDB

二、填空题答案:

1.继承 2.元组 3.内聚 4.顺序 5.程序调试

6. 54321 7.10 11 8. 1 9.k<=n k++

10. 3 7 5 11.x[0] x[0] 12.s--,*s++ 13.c=getchar() 14.(x+8),sin(x) 15.55

希望对你有所帮助

求: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]

2013计算机二级C语言完整预测试题及答案一

为大家收集整理了《2013计算机二级C语言完整预测试题及答案一》供大家参考,希望对大家有所帮助!!!

一、选择题(每题2分,共计70分)

1.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及

A)数据的存储结构

B)计算方法

C)数据映象

D)逻辑存储

2.串的长度是

A)串中不同字符的个数

B)串中不同字母的个数

C)串中所含字符的个数且字符个数大于零

D)串中所含字符的个数

3.在计算机中,算法是指

A)加工方法

B)解题方案的准确而完整的描述

C)排序方法

D)查询方法

4.以下不属于对象的基本特点的是

A)分类性

B)多态性

C)继承性

D)封装性

5.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作

A)软件投机

B)软件危机

C)软件工程

D)软件产生

6.下面不属于软件设计原则的是

A)抽象

B)模块化

C)自底向上

D)信息隐蔽

7.开发大型软件时,产生困难的根本原因是

A)大系统的复杂性

B)人员知识不足

C)客观世界千变万化

D)时间紧、任务重

8.下列SQL语句中,用于修改表结构的是

A)ALTER

B)CREATE

C)UPDATE

D)INSERT

9.数据库、数据库系统和数据库管理系统之间的关系是

A)数据库包括数据库系统和数据库管理系统

B)数据库系统包括数据库和数据库管理系统

C)数据库管理系统包括数据库和数据库系统

D)3者没有明显的包含关系

10.关系模型允许定义3类数据约束,下列不属于数据约束的是

A)实体完整性约束

B)参照完整性约束

C)域完整性约束

D)用户自定义的完整性约束

11.下列用于printf函数的控制字符常量中,代表"竖向跳格"的转义字符常量是

A)\b

B)\t

C)\v

D)\f

12.以下程序的输出结果是

main()

{ int a=21,b=11;

printf("%d\n",--a+b,--b+a);

}

A)30

B)31

C)32

D)33

13.设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是

A)n=(n*100+0.5)/100.0

B)m=n*100+0.5,n=m/100.0

C)n=n*100+0.5/100.0

D)n=(n/100+0.5)*100.0

14.设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是

A)x&&y

B)x<=y

C)x||++y&&y-z

D)!(x

15.若变量已正确说明为int类型,要通过语句scanf("%d%d%d",&a,&b,&c);给a赋值3,b赋值5,c赋值8,不正确的输入形式是

A)3回车>

5回车>

8回车>

B)3,5,8回车>

C)3回车>

58回车>

D)35回车>

8回车>

49!= return j

16.设有程序段

int k=10;

while(k=0)k=k-1;

则下面描述中正确的是

A)while循环执行10次

B)循环是无限循环

C)循环体语句一次也不执行

D)循环体语句执行一次

17.对表达式for(表达式1;;表达式3)可理解为

A)for(表达式1;0;表达式3)

B)for(表达式1;1;表达式3)

C)for(表达式1;表达式1;表达式3)

D)for(表达式1;表达式3;表达式3)

18.以下程序的输出结果是

main()

{ int a,i;a=0;

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

{ switch(i)

{ case 0:

case 3:a+=2;

case 1:

case 2:a+=3;

default:a+=5;

}

} printf("%d\n",a);

}

A)31

B)13

C)10

D)20

19.若有如下语句

int x=3;

do{ printf("%d\n",x-=2);}

while(!(--x));

则上面程序段

A)输出的是1

B)输出的是1和-2

C)输出的是3和0

D)是死循环

20.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,在划线处应填入的语句是

#include

main()

{ int a,b,t;

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

while()

{ f(a>b)

{=a;a=b;b=t;}

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

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

}

}

A)!a=b

B)a!=b

C)a==b

D)a=b

21.有以下程序

void fun(int a,int b,int c)

{a=456,b=567,c=678;}

main()

{ int x=10,y=20,z=30;

fun(x,y,z);

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

}

输出结果是

A)30,20,10

B)10,20,30

C)456,567,678

D)678,567,456

22.若有说明:int a[][4]={0,0};则下面不正确的叙述是

A)数组a的每个元素都可得到初值0

B)二维数组a的第一维大小为1

C)当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小

D)只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值

23.有以下程序

main()

{ char a[]={′a′,′b′,′c′,′d′,′e′,′f′,′g′,′h′,′\0′}; int i,j;

i=sizeof(a); j=strlen(a);

printf("%d,%d\b",i,j);

}

程序运行后的输出结果是

A)9,9

B)8,9

C)1,8

D)9,8

24.已知学生记录描述为

struct student

{ int no;

char name[20],sex;

struct

{ int year,month,day;

} birth;

};

struct student s;

设变量s中的“生日”是“1984年11月12日”,对“birth”正确赋值的程序段是

A)year=1984;month=11;day=12;

B)s.year=1984;s.month=11;s.day=12;

C)birth.year=1984;birth.month=11;birth.day=12;

D)s.birth.year=1984;s.birth.month=11;s.birth.day=12;

25.以下程序的运行结果是

#define MIN(x,y)(x)<(y)?(x):(y)

main()

{ int i=10,j=15,k;

k=10*MIN(i,j);

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

}

A)10

B)15

C)100

D)150

49!= return j

26.有如下程序

int func(int a,int b)

{ return(a+b);}

main()

{ int x=2,y=5,z=8,r;

r=func(func(x,y),z);

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

}

该程序的输出的结果是

A)12

B)13

C)14

D)15

27.设有以下说明语句

typedef struct

{ int n;

char ch[8];

} PER;

则下面叙述中正确的是

A)PER是结构体变量名

B)PER是结构体类型名

C)typedef struct是结构体类型

D)struct是结构体类型名

28.有如下定义

struct person{char name[9];int age;};

struct person class[10]={"John",17,"paul",19,"Mary",18,"Adam",16,};

根据上述定义,能输出字母M的语句是

A)printf("%c\n",class[3].name);

B)printf("%c\n",class[3].name[1]);

C)printf("%c\n",class[2].name[1]);

D)printf("%c\n",class[2].name[0]);

29.以下程序执行后a的值是

main()

{ int x,y=252,i=386,*m=&y,*z=&i;

x=(z==y);

printf("%d",x);

}

A)252

B)1

C)0

D)运行时出错,x无定值

30.阅读下列程序,当运行函数时,输入asd af aa z67,则输出为

#include

#include

#include

int fun(char*str)

{ int i,j=0;

for(i=0;str[i]!=′\0′;i++)

if(str[i]!=′′)str[j++]=str[i];

str[j]=′\0′;

}

main()

{

char str[81];

int n;

clrscr();

printf("Input a string:");

gets(str);

puts(str);

fun(str);

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

}

A)asdafaaz67

B)asd af aa z67

C)asd

D)z67

31.下列程序的输出结果是

struct abc

{ int a, b, c, s;};

main()

{ struct abc s[2]={{1,2,3},{4,5,6}}; int t;

t=s[0].a+s[1].b;

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

}

A)5

B)6

C)7

D)8

32.若有定义: char*st="how are you";下列程序段中正确的是

A)char a[11],*p; strcpy(p=a+1,&st[4]);

B)char a[11]; strcpy(++a, st);

C)char a[11]; strcpy(a, st);

D)char a[],*p; strcpy(p=&a[1],st+2);

33.下列程序的运行结果是

void fun(int*a, int*b)

{ int*k;

k=a; a=b; b=k;

}

A)6 3

B)3 6

C)编译出错

D)0 0

34.请选出正确的程序段

A)int*p;

scanf("%d",p);

B)int*s, k;

*s=100;

C)int*s, k;

char*p, c;

s=&k;

p=&c;

*p=′a′;

D)int*s, k;

char*p, e;

s=&k;

p=&c;

s=p;

*s=1;

35.若有下面的说明和定义,则sizeof(struct aa)的值是

struct aa

{ int r1; double r2; float r3;

union uu{char u1[5];long u2[2];}ua;

} mya;

A)30

B)29

C)24

D)22

49!= return j

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

1.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【1】。

2.用树型结构表示实体类型及实体间联系的数据模型称为【2】。

3.类是一个支持集成的抽象数据类型,而对象是类的【3】。

4.数据流图的类型有【4】和事务型。

5.当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【5】。

6.以下程序运行结果是【6】。

long fib(int g)

{ switch(g)

{ case 0∶return 0;

case 1∶case2∶return 1;

}

return(fib(g-1)+fib(g-2));

}

main()

{ long k;

k=fib(5);

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

}

7.以下程序段中,错误的行号是【7】。

①#include

② main()

③{ char str [14];str []={" I love China"};

④ printf("%s",str);

⑤}

8.将以下程序写成三目运算表达式是【8】。

if(a>b)max=a;

else max=b;

9.设x和y均为int型变量,且x=1,y=2,则表达式double(1+x/y)的值为【9】。

10.下面程序的功能是输出数组s中元素的下标,请填空。

main()

{ int k, p,s[]={1,-9, 7, 2,-10, 3};

for(p=0, k=p; p< 6; p++)

if(s[p]>s[k])【10】

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

}

11.设有以下定义和语句,则*(*(p+2)+1)的值为【11】。

int a[3][2]={10, 20, 30, 40, 50, 60},(*p)[2];

p=a;

12.下面程序的运行结果是【12】。

#define N 10

#define s(x) x*x

#define f(x)(x*x)

main()

{ int i1,i2;

i1=1000/s(N); i2=1000/f(N);

printf("%d%d\n",i1,i2);

}

13.以下程序的输出结果是【13】。

unsigned fun6(unsigned num)

{ unsigned k=1;

do{k*=num;num/=10;} while(num);

return k;

}

main()

{ unsigned n=26;

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

}

14.以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。删除后,数组中的内容应该是2 3 4 5 6 7 8 9 10。请填空。

#include

#define N 80

int fun(int a[], int n)

{ int i,j=1;

for(i=1;i

if(a[j-1]【14】 a[i])

a[j++]=a[i];

【15】;

}

main()

{ int a[N]={ 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10}, i, n=19;

printf("The original data:\n");

for(i=0; i

for(i=0; i

}

49!= return j

1 A2 D3 B4 C5 B6 C7 A8 A9 B10 C

11 C12 A13 B 14 D15 B16 C17 B18 A19 B20 B

21 B22 D 23 D24 D25 B26 D27 B28 D29 C30 A

31 B 32 A33 B34 C35 D

36 n/2

37层次模型

38实例

39变换型

40物理独立性

41 k=5

42 3行

43 max=(a>b)?a:b;

44 1.000000

45 k=p

46 60

47 1000 10

48 12

49!= return j

关于本次c语言程序设计题库及答案和c语言代码简单代码大全的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

互联网php是什么意思?PHP工程师是什么意思编程语言先学什么好?最好自学的编程语言