- 相关推荐
计算机等级考试二级C语言考试试题带答案(精选10份)
无论是在学习还是在工作中,我们会经常接触并使用考试题,考试题可以帮助学校或各主办方考察参试者某一方面的知识才能。大家知道什么样的考试题才是好考试题吗?下面是小编为大家收集的计算机等级考试二级C语言考试试题带答案,希望对大家有所帮助。

计算机等级考试二级C语言考试试题带答案 1
一、填空题(每空2分,共40分)
请将每一个空的正确答案写在答案卡上,答在试卷上不得分。
(1) 为了要将当前盘目录中的可执行程序ABC.EXE的输出结果存放到当前盘当前目录中的文件OUT.TXT中,则应使用的DOS命令为【1】 。
(2) 计算机网络分为广域网和局域网,因特网属于【2】 。
(3) 要想在当前目录下方便地执行C盘\UCDOS目录中的程序,就应该先执行预设搜索路径的命令,该DOS命令为【3】 。
(4) 要查看当前目录中扩展名为.DAT的所有文件目录,应该使用的DOS 命令为【4】 。
(5) 在Windows环境下,当进行复制操作时,其复制的内容将存放在【5】中
(6) 若从键盘输入58,则以下程序输出的结果是 【6】 。
main()
{ int a;
scanf("%d",&a);
if(a>50) printf("%d",a);
if(a>40) printf("%d",a);
if(a>30) printf("%d",a);
}
(7) 以下程序的输出结果是【7】 。
main()
{ int a=177;
printf("%o\n",a);
}
(8) 以下程序的输出结果是【8】 。
main()
{ int a=0
a+=(a=8);
printf("%d\n",a);
}
(9) 以下程序输出的结果是【9】 。
main()
{ int a=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
(10) 以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针.请将定义补充完整。
struct node
{int info;
【10】 link;
}
(11) 以下程序的输出结果是【11】 。
main()
{int s,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n",s);
}
(12) 以下程序的输出结果是【12】 。
main()
{ char *p="abcdefgh",*r;
long *q;
q=(long*)p;
q++;
r=(char*)q;
printf("%s\n",r);
}
(13) 以下程序的输出结果是【13】 。
main()
{ char s[]="abcdef";
s[3]=‘\0;
printf("%s\n",s);
}
(14) 以下程序的输出结果是【14】 。
main()
{ int x=0;
sub(&x,8,1);
printf("%d\n",x);
}
sub(int *a,int n,int k)
{ if(k<=n) sub(a,n/2,2*k);
*a+=k;
}
(15) 设有如下宏定义
#define MYSWAP(z,x,y) {z=x; x=y; y=z;}
以下程序段通过宏调用实现变量a、b内容交换,请填空。
float a=5,b=16,c;
MYSWAP( 【15】 ,a,b);
(16) 以下程序用来统计文件中字符个数。请填空。
#include "stdio.h"
main()
{ FILE *fp; long num=0L;
if((fp=fopen("fname.dat","r"))==NULL)
{ pirntf("Open error\n"); exit(0);}
while( 【16】 )
{ fgetc(fp); num++;}
printf("num=%1d\n",num-1);
fclose(fp);
}
(17) 以下程序中,select 函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。
#define N 3
#define M 3
select(int a[N][M],int *n)
{ int i,j,row=1,colum=1;
for(i=0;i
for(j=0;j
if(a[i][j]>a[row][colum]){row=i;colum=j;}
*n= 【17】;
return 【18】;
}
main()
{int a[N][M]={9,11,23,6,1,15,9,17,20},max,n;
max=select(a,&n);
printf("max=%d,line=%d\n",max,n);
}
(18) mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。
int mystrlen(char *str)
{ int i;
for(i=0; 【19】!=‘\0;i++);
return(【20】);
}
二、选择题((1)—(40)题每小题1分,(41)—(50)题每小题2分,共和60分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) 在计算机中,一个字长的二进制位数是
A) 8 B) 16 C) 32 D) 随CPU的型号而定
(2) 计算机网络的突出优点是
A) 速度快 B) 资源共享 C) 精度高 D) 容量大
(3) 计算机网络能传送的信息是:
A) 所有的多媒体信息 B) 只有文本信息
C) 除声音外的所有信息 D) 文本和图像信息
(4) 切断计算机电源后,下列存储器中的信息会丢失的是:
A) RAM B) ROM C) 软盘 D) 硬盘
(5) 十进制数127转换成二进制数是
A) 11111111 B) 01111111 C) 10000000 D) 11111110
(6) 要想打印存放在当前盘当前目录上所有扩展名为.TXT 的文件内容, 应该使用的DOS命令为
A) DIR *.TXT>PRN B) TYPE *.TXT>PRN
C) COPY *.TXT PRN D) COPY *.TXT>PRN
(7) 将当前盘当前目录及其子目录中的全部文件 (总量不足1.2MB) 复制到一张空的A盘的根目录下,应该使用的DOS命令为
A) XCOPY *.*A:\ /M B) XCOPY *.*A:\ /S
C) XCOPY *.*A:\ /P D) XCOPY *.*A:\ /A
(8) 在C盘根目录下执行PROMPT $p$g命令之后,DOS的提示符变为
A) C:> B) C:\> C) C> D) C:\
(9) DOS命令 "COPY CON DISP"中的CON代表
A) 子目录 B) 磁盘文件 C) 键盘 D) 显示器
(10) 结构化程序设计所规定的三种基本控制结构是
A) 输入、处理、输出 B) 树形、网形、环形
C) 顺序、选择、循环 D) 主程序、子程序、函数
(11) 要把高级语言编写的源程序转换为目标程序,需要使用
A) 编辑程序 B) 驱动程序 C) 诊断程序 D) 编译程序
(12) 英文小写字母d的ASCII码为100,英文大写字母D的ASCII码为
A) 50 B) 66 C) 52 D) 68
(13) Windows环境下,PrintScreen键的作用是
A) 复制当前窗口到剪贴板 B) 打印当前窗口的内容
C) 复制屏幕到剪贴板 D) 打印屏幕内容
(14) 在Windows环境下,为了终止应用程序的运行,应
A) 关闭该应用程序窗口 B) 最小化该应用程序窗口
C) 双击该应用程序窗口的标题栏 D) 将该应用程序窗口移出屏幕
(15) 下列各带有通配符的文件名中,能代表文件XYZ.TXT的是
A) *Z.? B) X*.* C) ?Z,TXT D) ?.?
(16) 若有定义:int a=8,b=5,C;,执行语句C=a/b+0.4;后,c的值为
A) 1.4 B) 1 C) 2.0 D) 2
(17) 若变量a是int类型,并执行了语句:a=‘A+1.6;,则正确的叙述是
A) a的值是字符C B) a的值是浮点型
C) 不允许字符型和浮点型相加 D) a的值是字符‘A’的ASCII值加上1。
(18) 以下程序段的输出结果是
int a=1234;
printf("%2d\n",a);
A) 12 B) 34 C) 1234 D) 提示出错、无结果
(19) 以下选项中不属于C语言的类型的是
A) signed short imt B) unsigned long int
C) unsigned int D) long short
(20) 若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是
A) scanf("%d%d%d",&a,&b,d); B) scanf("%d%d%d",&a,&b,&d);
C) scanf("%d%d%d",a,b,d); D) scanf("%d%d%d",a,b,*d);
(21) 在16位C编译系统上,若定义long a; ,则能给a赋40000的正确语句是
A) a=20000+20000; B) a=4000*10;
C) a=30000+10000; D) a=4000L*10L;
(22) 以下叙述正确的是
A) 可以把define和if定义为用户标识符
B) 可以把define定义为用户标识符,但不能把if定义为用户标识符
C) 可以把if定义为用户标识符,但不能把define定义为用户标识符
D) define和if都不能定义为用户标识符
(23) 若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为
A) 无确定值 B) a的地址 C) 512 D) 511
(24) 以下程序的输出结果是
main()
{ int a=5,b=4,c=6,d;
printf("%d\n",d=a>b?(a>c?a:c):(b));
}
A) 5 B) 4 C) 6 D) 不确定
(25) 以下程序中,while循环的循环次数是
main()
{ int i=0;
while(i<10)
{ if(i<1) continue;
if(I==5) break;
i++;
}
......
}
A) 1 B) 10
C) 6 D) 死循环,不能确定次数
(26) 以下程序的输出结果是
main()
{ int a=0,i;
for(i=;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
(27) 以下程序的输出结果是
main()
{ int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);
}
A) 1 B) 0 C) 非0的数 D) -1
(28) 以下程序的输出结果是
#include
main()
{ int i=0,a=0;
while(i<20)
{ for(;;)
{ if((i%10)==0) break;
else i--;
}
i+=11; a+=i;
}
printh("%d\n",a);
}
A) 21 B) 32 C) 33 D) 11
(29) 以下程序的输出结果是
char cchar ch)
{
if(ch>=‘A’&&ch<=‘Z) ch=ch-‘A+‘a;
return ch;
}
main()
{ char s[]="ABC+abc=defDEF",*p=s;
while(*p)
{ *p=c*p);
p++;
}
printf("%s\n",s);
}
A) abc+ABC=DEFdef B) abc+abc=defdef
C) abcaABCDEFdef D) abcabcdefdef
(30) 以下程序的输出结果是
int f()
{ static int i=0;
int s=1;
s+=i; i++;
return s;
}
main()
{ int i,a=0;
for(i=0;i<5;i++) a+=f();
printf("%d\n",a);
}
A) 20 B) 24 C) 25 D) 15
(31) 以下程序段的输出结果是
char s[]="\\141\141abc\t";
printf ("%d\n",strlen(s));
A) 9 B) 12 C) 13 D) 14
(32) 若有以下程序
#include
void f(int n);
main()
{ void f(int n);
f(5);
}
void f(int n)
{ printf("%d\n",n); }
则以下叙述中不正确的是
A) 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B) 若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
C) 对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明
D) 函数f无返回值,所以可用void将其类型定义为无值型
(33) 以下程序调用findmax函数返回数组中的最大值
findmax(int *a,int n)
{ int *p,*s;
for(p=a,s=a; p-a
if ( ) s=p;
return(*s);
}
main()
{ int x[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}
在下划线处应填入的是
A) p>s B) *p>*s C) a[p]>a[s] D) p-a>p-s
(34) 以下程序的输出结果是
main()
{ char cf[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
}
A) "AAAA" B) "BBB" C) "BBBCC" D) "CC"
(35) 在C语言中,形参的缺省存储类是
A) auto B) register C) static D) extern
(36) 若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的.语句是
A) p=2*(int*)malloc(sizeof(int));
B) p=(int*)malloc(2*sizeof(int));
C) p=(int*)malloc(2*2);
D) p=(int*)calloc(2,sizeof(int));
(37) 以下程序的输出结果是
main()
{ char x=040;
printf("%0\n",x<<1);
}
A) 100 B) 80 C) 64 D) 32
(38) 若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是
A) fopen("A:\user\abc.txt","r") B) fopen("A:\\user\\abc.txt","r+")
C) fopen("A:\user\abc.txt","rb") C) fopen("A:\\user\\abc.txt","w")
(39) 以下不能正确进行字符串赋初值的语句是
A) char str[5]="good!"; B) char str[]="good!";
C) char *str="good!"; D) char str[5]={‘g,‘o,‘o,‘d};
(40) 若有下面的说明和定义:
struct test
{ int ml; char m2; float m3;
union uu {char ul[5]; int u2[2];} ua;
} myaa;
则sizeof(struct test )的值是
A) 12 B) 16 C) 14 D) 9
(41) 若有定义:int aa[ 8];。则以下表达式中不能代表数组元aa[1]的地址的是
A) &aa[0]+1 B) &aa[1] C) &aa[0]++ D) aa+1
(42) 以下程序的输出结果是
f(int b[],int m,int n)
{ int i,s=0;
for(i=m;i
return s;
}
main()
{int x,a[]={1,2,3,4,5,6,7,8,9};
x=f(a,3,7);
printf("%d\n",x);
}
A) 10 B) 18 C) 8 D) 15
(43) 若有以下定义和语句:
int s[4][5],(*ps)[5];
ps=s;
则对s数组元素的正确引用形式是
A) ps+1 B) *(ps+3) C) ps[0][2] D) *(ps+1)+3
(44) 以下程序的输出结果是
main()
{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++) t=t+b[i][b[j][j]];
printf("%d\n",t);
}
A) 3 B) 4 C) 1 D) 9
(45) 以下程序的输出结果是
#include
#include
main()
{ char b1[8]="abcdefg",b2[8],*pb=b1+3;
while (--pb>=b1) strcpy(b2,pb);
printf("%d\n",strlen(b2));
}
A) 8 B) 3 C) 1 D) 7
(46) 在说明语句:int *f();中,标识符f代表的是
A) 一个用于指向整型数据的指针变量
B) 一个用于指向一维数组的行指针
C) 一个用于指向函数的指针变量
D) 一个返回值为指针型的函数名
(47) 不合法的main函数命令行参数表示形式是
A) main(int a,char *c[]) B) main(int arc,char **arv)
C) main(int argc,char *argv) D) main(int argv,char *argc[])
(48) 以下程序的输出的结果是
int x=3;
main()
{ int i;
for (i=1;i
}
ncre()
{ staic int x=1;
x*=x+1;
printf(" %d",x);
}
A) 3 3 B) 2 2 C) 2 6 D) 2 5
(49) 若以下定义:
struct link
{ int data;
struck link *next;
}a,b,c,*p,*q;
且变量a和b之间已有如下图所示的链表结构:
a b
data next data next
┌──┬──┐ ┌──┬──┐
│ 5 │ ┼──→ │ 9 │ \0 │
└──┴──┘ └──┴──┘
↑p
c
data next
┌──┬──┐
│ 7 │ │
└──┴──┘
↑q
指针p指向变量a,q指向变量c。则能够把c插入到a和b 之间并形成新的链表的语句组是:
A) a.next=c; c.next=b; B) p.next=q; q.next=p.next;
C) p->next=&c; q->next=p->next; D) (*p).next=q; (*q).next=&b;
(50) 设有以下说明语句
typedef struct
{ int n;
char ch[8];
}PER;
则下面叙述中正确的是
A) PER 是结构体变量名 B) PER是结构体类型名
C) typedef struct 是结构体类型 D) struct 是结构体类型名
计算机等级考试二级C语言考试试题带答案 2
1. 以下程序执行后sum 的值是
main()
{ int i , sum;
for(i=1;i<6;i++) sum+=i;
printf("%d ",sum);
}
A)15
B)14
C) 不确定
D)0
你所选择的答案是:C,正确答案是:C √
2. 当调用函数时,实参是一个数组名,则向函数传送的是
A) 数组的长度
B) 数组的'首地址
C) 数组每一个元素的地址
D) 数组每个元素中的值
你所选择的答案是:B,正确答案是:B √
3. 以下只有在使用时才为该类型变量分配√
4. 以下程序的输出结果是
main()
{ int i, x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++) printf("%d,",x[i][2-i]);
}
A) 1,5,9
B) 1,4,7
C) 3,5,7
D)3,6,9
你所选择的答 案是:C,正确答案是:C √
5. 以下程序的输出结果是
#define SQR(X) X*X
main()
{ int a=16, k=2, m=1;
a/=SQR(k+m)/SQR(k+m);
printf("d ",a);
}
A) 16
B) 2
C) 9
计算机等级考试二级C语言考试试题带答案 3
1.C语言编译程序的功能是()。
A.执行一个C语言编写的源程序
B.把C源程序翻译成ASCII码
C.把C源程序翻译成机器代码
D.把C源程序与系统提供的库函数组合成一个二进制执行文件
【答案】C
【解析】编译程序的功能是将“高级语言”翻译为“机器语言”。每条C语言语句,经过编译最终都将转换成二进制的机器指令。答案选择C选项。
2.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是()。
A. C语言程序仅可以编译执行
B. C语言程序仅可以解释执行
C. C语言程序既可以编译执行,又可以解释执行;
D.以上说法都不对
【答案】A
【解析】编译执行是指程序执行前需要一个专门的编译过程把程序编译成机器语言的文件,再次运行时不需要重新翻译,执行效率高;解释执行是指每个语句都是执行的时候才翻译,执行效率低。用C语言编写的程序必须经过编译器编译后,转换为二进制的机器指令来运行。答案选择A选项。
3.以下叙述中错误的是()。
A. C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
B. C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件
C.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D. C语言源程序经编译后生成后缀为的目标程序
【答案】A
【解析】A项错误,注释语句不会被翻译成二进制的机器指令。C源程序经过C编译程序编译之后生成后缀为的二进制文件(称为目标文件),然后由“链接程序”(Link)的软件把文件与各种库函数连接起来生成一个后缀为的可执行文件。答案选择A选项。
4.以下叙述中错误的是()
A.C语言的可执行程序是由一系列机器指令构成的
B.用C语言编写的源程序不能直接在计算机上运行
C.通过编译得到的二进制目标程序需要连接才可以运行
D.在没有安装C语言集成开发环境的机器上不能运行C源程序生成的exe文件
【答案】D
【解析】A项正确,C语言的可执行程序是由一系列机器指令组成的;BC项正确,用C语言编写的源程序必须经过编译,生成二进制目标代码,再经过连接才能运行;D项错误,C语言经过编译链接后的二进制目标代码可以脱离C语言集成开发环境独立运行。答案选择D选项。
5.以下叙述正确的是()。
A. C编译程序把文件后缀为.c的源程序文件编译成文件后缀为的二进制文件
B. C编译程序把文件后缀为.c的源程序文件编译成文件后缀为的可执行文件
C. C编译程序把文件后缀为的二进制文件编译成文件后缀为的可执行文件
D.链接程序把文件后缀为.c的源程序文件链接成文件后缀为的可执行文件
【答案】A
【解析】C编译程序把文件后缀为C的源程序文件编译成文件后缀为的二进制文件,链接将一个或多个目标文件与程序用到的库文件连接起来,形成一个可以在操作系统直接运行的.执行程序,故排除B、C、D项,答案选择A选项。
6.以下叙述中正确的是(A.在C语言程序中,main函数必须放在其他函数的最前面
B.每个后缀为.c的C语言源程序都可以单独进行编译
C.在C语言程序中,只有main函数才可以单独进行编译
D.每个后缀为.c的C语言源程序都应该包含一个main函数
【答案】B
【解析】main函数可以在程序的任何位置。每一个可执行的C程序都必须有一个且只能有一个主函数。后缀名为.c的C语言源程序都可以单独进行编译。main函数只是让执行程序的系统知道该从哪里开始执行程序(从主函数处执行),其他有关这个程序的子函数是通过函数调用来实现其功能(不需main函数)。答案选择B选项。
7.以下叙述中错误的是()。
A. C语言编写的函数源程序,其文件名后缀可以是.c
B. C语言编写的函数都可以作为一个独立的源程序文件
C. C语言编写的每个函数都可以进行独立的编译并执行;
D.一个C语言程序只能有一个主函数
【答案】C
【解析】C源程序经过C编译程序编译之后生成一个后缀为的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件,把此文件与C语言提供的各种库函数连接起来生成一个后缀为的可执行文件。只有含有main函数的经过编译链接才能执行。答案选择C选项。
8.以下叙述中错误的是(A.一个C程序可以包含多个不同名的函数
B.一个C程序只能有一个主函数
C. C程序在书写时,有严格的缩进要求,否则不能编译通过
D. C程序的主函数必须用main作为函数名
【答案】C
【解析】一个C程序有且只有一个主函数main。一个C程序可以包含多个不同名字的子函数。C程序在书写时没有严格的缩进要求。答案选择C选项。
9.以下叙述中正确的是()。
A. C语言规定必须用main作为主函数名,程序将从此开始执行
B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C. C语言程序将从源程序中第一个函数开始执行;
D. main的各种大小写拼写形式都可以作为主函数名,如:MAIN,Main等
【答案】A
【解析】用户不能指定某函数为主函数,C语言规定,程序从main函数开始执行,从main函数退出,C语言函数名区别大小写。答案选择A选项。
10.下列叙述中错误的是()。
A. C程序可以由一个或多个函数组成
B. C程序可以由多个程序文件组成
C.一个C语言程序只能实现一种算法
D.一个C函数可以单独作为一个C程序文件存在
【答案】C
【解析】一个C程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个C语言程序可以实现多种算法,答案选择C选项。
计算机等级考试二级C语言考试试题带答案 4
1: 第1题请编写函数fun,其功能使:将两个两位正整数a b合并形成一个整数放在c中。合并的方式使:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的千位和十位上。
答案:
void fun(int a,int b,long *c)
{*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;}
2: 第2题请编写一个函数fun,它的功能使:计算n门课程的平均分,计算结果作为函数值返回。
答案:
float fun(float *a,int n)
{float ave=0.0;
int i;
for(i=0;i
ave+=a;
ave/=n;
return ave;}
3: 第3题假定输入的'字符串中只包含字母和*号。请编写函数fun,它的功能使:将字符串尾部的*号全部删除,前面和中间的*号不删除。
答案:
void fun(char *a)
{int i=0;
char *p,*q;
p=q=a;
while(*p)
p++;
p--;
while(*p==‘*’)
p--;
while(q<=p)
{a=*q;
i++;
q++;}
a=‘’;}
4: 第4题请编写函数fun,其功能是:将两个两位数的正整数a b合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
答案:
void fun(int a,int b,long *c)
{c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10;}
5: 第5题 n名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。
答案:
double fun(strec *h)
{double aver=0.0;
while(h!=null)
{aver+=h->s;
hy=h->next;}
aver/=n;
return aver;}
6: 第6题请编写函数fun,计算并输出给定10个数的方差。
答案:
double fun(double x[10])
{int i,j;
double s=0.0,s1=0.0;
for(i=0;i<10;i++)
s1+=x;
s1/=10;
for(j=0;j<10;j++)
s+=(x[j]-s1)*(x[j]-s1);
s/=10;
s=pow(s,0.5);
return s;}
7: 第7题请编写函数fun,其功能是:将两个两位数的正整数a b合并形成一个整数放在c 中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。
答案:
void fun(int a,int b,long *c)
{*c=(a/10)*1000+(a%10)*10+(b%10)*100+b/10;}
计算机等级考试二级C语言考试试题带答案 5
1.若有以下数组说明,则i=10;a[a[i]]元素数值是(C )。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};
A、10
B、9
C、6
D、5
先算a[a[i]]内层的a[i],由于i=10,因此a[i]即a[10].
a[10]对应下面数组中的元素为9.因此a[a[i]]即为a[9]
a[9]对应下面数组中的元素为6.因此a[9]即为6
2.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}};则数组a的第一维的大小为: ( B )
A、2
B、3
C、4
D、无确定值
5 7
D、3 6 9
二维数组的一维大小,即指二维数组的行数,在本题中,按行对二维数组赋值,因此内层有几个大括号,数组就有几行
3.对二维数组的正确定义是(C )
详见教材P149~152,二维数组的定义、初始化
类型符数组名[常量表达式][常量表达式]
二维数组可以看做是矩阵
类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;第一个常量表达式是指数组的`行数;第二个常量表达式是指数组的列数;常量表达式的值只能是整数,不可以是变量,而且从1开始计数。
一维数组初始化时可以省略数组长度
二维数组初始化时可以省略行数,但不能省略列数
选项A,B,都省略了列数
选项D,不符合二维数组定义的一般形式,行、列常量表达式应该放在不同的[]中
A、int a[ ][ ]={1,2,3,4,5,6};
B、int a[2] []={1,2,3,4,5,6};
C、int a[ ] [3]={1,2,3,4,5,6};
D、int a[2,3]={1,2,3,4,5,6};
4.已知int a[3][4];则对数组元素引用正确的是__C___
A、a[2][4]
B、a[1,3]
C、a[2][0]
计算机等级考试二级C语言考试试题带答案 6
一 选择题(7分,每小题0.5分)
1.C语言源程序的基本单位是( )。
A 过程 B 函数 C 子程序 D 标识符
2.下列程序的输出结果是( )。
main( )
{ int a=7,b=5;
printf("%d ",b=b/a);
}
A 5 B 1 C 0 D不确定值
3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。
A 7 B 8 C 9 D 2
4.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。
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.设有如下程序段,下面描述中正确的是 ( )。
int k=10; while(k=0) k=k-1;
A 循环执行一次 B循环是无限循环 C循环体语句一次也不执行 D循环体语句执行一次
6.以下程序的输出结果为( )。
int i;
void prt( )
{ for(i=5;i<8;i++) printf("%c",*);
printf(" ");
}
main( )
{ for(i=5;i<=8;i++) prt( );
}
A *** B *** *** *** *** C *** *** D * * *
7.在C语言程序中,以下说法正确的是( )。
A函数的定义可以嵌套,但函数的调用不可以嵌套
B函数的定义不可以嵌套,但函数的调用可以嵌套
C函数的定义和函数的调用都不可以嵌套
D函数的定义和函数的调用都可以嵌套
8.以下函数调用语句中含有( )个实参。
func((e1,e2),(e3,e4,e5));
A 2 B 3 C 5 D 语法错误
9.以下程序的输出结果为( )。
#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分配( )字节的空间。
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的枚举常量是( )。
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 p="abcd"; B a="abcd"; C *p="abcd"; D *a="abcd";
13.设有以下程序段,则值为6的表达式是( )。
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语言中的文件类型只有( )。
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 ")的值是7。( )
6.通过return语句,函数可以带回一个或一个以上的返回值。( )
7.结构体类型只有一种。 ( )
8.char *p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。( )
9.若有定义:char *p(char a[10]);则p是函数名。( )
10.用fopen("file","r+");打开的文件"file"可以进行修改。 ( )
三 写出下列程序的运行结果(10分,每小题2分)
1.float average (float array[10])
{ int i;
float aver,sum=array[0];
for (i=1;i<10;i++)
sum=sum+array[i];
aver=sum/10;
return(aver);
}
main( )
{ float score[10]={89,67.5,78,91,56,82.5,65,70,79,88},aver;
int i;
aver=average (score);
printf (“average score is %5.2f ”,aver);
}
2.main( )
{ char a[5]={‘A’,‘B’,‘C’,‘D’,‘E’},*p=a,**pa;
printf(“%2c”,*p);
printf(“ ”);
printf(“%2c ”,**(pa=&p));
}
3.main( )
{ int a,b,s=0;
for(a=1,b=1;a<=100;a++)
{ if(b>=20) break;
if(b%3==1)
{ b+=3; continue; }
b-=5;
}
printf(“a=%d b=%d ”,a,b);
}
4.main()
{ printf(“main( ) :%d ”,fact(5));
fact(-5);
}
fact(int value)
{ int f;
if(value<0)
{ printf(“Arg error ");
return(-1);
}
else if(value==1||value==0) f=1;
else f=value*fact(value-1)+1;
printf(“This called value=%d ”,f);
return f;
}
5.main( )
{ int a=012,b=0x12,k=12;
char c=‘102’,d=‘ ’;
printf(“a=%d b=%d k=%d ”,a,b,k);
printf(“c=%c,d=%c%o ”,c,d,a);
a=‘A’; c=49;
printf(“a=%d c=%c ”,a,c);
}
四 阅读下列程序,在 处填入适当内容,使程序完整(8分,每个空1分)
1.有一个3*4矩阵,求其中的最大元素。
max_value( (1) )
{ int i,j,max;
max=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(array[i][j]>max)
max=array[i][j];
(2) ;
}
main( )
{ int a[3][4], i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
(3) ;
printf(“max value is %d ”,max_value(a));
}
2.输入x、y两个整数,按先大后小的顺序输出x、y。
#include “stdio.h”
main( )
{ int x,y, *px,*py, (4) ;
scanf(“%d%d”,&x,&y);
(5) ; (6) ;
if(x
{ p=px; px=py; py=p; }
printf(“x=%d,y=%d ”,x,y);
printf(“MAX=%d,MIN=%d ”,*px,*py);
}
3.用选择排序法对任意10个整数按照由小到大排序。
main()
{ int a[11],i,j,k,t;
printf("Please input 10 numbers: ");
for(i=1;i<11;i++) scanf("%d",&a[i]);
printf(" ");
for(i=1;i<=9;i++)
{ (7) ;
for(j=i+1; (8) ;j++)
if(a[j]>a[k]) k=j;
if(k!=i)
{ t=a[k]; a[k]=a[i]; a[i]=t;}
}
printf("The sorted numbers: ");
for(i=1;i<11;i++) printf("%d ",a[i]);
}
答案
一 选择题(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.√
三 写出下列程序的运行结果(10分,每小题2分)
1. 2. 3.
4. 5.
四 阅读下列程序,在 处填入适当内容,使程序完整(8分,每个空1分)
1.(1)int array[3][4](int array[][4]) (2)return(max) (3)scanf(“%d”,&a[i][j])
2.(4)*p (5)px=&x(py=&y) (6)py=&y(px=&x)
3.(7) (8)
计算机等级考试二级C语言考试试题带答案 7
一 选择题(24分,每小题2分)
1.已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是( )。
A 存放读入数据项的存储区 B 存放读入数据的地址或指向此地址的指针
C 一个指向所读文件的文件指针 D 一个整形变量,代表要读入的数据项总数
2.以下程序的输出结果为( )。
main( )
{ int i=010,j=10;
printf("%d,%d ",i++,j--);
}
A 11,9 B 9,10 C 8,10 D 9,9
3.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。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循环语句( )。
for(i=0,k=-1;k=1;i++,k++) printf("****");
A 循环结束的条件不合法 B 循环体一次也不执行 C 循环体只执行一次 D 是无限循环
5.以下程序的输出结果为( )。
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 将文件位置指针从文件末尾处向文件头的方向移动10个字节
B 将文件位置指针从当前位置向文件头的方向移动10个字节
C 将文件位置指针从当前位置向文件末尾方向移动10个字节
D 将文件位置指针移到距离文件头10个字节处
7.以下程序的输出结果为( )。
main( )
{ char s1[40]="country",s2[20]="side";
int i=0,j=0;
while(s1[i]!=) i++;
while(s2[j]!=) s1[i++]=s2[j++];
s1[i]=0;
printf("%s ",s1);
}
A side B country C sidetry D countryside
8.下列说法不正确的是( )。
A 主函数main中定义的变量在整个文件或程序中有效
B 不同函数中,可以使用相同名字的变量
C 形式参数是局部变量
D 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效
9.在下列程序段中,枚举变量 c1的值是( )。
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是( )。
A 是一个指向整形变量的指针 B 是一个指针,它指向一个函数值是int的函数
C 是一个函数名 D定义不合法
11.定义由n个指向整形数据的指针组成的数组p,其正确的方式为( )。
A int p; B int (*p)[n]; C int *p[n]; D int (*p)( );
12.具有相同类型的指针类型变量p与数组a,不能进行的操作是( )。
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。( )
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;( )
三 写出下列程序的运行结果(36分,每小题6分)
1.main( )
{ int i=29,j=6,k=2,s;
s=i+i/j%k-9;
printf(“s=%d ”,s);
}
2.main( )
{ int x=31,y=2,s=0;
do
{ s-=x*y;
x+=2;
y-=3;} while( x%3==0);
printf(“x=%d y=%d s=%d ”,x,y,s);
}
3.main( )
{ int a[6]={10,20,30,40,50,60},i;
invert(a,0,5);
for(i=0;i<6;i++) printf(“%d,”,a[i]);
printf(“ ”);
}
invert(int s[ ],int i,int j)
{ int t;
if(i
{ invert(s,i+1j-1);
t=s[i];s[i]=s[j];s[j]=t;
}
}
4.#include
main()
{ char str[ ]=“The C program”,c;
int i;
for(i=2;(c=str[i])!=‘’;i++)
{ switch(c)
{ case ‘g’: ++i; break;
case ‘o’: continue;
default: printf(“%c”,c); continue;
}
printf(“*”);
}
printf(“ ”);
}
5.struct w
{ char low;
char high;
};
union u
{ struct w byte;
short word;
}uw;
main( )
{ int result;
uw.word=0x1234;
printf(“word value:%04x ”,uw.word);
printf(“high byte:%02x ”,uw.byte.high);
printf(“low byte:%02x ”,uw.byte.low);
uw.byte.low=0x74;
printf(“word value:%04x ”,uw.word);
result=uw.word+0x2a34;
printf(“the result:%04x ”,result);
}
6.main()
{ char *s2=“I love China!”,**s1=&s2;
char *s3,c,*s4=“w”;
s3=&c;
*s3=‘H’;
s2=s2+2;
printf(“%s %c %s %c ”,s2,*s3,s4,**s1);
}
四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分)
1. 百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各多少匹?
main( )
{ int hb,hm,hl,n=0;
for(hb=0;hb<=100;hb+= (1) )
for(hm=0;hm<=100-hb;hm+= (2) )
{ hl=100-hb- (3) ;
if(hb/3+hm/2+2* (3) ==100)
{ n++;
printf("hb=%d,hm=%d,hl=%d ",hb/3,hm/2,2*hl);
}
}
printf("n=%d ",n);
}
2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。
#define N 10
char str[N];
main()
{ int i,flag;
for(flag=1;flag==1;)
{ scanf("%s",str);
flag=0;
printf(" ");
}
sort(___(4)___);
for(i=0;i
printf("%c",str[i]);
printf(" ");
}
sort(char str[N])
{ int i,j;
char t;
for(j=1;j
for(i=0;(i
if(str[i]>str[i+1])
{ t=str[i];
____(5)____;
____(6)____;
}
}
3.以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。)
例如,矩阵为:
3 0 0 3
2 5 7 3
1 0 4 2
则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。
add(int m,int n,int arr[])
{ int i,j,sum=0;
for(i=0;i
for(j=0;j
sum=sum+ (7) ;
for(j=0;j
for(i=1; (8) ;i++)
sum=sum+arr[i*n+j];
return(sum);
}
4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。
#define N 10
main()
{ void maxmin(int arr[],int *pt1,int *pt2,int n);
int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;
p1=&a; p2=&b;
maxmin(array,p1,p2,N);
printf("max=%d,min=%d",a,b);
}
void maxmin(int arr[],int *pt1,int *pt2,int n)
{ int i;
*pt1=*pt2=arr[0];
for(i=1;i
{ if(arr[i]>*pt1) (9) ;
if(arr[i]<*pt2) (10) ;
}
}
答案
一 选择题(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.( √ )
三 写出下列程序的运行结果(36分,每小题6分)
1. s=20 2.x=35 y=-4 s=-29 3.60,50,40,30,20,10,
4.e C pr*am 5.word value:1234 6.love China! H w l
high byte:12
low byte:34
word value:1274
the result:3ca8
四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分)
1.(1) 3 (2) 2 (3)hm hl
2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t
3.(7) arr[i*n+j](或者arr[i*10+j])
(8) i
4.(9) *ptr1=arr[i] (10) *ptr2=arr[i]
计算机等级考试二级C语言考试试题带答案 8
(1)算法的时间复杂度是指_______。
A)执行算法程序所需要的时间
B)算法程序的长度
C)算法执行过程中所需要的基本运算次数
D)算法程序中的指令条数
答案:C
评析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。
(2)下列叙述中正确的是________。
A)线性表是线性结构B)栈与队列是非线性结构
C)线性链表是非线性结构D)二叉树是线性结构
答案:A
评析:一般将数据结构分为两大类型:线性结构与非线性结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。
(3)下面关于完全二叉树的叙述中,错误的是_________。
A)除了最后一层外,每一层上的结点数均达到最大值
B)可能缺少若干个左右叶子结点
C)完全二叉树一般不是满二叉树
D)具有结点的完全二叉树的深度为[log2n]+1
答案:B
评析:满二叉树指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点(叶子结点)的二叉树。
C语言笔试题答案篇
(1)结构化程序设计主要强调的是_________。
A)程序的规模B)程序的易读性
C)程序的执行效率D)程序的`可移植性
答案:B
评析:结构化程序设计主要强调的是结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以保证程序的正确性。
(2)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是________。
A)概要设计B)详细设计C)可行性分析D)需求分析
答案:D
评析:需求分析是对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。
(3)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是_________。
A)控制流B)加工C)数据存储D)源和潭
答案:A
评析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。
(4)软件需求分析一般应确定的是用户对软件的__________。
A)功能需求B)非功能需求C)性能需求D)功能需求和非功能需求
答案:D
评析:软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,是用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。
C语言笔试题答案篇
(1)下述关于数据库系统的叙述中正确的是________。
A)数据库系统减少了数据冗余
B)数据库系统避免了一切冗余
C)数据库系统中数据的一致性是指数据类型的一致
D)数据库系统比文件系统能管理更多的数据
答案:A
评析:由数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值。
(2)关系表中的每一横行称为一个________。
A)元组B)字段C)属性D)码
答案:A
评析:在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。
(3)数据库设计包括两个方面的设计内容,它们是________。
A)概念设计和逻辑设计B)模式设计和内模式设计
C)内模式设计和物理设计D)结构特性设计和行为特性设计
答案:A
评析:数据库设计可分为概念设计与逻辑设计。概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。逻辑设计的主要工作是将ER图转换为指定的RDBMS中的关系模型。
(4)请读程序:
#include
main
{
int a;float b,c;
scanf(“%2d%3P%4f’,&a,&b,&C);
printf(” a=%d,b=%ec。%f ”,a,b,C);
}
若运行时从键盘上输入9876543210l,则上面程序的输出结果是________。
A)a=98,b=765,c=432 1
B)a=1 0,b=432,c=8765
C)a=98,b=765.000000,c=432 1.000000
D)a=98,b=765.0,c=432 1.0
答案:C
评析:scanf把用户从键盘录入的数字的第1、2位存入整型变量a;把第3、4、5位存入单精度实型变量b,把第6、7、8、9位存入单精度实型变量c,用户录入的第10位被scanf遗弃。这时变量a、b、c的值分别为:98、765.000000、4321.000000。
(5)一个良好的算法由下面的基本结构组成,但不包括__________。
A)顺序结构B)选择结构C)循环结构D)跳转结构
答案:D
评析:1966年,Bohra和Jacopini提出了以下三种基本结构,用这三种基本结构作为表示一个良好算法的基本单元:1、顺序结构;2、选择结构;3、循环结构。
(6)请选出以下程序的输出结果________。
#include
sub(x,y,z)
int x,y,星符号z:
{星符号z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&C)后,c的值发生变化,其值为-12-(-5)=-7。
(7)下面程序在屏幕上的输出是________。
main
{
printf(”ab c”);
}
A)ab c B)a c C)abc D)ab c
答案:B
评析:c语言中允许使用一种特殊形式的字符常量,、就是以一个“”开头的字符序列,这样的字符称为“转义字符”。常用的转义字符有: ,换行;,水平制表;,退格;,回车。
(8)若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是_______。
A)pb=&x; B)pb=x; C)星符号pb=星符号、/)还包括自增自减运算符(++、–),在c语言解析表达式时,它总是进行贪婪咀嚼,这样,该表达式就被解析为i++ ++ +i,显然该表达式不合c语言语法。
(10)若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元
int星符号int) D)(int星符号)
答案:D
评析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型+)。
(11)下面程序输出的结果是__________。
main
{
int i=5,J=9,x;
x=(I==j?i:(j=7));
printf(” %d,%d”,I,J);
}
A)5,7 B)5,5 C)语法错误D)7,5
答案:A
评析:条件表达式的一般形式为:表达式I?表达式2:表达式3;先求解表达式1,若为真则求解表达式2;若表达式l的值为假,则求解表达式3。本题中先判断i==j,不等,执行j=7;然后执行x=7。故本题为A。
计算机等级考试二级C语言考试试题带答案 9
1.下面对软件特点描述不正确的是()。
A.软件是一种逻辑实体,具有抽象性
B.软件开发、运行对计算机系统具有依赖性
C.软件开发涉及软件知识产权、法律及心理等社会因素
D.软件运行存在磨损和老化问题
【答案】D
【解析】软件具有以下特点:①软件具有抽象性,是一种逻辑实体;②软件没有明显的制作过程;③软件在使用期间不存在磨损、老化问题,④对硬件和环境具有依赖性;⑤软件复杂性高,成本昂贵;⑥软件开发涉及诸多的社会因素。D项描述是硬件存在的问题。答案选择D选项。
2.下面描述不属于软件特点的是()。
A.软件是一种逻辑实体,具有抽象性
B.软件在使用中不存在磨损、老化问题
C.软件复杂性高
D.软件使用不涉及知识产权
【答案】D
【解析】软件具有以下特点:①软件是一种逻辑实体,具有抽象性;②软件没有明显的制作过程,③软件在使用期间不存在磨损、老化问题;④软件对硬件和环境具有依赖性;⑤软件复杂性高,成本昂贵,⑥软件开发涉及诸多的社会因素,如知识产权等。答案选择D选项。
3.下面对软件特点描述错误的是()
A.软件没有明显的制作过程
B.软件是一种逻辑实体,不是物理实体,具有抽象性
C.软件的开发、运行对计算机系统具有依赖性
D.软件在使用中存在磨损、老化问题
【答案】D
【解析】软件的特点有:①具有抽象性,是逻辑实体;②没有明显的制作过程;③在使用期间不存在磨损、老化问题;④对硬件和环境具有依赖性;⑤复杂性高,成本昂贵;⑥开发涉及诸多的社会因素。答案选择D选项。
4.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是()。
A.编辑软件
B.操作系统
C.教务管理系统
D.浏览器
【答案】B
【解析】系统软件是控制和协调计算机及外部设备,支持应用软件开发和运行的软件,操作系统是系统软件;支撑软件是支撑各种软件的开发与维护的软件,又称为软件开发环境,浏览器属于支撑软件;应用软件是用户可以使用的各种程序设计语言,以及用各种程序设计语言编制的应用程序的集合,编辑软件、教务管理软件属于应用软件。答案选择B选项。
5.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件),下面属于应用软件的是()。
A.学生成绩管理系统
B. C语言编译程序
C. UNIX操作系统
D.数据库管理系统
【答案】A
【解析】应用软件是为解决特定领域的应用而开发的软件,如事务处理软件,工程与科学计算软件,学生成绩管理系统、教务管理系统、浏览器、编辑软件等应用性质不同的各种软件。系统软件是计算机管理自身资源,提高计算机使用效率并服务于其他程序的软件,如操作系统,编译程序,汇编程序,数据库管理系统等。支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具性软件,包括辅助和支持开发和维护应用软件的工具软件,如需求分析工具软件,设计工具软件,编码工具软件,测试工具软件,维护工具软件等。答案选择A选项。
6.数据库管理系统是()。
A.操作系统的一部分
B.在操作系统支持下的系统软件
C.一种编译系统
D.一种操作系统
【答案】B
【解析】系统软件主要包括:①操作系统软件;②各种语言的解释程序和编译程序;③各种服务性程序;④各种数据库管理系统。数据库管理系统是一种系统软件,负责数据库中的数据组织、数组操纵、数据维护、控制和保护以及数据服务等。答案选择B选项。
7.数据库管理系统是()。
A.操作系统的一部分
B.在操作系统支持下的系统软件
C.一种编译系统
D.一种通信软件系统
【答案】B
【解析】系统软件主要包括:①操作系统软件;②各种语言的解释程序和编译程序;③各种服务性程序;④各种数据库管理系统。数据库管理系统是一种系统软件,负责数据库中的数据组织、数组操纵、数据维护、控制和保护以及数据服务等。答案选择B选项。
8.下列选项中,不属于数据管理员(DBA)职责的`是()。
A.数据库维护
B.数据库设计
C.改善系统性能,提高系统效率
D.数据类型转换
【答案】D
【解析】数据库管理员对数据库进行规划、设计、维护、监视等,其主要工作有:①数据库设计,主要是对数据模式进行设计,②数据库维护,对数据库中的数据安全性、完整性、并发控制及系统恢复、数据定期转储等进行实施与维护;③改善系统性能,不断调整内部结构,提高系统效率。答案选择D选项。
9.数据库系统的核心是()。
A.数据模型
B.软件开发
C.数据库设计
D.数据库管理系统
【答案】D
【解析】数据库系统包括四个部分:数据库、数据库管理系统、数据库应用程序、数据库管理员。其中DBMS是为数据库的建立、使用和维护而配置的软件,是数据库系统的核心。答案选择D选项。
10.下列叙述中正确的是()。
A.数据库系统是一个独立的系统,不需要操作系统的支持
B.数据库技术的根本目标是要解决数据的共享问题
C.数据库管理系统就是数据库系统
D.数据库系统由数据库应用系统、数据库和数据库管理系统组成。
【答案】B
【解析】A项错误,数据库需要调用操作系统的接口,需要操作系统的支持;C项错误,数据库管理系统(DBMS)是数据库系统的核心,负责数据库中的数据组织、数据操作、数据维护、控制及保护和数据服务等;D项错误,数据库应用系统是数据库系统再加上应用软件及应用界面这三者所组成,具体包括:数据库、数据库管理系统、数据库管理员、硬件平台、软件平台、应用软件、应用界面。答案选择B选项。
计算机等级考试二级C语言考试试题带答案 10
1.下列叙述中正确的是()。
A.所有数据结构必须有根结点
B.所有数据结构必须有终端结点(即叶子结点)
C.只有一个根结点,且只有一个叶子结点的数据结构一定是线性结构
D.没有根结点或没有叶子结点的数据结构一定是非线性结构
【答案】D
【解析】D项正确,线性结构的特点是:①集合中必存在“第一个元素"且惟一②集合中必存在“最后一个元素”且惟一;③除最后一个元素外,其他数据元素均有惟一的“后继”,④除第一个元素外,其他数据元素均有惟一的“前驱”。所以没有根结点或没有叶子结点的数据结构一定是非线性结构。AB两项错误,不是所有数据结构都必须有根结点和叶子结点;C项错误,数据结构中若有中间结点不满足只有一个前件或者后件的条件,就不是线性结构。答案选择D选项。
2.以下叙述中错误的是()。
A. C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
B. C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件
C.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D. C语言源程序经编译后生成后缀为.obj的目标程序
【答案】A
【解析】A项错误,注释语句不会被翻译成二进制的机器指令。C源程序经过C编译程序编译之后生成后缀为.obj的二进制文件(称为目标文件),然后由“链接程序”(Link)的软件把.obj文件与各种库函数连接起来生成一个后缀为.exe的可执行文件。答案选择A选项。
3. C语言主要是借助以下()功能来实现程序模块化的。
A.定义函数
B.定义常量和外部变量
C.三种基本结构语句
D.丰富的数据类型
【答案】A
【解析】C程序的模块化主要通过函数来实现。C语言允许对函数单独进行编译,从而可以实现模块化。答案选择A选项。
4.有以下程序段:
char ch;
int k;
ch='a';
k=12;
print("%c,%d,",h,ch,k);
printf("k=%d",k);
已知字符a的ASCII码十进制值为97,则执行上述程序段后输出的结果是()。
A.因变量类型与格式描述符的类型不匹配输出无定值
B.输出项与格式描述符个数不符,输出为零值或不定值
C.a,97,12k=12
D. a,97,k=12
【答案】D
【解析】字符变量的值是该字符的ASCII码值,可以参与整型变量所允许的任何运算。"ch='a",%c表示以字符格式输出ch的值,所以输出为a;%d表示以十进制代码的形式输出ch的值,为97;k没有对应的输出格式,不输出。在第二个语句中,首先输出"k=",然后以十进制代码输出k的值,为12。答案选择D选项。
5.下列叙述中正确的是()。
A.栈是“先进先出”的线性表
B.队列是“先进后出"的线性表
C.循环队列是非线性结构
D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
【答案】D
【解析】有序的线性表既可采用顺序存储结构,也可以采用链式存储结构。A项错误,栈是“先进后出"的线性表B项错误,队列是“先进先出"的线性表;C项错误,循环队列是线性结构的`,有序的线性表既可采用顺序存储结构,也可采用链式存储结构。
6.某二叉树的中序序列为DCBAEFG,后序序列为DCBGFEA,则该二叉树的深度(根结点在第1层)为()。
A. 5
B. 40
C.3
D. 2
【答案】B
【解析】二叉树的后序序列为DCBGFEA,则A为根结点。中序序列为DCBAEFG,则DCB为左子树结点,EFG为右子树结点。同理B为C父结点,C为D父结点。根据分析,可画出左子树,同理E为F父结点,F为G父结点。根据分析,可画出右子树,故二叉树深度为4层。答案选择B选项。
7.设有定义:struct{intn;floatx;}s[2],m[2]={{10,2.8},{0,0.0}};,则以下赋值语句中正确的是()。
A. s[0]=m[1];
B. s=m;
C.s.n=m.n;
D. s[2].x=m[2].x;
【答案】A
【解析】定义了结构体类型数组s,长度为2,结构体类型数组m,长度为2,并对数组m进行了初始化。同类型的结构体可以直接用变量名实现赋值,A项正确;数组名为数组首地址,地址常量之间不可以相互赋值,B项错误;数组名为地址常量不是结构体变量,不能引用成员,C项错误;s[2]与m[2]数组越界,D项错误。答案选择A选项。
8.关于C语言标识符,以下叙述错误的是()。
A.标识符可全部由数字组成
B.标识符可全部由下划线组成
C.标识符可全部由小写字母组成
D.标识符可全部由大写字母组成
【答案】A
【解析】C语言标识符只能由字母、数字、下划线构成,且只能以字母、下划线开头,故答案选择A选项。
9.以下程序段中的变量已定义为int类型,则
sum=pAd=5;
pAd=sum++,++pAd,pAd++;
printf("%d",pAd);
程序段的输出结果是()。
A. 6
B. 4
C. 5
D. 7
【答案】D
【解析】自增和自减运算符的两种用法:前置运算,运算符放在变量之前,规则是先使变量的值增(或减)1,然后以变化后表达式的值参与其他运算;后置运算,运算符放在变量之后,规则是变量先参与其他运算,然后再使变量的值增(或减)1。执行pAd=sum++,sum++是后置自增,执行完后,pAd=5,sum=6。++pAd和pAd++语句中没有其他运算,即效果相同,pAd分别加1,两句执行完后,pAd7。答案选择D选项。
10.设循环队列为Q(1:m),其初始状态为front=rear=m。经过一系列入队与退队运算后,front=20,rear=15。现要在该循环队列中寻找最小值的元素,最坏情况下需要比较的次数为()。
A. 5
B. 6
C.m-5
D. m-6
【答案】D
【解析】循环队列是队列的一种顺序存储结构,用队尾指针rear指向队列中的队尾元素,用队首指针指向队首元素的前一个位置,因此,从队首指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素,队列初始状态为front=rear=m,当front=20,rear=15时,队列中有m-20+15=m-5个元素,最坏情况下需要比较次数为m-6次。答案选择D选项。
【计算机等级考试二级C语言考试试题带答案10份】相关文章:
计算机等级考试二级C语言试题及答案10-31
2017计算机等级考试二级c语言考试试题08-22
2017计算机等级C语言考试试题及答案07-10
计算机二级考试C语言试题及答案10-11
计算机二级考试C语言试题与答案10-27
全国计算机等级考试二级c语言考试试题08-26
计算机等级考试二级C语言考试技巧08-26
计算机二级C语言考试试题及答案10-09