2020年全国计算机等级考试二级c语言上机精选题库(共80套)
2020年9月全国计算机等级考试二级C语言上机题库(共55套全)
2020年9月全国计算机等级考试二级C语言上机题库(共55套全)第一套1 程序填空给定程序的功能是:从键盘输入若干行文本(每行不得超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。
然后将文件的内容读出显示在屏幕上。
文件的读写分别由自定义函数ReadText和WriteText实现。
第1处void WriteText(FILE*fw)第2处fputs(str,fw);fputs(“\n”,fw);第3处printf(“%s”,str);2 程序修改给定程序MODI1.C中函数fun的功能是:从低位开始取出长整形变量s中奇数位上的数,依次构成一个新数t中。
高位仍在高位,低位仍在低位。
/**found**/void fun(long s,long*t)/**found**/s1=s1*10;3 程序设计函数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);}第二套1 程序填空给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,作为函数值返回。
为便于统计,规定各单词之间用空格隔开。
第1处n++;flag=1;}第2处if(*s= =’’)flag=0;第3处s++;2 程序修改给定程序MODI1.C中函数fun的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver 所指的存储单元中。
/**found**/t+=s[k];/**found**/*aver=ave;3程序设计请编写函数fun,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元。
2020年9月全国计算机等级考试二级C语言上机题库(共60套全)
2020年9月全国计算机等级考试二级C语言上机题库(共60套全)第一套1 程序填空人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。
函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指出的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。
第1处if (std[i].year==year)第2处k[n++]=std[i];第3处return (n);1程序修改给定程序MODI1.C中函数fun的功能是:读入一个整数k(2≤k≤10000)打印它的所有质因子(即所有为素数的因子)。
/**found**/IsPrime (int n)/**found**/if (!(n%i))2程序设计已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中。
请编写给函数fun,函数的功能是:找出成绩最高的学生的记录,通过形参指针传回主函数(规定只有一个最高分),已给出函数的首部,请完成函数。
fun(STU a[],STU *s){int i, max = a[0]. s, j=0;for (i=1; i<N;i++){ if (max<a [i].s) {j=i;max =a[i].s;}*s=a[j];}第二套1程序填空给定程序中,函数fun的功能是:将N×N矩阵主对角线元素中的值与反向对角线对应位置上元素中的值进行交换。
例如:若N=3有下列矩阵:1 2 34 5 67 8 9交换后:3 2 14 5 69 8 7第1处void fun (int t [] [N], int n)第2处for (i=0; i<n; i++)第3处t [i] [n-i-1]=s;2 程序修改由N个有序整数组成的数列已放在一维数组中,给定程序MODI1.C中函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。
若找到,返回其下标值;反之,返回-1.折半查找的基本算法是:每次查找前先确定数组中待查的范围:low 和high(low﹤high),然后把m的值大于中间位置元素中的值,则下一次的查找范围落在中间位置之前的元素中。
计算机二级《C语言》上机操作试题及答案
计算机二级《C语言》上机操作试题及答案计算机二级考试是全国计算机等级考试,四个等级中的一个等级,由教育部考试中心主办,考核计算机基础知识和使用一种高级计算机语言编写程序以及上机调试的基本技能。
下面是店铺收集整理的计算机二级《C语言》上机操作试题及答案,仅供参考,希望能够帮助到大家。
(1)一个栈的初始状态为空。
现将元素1、2、3、4、5、A、B、c、D、E依次入栈,然后再依次出栈,则元素出棱的顺序是( )。
A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.54321EDCBA(2)下列叙述中正确的是( )。
A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定的'(3)在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。
A.0(n)B.D(n2)C.O(1092n)D.0(nl092n)(4)下列叙述中正确的是( )。
A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C.顺序存储结构能存储有序表,链式存储结构不能存储有序表D.链式存储结构比顺序存储结构节省存储空间(5)数据流图中带有箭头的线段表示的是( )。
A.控制流B.事件驱动C.模块调用D.数据流(6)在软件开发中,需求分析阶段可以使用的工具是( )。
A.N—s图B.DFD图C.PAD图D.程序流程图(7)在面向对象方法中,不属于“对象”基本特点的是( )。
A.一致性B.分类性C.多态性D.标识唯一性(8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。
A.一对一B.一对多C.多对一D.多对多(9)在数据管理技术发展的三个阶段中,数据共享最好的是( )。
全国计算机二级《C语言》考试题库与答案
全国计算机二级《C语言》考试题库与答案全国计算机二级《C语言》考试题库与答案在学习、工作中,我们都离不开试题,借助试题可以检验考试者是否已经具备获得某种资格的基本能力。
什么样的试题才能有效帮助到我们呢?以下是店铺为大家收集的全国计算机二级《C语言》考试题库与答案,欢迎大家分享。
全国计算机二级《C语言》考试题库与答案篇1(1)下列关于栈叙述正确的是( )。
A.栈顶元素最先能被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.栈底元素最先被删除(2)下列叙述中正确的是( )。
A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D.以上说法都不正确某二叉树共有7个结点,其中叶子结点只有l个,则该二叉树的深度为(假设根结点在第1层)( )。
A.3B.4C.6D.7软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。
下面属于应用软件的是( ):A.学生成绩管理系统B.c语言编译程序C.UNIX操作系统D.数据库管理系统(5)结构化程序所要求的基本结构不包括( )。
A.顺序结构B.GOT0跳转C.选择(分支)结构D.重复(循环)结构(6)下面描述中错误的是( )。
A.系统总体结构图支持软件系统的详细设计B.软件设计是将软件需求转换为软件表示的过程C.数据结构与数据库设计是软件设计的任务之一D.PAD图是软件详细设计的表示工具(7)负责数据库中查询操作的数据库语言是( )。
A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言一个教师可讲授多门课程,一门课程可由多个教师讲授。
则实体教师和课程间的联系是( )。
A.1:1联系B.1:m联系C.m:1联系D.m:n联系(9)已知大写字母A的ASCIl码值是65,小写字母a的ASCIl码值是97。
以下不能将变量C中的大写字母转换为对应小写字母的语句是( )。
全国计算机等级考试二级C语言上机题库(全)
int i; for(i=1;i<strlen(ss);i+=2) {if(ss[i]>=’a’&&ss[i]<=’z’) ss[i]-=32; } } 第五套 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,它的功能是:根据以下公
for(i=1;i<N;i++) if(max<a[i].s)max=a[i].s; for(i=0;i<N;i++) if(max==a[i].s)b[n++]=a[i]; return n; } 第九套 1. 程序填空 给定程序中,函数 fun 的功能是:计算形参 x 所指数组中 N 个数的平 均值,(规定所有数均为正数),将所指数组中小于平均值的数据移至 数据的前部,大于等于平均数的移至 x 所指数组的后部,平均值作为 函数值返回,在主函数中输出平均值和移动后的数据。 第一处 for(i=0;i<N;i++) av+=x[i]/N 第二处 y[j]=x[i]; x[i]=-1;j++;} 第三处 i++; 2. 程序修改 给定程序 MODI1.C 中函数 fun 的功能是:统计字符串各元音字母 (即:A、E、I、O、U)的个数。注意字母不分大小写。 /**found**/ num[k]=0;
计算机二级c 上机考试题库80题答案
第1套一、填空题给定程序的功能是求1/4的圆周长。
函数通过形参得到圆的直径,函数返回1/4的圆周长(圆周长公式为:L=Πd,在程序中定义的变量名要与公式的变量相同)。
例如:输入圆的直径值:19.527,输出为:15.336457请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句。
#include<stdio.h>double fun(double d){return 3.14159*d/4.0;}main(){double z;printf("Input the d of the round:");scanf("%lf",&z);printf("L=%lf\n",fun(z));}二、改错题下列给定程序中函数fun的功能是:计算正整数m的各位上的数字之积。
例如,若输入202,则输出应该是0。
请修改程序中的错误,得出正确的结果注意:不要改动main函数,不能增行或删行,也不能更改程序的结构#include<stdio.h>#include<conio.h>long fun(long n){long r=1;do{r*=n%10;n/=10;}while(n);return(r);}main(){long m;printf("\nplease enter a number:");scanf("%ld",&m);printf("\n%ld\n",fun(m));}三、编程题请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整初的所有整数放在数组b中,通过n返回这些数的个数。
例如,若传送给m的值为20,则程序输出7 11 14。
请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
计算机二级C语言上机题库及答案(100套)
~计算机二级c 语言上机题库及答案内部资料,切勿外传!.第1 套填空题请补充FUN 函数,FUN 函数的功能是求10 的阶乘。
注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在fun 函数的横线上填入所编写的若干表达式或语句。
试题程序:#include <stdio.h>long fun(int n){if ( 1 )return (n*fun( 2 ));return 3 ;}main(){printf("10!=%ld\n", fun(10));}第1 处填空:n>1 或1<n第2 处填空:n-1第3 处填空:1 或11 或1L改错题下列给定程序的功能是:读入一个整数K(2〈=K〈=10000),打印它的所有因子(即所有为素数的因子)。
例如,若输入整数2310,则应输出:2、3、5、7、11。
请改正程序中的错误,使程序能得出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <conio.h>#include <stdio.h>/********found********/IsPrime(int n);{int i, m;m = 1;/********found********/for (i=2; i<n; i++)if !(n%i){m = 0;break;}return(m);}main(){int j, k;printf("\nplease enter an integer number between 2and 10000:");scanf("%d", &k);printf("\n\nThe prime factor(s) of %d is(are):", k);for (j=2; j<k; j++)if ((!(k%j)) && (IsPrime(j)))printf(" %4d,", j);printf("\n");}第1 处:Isprime(int n);应改为Isprime(int n)第2 处:if !(n%i)应该为if(!(n%i))编程题M 个人的成绩存放在score 数组中,请编写函数fun,它的功能是:返回低于平均分的认输,并将低于平均分的分数放在below 所指的数组中。
(完整word版)国家计算机2级等级考试-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: 第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:第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所指的数组中。
计算机等级二级C语言上机考试题库
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#define N 9int fun(int x[]){ int i,j,k,t,mid,b[N];for(i=0;i<N;I++)&NBSP;B[I]=X[I];for(i=0;i<=N/2;i++){ k=i;for(j=i+1;j<N;J++)&NBSP;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;&NBSP;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;&NBSP;I++)&NBSP;&NBSP;PRINTF("%D&NBSP;",X[I]);printf("\nThe mid data is: %d\n",fun(x));for(i=0; i<N;&NBSP;I++)&NBSP;&NBSP;PRINTF("%D&NBSP;",X[I]);printf("\n");}2、给定程序中,函数fun的功能是建立一个N×N的矩阵。
全国计算机等级考试二级C语言上机考试题库及答案
第1套一、填空给定函数的功能是调用fun 函数建立班级通讯录。
通讯录记录每位学生的编号,姓名和电话号码。
班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为答案yfile5.dat的二进制文件中。
答案:1. STYPE 2. FILE3. fp二、修改先将在字符串s中的字符按正序存放到t串中,然后把s 中的字符按逆序连接到t串后面。
答案:1. for(i = 0 ; i < sl ;i++) 2. t[2*sl] =` 0`; 三、程序将两个两位数的正整数a,答案合并成一个整数放在c中。
合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,答案数的十位和个位数依次放在c数的百位和个位上。
*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10);第2套一、填空从键盘输入若干行文本(每行不超过80个字符),写到文件答案yfile4.txt中,用-1作为字符串输入结束的标记。
然后将文件的内容读出显示在屏幕上。
文件的读写分别有自定义函数ReadText 和WriteText实现。
答案:*fw str str 二、修改从低位开始取出长整形变量s中的奇数位上的数,依次构成一个新数放在t中,高位仍放在高位,低位仍放在低位。
答案:long *t sl =sl*10;三、程序将两个两位数的正整数a,答案合并成一个整数放在c中。
合并的方式:将a数的十位和个位数依次放在c数的千位和十位上,答案数的十位和个位数依次放在c数的百位和个位上。
*c=(b/10)*1000+(a%10)*100+(b%10)*10 +(a/10);第3套一、填空将自然数1~10以及它们的平方根写到名为答案yfile3txt的文本文档中,然后再顺序读出显示在屏幕上。
答案:(1)fp (2)fclose(fp)(3)fname二、修改将n个无序整数从小到大排序。
答案:for(i=j+1;i<n;i++)p=i;三、程序将两个两位数的正整数a,答案合并成一个整数放在c中。
计算机等级考试-二级C语言上机考试题库及答案
1.填空给定程序的功能是调用fun函数建立班级通讯录。
通讯录中记录每位学生的编号,姓名和电话号码。
班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。
请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.c中不得增行或删行,也不得更改程序的结构!void check();/**********found**********/int fun(___1___ *std){/**********found**********/___2___ *fp; int i;if((fp=fopen("myfile5.dat","wb"))==NULL)return(0);printf("\nOutput data to file !\n");for(i=0; i<N; i++)/**********found**********/fwrite(&std[i], sizeof(STYPE), 1, ___3___);fclose(fp);return (1);}修改给定程序MODI1.C中函数fun的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串后面。
例如:当s中的字符串为:“ABCDE”时,则他中的字符串应为:“ABCDEEDCBA”。
请改正程序中的错误,使他能得出正确的结果。
注意:不要改动main函数,不能增行或删行,也不得更改程序的结构!void fun (char *s, char *t){ int i, sl;sl = strlen(s);/************found************/for( i=0; i<=s1; i ++)t[i] = s[i];for (i=0; i<sl; i++)t[sl+i] = s[sl-i-1];/************found************/t[sl] = '\0';}程序函数fun的功能是:将两个两位数的正整数a,b合并成一个整数放在c中。
计算机等级考试二级C语言上机题库(含答案)(精品)
重要说明:本题库为从题中一题一题复制出来工作量大,而且有许多表达式无法在word中快速表示出来(这样会加大工作量)故而省略,或者表达错位,有的地方可能或者肯定会有错,我相信准备参加C语言二级考试的同学应当能够对照参考答案看出来,这是最新版最完整考试题库,相信大家一定都能通过!第一套程序填空给定程序中,函数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的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
2020年全国计算机等级考试二级c语言上机精选题库(共60套)
return((double)r/m);
}
main()
{
int age[N], i, d[M];
FILE *out ;
for(i=0; i<N; i++)
age[i]=(int)(115*rnd());
printf("The original data :\n");
for(i=0; i<N; i++)
}
二、改错题
下列给定程序中,函数fun的功能是:根据整型行参m,计算如下公式的值。
y=
例如,若m=2000,则应该输出:0.000160。
请改正程序中的错误,使它能得出正确的结果。
#include <conio.h>
#include <stdio.h>
/********found********/
fun(int m)
h= a[i];
*s =h;
}
main()
{
STU a[N] =
{
{"A01", 81}, {"A02", 89}, {"A03", 66}, {"A04", 87},
{"A05", 77}, {"A06", 90}, {"A07", 79}, {"A08", 61},
{"A09", 80}, {"A10", 71}
printf((i+1)%10==0?"%4d\n":"%4d",age[i]);
2020年全国计算机等级考试二级c语言上机精选题库(共50套)
2020年全国计算机等级考试二级c语言上机精选题库(共50套)第1套题一、填空题请补充main函数,该函数的功能是:计算每个学生科目的平均分,并把结果保存在数组bb中。
例如,当score[N][M]={{78.5,84,83,65,63},{88,91.5,89,93,95},{72.5,65,56,75,77 }}时,三个学生的平均分为:74.7 91.3 69.1。
仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。
#include <stdio.h>#define N 3#define M 5main(){int i, j;static float score[N][M] ={{78.5, 84, 83, 65, 63},{88, 91.5, 89, 93, 95},{72.5, 65, 56, 75, 77}};float bb[N];for (i=0; i<N; i++)___1___;for (i=0; i<N; i++){for (j=0; j<M; j++)___2___;bb[i] /= M;}for (i=0; i<N; i++)printf("\nstudent%d\taverage=%5.1f", i+1, bb[i]); } 二、 改错题下列给定程序中,函数fun 的功能是:根据整型行参m ,计算如下公式的值。
y=mm ⨯++⨯+⨯+⨯1300300120020011001001 例如,若m=2000,则应该输出:0.000160。
请改正程序中的错误,使它能得出正确的结果。
#include <conio.h>#include <stdio.h>/********found********/fun(int m){double y = 0, d;int i;/********found********/for (i=100, i<=m, i+=100){d = (double)i*(double)i;y += 1.0/d;}return (y);}main(){int n = 2000;printf("\nThe result is %lf\n", fun(n));}三、编程题请编写函数fun,该函数的功能是:统计个年龄段的人数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020年全国计算机等级考试二级c语言上机精选题库(共80套)第1套试题第一题:给定程序中,函数fun的功能是:计算N*N矩阵的主对角元素和反向对角元素之和,并作为函数值返回。
注意:要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。
例如,若N=3,有下列矩阵:1 2 34 5 67 8 9fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
#include <stdio.h>#define N 4fun(int t[][N], int n){int i, sum;___1___;for (i=0; i<n; i++)sum += ___2___;for (i=0; i<n; i++)sum += t[i][n-i-___3___];return sum;}main(){int i, j, t[][N] ={21, 2, 13, 24, 25, 16, 47, 38, 29, 11, 32, 54, 42, 21, 3, 10};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));}第二题:下列给定程序中,函数fun 的功能是:根据整型参n ,计算如下公式的值。
,11=A ,1112A +=A ,1123A +=A … ,111-A +=A n n 例如,若n=10,则应输出0.617978。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不要更改程序的结构!#include <conio.h>#include <stdio.h>/********found********/fun(int n){double A = 1;int i;/********found********/for(i=2;i<n;i++)A = 1.0/(1+A);return A;}main(){int n;printf("\nPlease enter n: ");scanf("%d", &n);printf("A%d=%lf\n", n, fun(n));}第三题:请编写函数fun ,其功能是:将两个两位数的正整数a 、b 合并形成一个整数在c 中。
合并的方式是:将a 数的十位和个位依次放在c 数的百位和个位上,b 数的十位和个位数依次放c 数的千位和十位上。
例如,当a=45,b=12,调用该函数后,c=1425。
请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。
#include <conio.h>#include <stdio.h>void fun (int a, int b, long *c){}main (){int a, b;long c;FILE *out;printf ("Input a, b:");scanf ("%d%d", &a, &b);fun ( a, b, &c );printf ("The result is: %ld\n", c);out=fopen ("out.dat", "w");for (a = 0; a < 10; a++){fun(a+28, a+82, &c);fprintf(out, "%ld\n", c);}fclose (out );}第一题答案:第1处填空:sum=0;第2处填空:t[i][i]第3处填空:1第二题答案:第1处:fun(int n) 应改为double fun(int n)第2处:for(i=2;i<n;i++) 应改为for(i=2;i<=n;i++)第三题答案:void fun( int a, int b, long *c){*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;}第2套试题第一题:请补充fun函数,函数的功能是:打印出1~1000中满足个位数字的立方等于其本身的所有数。
本题的结果为:1 64 125 216 729.仅在横线上填入所编写的若干表达式或语句,勿改动函数中其他函数任何内容。
#include <stdio.h>main(){int i, g;for (i=1; i<1000; i++){g = ___1___;if (___2___)printf("%4d", i);}}第二题:下列给定程序中,函数fun的功能是:计算整数n的阶乘。
请改正程序中的错误或在横线上填上适当的内容并把横线删除,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结果。
#include <stdio.h>double fun(int n){double result = 1.0;/********found********/while (n>1 && n<170)result *= --n;/********found********/___填空___}main(){int n;printf("Enter an integer: ");scanf("%d", &n);printf("\n\n%d!=%1g\n\n", n, fun(n));}第三题:请编写一个函数fun,它的功能是:计算n门课程的平均数,计算结果作为函数值返回。
例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为71.80.请勿改动主函数main和其他函数中哦的任何内容,仅在函数fun的花括号填入所编写的若干语句。
#include <stdio.h>float fun ( float *a, int n ){}main(){float score[30]={90.5,72,80,61.5,55}, aver;FILE *out;aver=fun(score,5);printf("\nAverage score is :%5.2f\n",aver);out=fopen ("out.dat", "w");fprintf(out, "%5.2f",aver);fclose (out );}答案第一题第一处:i%10第二处:g*g*g==i或i==g*g*g第二题第一处:result*=--n;应该为result*=n--;第二处:应填result第三题float fun ( float *a, int n ){float ave=0.0;int i;for(i=0;i<n;i++)ave+=a[i];ave/=n;return ave;}第3套试题第一题:请补充fun函数,函数的功能是:从键盘输入一个字符串及一个指定字符,然后把这个字符及后面的所以字符全部删除。
结果仍然保存在原串中。
例如,输入”abcdef”,指定字符为’c’,则输出“ab“。
仅在横线上填入所编写的若干表达式或语句,勿改动函数中其他函数任何内容。
#include <stdio.h>#define N 80main(){int i = 0;char str[N];char ch;printf("\n Input a string:\n");gets(str);printf("\n Input a charater:\n");scanf("%c", &ch);while (str[i] != '\0'){if (str[i] == ch)___1______2___;}str[i] = ___3___;printf("\n********* display string *********\n");puts(str);}第二题:下列给定程序中,函数fun的功能是:交换主函数中两个变量的值。
例如:若变量a中的值原为8,b中的值为3,则程序远行后a中的值为3,b中的值为8。
请改正程序中的错误,使它能得出正确的结果。
注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!#include <stdio.h>/********found********/void fun(int x, int y){int t;/********found********/t = x; x = y; y = t;}main(){int a, b;a = 8;b = 3;fun(&a, &b);printf("%d, %d\n", a, b);}第三题:假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。
例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是****A*BC**DEF*G。
在编写函数时,不得使用C语言提供的字符串函数。
请勿改动主函数main和其他函数中哦的任何内容,仅在函数fun的花括号填入所编写的若干语句。
#include <stdio.h>#include <conio.h>#include <string.h>void fun( char *a){}main(){char s[81];FILE *out;printf("Enter a string:\n");gets(s);fun( s );printf("The string after deleted:\n");puts(s);out=fopen ("out.dat", "w");strcpy(s, "****A*BC*DE*F*G*********");fun(s);fprintf(out, "%s", s);fclose (out );}答案第一题:第1处:break;第2处i++或++i 或i+=1或i=i+1第3处‘\0’ 或0第二题:第1处void fun(int x,int y)应改为void fun(int*x,int*y) 第2处t=x;x=y;y=t; 应改为t=*x;*x=*y;*y=t;第三题:void fun( char *a){int i=0;char *p,*q;p=q=a;while(*p)p++;p--;while(*p==’*’)p--;while(q<=p){a[i]=*q;i++;q++;}a[i]=’\0’;}第4套试题一、填空题请补充main函数的功能是:输出方程组A+B=5,A+2B=60的一组正整数解.本题的结果是:A=44,B=8.仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其中他任何内容.#include <stdio.h>main(){int i, j;for (i=0; i<100; i++)for (j=0; j<100; j++)if (i+j==52 ___1___ i+2*j==60)printf("A=%2d,B=%2d", ___2___);}第1处填空:&&第2处填空:i,j二、改错题下列给定程序中,函数fun的功能是:将十进制正整数转换成k (2<=k<=9)进制数,并按位输入出.例如,若输入8和2,则应输出1000(即十进制数8转换成二制成二进制表示是1000).请改正fun函数中的错误,使它能得出正确的结果.注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include <conio.h>#include <stdio.h>/********found********/void fun(int m, int k);{int aa[20], i;for (i=0; m; i++){/********found********/aa[i] = m/k;m /= k;}for (; i; i--)/********found********/printf("%d", aa[i]);}main(){int b, n;printf("\nPlease enter a number and a base:\n");scanf("%d%d", &n, &b);fun(n, b);printf("\n");}第1处:void fun(int m,int k):应改为void fun(int m,int k)第2处:aa[i]=m/k;应改为aa[i]m%k;第3处:printf(“%d”,aa[i]);应改为printf(“%d”,aa[i-1]);三、编程题请编写函数fun,其功能是:将两个两面三刀位数的正整数a、b合并形成一个整数放在c中.合并的方式是:将a数的十位和个位数依次放在c数的个位和十位上.例如,当a=45,b=12,调用该函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句.#include <conio.h>#include <stdio.h>void fun(int a, int b, long *c){}main(){int a,b;long c;FILE *out;printf(" Input a, b: ");scanf("%d%d", &a,&b);fun(a,b,&c);printf(" The result is :%ld\n", c);out=fopen ("out.dat", "w");for (a = 0; a < 10; a++){fun(a+77, a+66, &c);fprintf(out, "%ld\n", c);}fclose (out );}void fun(int a,int b,long *c){c=(b/10)1000+(a%10)*100+(b%10)*10+a/10;}第5套试题一填空题给定程序中,函数fun的功能是: 有N*N矩阵.以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0. 例如,若N=3,有下列矩阵:1 2 34 5 67 8 9计算结果为:1 0 06 5 010 14 9请勿改动主函数main和其它函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句.#include <stdio.h>#define N 4void fun(int (*t)___1___){int i, j;for (i=1; i<N; i++){for (j=0; j<i; j++){___2___ = t[i][j]+t[j][i];___3___ = 0;}}}main(){int i, j, t[][N] ={21, 12, 13, 24, 25, 16, 47, 38, 29, 11, 32, 54, 42, 21, 33, 10};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");}}答案:第一处:[N]第一处:t[i][j]第三处:t[j][i]二.改错题下列给定程序中,函数fun的功能是: 从字符串s中删除所有小写字母’c’.请改正程序中的错误,使它能计算出正确的结果.注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! #include <stdio.h>void fun(char *s){int i, j;for (i=j=0; s[i]!='\0'; i++)/********found********/if (s[i] != 'c')s[j] = s[i];/********found********/s[i] = '\0';}main(){char s[80];printf("Enter a string: ");gets(s);printf("The original string :");puts(s);fun(s);printf("The string after deleted:");puts(s);printf("\n\n");}答案:1:s[j]=s[i];改为s[j++]=s[i];2:s[i]=’\0’;改为s[j]=’/0’;三.编程题N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点.请编写函数fun,它的功能是:求出平均分,由函数值返回.例如,若学生的成绩是85,69,85,91,64,87;则平均分应当是78.625.请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句.#include <stdio.h>#include <stdlib.h>#define N 8struct slist{double s;struct slist *next;};typedef struct slist STREC;double fun ( STREC *h ){}STREC * creat ( double *s )STREC *h, *p, *q;int i=0;h=p=( STREC* ) malloc (sizeof (STREC ) );p->s=0;while ( i<N ){q=( STREC* ) malloc (sizeof ( STREC ) );q->s=s[i];i++;p->next=q;p=q;}p->next=0;return h;}outlist ( STREC *h ){STREC *p;p=h->next;printf ( " head " );do{printf ( "->%4.1f", p->s );p=p->next;}while ( p!=0 );printf ( "\n\n" );}main (){double s[N]={85, 76, 69, 85, 91, 72, 64, 87}, ave;STREC *h;FILE *out;h=creat ( s );outlist (h);ave=fun ( h );printf ( "ave= %6.3f\n", ave );out=fopen ("out.dat", "w");fprintf (out, "%6.3f", ave );fclose (out );答案:double fun(STREC *h){double aver=0.0;while (h!=null){aver+=h->s;h=h->next;}aver/=N;return aver;}第6套填空题给定程序的功能是计算并输出下列级数的前N项之和s N,直到s N大于Q为止,Q的值通过形参传入。