当前位置:首页 » 编程语言 » 二级c语言机试题库
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

二级c语言机试题库

发布时间: 2022-09-12 02:59:18

1. 2011年全国计算机等级考试2级c语言机试题库

重要说明:本题库为从题中一题一题复制出来工作量大,而且有许多表达式无法在word中快速表示出来(这样会加大工作量)故而省略,或者表达错位,有的地方可能或者肯定会有错,我相信准备参加C语言二级考试的同学应当能够对照参考答案看出来,这是2011年最新版最完整考试题库,相信大家一定都能通过!

第一套
程序填空
给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。如输入一个数:27638496,新的数为729
第一空:{ t=*n%10;
第二空:if(t%2!=0)
第三空:*n=x;
2.程序修改
给定程序modi1.c中函数fun的功能是:计算n!。例如,给n输入5,则输出120.000000。
double fun(int n )
{ double result=1.0;
/*****found******/
if(n==0)
return 1.0;
while(n>1&&n<170)
/*****found******/
result*=n--;
return result;
}
程序设计
请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串"-1234",则函数把它转换为整数值-1234。
long fun(char *p)
{
int i,len,t;
long x=0;
len=strlen(p);
if(p[0]=='-')
{ t=-1;len--;p++;}
else t=1;
while(*p)
x=x*10-48+(*p++);
return x*t;
}

第二套
1. 给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
第1 处 FILE * fp;
第2 处 while (!feof(fp)) {
第3 处 putchar(ch); ch = fgetc(fp); }
2.程序修改
给定程序MODI1.C中函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
void fun( char *s )
{ int i,j;
for(i=0,j=0;s[i]!='\0';i++)
if(s[i]>='0'&&s[i]<='9')
/*****found******/
s[j++]=s[i];
/*****found******/
s[j]='\0';
}
3.程序设计题
请编写函数fun,函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
void fun(char s[][N],char *b)
{
int i,j,n=0;
for(i=0;i<N;i++)
/*请填写其相应语句完成其功能*/
{
for(j=0;j<M;j++) {
b[n]=s[j][i];
n=i*M+j+1;
}
}
b[n]='\0';
}
第三套
1. 程序填空
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数 fun的功能是重写形参filename所指的文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。
第1处:fp=fopen(filename,
"rb+")
第2处:fseek(fp,-1L*
sizeof(STU),SEEK_END);
第3处:fwrite(&n,
sizeof(STU),1,fp);
2. 程序修改
给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。
NODE *Creatlink(int n,int m)
{ NODE *h=NULL,*p,*s;
int i;
/*****found******/
p=( NODE *) malloc(sizeof(NODE));
h=p;
p->next=null;
for(i=1;i<=n;i++)
{s=( NODE *) malloc(sizeof(NODE));
s->data=rand()%m;
s->next=p->next;
p->next=s;
p=p->next;
}
/*****found******/
return h;
}
3. 程序设计
请编写函数fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格格开,一行的开始没有空格。
int fun(char *s)
{
int k=1;
while(*s)
{ if(*s=='')k++;
s++; }
return k;
}
第四套
1. 程序填空
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。
第1处fp = fopen(filename, "rb");
第2处if (s[i].sno >s[j].sno)
第3处 fwrite(s,sizeof(STU),N,fp);
2. 程序修改
给定程序MODI1.C中函数fun的功能是:在字符串的最前端加入n个*号,形成新串,差且覆盖原串。注意:字符串的长度最长允许为79.
void fun(char s[ ],int n)
{
char a[80],*p;
int i;
/*****found******/
p=s;
for(i=0;i<n;i++)
a[i]='*';
do
{a[i]=*p;
i++;
}
/*****found******/
while(*p++)
a[i]=0;
strcpy(s,a);
}
3. 程序设计
请编写函数fun,函数的功能是:统计各年龄段的人数,N个年龄能过调用随机函数获得,并放在主函数的age 数组中:要求函数把0至9岁的年龄段的人数放在d[0]中,把10至19岁的年龄段的人数放在d[1]中,把20至29岁的年龄段的人数放在d[2]中,其余依次类推,把100岁(含100岁)以上年龄的人数都放在d[10]中。结果在主函数中输出。
void fun(int *a, int *b)
{
int i,j;
for(i=0;i<M;i++)b[i]=0;
for(i=0;i<N;i++)
{ j=a[i]/10;
if(j>10)b[M-1]++;
else b[j]++;
}
}
第五套
1. 程序填空
给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文件文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串换成相应的整数和浮点数,然后将其显示在屏幕上。
第1处: FILE *fp;
第2处:fclose(fp);
第3处:fscanf(fp,"%s%s%s",str,str1,str2);
2.程序修改
给定程序MODI1.C中函数fun的功能是:对N名学生的学生成绩,按从高到低的顺序找出前m(m<10) 名学生来,将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
STU *fun(STU a[ ],int m)
{ STU b[N],*t;
int i,j,k;
/*****found******/
t=(STU *)calloc(sizeof(STU),m);
for(i=0;i<N;i++)
b[i]=a[i];
for(k=0;k<m;k++)
{ for(i=j=0;i<N;i++)
if(b[i].s>b[j].s)j=i;
/*****found******/
t[k]=b[j];
b[j].s=0;
}
return t;
}
3. 程序设计
请编写函数fun,函数的功能是,删去一维数组中所有相同的数,使之只剩一个。数组中的数已按从小到大的顺序排序,函数返回删除后数组中数据的个数。
int fun(int a[ ],int n)
{
int i,j=1,k=a[0];
for(i=1;i<n;i++)
if(k!=a[i]){
a[j++]=a[i];
k=a[i];}
a[j]=0;
return j;
}
第六套
1. 程序填空
给定程序中,函数fun的功能是根据形参i的值返回某个函数年值。当调用正确时,程序输出:x1=5.000000
x2=3.000000.
x1*x1+x1*x2=40.000000
第一处:double fun(int i,double x,double y)
第二处:return f1(x);
第三处:return f2(x,y);
2.程序修改
给定程序MODI1.C中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。
#include <stdio.h>
/*****found******/
char *fun(char *s,char *t)
{
int sl=0,tl=0;
char *ss,*tt;
ss=s; tt=t;
while(*ss)
{ sl++;
/*****found******/
ss++;
}
while(*tt)
{ tl++;
/*****found******/
tt++;
}
if(tl>sl) return t;
else return s;
}

3. 程序设计
请编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平均移到字符串的最后,把第m+1个到最后的;字符移到字符串的前部。
void fun(char *w, int m )
{
int i;
for(i=0;i<m;i++)
fun1(w);
}
第七套
1. 程序填空
程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息,函数fun的功能是输出这位学生的信息。
第1处 void show( STU tt)
第2处 printf("%5.1f",tt.score[i]);
第2处 show(std)
2.程序修改
给定程序MODI1中函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。
int fun(int *a,int n)
{ int i,m,t,k;
for(i=0;i<2;i++){
/*****found******/
m=i;
for(k=i+1;k<n;k++)
/*****found******/
if(a[k]>a[m])m=k;
t=a[i];a[i]=a[m];a[m]=t;
}
}
3.程序设计
请编写一个unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n>=2)位的整数,函数求出w的后n-1位的数作为函数值返回。
例如:w值为5923,则函数返回923;w值为923则函数返回23。
unsigned fun( unsigned w )
{
if(w>=10000) return w%10000;
if(w>=1000) return w%1000;
if(w>=100) return w%100;
return w%10;
}
第八套
1. 程序填空
给定程序通过定义并赋值的方式,利用结构体变量存储了一名学生学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系统a。
第1处 void modify(STU *ss,float a )
第2处 ss->score[i]*=a;
第3处 modify(&std,a);
2.程序修改
给定程序MODI1.C中函数fun的功能是:求k!<13>,所求阶乘的值作为函数值返回。例如:若k=10,则应输出:3628800。
long fun(int k)
{
/*****found******/
if(k>0)
return (k*fun(k-1));
/*****found******/
else if(k==0)
return 1L;
}
3.程序设计
程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[ ][N],int n),函数的功能是:使数组左下三角元素中的值乘以n。
int fun(int a[ ][N],int n)
{ int i,j;
for(i=0;i<N;i++)
for(j=0;j<=i;j++)
a[i][j]*=n;
}
第九套
1.程序填空
给定程序中,函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头到尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为2、4、6、8、10。
第1处 q=p->next;
第2处 while(q)
第3处 p=p->next;
2.程序修改
给定程序MODI1.C中函数fun的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换成a ),其它字符不变。
void fun(char *s)
{
/*****found******/
while(*s)
{ if(*s>'A'&&*s<='Z'
||*s>='a'&&*s<='z')
{ if(*s=='Z')*s='A';
else if(*s=='z')*s='a';
else *s=*s+1;}
/*****found******/
s++;
}
}
3.程序设计
void fun(int *w,int p, int n)
{
int i,j=0,b[N];
for(i=p+1;i<n;i++)b[j++]=w[i];
for(i=0;i<=p;i++)
b[j++]=w[i];
for(i=0;i<n;i++)
w[i]=b[i];
}
第十套
1程序填空
给定程序中,函数fun的功能是:判定形参a所指的N×N(规定N为奇数)的矩阵是否是"幻方",若是,函数返回值为1;不是,函数返回值为0。"幻方"的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。
第1处 row=colum=0;
第2处 if((row!=colum)||(row!=m1))return 0;
第3处 return 1;
2程序修改
给定MODI1.Cfun函数的功能是:根据整型形参m,计算如下公式的值。t=1-1/2-1/3-......-1/m.
#include <sdio.h>
double fun( int m )
{
double t = 1.0;
int i;
for(i=2;i<=m;i++)
/********found***********/
t=t-1.0/i;
/********found***********/
return t;
}

