2018计算机二级C语言考试真题汇总
20183月全国计算机等级考试二级C语言上机题库100套(光碟拷贝版)
2018年3月全国计算机等级考试二级C语言上机题库100套(从光碟拷贝出来的最完整版)(可以拷贝在U盘里,然后ctrl+F搜索,百分百有答案,祝考试成功)第一套1. 程序填空给定程序中,函数fun的功能是:计算下式前n 项的和作为函数值返回。
例如:当形参n的值为10 的时,函数返回:9.6125588。
第一处s=0;第二处for(i=1;i<=n;i++)第三处s=s+(2.0*i-1)*(2.0*i+1)/(t*t);2. 程序修改给定程序MODI1.C中函数fun的功能是:统计substr所指字符串在str所指字符串中出现伯次数。
/**found**/for(i=0;str[i];i++)/**found**/if(substr[k+1]==’\0’)3. 程序设计请编写一个函数fun,它的功能是:根据以下公式求JI的值(要求满足精度0.0005,即某项小于0.0005时停止送代):程序运行后,如果输入精度为0.0005,则程序输出为3.14…。
double fun(double eps){ double s=1,t=1./3;int n=1;while(t>=eps){s+=t;n++;t=t*n/(2.0*n+1);}return(s*2.0);}第二套1.程序填空给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。
函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。
第一处free(q);第二处q=p->next;第三处q=q->next;2. 程序修改给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n各元素按从小到大的顺序进行排序。
/**found**/p=j;/**found**/p=i;3. 程序设计请编写一个fun函数,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
2018二级C南开100题编程题
1: 第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。
答案:int fun(int score[],int m,int below[]){int i,k=0,aver=0;for(i=0;i<m;i++)aver+=score[i];aver/=m;for(i=0;i<m;i++)if(score[i]<aver){below[k]=score[i];k++;}return k;}第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。
答案:void fun(int *a, int *n){int i,j=0;for(i=2;i<1000;i++)if ((i%7==0 || i%11==0) && i%77!=0)a[j++]=i;*n=j;}3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
答案:void fun(int x, int pp[ ],int *n){int i=1,j=0;k=0,*t=pp;for(i=0;i<=x;i++)if(i%2!=0){t[j]=I;j++;}for(i=0;i<j;i++)if(x%t[i]==0){pp[k]=t[i];k++;}*n=k;}第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。
答案:void fun(char *tt, int pp[]){int i;for (i=0;i<26;i++)pp[i]=0;while (*tt){switch (*tt){case ‘a’: pp[0]++;break;case‘b’: pp[1]++;break;case ‘c’: pp[2]++;break;case‘d’: pp[3]++;break;case ‘e’: pp[4]++;break;case‘f’: pp[5]++;break;case ‘g’: pp[6]++;break;case‘h’: pp[7]++;break;case ‘i’: pp[8]++;break;case‘j’: pp[9]++;break;case ‘k’:pp[10]++;break;case ‘l’:pp[11]++;break;case ‘m’:pp[12]++;break;case ‘n’:pp[12]++;break;case ‘o’:pp[14]++;break;case ‘p’:pp[15]++;break;case ‘q’:pp[16]++;break;case ‘r’:pp[17]++;break;case ‘s’:pp[18]++;break;case ‘t’:pp[19]++;break;case ‘u’:pp[20]++;break;case ‘v’:pp[21]++;break;case ‘w’:pp[22]++;break;case ‘x’:pp[23]++;break;case ‘y’:pp[24]++;break;case ‘z’:pp[25]++;break;}tt++;} }5: 第5题请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。
2018年上半年安徽省计算机水平考试二级C语言程序设计真题
2018年上半年全国高等学校(安徽考区)计算机水平考试试卷(二级 C语言程序设计)考生须知:1.请将准考证号末两位填在试卷第3页右上方方框内。
2.不得将试卷及草稿纸带离考场。
3.考试时间为60分钟。
一、程序设计题(每题12分,共36分,将答案填写在相应的下划线处)1、以下程序从键盘输入10个整数,计算并输出其中正数、负数的和。
请填空#include <stdio.h>void main(){int i,num,sum1,sum2;/*sum1存放正数和,sum2存放负数和*/sum1=0;sum2=0;for(i=1;i<=10;i++){scanf("%d",_________);if(__________)sum1=sum1+num;else_____________}printf("%d,%d\n",sum1,sum2);}2、以下程序是求一维数组各元素之和。
请填空。
#include <stdio.h>void main(){int s[10]={1,3,5,7,9,2,4,6,8,10};int i,sum;sum=_____________;for(i=0;i<10;i++)sum+=_________;printf("sum=%d\n",__________);}3、以下程序是把字符串s中所有数字字符按以下规律改写:(1)0、1、2、3、4、5、6、7、8分别对应改成1、2、3、4、5、6、7、8、9;(2)9改成0;(3)其他字符保持不变。
请填空。
#include <stdio.h>void main(){char s[81];int i;gets(________);for(i=0;s[i]!='\0';i++){if(s[i]=='9')s[i]=________;else if(s[i]>='0' &&s[i]<='8')s[i]=__________;}printf("%s\n",s);}二、阅读程序题(每题8分,共32分。
2018年全国计算机等级考试二级C 语言真题及答案1
(14)下列不能定义的用户标识符是()。
A)MainB)_0
C)_intD)sizeof
(15)下列选项中,不能作为合法常量的是()。
A)1.234e04B)1.234e0.4
C)1.234e+4D)1.234e0
(16)数字字符0的ASCII值为48,运行下列程序的输出结果是()。
A)1B)2
C)3D)4
(23)下列程序的输出结果是()。
main( )
{intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<7) if(p[i]%2) j+=p[i]; printf("%d\n",j);
}
A)42B)45
C)56D)60
(24)下列程序的输出结果是()。
main( )
{chara[7]="a0\0a0\0"; inti,j;
i=sizeof(a);
j=strlen(a);
printf("%d%d\n",i,j);
}
A)22B)76
C)72D)62
(25)下列能正确定义一维数组的选项是()。
A)inta[5]={0,1,2,3,4,5};B)chara[ ]={0,1,2,3,4,5};
main( )Байду номын сангаас
{inti=1,j=2,k=3;
if(i++==1&&(++j==3‖k+ +==3)) printf("%d%d %d\n",i,j,k);
2018年国家计算机二级C语言笔试真题及答案解析2
2018年国家计算机二级C语言笔试真题及答案解析(1)一个栈的初始状态为空。
现将元素1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是()。
A)12345ABCDE B)EDCBA54321 C)ABCDE12345 D)54321EDCBA (2)下列叙述中正确的是()。
A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D)循环队列中元素的个数是由队头指针和队尾指针共同决定3)在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。
A)O(n) B)O(n2) C)O(log2n) D)O(n log2n)4)下列叙述中正确的是()。
A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C)顺序存储结构能存储有序表,链式存储结构不能存储有序表 D)链式存储结构比顺序存储结构节省存储空间5)数据流图中带有箭头的线段表示的是()。
A)控制流 B)事件驱动 C)模块调用 D)数据流6)在软件开发中,需求分析阶段可以使用的工具是()。
A)N-S 图 B)DFD 图 C)PAD 图 D)程序流程图7)在面向对象方法中,不属于“对象”基本特点的是()。
A)一致性 B)分类性 C)多态性 D)标识唯一性(8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。
A)一对一 B)一对多 C)多对一 D)多对多(9)在数据管理技术发展的三个阶段中,数据共享最好的是()。
A)人工管理阶段 B)文件系统阶段 C)数据库系统阶段 D)三个阶段相同(10)有三个关系R、S 和T 如下:R S TA B B C A B Cm 1 1 3 m 1 3n 2 3 5由关系R 和S 通过运算得到关系T,则所使用的运算为()。
2018年3月国家二级C语言机试(操作题)真题汇编2(题后含答案及解析)
2018年3月国家二级C语言机试(操作题)真题汇编2(题后含答案及解析)全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.使用VC++2010打开考生文件夹下blank1中的解决方案。
此解决方案的项目中包含一个源程序文件blank1.c。
函数fun的功能是将一个由字符0和1组成的表示二进制数的字符串,转换成相应的十进制整数值返回。
该串长度最大不超过15。
例如,若表示二进制数的字符串为:”10011”,则运行结果应为:10011﹣>19请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在文件BLANK1.C中,不得增行或删行,也不得更改程序的结构!#include<stdio.h>#pragma warning(disable:4996)#define N16/*********found*********/int fun(char【1】){int i,n=0;/*********found*********/for(i=0;【2】;++i)/*********found*********/rl=n*2+(s[i]﹣【3】);return n;}main( ){char num[]=“10011”;int n;n=fun(num);printf(“%s﹣﹣>%d\n”,num,n);}正确答案:(1)s[](2)s[i]!=‘\0’&&i<N(3)48解析:填空1:该函数所接受的参数为字符数组,所以形参也为字符数组,根据函数内所用的字符数组s[i],所以该空填s[]。
答案为s[]。
填空2:访问一个字符数组的所有元素时,当该元素不为字符串结束符’\0’时,继续访问,当访问到字符串结束符’\0’时,表示该字符串结束了,结束循环返回计算结果,因为串的长度最大不超过15,所以定义了一个常量N为16,在for循环的第二个表达式中i<N用来控制其不超过15,当其超过了15位时后面的不做计算,所以该空填s[i]!=‘\0’&&i<N。
2018年计算机二级考试C语言试题及答案(1)
2018年计算机二级考试C语言试题及答案(1)2018年计算机等级考试即将开始,为考生们整理了2018年计算机二级考试C语言试题及答案,希望能帮到大家,想了解更多资讯,请关注小编的及时更新哦。
2018年计算机二级考试C语言试题及答案(1)选择题1). 在软件设计中,不属于过程设计工具的是( )A.PDL(过程设计语言)B.PAD图C.N-S图D.DFD图正确答案:D答案解析:DFD(数据流图Data-Flow-Diagram)是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示。
它直接支持系统功能建模。
在软件详细设计的过程阶段,要对每个模块规定的功能以及算法的设计给出适当的算法描述。
常见的过程设计工具有:图形工具:程序流程图,N-S,PAD,HIPO;表格工具:判定表;语言工具:PDL(伪码)。
2). 数据结构中,与所使用的计算机无关的是数据的( )。
A.存储结构B.物理结构C.逻辑结构D.线性结构正确答案:C答案解析:数据的逻辑结构反映的是数据元素之间的逻辑关系,与使用的计算机无关。
3). 设有定义: int x=2; 以下表达式中,值不为6的是( )A.2*x, x+=2B.x++,2*xC.x*=(1+x)D.x*=x+1正确答案:A答案解析:本题考查逗号表达式。
逗号表达式的求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值,因此,选项A中值为4;选项B中,值为6。
选项C中x*=x+1 等价于x=x*(x+1),所以等于6;选项D与选项C等价,结果也为6。
4). 在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为( )A.63B.64C.6D.7正确答案:B答案解析:顺序查找又称顺序搜索。
顺序查找一般是指在线性表中查找指定的元素,其基本方法是:从线性表的第一元素开始,依次将线性表中的元素与被查找的元素进行比较,若相等则表示找到(即查找成功),若线性表中所有元素都与被查元素进行了比较但都不相等,则表示线性表中没有要找的元素(即查找失败)。
二级C语言机试(操作题)2018年3月真题汇编1及答案解析
if(x[i]>avg)
{
/*********found*********/
【2】+=x[i];
k++;
}
/*********found*********/
return【3】;
}
main()
{double score[12]={50,60,70,80,90,100,55,65,75,85,95,99};
fprintf(fp,"%d\n",n);
for(i=0;i<n;i++)
fprintf(fp,"%d\n",result[i]);
fclose(fp);
}
_______
上一题交卷
交卷
答题卡
答案及解析
(1/1)程序填空题
第1题
使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。函数fun根据所给n名学生的成绩,计算出所有学生的平均成绩,把高于平均成绩的学生成绩求平均值并返回。
)
/*********found*********/
s3[j﹣1]=´\0´;
}
void main()
{char s1[128],s2[128],s3[255];
printf("Please input string1:");
gets(s1);
printf("Please 2nput str2ng2:");
double aa;
aa=fun(score,12);
printf("%f\n",aa);
二级C语言机试(操作题)2018年3月真题汇编2及答案解析
/*********found*********/
int fun(char【1】)
{int i,n=0;
/*********found*********/
for(i=0;【2】;++i)
/*********found*********/
rl=n*2+(s[i]﹣【3】);
return n;
#define N16
/*********found*********/
int fun(char【1】)
{int i,n=0;
/*********found*********/
for(i=0;【2】;++i)
/*********found*********/
rl=n*2+(s[i]﹣【3】);
return n;
{
Struct BITS res;
/*在这里将函数代码补充完整*/
}
main()
{struct BITS a;
void NONO();
int i=0,n=0;
for(i=32;i<100;i++)
{n=i*i;
a=fun(n);
if(a.m3<a.m2&&a.m2<a.m1&&a.m1<a.m0)
printf("No.is%d\n",n);
例如,若表示二进制数的字符串为:"10011",则运行结果应为:10011﹣>19
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在文件BLANK1.C中,不得增行或删行,也不得更改程序的结构!
2018年国家计算机二级C语言笔试真题及答案解析
2018年国家计算机二级C语言笔试真题及答案解析#include <stdio.h>main(){int x;scanf(“%d”,&x);if(x<=3); elseif(x!=10)printf(“%d\n”,x);} 程序运行时,输入的值在哪个范围才会有输出结果A)不等于10的整数B)大于3且不等于10的整数C)大于3或等于10的整数D)小于3的整数(19)有以下程序#include<stdio.h>Main(){ int a=1,b=2,c=3,d=0;if(a= =1 &&b++= =2)if(b!=2 || c--!=3)printf(“%d,%d,%d\n”,a,b,c);else printf(“%d,%d,%d\n”,a,b,c);else printf(“%d,%d,%d\n”,a,b,c);} 程序运行后的输出结果是A)1,2,3 B)1,3,2 C)1,3,3 D)3,2,1(20)以下程序中的变量已正确定义for(i=0;i<4;i++,i++for(k=1;k<3;k++);printf(*”); 程序段的输出结果是A)******** B)**** C)** D)*(21)有以下程序#include<stdio.h>main(){char*s=(“ABC);do{printf(“%d”,*s%10);s++;}while(*s);} 注意,字母A的ASCII码值为65。
程序运行后的输出结果是A)5670 B)656667 C)567 D)ABC(22)设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是A)n=0;while((ch=getchar())!=’\n’)n++; B) n=0;while(getchar()!=’\n’)n++; C)for(n=0; getchar()!=’\n’;n++); D)n=0;for(ch=getchar();ch!=’\n’;n++);(23)有以下程序#include<stdio.h>main(){ int a1,a2;char c1,c2;scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);printf(“%d,%c,%d,%c”,&1,c1,a2,c2);}若想通过键盘输入,使得a1的值为12,a2的是为34,c1的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b,则正确的输入格式是(以下代表空格,<CR>代表回车)A)12a34b<CR> C)12,a,34,b<CR>B)12 D)12a a3434 b<CR>b<CR>24)有以下程序#include<stdio.h>int f(int x,int y){return()y-x)*x);}main(){int a=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(“%d\n”,d);} 程序运行后的输出结果是A)10 B)9 C)8 D)7#include<stdio.h>void fun(char*s){while(*s){ if(*s%2==0)printf(“%c”,*s);s++;}}main(){ chara[]={“good”};fun(a);printf(“\n”);}注意:字母a的ASCⅡ码值为97,程序运行后的输出结果是A)d B)go C)god D)good(26)有以下程序#include <stdio.h>void fun( int *a,int *b){int *c;c=a;a=b;b=c;}main(){int x=3,y-5,*P=&x,*q=&y;fun(p,q);printf(“%d,%d,”,*p,*q);fun(&x,&y);printf(“%d,%d\n”,*p,*q);} 程序运行后的输出结果是A)3,5,5,3 B)3,5,3,5 C)5,3,3,5 D)5,3,5,3(27)有以下程序#include <stdio.h>viod f(int *p,int *q);main(){ int m=1,n=2,*r=&m;f(r,&n);printf(“%d,%d”,m,n);}void f(int *p,int *q){p=p+1;*q=*q+1;}程序运行后输出的结果是A)1,3 B)2,3 C)1,4 D)1,2(28)以下函数按每行8个输出数组中的数据void fun( int *w,int n){ int i;for(i=0;i<n;i++){_________________printf(“%d”,w);}printf(“\n”);} 下划线处应填入的语句是A)if(i/8==0)print(“\n”); B) if(i/8==0)continue;C) if(i%8==0)print(“\n”); D) if(i%8==0)continue;(29)若有以下定义 int x[10],*pt=x; 则对x数组元素的正确应用是A)*&x[10] B)*(x+3) C)*(pt+10) D)pt+330)设有定义:char s[81];int i=10;,以下不能将一行(不超过80个字符)带有空格的字符串真确读入的语句或语句组是A) gets(s) B)while((s[i++]=getchar())!=”\n”;s=”\0”;C)scanf(“%s”,s); D)do{scanf(“%c”,&s);}while(s[i++]!=”\n”);s=”\0”;(31)有以下程序#include <stdio.h>main(){ char *a[ ]={“abcd”,”ef”,”gh”,”ijk”};int I;for(i=0;i<4;i++)printf(“%c”,*a);} 程序运行后输出的结果是A)aegi B)dfhk C)abcd D)abcdefghijk32)以下选项中正确的语句组是A)char s[];s=”BOOK!”; B) char *s;s={”BOOK!”}; C)char s[10];s=”BOOK!”; D) char *s;s=”BOOK!”;#include <stdio.h>int fun{int x,int y}{ if(x==y) return(x);else returen((x+y)/2)}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)设函数中有整型变量n,为保证其在未赋值的情况下初值为0,应选择的存储类别是A)auto B) register C)static D)auto或register(35)有以下程序#include <stdio.h>int b=2;int fun(int *k){ b=*k+b;return(b);}main(){ int a[10]={1,2,3,4,5,6,7,8},I;for(i=2;i<4;i++) {b=fun(&a)+b;printf(“%d”,b);}printf(“\n”);}程序运行后输出的结果是A)10 B)8 C)10 D)1012 10 28 1636)有以下程序#include <stdio.h>#define PT 3.5;#define S(x) PT*x*x;mian(){ int a=1, b=2; printf(“%4.1f\n”,S(a+b));}程序运行后输出的结果是A)14.0 B)31.5 C)7.5 D)程序有错无输出结果37)有以下程序#include <stdio.h>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)2,3 C)3,4 D)4,138)设有宏定义:#includeIsDIV(k,n)((k%n==1)?1:0且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&& IsDIV(m,7)为真时所要表达的是 A)判断m是否能被5或者7整除 B)判断m是否能被5和7整除C)判断m被5或者7整除是否余1 D)判断m被5和7整除是否余1(39)有以下程序#include <stdio.h>main(){ int a=5,b=1,t;t=(a<<2|b); printf(“%d\n”,t)}程序运行后的输出结果是 A)21 B)11 C)6 D)1 (40)有以下程序#include <stdio.h>main(){ EILE *f;f=fopen(“filea.txt”,”w”);fprintf(f,”abc”);fclose(f);} 若文本文件filea.txt中原有内容为:hello,则运行以上程序后,文件filea.txt中的内容为A) helloabc B)abclo C)abc D)abchello二、填空题(每空2分,共30分)(1)假设一个长度为50的数组(数组元素的下标从0到49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有【1】个元素。
2018年国家计算机二级C语言笔试真题及答案解析7
2018年国家计算机二级C语言笔试真题及答案解析72018年国家计算机二级C语言笔试真题及答案解析1.以下选项中不符合良好程序设计风格的是什么?A)源程序应该文档化B)数据说明的顺序应该规范化C)避免滥用goto语句D)模块设计应该保证高耦合、高内聚2.从工程管理角度,软件设计一般分为两步完成,它们是什么?A)概要设计与详细设计B)数据设计与接口设计C)软件结构设计与数据设计D)过程设计与数据设计3.下列选项中不属于软件生命周期开发阶段任务的是什么?A)软件测试B)概要设计C)软件维护D)详细设计4.在数据库系统中,用户所见的数据模式是什么?A)概念模式B)外模式C)内模式D)物理模式5.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和什么?A)编码设计B)测试阶段C)运行阶段D)物理设计6.设有如下三个关系表,下列操作中正确的是什么?7.下列叙述中正确的是什么?A)一个算法的空间复杂度大,则其时间复杂度也必定大B)一个算法的空间复杂度大,则其时间复杂度必定小C)一个算法的时间复杂度大,则其空间复杂度必定小D)上述三种说法都不对8.在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为什么?A)63B)64C)6D)79.数据库技术的根本目标是要解决数据的什么问题?A)存储问题B)共享问题C)安全问题D)保护问题10.对下列二叉树进行中序遍历的结果是什么?A)ACBDFEGB)ACBDFGEC)ABDCGEFD)FCADBEG11.下列叙述中错误的是什么?A)一个C语言程序只能实现一种算法B)C程序可以由多个程序文件组成C)C程序可以由一个或多个函数组成D)一个C函数可以单独作为一个C程序文件存在12.下列叙述中正确的是什么?A)每个C程序文件中都必须有一个main()函数B)在C程序中main()函数的位置是固定的C)C程序可以由一个或多个函数组成D)在C程序的函数中不能定义另一个函数13) 错误的是B)double int_。
2018年C语言二级考试及答案
2018年C语言二级考试及答案一、选择题1. 下列关于C语言中变量的描述,错误的是:A. 变量必须先声明后使用B. 变量的声明可以放在程序的任何位置C. 变量的类型决定了它所占用的内存大小D. 变量的声明必须在函数的开始处完成答案:B2. 在C语言中,以下哪个选项不是合法的标识符?A. _sumB. sum$C. 2valueD. sum答案:C3. C语言中,以下哪个选项是正确的字符串定义方式?A. char str[5] = "Hello";B. char str[] = "Hello";C. char str[6] = "Hello";D. char str = "Hello";答案:B4. 关于C语言中的数组,以下哪个说法是错误的?A. 数组名代表数组的首地址B. 数组的大小在定义后不能改变C. 数组的元素可以是不同类型的D. 数组的下标从0开始答案:C5. 在C语言中,以下哪个选项是正确的函数定义?A. int add(int a, int b);B. int add();C. int add(int a, int b) {}D. int add(int a, int b) { return a + b; }答案:D二、填空题1. 在C语言中,使用____关键字可以定义一个整型变量。
答案:int2. 字符串"Hello"在内存中所占的字节数是____。
答案:63. 若定义一个二维数组int arr[3][4],则该数组的元素总数为____。
答案:124. 在C语言中,使用____运算符可以实现逻辑与操作。
答案:&&5. 若变量a的值为5,b的值为10,则表达式a++ + b的值为____。
答案:15三、编程题1. 编写一个C语言程序,实现计算并输出两个整数的和。
```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:");scanf("%d %d", &a, &b);sum = a + b;printf("两数之和为:%d\n", sum);return 0;}```2. 编写一个C语言程序,实现判断输入的年份是否为闰年,并输出结果。
2018计算机二级C语言考试真题汇总
模拟卷11[填空题]下列给定程序中,函数fun的功能是:在形参S所指字符串中寻找与参数C相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。
例如,若s所指字符串为“baacda”,c中的字符为a,执行后S所指字符串为“baaaacdaa"。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出止确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!试题程序:•Include<stdio.h>void fun(char•s・char c)(int n;/••••••••♦found•••••♦••♦/for11"0;s[i]!•(1J;£)if(S(1]••€)I/•••••••••found•••••••••/n-[21;whi!•(s[i1n]!n;for(j•1>n1;J>i;j—>j*1]•••found•••••••••/»[j*i]-Lil;main()<char s[80]-"baacda",c;print!("Vrthe string:ta'n",#);printf(Fnlnput a character:"I;scarf("lc",4C);fun( ,c);print f("'nThe r»sult is:参考解析:【参考答案】(I)'W(2)0【解题思路】填空L for语句循环条件是判断是否到达字符串结尾,即当前字符是否为填空2:while语句用以确定字符串的长度,所以变量n赋初值为0。
填空3:题目要求如果找到与参数c相同的字符,就在后面插入一个相同的字符,且找到后应该给数组元素赋值,本题目给出参数为c.二、程序修改题2[简答题]下列给定程序中函数fun的功能是:逐个比较p、q所指两个字符串对应位置上的字符,并把ASCII 值大或相等的字符依次存放到c所指的数组中,形成一个新的字符串.例如,若主函数中a字符串为“aBCDeFgH",b字符串为"Abed",则c中的字符串应为“aBcdeFgH”。
二级C语言机试(操作题)2018年3月真题汇编1及答案解析
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在文件BLANK1.C中,不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
fprintf(fp,"%d\n",n);
for(i=0;i<n;i++)
fprintf(fp,"%d\n",result[i]);
fclose(fp);
}
_______
上一题交卷
交卷
答题卡
答案及解析
(1/1)程序填空题
第1题
使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。函数fun根据所给n名学生的成绩,计算出所有学生的平均成绩,把高于平均成绩的学生成绩求平均值并返回。
#pragma warning(disable:4996)
void fun(char*s1,char*s2,
char*s3)
{int i,j;
/*********found*********/
for(i=0,j=0;(s1[i]!=´\0´)&&(s2[i]!=´\0´);i++,j=j+1)
{s3[j]=s1[i];
例如,当s1为:"123456789",s2为:"abcdefghijk"时,
输出结果应该是:1a263c4d5e6t7g8h9ijk
请改正函数fun中指定部位的错误,使它能得出正确的结果。
计算机二级C语言2018年试题及答案
计算机二级C语言2018年试题及答案一、选择题1. 在C语言中,下面哪个选项是正确的定义一个整型变量的语句?A. int a;B. int a[];C. int a[10];D. int a(10);答案:A2. 下列关于C语言函数的描述中,错误的是?A. 函数可以没有返回值B. 函数可以有多个返回值C. 函数可以有多个参数D. 函数可以嵌套定义答案:D二、填空题1. 在C语言中,表示逻辑“与”操作的运算符是______。
答案:&&2. 若有定义 int a[10], *p=a; 则*(p+5)表示数组的第______个元素。
答案:6三、编程题1. 编写一个C语言程序,实现输入一个整数,输出该整数的绝对值。
```c#include <stdio.h>#include <stdlib.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num < 0) {num = -num;}printf("该整数的绝对值是:%d\n", num);return 0;}```2. 编写一个C语言程序,实现输入一个字符串,然后输出该字符串的逆序。
```c#include <stdio.h>#include <string.h>int main() {char str[100];printf("请输入一个字符串:");gets(str);int len = strlen(str);for (int i = len - 1; i >= 0; i--) {printf("%c", str[i]);}printf("\n");return 0;}```四、简答题1. 请简述C语言中指针和数组的关系。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模拟卷 11[ 填空题]下列给定程序中,函数 fun 的功能是:在形参 S 所指字符串中寻找与参数 C相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。
例如,若 s 所指字符串为“ baacda”, c 中的字符为 a,执行后 S 所指字符串为“ baaaacdaa ”。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!试题程序:参考解析:【参考答案】【解题思路】填空 1:for语句循环条件是判断是否到达字符串结尾,即当前字符是否为‘\0 ’。
填空 2:while语句用以确定字符串的长度,所以变量n 赋初值为 0。
填空 3:题目要求如果找到与参数 c 相同的字符,就在后面插入一个相同的字符,且找到后应该给数组元素赋值,本题目给出参数为 c。
二、程序修改题2[ 简答题]下列给定程序中函数 fun 的功能是:逐个比较 p、q 所指两个字符串对应位置上的字符,并把 ASCII 值大或相等的字符依次存放到 c 所指的数组中,形成一个新的字符串。
例如,若主函数中 a 字符串为“aBCDeFgH”,b 字符串为 "Abcd" ,则 c 中的字符串应为“aBcdeFgH”。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODl1.C中,不得增行或删行,也不得更改程序的结构!参考解析:【参考答案】(1)int k=0;(2)while(*p||*q)【考点分析】本题考查:变量初始化,需根据题意确定变量含义,然后对其进行初始化操作;while循环语句。
【解题思路】(1) 变量 k 存放数组 e 的下标,因此应初始化为0。
(2)while循环语句的循环条件是判断两个字符串是否到达结尾。
三.程序设计题3[ 简答题]规定输入的字符串中只包含字母和* 号。
请编写函数fun ,其功能是:将字符串尾部的* 号全部删除,前面和中间的 * 号不动。
例如,字符串中的内容为:“****A*BC*DEF*G*******”.删除后,字符串中的内容应当是:“****A*BC*DEF*G ”。
在编写函数时,不得使用 C 语言提供的字符串函数。
注意:部分源程序在文件 PROG1.C中。
请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。
参考解析:【参考答案】【考点分析】本题考查:删除字符串尾部+号; 删除的主要思想是把不删除的字符保留起来。
【解题思路】对于一个字符串要删除其尾部的* 号,只需要在最后一个不是* 号的字符后面加上结束符号‘\0 ’。
具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为* 号,直到找到非* 号字符为止,最后在该字符后面加上结束符号‘\0 ’。
模拟卷 2一、程序填空题1[ 填空题]下列给定程序中,函数fun 的功能是:从形参ss 所指字符串数组中,删除所有串长超过k 的字符串,函数返回剩余字符串的个数。
ss 所指字符串数组中共有N 个字符串,且串长小于M。
请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!参考解析:【参考答案】(1)N(2)k(3)ss[i]【考点分析】本题考查: for 循环语句 ;if语句条件表达式;字符串拷贝函数strepy的使用。
【解题思路】填空 l :for循环语句作用是遍历字符串数组中的每一个字符串,所以循环变量i 的循环条件是i填空 2:题目要求删除串长度小于k 的字符串,所以if条件语句的条件表达式是len<=k 。
填空 3:通过字符串拷贝函数将串长不大于k 的字符串另存,并记录个数。
【解题宝典】字符串拷贝函数strcpy ,其格式为: strepy(字符数组名1,字符数组名2)功能:把字符数组 2 中的字符串拷贝到字符数组 l 中。
字符串结束标识‘ \0 ’也一同拷贝。
字符数名2,也可以是一个字符串常量。
这时相当于把一个字符串赋予一个字符数组。
二、程序修改题2[ 简答题]给定程序 MODI1.C中,函数 fun 的功能是:判断输入的任何一个正整数n,是否等于某个连续正整数序列之和。
若是,则输出所有可能的序列,否则输出“不能分解”。
例如:当输入100 时,输出: 100=9+10+11+12+13+14+15+16100=18+19+20+21+22请改正函数fun 中指定部位的错误,使它能得出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。
试题程序:参考解析:【参考答案】(1)m=n;(2)m=m-c;c++;(3)if(m==0)【解题思路】(1) 每次循环,程序需要对n 执行减去连续的正整数序列来判断n是否刚好为0,即 n 是否是连续的正整数序列之和,所以需要使用临时变量 m寄存 n 的值,每次循环对 m执行减运算操作,不满足继续下一轮。
另外,程序声明变量 m时,未初始化它的值,所以此处应该修改为: m=n。
(2)语法错误。
C语言中每个语句必须以分号结束,所以应修改为:m=m-c;c++; 。
(3)题目判断 n 是否是连续的正整数序列之和,若是,则输出所有序列,程序中m依次减去连续的正整数,当 m为 0 时,表示 m(即 11) 满足条件,再输出当前序列中的每个正整数,所以此处判断条件反了,应修改为: if(m==0) 。
3[ 简答题]请编写函数fun ,其功能是:移动一维数组中的内容,若数组中有n 个整数,要求把下标从0~P(含 P,P 小于等于 n-1) 的数组元素平移到数组的最后。
例如,一维数组中的原始内容为:1、2、 3、4、5、6、7、 8、9、10;P 的值为 3。
移动后,一维数组中的内容应为:5、6、 7、8、9、10、1、2、3、 4。
注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的内容,仅在函数fun 的花括号中填入你编写的若干语句。
试题程序:参考解析:【参考答案】【解题思路】本题要求把下标从0~P( 含 P,P 小于等于 n-1) 的数组元素平移到数组的最后,可以根据输入的P 值,通过 for循环语句,将P+1-n-1( 含 n-1) 之间的数组元素依次向前移动P+1 个存储单元,即W[j-1]=w[j]; ,同时将0~P 个数组元素逐一赋给数组w[n-1] ,也就是通过语句w[n-1]=ch; 来实现此操作的。
模拟卷 3一、程序填空题1[ 填空题]给定程序中,函数 fun 的功能是:将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!试题程序:参考解析:【参考答案】【解题思路】填空 1:由语句 fopen("filel.txt","r")可知,fp应该是文件类型指针,因此本空应该填写FILE *。
填空 2:feof函数只能对文件类型数据进行操作,因此本空应填写fp 。
填空 3:putchar()代表输入一个字符,从ch=fgetc(fp)可以看出本题应该填写ch。
二、程序修改题2[ 简答题]给定程序中函数fun 的功能是:首先把 b 所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和 b 所指字符串中的字符,按排列的顺序交叉合并到C所指数组中,过长的剩余字符接在C 所指的数组的尾部。
例如,当 a 所指字符串中的内容为“abcdefg ”,b 所指字符串中的内容为“1234”时, C 所指数组中的内容应为“a4b3c2dlefg ”; 而当 a 所指字符串中的内容为“1234”, b 所指字符串的内容为“ abcdefg ”时, C 所指数组中的内容应该为“192f3e4dcba ”。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件 MODI1.C中,不要改动 main 函数,不得增行或删行,也不得更改程序的结构 !试题程序:参考解析:【参考答案】【解题思路】(1) 由 i 和 j 定义的初始值可知,此处应该判断i 是否小于 j ,所以应改为while(i(2)此处将 if 错写成 If ,这个错误比较简单,但往往不容易发现。
三.程序设计题3[ 简答题]请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠 m 的 k 个素数存入所指的数组中。
例如,若输入17, 5,则应输出 19、23、 29、31、37。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。
试题程序:参考解析:【参考答案】【解题思路】本题主要考查素数的判定方法,如果一个数不能被除了 1 和其自身以外的数整除,则这个数为素数。
本程序使用循环语句控制需要判断的数,在循环体中判断该数是否为素数,若是则存入数组 xx 中。