2. 计算机二级C语言都有哪些题型

全国计算机二级C语言程序设计包括40个单选题(每题一分)和三道操作题(60分)。
单选题中1~10题为二级公共基础知识,考试内容包括数据结构与算法、程序设计基础、软件工程基础、数据库设计基础四部分。单选题的11~40题是C语言的内容。
操作题包括程序填空(18分)、程序改错(18分)和编程题(24分)各一题。
程序填空是将一个完整的程序,扣掉两到三处,让考生将它填写完整。由于每位考生具体抽到的题目不同,程序填空有2到3个空要填。程序填空题以实际填写的内容为评分依据,填写正确一个空,给一个空的分。如果是2个空,每个空就是9分;如果是3个空每个空是6分。
程序改错也是一个完整的程序,其中有2~3处错误要求考生将他们改正。与程序填空类似,2处错误的话,每处9分,3处错误的话,每处6分。程序改错题的题目会提示每一处错误所在的行,在那一行的上一行有********found********标识。
编程题是要求考生编写一个程序,然后运行出题干要求的结果。题目中主函数main()会完整给出,在主函数中将调用fun()函数,fun函数由考生自己编写。编程题以运行结果给分,所编写完成后必须运行,否则没分。因此,大多数情况下,编程题要么就是得24分满分,要么就是0分。

3. 计算机二级c语言机试题每年都是从固定的50套题中选吗

不是的,我参加监考,我知道的。


200套题,这是题库,但每年只更新其中的30套题,很多题目都是旧的。

所以,你做往年的模拟题,考试时很可能抽到原题。

4. 求计算机二级考试c语言机试题库

这是部分,其余的可以私下给你,我的QQ:916356609,我传给你
一、程序填空题
1、给定程序中,函数fun的功能是:在任意给定的9个正整数中找出按升序排列时处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。
例如,有9个正整数:1 5 7 23 87 5 8 21 45
按升序排列时的中间数为:8
处理后主函数中输出的数列为:8 8 8 23 87 8 8 21 45
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define N 9
int fun(int x[])
{ int i,j,k,t,mid,b[N];
for(i=0;i<N;i++) b[i]=x[i];
for(i=0;i<=N/2;i++)
{ k=i;
for(j=i+1;j<N;j++) if(b[k]>b[j]) k=j;
if(k != i )
{
/**********found**********/
t=b[i]; b[i]=___1___; b[k]=t;
}
}
/**********found**********/
mid=b[___2___];
for(i=0; i<N; i++)
/**********found**********/
if(x[i] ___3___ mid) x[i]=mid;
return mid;
}
main()
{ int i, x[N]={1,5,7,23,87,5,8,21,45};
for(i=0; i<N; i++) printf("%d ",x[i]);
printf("\nThe mid data is: %d\n",fun(x));
for(i=0; i<N; i++) printf("%d ",x[i]);
printf("\n");
}

2、给定程序中,函数fun的功能是建立一个N×N的矩阵。 矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,…依次类推。例如,若N=5,生成的矩阵为:
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define N 7
/**********found**********/
void fun(int (*a) __1__)
{ int i,j,k,m;
if(N%2==0) m=N/2 ;
else m=N/2+1;
for(i=0; i<m; i++) {
/**********found**********/
for(j= __2__ ; j<N-i; j++)
a[i][j]=a[N-i-1][j]=i+1;
for(k=i+1; k<N-i; k++)
/**********found**********/
a[k][i]=a[k][N-i-1]= __3__;
}
}
main()
{ int x[N][N]={0},i,j;
fun(x);
printf("\nThe result is:\n");
for(i=0; i<N; i++)
{ for(j=0; j<N; j++) printf("%3d",x[i][j]);
printf("\n");
}
}

3、给定程序中,函数fun的功能是: 将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:defadhkjsdf3537。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
void fun(char *s)
{ int i, j=0, k=0; char t1[80], t2[80];
for(i=0; s[i]!='\0'; i++)
if(s[i]>='0' && s[i]<='9')
{
/**********found**********/
t2[j]=s[i]; ___1___;
}
else t1[k++]=s[i];
t2[j]=0; t1[k]=0;
/**********found**********/
for(i=0; i<k; i++) ___2___;
/**********found**********/
for(i=0; i<___3___; i++) s[k+i]=t2[i];
}
main()
{ char s[80]="def35adh3kjsdf7";
printf("\nThe original string is : %s\n",s);
fun(s);
printf("\nThe result is : %s\n",s);
}

4、给定程序中,函数fun的功能是:有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例如,若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9计算结果为
1 0 0
6 5 0
10 14 9
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!

#include <stdio.h>
#define N 4
/**********found**********/
void fun(int (*t)___1___ )
{ int i, j;
for(i=1; i<N; i++)
{ for(j=0; j<i; j++)
{
/**********found**********/
___2___ =t[i][j]+t[j][i];
/**********found**********/
___3___ =0;
}
}
}
main()
{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;
printf("\nThe original array:\n");
for(i=0; i<N; i++)
{ for(j=0; j<N; j++) printf("%2d ",t[i][j]);
printf("\n");
}
fun(t);
printf("\nThe result is:\n");
for(i=0; i<N; i++)
{ for(j=0; j<N; j++) printf("%2d ",t[i][j]);
printf("\n");
}
}

5、给定程序中,函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。
例如,形参s所指的字符串为:baawrskjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
void fun(char *s, char *p)
{ int i, j, n, x, t;
n=0;
for(i=0; s[i]!='\0'; i++) n++;
for(i=1; i<n-2; i=i+2) {
/**********found**********/
___1___;
/**********found**********/
for(j=___2___+2 ; j<n; j=j+2)
if(s[t]>s[j]) t=j;
if(t!=i)
{ x=s[i]; s[i]=s[t]; s[t]=x; }
}
for(i=1,j=0; i<n; i=i+2, j++) p[j]=s[i];
/**********found**********/
p[j]=___3___;
}
main()
{ char s[80]="baawrskjghzlicda", p[50];
printf("\nThe original string is : %s\n",s);
fun(s,p);
printf("\nThe result is : %s\n",p);
}

6、程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数fun的功能是输出这位学生的信息。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
typedef struct
{ int num;
char name[9];
char sex;
struct { int year,month,day ;} birthday;
float score[3];
}STU;
/**********found**********/
void show(STU ___1___)
{ int i;
printf("\n%d %s %c %d-%d-%d", tt.num, tt.name, tt.sex,
tt.birthday.year, tt.birthday.month, tt.birthday.day);
for(i=0; i<3; i++)
/**********found**********/
printf("%5.1f", ___2___);
printf("\n");
}
main( )
{ STU std={ 1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0 };
printf("\nA student data:\n");
/**********found**********/
show(___3___);
}

7、给定程序中,函数fun的功能是:计算N×N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。注意:要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。例如,若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define N 4
fun(int t[][N], int n)
{ int i, sum;
/**********found**********/
___1___;
for(i=0; i<n; i++)
/**********found**********/
sum+=___2___ ;
for(i=0; i<n; i++)
/**********found**********/
sum+= t[i][n-i-___3___] ;
return sum;
}
main()
{ int t[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10},i,j;
printf("\nThe original data:\n");
for(i=0; i<N; i++)
{ for(j=0; j<N; j++) printf("%4d",t[i][j]);
printf("\n");
}
printf("The result is: %d",fun(t,N));
}

8、给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),作为函数值返回;并将大于平均值的数放在形参y所指数组中,在主函数中输出。
例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000
主函数中输出:46 32 40 45 48
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!

#include <stdlib.h>
#include <stdio.h>
#define N 10
double fun(double x[],double *y)
{ int i,j; double av;
/**********found**********/
av=__1__;
/**********found**********/
for(i=0; i<N; i++) av = av + __2__;
for(i=j=0; i<N; i++)
/**********found**********/
if(x[i]>av) y[__3__]= x[i];
y[j]=-1;
return av;
}
main()
{ int i; double x[N] = {46,30,32,40,6,17,45,15,48,26};
double y[N];
for(i=0; i<N; i++) printf("%4.0f ",x[i]);
printf("\n");
printf("\nThe average is: %f\n",fun(x,y));
for(i=0; y[i]>=0; i++) printf("%5.0f ",y[i]);
printf("\n");
}

9、给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。
例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000
移动后的输出为:30 6 17 15 26 46 32 40 45 48
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdlib.h>
#include <stdio.h>
#define N 10
double fun(double *x)
{ int i, j; double av, y[N];
av=0;
/**********found**********/
for(i=0; i<N; i++) av +=__1__;

5. 2011年9月计算机二级c语言 机试题库,不要去年的,也不要上次的,要最新的,谢谢~@~@~

试题一
一、单项选择题
1.C语言程序的执行,总是起始于【 】。
A) 程序中的第一条可执行语句
B) 程序中的第一个函数
C) main函数
D) 包含文件中的第一个函数
分析:在一个C语言源程序中,无论main函数书写在程序的前部,还是后部,程序的执行总是从main函数开始,并且在main函数中结束。
本题正确答案为C。
2.下列说法中正确的是【 】。
A) C程序书写时,不区分大小写字母
B) C程序书写时,一行只能写一个语句
C) C程序书写时,一个语句可分成几行书写
D) C程序书写时每行必须有行号
分析:C语言严格区分大小写字母,如"A1"和"a1"被认为是两个不同的标识符,C程序的书写非常灵活,既可以一行多句,又可以一句多行,且每行不加行号。
本题正确答案为C。
3.下面对C语言特点,不正确描述的是【 】。
A) C语言兼有高级语言和低级语言的双重特点,执行效率高
B) C语言既可以用来编写应用程序,又可以用来编写系统软件
C) C语言的可移植性较差
D) C语言是一种结构式模块化程序设计语言
分析:C语言是介于汇编语言和高级语言之间的一种语言,由于它可以直接访问物理地址,对硬件操作,所以C语言既可以编写应用程序,又可以开发系统软件,而且C程序可移植性好于汇编语言,程序清晰具有模块化的特点。
本题正确答案为C。
4.C语言源程序的最小单位是【 】。
A) 程序行B) 语句C) 函数D) 字符
分析:程序行、语句、函数都是由字符构成的,字符是C语言的最小单位。
本题正确答案为D。
5.以下四项中属于C语言关键字的是【 】。
A) CHAR B) define C) unsigned D) return
分析:C语言有32个关键字(或称保留字),它们都有特定的含意,并且由小写字母组成,所以选项A是错的,选项B不是保留字,选项D是return的错误拼写。
本题正确答案为C。
6.十进制数2403转换成十六进制数为【 】。
A) 963 B) 369 C) 953 D) 359
分析:十进制数化成十六进制数的方法是:不断除以16,商0为止,倒取余数。
本题正确答案为A。
7.二进制数00110101转换成八进制数是【 】。
A) 055 B) 065 C) 056 D) 152
分析:二进制数化成八进制数的方法是:从右向左划分,将每3位二进制数书写成1位八进制数。
本题正确答案为B。
8.将二进制数1011011.011转换成十进制数是【 】。
A) 91.75 B) 91.375 C) 91.125 D) 91.25
分析:二进制数化成十进制数的方法是:各数字乘以权重再相加,题中整数部分为:(1011011)2=1×26+1×24+1×23+1×21+1×20=64+16+8+2+1=91,小数部分为:(0.011)2=0×2-1+1×2-2+1×2-3=0.25+0.125=0.375,再将两者合在一起得91.375。
本题正确答案为B。
9.计算机内部运算使用的数是【 】。
A) 十进制数 B) 十六进制数 C) 二进制数 D) 八进制数
分析:在实际生活中找不到具有十个稳定状态的物理元件,而具有两种稳定状态的元件到处可见,如一个开关具有通电和断电两个稳定状态,计算机内部的元件正是以"1"代表通电,以"0"代表断电的,所以计算机内部运算使用的数是二进制数,至于八进制数和十六进制数是对二进制数的人为缩写。
本题正确答案为C。
10.一个字长的二进制位数是【 】。
A) 2个BYTE,即16个bit B) 3个BYTE,即24个bit C) 4个BYTE,即32个bit D) 随计算机系统不同而不同
分析:一个二进制位也称做1bit,八个二进制位称做1个BYTE,即所说的一个字节,BYTE和bit有固定的换算关系,但是计算机中的字长WORD和字节BYTE没有固定的换算关系,字长WORD是随CPU型号而异的。
本题正确答案为D。
11.在C语言系统中,假设int类型数据占2个字节,则double、long、unsigned int、char类型数据所占字节数分别多少【 】。
A) 8,2,4,1 B) 2,8,4,1 C) 4,2,8,1 D) 8,4,2,1
分析:由上题知CPU字长决定了分配给各种类型变量多少个字节,当int类型占2个字节时,double、long、unsigned int、char型所占的字节分别为8、4、2、1个字节。
本题正确答案为D。
12.下面程序段执行结果是【 】。
int i=5,k;
k=(++i)+(++i)+(i++);
printf("%d,%d",k,i);
A) 24,8 B) 21,8 C) 21,7 D) 24,7
分析:k=(++i)+(++i)+(i++)表达式中,"++"号在i前面的有两个,所以在计算k之前,i要先增两次,即i变为7,然后再将3个7相加,使k得21,表达式中"++"号在i后面的有1个,所以得出k的值以后i又增1次变为8。
本题正确答案为B。
13.下面程序段执行结果是【 】。
int i=5;
printf("%d,%d,%d", i,(++i)+(++i)+(i++),i);
A) 8,20,5 B) 8,21,5 C) 5,20,8 D) 5,21,8
分析:此题不能看作将12题中的k=(++i)+(++i)+(i++)代入printf函数,因为函数处理参数的顺序是从右向左,所以(++i)+(++i)+(i++)表达式的值不再是求7+7+7,而是为8+7+5=20。
本题正确答案为A。
14.下面程序段的输出结果是【 】。
int i=32769;
printf("%d\\n",i);
A) 32769 B) 32767 C) -32767 D) 输出不是确定的数
分析:int型变量表示数据的范围是-32768~+32767,赋值时比-32768小或比+32767大,都会发生溢出,溢出后存放的数值是:正向溢出时,为该数减去模65536,负向溢出时,为该数加上模65536,所以本题输出为32769-65536=-32767。
本题正确答案为C。
15.下面的程序运行后输出为【 】。
main( )
{ int a=-32769;
ptintf("%8U\\n",a);
}
A) 32769 B) %8U C) 32767 D) -32767
分析:格式字符必须小写,题中的"%8U"不会当作格式控制符,而是原样输出,变量a将没有对应的格式说明,也不会送出。
本题正确答案为B。
二、填空题
1.若以下程序的输出结果是13,请填空。
main( )
{ int x=016;
printf("%d\\n",【1】); }
分析:在C语言中以0开头的数字是八进制数,016相当于十进制数14,执行printf语句时,输出项应为x的值减1。
本题正确答案为 【1】 --x或x-=1。
2.下面程序段的输出结果是【2】。
int k=10;
float a=3.5,b=6.7,c;
c=a+k%3*(int)(a+b)%2/4;
分析:本题考查运算符的优先级概念,式中要先算(a+b)的值,再算强制类型变换,*、/、%是同级的要从左到右计算,最后算加法和赋值。
本题正确答案为【2】 3.500000
3.若执行下面程序段后的输出为:3,4,5,请填空。
int a,b=3,c=5;
a=b<c?【3】:c++;
printf("%d,%d,%d",a,b,c);
分析:本题考查条件运算符和增量运算符的概念,题中b<C为真,应取B++的值给A,因B的值是先用后增1,所以A为3,题中的C++没有执行到,C保持原值。
本题正确答案为 【3】 b++。
4.C语言中的运算符,优先级最低的是【4】。
分析:与其它高级语言相比,在C语言中赋值号并不是优先级最低的,C语言中优先级最低的运算符是逗号运算符。
本题正确答案为 【4】 逗号运算符。
5.若下面程序的输出结果是4,请填空。
main( )
{ int i,j,k;
k=0 ; i=j=-2 ;
k+=-i--【5】;
printf("%d\\n",k);
}
分析在C语言中当3个加号或3个减号连在一起时,中间的符号归属左边的变量,即-i---j相当于-(i--)-j。
本题正确答案为 【5】-j 。</c?【3】:c++;
试题二
一、单项选择题
1.下面叙述不正确的是【 】。
A) C语句末尾必须有分号
B) C语言中无论是整数还是实数都能准确的表示
C) 运算符“%”只能用于整数运算
D) 乘除运算符优先级高于加减运算符
2.以下叙述正确的是【 】。
A) C语句前面必须有行号
B) C程序中每行只能写一条语句
C) C语言本身没有输入输出语句
D) 注释必须跟在一行语句的后面
3.复合语句应用【 】括起来。
A) 小括号 B) 方括号 C) 大括号 D) 尖括号
4.将二进制数101101101111转换成十六进制数是【 】。
A) 5557 B) B6F C) 7555 D) F6B
5.将十进制数0.625转换成二进制数是【 】。
A) 0.111 B) 0.101 C) 0.5 D) 0.A
6.C语言语句一行写不下时,可以【 】。
A) 用逗号换行 B) 用分号换行 C) 用回车换行 D) 在任意一空格处换行
7.C语言允许将一条语句写在两行上,下列语句不正确是【 】。
A) int a, B) int a C) int D) int a,b
b; ,b; a,b; ;
8.下面程序的输出是【 】。(“□”表示一个空格)
int a=3366;
printf("|%-08d|",a);
A) |-0003366| B) |00003366| C) |3366□□□□| D) 输出格式非法
9.若有说明语句:int a; float b;,以下输入语句正确的是【 】。
A) scanf("%f%f",&a,&b);
B) scanf("%f%d",&a,&b);
C) scanf("%d,%f",&a,&b);
D) scanf("%6.2f%6.2f",&a,&b);
10.以下程序的输出结果是【 】。
main( )
{ int x=11,y=11;
printf("%d%d\\n",x--,--y);
}
A) 11,11 B) 10,10 C) 10,11 D) 11,10
11.将八进制数307转换成二进制数是【 】。
A) 100110011 B) 11000111 C) 1100000111 D) 111000011
12.执行下面程序段,给x、y赋值时,不能作为数据分隔符的是【 】。
int x,y;
scanf("%d%d",&x,&y);
A) 空格 B) Tab键 C) 回车 D) 逗号
13.下面合法的语句是【 】。
A) int a=8,b;
b=++a++;
printf("%d,%d",a,b++);
B) int a;
printf("\\"%d\\"",scanf("%d",&a));
C) char a;
scanf("%c",&a);
char b=scanf("b=%c",&b);
D) char c=getchar( );
putchar((int)c);
14.执行下面程序时,欲将25和2.5分别赋给a和b,正确的输入方法是【 】。
int a;
float b;
scanf("a=%d,b=%f",&a,&b);
A) 25□2.5
B) 25,2.5
C) a=25,b=5.5
D) a=25□b=2.5
15.与数学公式a•b x•y不等价的语句是【 】。
A) a*b/x*y
B) a*b/x/y
C) a*b/(x*y)
D) a/(x*y)*b
二、填空题
1.表达式5%(-3)的值是【1】,表达式-5%(-3)的值是【2】。
2.在C语言中,格式输入库函数为【3】,格式输出库函数为【4】。
3.下面程序的输出结果是【5】。
int x=-32769;
printf("%d",x);
4.执行下列程序的输出结果是【6】。
main( )
{
float a=1,b;
b=++a*++a;
printf("%f\\n",b);
}
5.执行下列程序的输出结果是【7】。
main( )
{
int x=5,y;
y=++x*++x;
printf("y=%d\\n",y);
}
参 考 答 案
一、选择题(1)B (2)C (3)C (4)B (5)B (6)D (7)D (8)C (9)C (10)D (11)B (12)D (13)D (14)C (15)A
二、填空题【1】 2 【2】 -2 【3】 scanf 【4】 printf 【5】 32767 【6】 6.000000 【7】 49

试题三
一、单项选择题
1.下面不属于C语言的数据类型是【 】。
A) 整型 B) 实型 C) 逻辑型 D) 双精度实型
分析:和其它高级语言相比,C语言中没有逻辑型数据,也没有逻辑型变量。
本题正确答案为C。
2.C语言中,下列属于构造类型的是【 】。
A) 整型 B) 实型 C) 指针类型 D) 结构体类型
分析:C语言中构造类型的数据有三种:数组、结构体和共用体,数组是同类型数据的集合,结构体是不同类型的数据集合。
本题正确答案为D。
3.下列字符串不符合标识符规定的是【 】。
A) SUM B) sum C) 3cd D) end
分析:标识符规定只能由26个英文字母(大小写均可),数字0~9和下划线组成,且不能以数字开头,题中的3cd不符合规定。
本题正确答案为C。
4.下面能正确表示八进制数的是【 】。
A) 0x16 B) 029 C) -114 D) 033
分析:选项A)以0x开头是十六进制数,选项B)虽然是0开头,但出现了数字9,选项C)是十进制数。
本题正确答案为D。
5.下面四个选项中,均是合法实数的选项是【 】。
A) 2e-4.2 B)-0.50 C) 0.2e-.5 D)-e5
分析:实数有两种表示形式:小数形式和指数形式,小数形式必须有小数点,指数形式中,字母e之前必须有数字,e之后必须是整数。选项A)中的"2e-4.2",选项C)中的"0.2e-.5",选项D)中的"-e5"均是不合法的。
本题正确答案为B。
6.C语言中,字符型数据在内存中存储形式是【 】。
A) 原码 B) 反码 C) 补码 D) ASCII码
分析:C语言中int型数据是以补码形式存放的,字符型数据是以ASCII码形式存放的。
本题正确答案为D。
7.下列正确的字符型常量是【 】。
A) "a" B) ′\\\\′ C) "\\r" D) 277
分析:字符常量的定义是用单引号括起来的一个字符,A和C的定界符不对,D超过了char型数据的表示范围,′\\\\′是转义字符。
本题正确答案为B。
8.若有说明语句char ch1=′\\x41′;则ch1【 】。
A) 包含4个字符 B) 包含3个字符 C) 包含2个字符 D) 包含1个字符
分析:"\\x41"中的"41"是十六进制数,即十进制的65,题中ch1存放的65是字母"A"的ASCII码。
本题正确答案为D。
9.下列程序段输出的字符串长度为【 】。
printf("\\\\aaa\\′ccc\\bddd\\"");
A) 11 B) 12 C) 13 D) 17
分析:\\\\、\\′、\\b和\\"为转义字符,程序输出结果为:\\aaa′ccddd"。
本题正确答案为A。
10.下列运算符中,要求运算对象必须是整数的是【 】。
A) / B) * C) % D) !
分析:题目中"/"、"*"、"!"的运算对象既可以整数,也可以是实数,只有取余数运算符"%"要求运算对象必须是整数。
本题正确答案为C。
11.下面合法的赋值语句是【 】。
A) x+y=2002; B) ch="green"; C) x=(a+b)++; D) x=y=0316;
分析:赋值号左端不能为表达式,选项A)是错的;赋值号不能将字符串赋给某个变量,选项B)也是错的;增量运算符“++”不能用于表达式,选项C)也是错的。
本题正确答案为D。
12.已知a为int型,b为double型,c为float型,d为char型,则表达式a+b*c-d/a结果的类型为【 】。
A) int 型 B) float型 C) double型 D) char型
分析:不同类型数据混合运算的转换规律是:运算前float型数据会自动转换为double型,char型数据会自动转换为int型。运算时int型数据和double型数据要先化为相同类型,即double型,运算结果也为double型。
本题正确答案为C。
13.执行以下程序段后的输出结果是【 】。
int x=0xcde;
printf("M,%4o,%4x\\n",x,x,x);
A) 3294,6336,cde B) 3294,6336,xcde C) 3294,06336,0xcde D) 3294,6336,0cde
分析:0xcde是十六进制数,写成二进制数形式为:1100 1101 1110,按八进制送出时,是从右向左3位二进制数写成1位,按十六进制形式送出时,是从右向左4位二进制数写成1位。
本题正确答案为A。
14.下面的程序运行后输出为【 】。
#include
#include
main( )
{ int a,b;
float c;
b=5;c=6;c=b+7;b=c+1;
a=sqrt((double)b+c);
printf("%d,%f,%d",a+6,c,b);
}
A) 11.000000,12.000000,13.000000
B) 11.000000,12.000000,13
C) 11.0000000,12,13
D) 11,12.000000,13
分析:C语言允许将一种类型的数据赋给另一种类型的变量,但是变量的类型并不会因为赋值而发生改变,如本题中将b+7,即12赋给float型变量c,c值应为12.000000而不是整数12,同样a=sqrt((double)b+c),赋值号右边是双精度数,但由于a是整形变量,故a的值为5。
本题正确答案为D。
15.执行以下程序后x的值为【 】。
unsigned int x=65535;
printf("%d\\n",x);
A) 65535 B) 1 C) 有错误 D) -1
分析:题中将x定义成无符号整数,并且已初始化为:1111111111111111,若按%d格式输出,则最高位的1被当成了符号,1111111111111111成了负数的补码,输出结果为-1。
本题正确答案为D。
二、填空题
1.下面程序段的功能是输出大写字母对应的小写字母的ASCII码,请填空。
char ch;
scanf("%c",&ch);
ch=(ch>=′A′&&ch<=′Z′)?(【1】):ch
printf("【2】\\n",ch);
分析:题目中条件运算为判断输入字母是否为大写,当ch>=′A′&&ch<=′Z′为真时,将其转换成对应的小写字母,需ASCII码值加上32,已知题意是将大写字母对应的小写字母ASCII值输出,所以printf语句中的输出格式应为十进制格式。
本题正确答案为 【1】 ch+32, 【2】 %d。
2.下面程序段的执行结果是x=【3】,y=【4】。
inta=3,b=5,x,y;
x=a+1,b+6;
y=(a+1,b+6);
printf("x=%d,y=%d",x,y);
分析:此题考查逗号表达式的概念,因逗号运算符的优先级比赋值号还低,所以执行x=a+1,b+6时,x得到的是a+1的值。
本题正确答案为 【3】 4, 【4】 11。
3.下面程序执行后k的值为【5】。
int a=1,b=2,c=3,d=4,k;
k=a>b?a:c>d?c:d
分析:因题中a>b的值为假,故求解表达式k=a>b?a:c>d?c:d相当于求k=a>b?a:(c>d?c:d)。
本题正确答案为 【5】 4。
4.已知:int a=5;则执行a+=a-=a*a;语句后,a的值为【6】。
分析:a+=a-=a*a的运算顺序是从右向左,相当于求a+=(a-=a*a),其中小括号内的运算得a=5-5*5即a=-20,下一步再求a+=a,即a=a+a,将-20代入得a=-40。
本题正确答案为 【6】 -40。
5.下面程序的运行结果是x=【7】,y=【8】。
main( )
{ float x=4.9;int y;
y=(int)x;
printf("x=%f,y=%d",x,y); }
分析:强制类型变换并不改变x的原值,x仍为4.9,而变换得到的是中间结果,此题将中间结果赋给了y,另外注意是舍弃小数部分,而不是四舍五入。
本题正确答案为 【7】 4.900000 【8】 4。

试题四
一、单项选择题
1.对if语句中表达式的类型,下面正确的描述是【 】。
A) 必须是关系表达式
B) 必须是关系表达式或逻辑表达式
C) 必须是关系表达式或算术表达式
D) 可以是任意表达式
分析:C语言中if语句的表达式可以是任意类型,只要表达式的值非0就算作真,是0就作为假。
本题正确答案为D。
2.多重if_else语句嵌套使用时,寻找与else配套的if方法是【 】。
A) 缩排位置相同的if
B) 其上最近的if
C) 下面最近的if
D) 同行上的if
分析:多重if_else嵌套时,else总是与它上面最近的if配对。
本题正确答案为B。
3.以下错误的if语句是【 】。
A) if(x>y) z=x;
B) if(x==y) z=0;
C) if(x!=y) printf("%d",x) else printf("%d",y);
D) if(x
分析:选项C)中的第一个printf语句后面丢了分号,所以是错误的。
本题正确答案为C。
4.以下判断两个字符串相等的正确方法是【 】。
A) if(str1=str2)
B) if(str1==str2)
C) if(strcpy(str1,str2)=0)
D) if(strcmp(str1,str2)==0)
分析:选项A)中用了赋值号,显然是错误的,选项C)中的字符串拷贝函数strcpy不能比较大小,选项B)中的"=="号也不具有串比较功能,比较两个字符串的大小应用字符串比较函数。
本题正确答案为D。
5.执行下面程序的正确结果是【 】。
main( )
{ float a=1.9;
switch(a)
{ case 0: printf("0000");
case 1: printf("1111");
case 2: printf("2222");
}
printf("%f",a);
}
A) 1.900000
B) 111122221.900000
C) 22221.900000
D) 0000111122221.900000
分析:题中定义了单精度实数a,所以最下面的printf语句输出有6位小数,另外C语言在判断switch表达式的值时,是按整型数据处理的(但不4舍5入),所以程序是从case 1处开始执行的,因没有break语句,接着会执行case 2。
本题正确答案为B。
6.以下程序的输出为【 】。
main( )
{ int a=20,b=30,c=40;
if(a>b) a=b,
b=c;c=a;
printf("a=%d,b=%d,c=%d",a,b,c);

希望对你有所帮助!!! 也希望能赏点分!!!谢谢

6. c语言计算机二级考试选择题如图

全国计算机二级考试试题题库(附答案)
下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项在答题
卡相应位置上涂黑,答在试卷上不得分。
(1) 应用软件是指
A) 所有能够使用的软件 B) 能被各应用单位共同使用的某种软件
C) 所有微机上都应使用的基本软件 D) 专门为某一应用目的而编制的软件
(2) 下列述叙中错误的是
A) 计算机要经常使用不要长期闲置不用
B) 为了延长计算机的寿命,应避免频繁开关计算机
C) 在计算机附近应避免磁场干扰
D) 计算机用几小时后,应关机一会儿再用
(3) 下列字符中,ASCII码值最小的是
A) A B) a C) Z D) x
(4) 用晶体管作为电子器件制成的计算机属于
A) 第一代 B) 第二代 C) 第三代 D) 第四代
(5) 下列各不同进制的四个无符号数中,最小的数是
A) ()2 B) (37)8 C) (75)10 D) (2A)16
(6) 二进制数转换成十六进制数是
A) B) C) D)
(7) 下列各无符号十进制数中,能用八位二进制表示的是
A) 296 B) 333 C) 256 D) 199
(8) 计算机的软件系统可分类为
A) 程序与数据 B) 系统软件与应用软件
D) 操作系统与语言处理程序 D) 程序、数据与文档
(9) 486机中的CPU同时能处理的二进制位数为
A) 8 B) 16 C) 32 D) 64
(10) 在使用计算机的过程中,需要重新启动DOS,则要
A) 按Ctrl+Break键 B) 按^C键 C) 按Ctrl+Alt+Del键 D) 按^H键
(11) 现要从软盘启动DOS(软盘中已存有DOS系统),设有如下一些操作:①打开计算机
电源;②将该软盘插入A驱动器;③关好A驱动器门。则冷启动的操作顺序应为
A) ①→②→③ B) ③→②→① C) ②→①→③ D) ②→③→①
(12) 设当前盘中某一文件路径为\A\C\B\,当前目录为\A。下列命令中错误的是
A) CD.. B) RD \A\C\B
C) TYPE \A\C\B\ D) TYPE C\B\
(13) 设当前盘中的根目录下有一子目录AB,在子目录AB下有一文件。现要查看文件
的内容,应使用命令
A) TYPE \AB B) TYPE \AB\
C) TYPE \ D) DIR \AB\
(14) 自动批处理文件必须放在
A) C盘根目录中 B) A盘根目录中
C) 启动盘的任一个目录中 D) 启动盘的根目录中
(15) 设当前盘当前目录为C:\USER\XY\P,且当前盘当前目录为空,则下列命令中能正
确执行的是
A) RD C:\USER\XY\P B) RD USER\XY\P
C) MD \USER\XY\P\USER D) MD \USER\XY\P\X\Y
(16) 下列DOS命令中,合法的是
A) DISKCOMP B) TYPE >>
C) COMP A: B: D) COMP A: A:
(17) 设当前盘为C盘,所用的所有软盘已格式化,且容量相同,则下列DOS命令中错
误的是
A) DISKCOPY A: A: B) COPY A:*.* C) COPY *.* D) COPY A:*.* C:
(18) 下列DOS命令中错误的是
A) TYPE >PRN B) TYPE PRN
C) COPY *.TXT PRN D) COPY CON PRN
(19) 下列四组DOS命令中,互相等价的一组是
A) COPY A:*.* B:与DISKCOPY A: B:
B) COPY +与TYPE >>
C) COPY + 与COPY +
D) TYPE *.FOR>CON与COPY *.FOR CON
(20) 设C盘目录结构如下:
且C盘根目录下文件的内容为
CD FORTRAN
CD \TC
如果在A驱动器中插入一张根目录中只有扩展名为.C的若干文件(即A盘中无DOS系统
文件)的软盘片,则由C盘启动DOS系统后,第一次键入下列命令中,正确的是
A) COPY A:\*.C B) COPY A:\*.C TC
C) COPY A:\*.C FORTRAN D) CD USER
(21) C语言提供的合法的数据类型关键字是
A) Double B) short C) integer D) Char
(22) 在C语言中,合法的长整型常数是
A) 0L B) 4962710 C) D)
(23) 表达式:10!=9的值是
A) true B) 非零值 C) 0 D) 1
(24) 合法的C语言中,合法的长整型常数是
A) '\t' B) "A" C) 65 D) A
(25) 若有说明和语句:
int a=5;
a++;
此处表达式a++的值是
A) 7 B) 6 C) 5 D) 4
(26) 在下列选项中,不正确的赋值语句是
A) ++t; B) n1=(n2=(n3=0)); C) k=i==j; D) a=b+c=1;
(27) 若有说明:int i,j=7, *p=&i;,则与i=j;等价的语句是
A) I= *P; B) *P=*&J; C) i=&j; D) i=* *p;
(28) 不能把字符串:Hello!赋给数组b的语句是
A) char b[10]={'H','e','l','l','o','!'};
B) char b[10];b="Hello!";
C) char b[10];strcpy(b,"Hello!");
D) char b[10]="Hello!";
(29) 若有以下说明:
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
char c='a',d,g;
则数值为4的表达式是
A)a[g-c] B)a[4] C)a['d'-'c'] D)a['d'-c]
(30) 若有以下说明:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为6的表达式是
A) *p+6 B) *(p+6) C) *p+=5 D) p+5
(31) 若有以下说明:
int w[3][4]o={{0,1},{2,4},{5,8}};
int(*p)[4]=w;
则数值为4的表达式是
A) *w[1]+1 B) p++,*(p+1) C) w[2][2] D) p[1][1]
(32) 若程序中有下面的说明和定义
struct abc
{int x;char y;}
struct abc s1,s2;
则会发生的情况是
A) 编译进错 B) 程序将顺利编译`连接`执行
C) 能顺利通过编译`连接`但不能执行 D) 能顺利通过编译`但连接出错
(33) 能正确表示a≥10或a≤0的关系表达式是
A)a>=10 or a<=0 B)a>=10│a<=0
C)a>=10││a<=0 D)a>=10 ││a<=0
(34) 下面程序的输出是
main()
{ int x=3,y=6,a=0;
while(x++!=(y+=o1))
{ a+o=1;
if(y
#include
main()
{ char ss[10]="12345";
strcat(ss,"6789");
gets(ss);printf("%s\n",ss);
}
A) ABC B) ABC9 C) 123456ABC D) ABC456789
(35) 下面程序的输出是
main()
{ char *a="";
int v1=0,v2=0,v3=0,v4=0,k;
for(k=0;s[k];k++)
switch(s[k])
{ default:v4++;
case '1': v1++;
case '3': v3++;
case '2': v2++; }
printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4); }
A) v1=4,v2=2,v3=1,v4=1 B) v1=4,v2=9,v3=3,v4=1
C) v1=5,v2=8,v3=6,v4=1 D) v1=8,v2=8,v3=8,v4=8
(36) 下面程序的输出是
main()
{int k=11;printf("k=%d,k=%o,k=%x\n",k,k,k);}
A)k=11,k=12,k=11 B)k=11,k=13,k=13 C)k=11,k=013,k=0xb D)k=11,k=13,k=b
(37) 若有以下程序段,w和k都是整型变量:

w=k;
LB: if(w==0) go to LE;
w--;
printf("*");
goto LB;
LE: ┆
则不能与上面程序段等价的循环语句是
A)for(w=k;w!=0;w--) printf("*"); B)for(w=k;w;--w)printf("*");
C)w=k; D)w=k;
while(w--!=0)printf("*");w++; do{ w--;printf("*");}while(w!=0);
(38) 若有说明,double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是
A)*p=&a; scanf("%lf",p); B)p=(double *)malloc(8);scanf("%f",p);
C) p=&a;scanf("%lf",a); D)p=&a; scanf("%le",p);
(39) 当执行下面程序且输入:ABC时,输出的结果是
#include
#include
main()
{ char ss[10]="12345";
gets(ss);printf("%s\n",ss); }
A) ABC B) ABC9 C) 123456ABC D) ABC456789
(40) 若有以下的说明和语句:
main()
{int t[3][2], *pt[3],k;
fpr(k=o; k<3;k++)pt[k]=t[k];
}
则以一选项中能正确表示t数组元素地址的表达式是
A) &t[3][2] B) *pt[0] C) *(pt+1) D) &pt[2]
(41) 下面程序输出数组中的最大值,由s指针指向该元素.
main()
{ int a[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s;
flr(p=a, s=a; p-a<10; p++)
if(---?---)s=p;
printf("The max:%d",*s):
}
则在if语句中的判断表达式应该是
A) p>s B) *p>*s C) a[p]>a[s] D) p-a>p-s
(42) 下面程序的输出是
#include
main()
{ char*a="abcdefgh";
fun(a);puts(a); }
fun (char * s)
{ int x=0,y;char c;
for(y=strlen(s)-1;x
A)abcdefgh B)hgfdecba C)dcbahgfe D)hgfedcba
(43) 若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句
中实参的个数是
A)3 B)4 C)5 D)6
(44) 下面程序的输出是
main()
{ int t=1; fun(fun(t));}
fun(int h)
{ static int a[3]={1,2,3};
int k;
for(k=0;k<3;k++) a[k]+=a[k]-h;
for(k=1;k<3;k++) printf("%d",a[k]);
printf("\n"); return(a[h]);}
A)1,2,3, B)1,3,5, C) 1,3,5, D) 1,3,5,
1,5,9, 1,3,5, 0,4,8, -1,3,7,
(45) C语言中,函数的隐含存储类别是
A)auto B)static C)extern D)无存储类别
(46) 下面程序的输出是
int w=3;
main()
{ int w=10; printf("%d\n",fun(5)*w); }

7. 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

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

这里有一份最全的考研历年真题资料分享给你

链接:

提取码:w2wt

通过不断研究和学习历年真题,为考生冲刺阶段复习提分指点迷津,做真题,做历年真题集,对照考纲查缺补漏,提高实战素养,制定做题策略,规划方向;

若资源有问题欢迎追问!

9. 国家计算机二级c语言机试题库

今年最新版的二级C题题库 已经发给你了 注意查收啊 祝你考试顺利通过! 题目的前一百题是题库 后面的几十题是补充的一些常见题型归类。