计算机二级C语言99套上机操作题及答案
- 格式:pdf
- 大小:4.84 MB
- 文档页数:20
1.程序填空题在主函数中从键盘输入若干个数放入数组a中,用0结束输入但不计入数组。
下列给定程序中,函数fun的功能是:输出数组元素中小于平均值的元素。
例如,数组中元素的值依次为34、54、675、456、453、121,则程序的运行结果为34、54、121。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!#include <conio.h>#include <stdio.h>void fun(___1___,int n){double count=0.0;double average=0.0;int i=0;for(i=0;i<n;i++)___2___;average=___3___;for(i=0;i<n;i++)if(a[i]<average){if(i%5==0)printf("\n");printf("%d,",a[i]);}}main(){int a[1000];int i=0;printf("\nPlease enter datas(end with 0):");do{scanf("%d",&a[i]);}while(a[i++]!=0);fun(a,i-1);}【答案】(1) int a[] (2)count+=a[i]或count=count+a[i] (3)count/n2.程序修改题给定程序中,函数fun的功能是:根据整型形参m,计算如下公式的值:y=1+1/(2*2)+1/(3*3)+1/(4*4)+…+1/(m*m)例如:若m中的值为5,则应输出1.463611。
请改正程序中的错误,使其能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include <stdio.h>double fun(int m){double y=1.0;int I;/**********found**********/for(i=2;i<m;i++)/**********found**********/y+=1/(i*i);return(y);}main(){int n=5;printf("\nThe result is %lf\n", fun(n));}【答案】(1)将for(i=2;i<m;i++) 改为:for(i=2;i<=m;i++)(2)将y+=1/(i*i); 改为:y +=1.0/(i*i);3.程序设计题函数fun的功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。
(1)将两个两位的正整数a、b合并形成一个整数放c中:将a的十位和个位数放在c的千位和十位,的十位和个位数放在c的百位和个位。
例如:若,使c = 4152。
void fun(int a, int b, int *c) // c是指针{*c = a/10*1000+b/10*100+a%10*10+b%10;}(2)判断整数x是否是同构数(规定x是不大于100的正整数)。
若是,函数返回1,否则返回0。
如果某个整数能够在它的平方数的最右边出现,就是“同构数”。
例如:5的平方数是25,5是25右边的数,所以5是同构数。
int fun(int x){return (x < 10 && x*x%10 == x)|| (x >= 10 && x*x%100 == x);}(3)w是大于10的无符号整数,求w后n-1位的数作为函数值返回。
例如:若w是234,则返回34。
unsigned fun(unsigned w){unsigned t = w, m = 1;while (t){ t /= 10; m *= 10; }return w % (m / 10);}(4)对变量x中的值保留2位小数,并对第3位进行四舍五入(规定x中的值为正数)。
double fun(double x){return (int)(x * 100 + 0.5) / 100.0;}(5)求n以内(不包括n)同时能被3和7整除的所double fun(int n){int i;double s = 0;for (i = 1; i < n; i++)if (i % 3 == 0 && i % 7 == 0)s += i;return sqrt(s); //平方根}(6)求1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过函数返回这些数的个数。
int fun(int *a, int m){int i, j = 0;for (i = 1; i <= m; i++)if (i % 7 == 0 || i % 11 == 0)a[j++] = i; // j++模式return j;}(7)求3到n之间所有素数的平方根之和,并返回。
二、基本操作题(共18分)请补充函数proc(),该函数的功能是计算下面公式SN的值:SN=1+1/3十4/5+...+2N-1/SN-1例如,当N=20时,SN=29.031674。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:#include#include#includedouble proc(int n){double s=1.0,sl=0.0;int k;for(【k=2】;k<=n;k++){sl=S;【s+=(2*k一1)/sl】}return 【s】;)void main(){int k=0:double sum;system("CLS");printf("\nPlease input N=");scanf("%d",&k);sum=proc(k);printf("\nS=%If",sum);)三、程序改错题(共24分)下列给定程序中,函数proc()的功能是根据整型形参n,计算如下公式的值:Y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(nn)例如,n中的值为l0,则应输出0.817962。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:#include#include#includedouble proc(int n){double y=1.0;f|****found****int J=1;.int i;for(i=2;i<=n;i++){j=-l*j;//****found****y+=1/(i*i);)return(y);)void main(){int n=10:system("CLS"):printf("\nThe result is%lf\n",proc(n));)四、程序设计题(共18分)编写一个函数,从传人的M个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。
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 between2and10000:");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所指的数组中。
xx年计算机二级C语言考试上机试题及答案1.算法的空间复杂度是指( )。
A.算法程序的长度B.算法程序中=的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间2.以下表达中正确的选项是( )。
A.一个逻辑数据构造只能有一种存储构造B.逻辑构造属于线性构造,存储构造属于非线性构造C.一个逻辑数据构造可以有多种存储构造,且各种存储构造不影响数据处理的效率D.一个逻辑数据构造可以有多种存储构造,且各种存储构造影响数据处理的效率3.简单的交换排序方法是( )。
A.快速排序B.选择排序C.堆排序D.冒泡排序4.关于构造化程序设计原那么和方法的描述错误的选项是( )。
A.选用的构造只准许有一个入口和一个出口B.复杂构造应该用嵌套的根本控制构造进展组合嵌套来实现C.不允许使用GOT0语句D.语言中假设没有控制构造,应该采用前后一致的方法来模拟5.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( )。
A.可重用性差B.平安性差C.非持久性D.冗余性6.面向对象的设计方法与传统的面向过程的方法有本质不同,它的根本原理是( )。
A.模拟现实世界中不同事物之间的联系B.强调模拟现实世界中的算法而不强调概念C.使用现实世界的概念抽象地思考问题从而自然地解决问题D.不强调模拟现实世界中的算法而强调概念7.对如下二叉树进展后序遍历的结果为( )。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA8.软件设计包括软件的构造、数据接口和过程设计,其中软件的过程设计是指( )。
A.模块间的关系B.系统构造部件转换成软件的过程描述C.软件层次构造D.软件开发过程9.两个或两个以上模块之间关联的严密程度称为( )。
A.耦合度B.内聚度C.复杂度D.数据传输特性10.以下描述错误的选项是( )。
A.继承分为多重继承和单继承B.对象之间的通信靠传递消息来实现C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征D.类是具有共同属性、共同方法的对象的集合11.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是( )。
计算机二级《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)在数据管理技术发展的三个阶段中,数据共享最好的是( )。
1.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值1.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整除的所有证书2.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.请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按3. 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各字母各自出现的次数,4. 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[13]++;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.请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数5. void fun(int m,int k,int xx[]){int g=0,i,j,flag=1;for(i=m+1;i<m*m;i++){for(j=2;j<i;j++){if (i%j!=0)flag=1;else{flag=0;break;}}if (flag==1&j>=i){if (k>0){xx[g++]=i;k--;}elsebreak;}}}6.请编写一个函数void fun(char a[],char[],int n),其功能是:删除以各字符串中指定下标的字符。
~计算机二级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 所指的数组中。
1999年9月全国计算机二级C语言考题试卷及解答一、选择题((1)-(40)每个选项1分,(41)-(50)每个选项2分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应的位置上,答在试卷上不得分。
(1)十进制数1385转换成十六进制数为A.568B.569C.D85D.D55(2)下列叙述中正确的是A.计算机病毒只能传染给可执行文件B.计算机软件是指存储在软盘中的程序C.计算机每次启动的过程之所以相同,是因为RAM中的所有信息在关机后不会丢失D.硬盘虽然装在主机箱内,但它属于外存(3)一个字长的二进制位数是A.8B.16C.32D.随计算机系统而不同的(4)CPU主要由运算器与控制器组成,下列说法中正确的是A.运算器主要负责解析指令,并根据指令要求作相应的运算B.控制器主要完成对数据的运算,包括算术运算和逻辑运算C.控制器主要负责解析指令,并根据指令要求作相应的运算D.控制器直接控制计算机系统的输入与输出操作(5)下列叙述中正确的是A.将数字信号变换成便于在模拟通信线路中传输的信号称为调制B.以原封不动的形式将来自终端的信息送入通信线路称为调制解调C.在计算机网络中,一种传输介质不能传送多路信号D.在计算机局域网中,只能共享软件资源,而不能共享硬件资源(6)各种网络传输介质A.具有相同的传输速率和相同的传输距离B.具有不同的传输速率和不同的传输距离C.具有相同的传输速率和不同的传输距离D.具有不同的传输速率和相同的传输距离(7)多媒体计算机系统的两大组成部分是A.多媒体功能卡和多媒体主机B.多媒体通信软件和多媒体开发工具C.多媒体输入设备和多媒体输出设备D.多媒体计算机硬件系统和多媒体计算机软件系统(8)按通信距离划分,计算机网络可以分为局域网和广域网。
下列网络中属于局域网的是A.InternetB.CERNETC.NovellD.CHINANET(9)在Windows中,启动应用程序的正确方法是A.用鼠标双击该应用程序图标B.将该应用程序窗口小化成图标C.将该应用程序窗口还原D.将鼠标指向该应用程序图标(10)在Windows中,终止应用程序执行的正确方法是A.用鼠标双击应用程序窗口左上角的控制菜单框B.将应用程序窗口小化成图标C.用鼠标双击应用程序窗口右上角的还原按钮D.用鼠标双击应用程序窗口中的标题栏(11)DOS控制键Ctrl+Alt+Del的功能为A.删除一个字符并退格B.暂停标准输出设备的输出C.热启动D.终止当前操作(12)设当前盘为C盘,为了将A盘当前目录中所有扩展名为.PAS 的文件改成扩展名为.P,应使用的DOS命令为A.REN A:*.PAS A:*.PB.REN A:*.PAS *.PB.REN A:.PAS A:.PD.REN A:.PAS .P(13)设当前盘为C盘,其根目录下有两个子目录D1与D2,且当前目录为D1,若要进入子目录D2,正确的DOS命令为A.CD D2B.CD D2\C.CD \D2D.CD D1\D2(14)设当前盘为A盘,要将B盘当前目录下的两个文件A.TXT与X.TXT 连接后以文件名Y.TXT 存放到A盘的当前目录中,正确的DOS命令为A.COPY A.TXT+X.TXT A:Y.TXTB.COPY B:A.TXT+X.TXT A:Y.TXTB.COPY B:A.TXT+B:X.TXT>Y.TXTD.COPY B:A.TXT+B:X.TXT Y.TXT(15)下列DOS命令中正确的是A.REN \USER\A.TXT \B.TXTB.CD \C.TYPE *.TXTD.MD \(16)以下选项中属于C语言的数据类型是A.复数型B.逻辑型C.双精度型D.集合型(17)在C语言中,不正确的int类型的常数是A.32768B.0C.037D.0xAF(18)语句:printf("%d",(a=2)&&(b= -2);的输出结果是A.无输出B.结果不确定C.-1D.1(19)下列描述中不正确的是A.字符型数组中可以存放字符串B.可以对字符型数组进行整体输入、输出C.可以对整型数组进行整体输入、输出D.不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值(20)设有如下定义:int x=l,y=-1;,则语句:printf("%d\n",(x--&++y));的输出结果是A.1B.0C.-1D.2(21)当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是A.c=b=a;B.(a=C.‖(b=c);C.(a=c)&&(b=c);D.a=c=b;(22)以下程序的输出结果是A.10 1 9 2B.9 8 7 6C.10 9 9 0D.10 10 9 1{ int x=10,y=10,I;for(i=0;x>8;y=++i)printf("%d,%d ",x--,y);}(23)以下程序的输出结果是A.5 2B.5 1C.5 3D.9 7main( ){ int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(i=0;i<4;i+=2)printf("%d ",p[i]);}(24)以下程序的输出结果是A.6B.6789C.'6'D.789main( ){ char a[10]={'1','2','3','4','5','6','7','8','9',0},*p;int i;i=8;p=a+I;printf("%s\n",p-3);}(25)以下程序的运行结果是A.运行后报错B.6 6C.6 12#include "stdio.h"main( ){int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12,};int *p=a+5, *q=NULL;* q=*(p+5);printf("%d %d \n",*p,*q);}(26)以下说法中正确的是A.#define和printf都是C语句B.#define是C语句,而printf不是C.printf是C语句,但#define不是D.#define和printf都不是C语句(27)语句:printf("%d \n",12 &012);的输出结果是A.12B.8C.6D.012(28)能正确表示a和b同时为正或同时为负的逻辑表达式是A.(a>=0‖b>=0)&&(a<0‖b<0)B.(a>=0&&b>=0)&&(a<0&&b<0)C.(a+b>0)&&(a+b<=0)D.a*b>0(29)以下程序的输出结果是A.2 0B.3 1C.3 2 1D.2 1 0main( ){ int n=4;while(n--)printf("%d ",--n);}(30)若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是A.p+1B.a+1C.a++D.++p(31)以下程序的输出结果是A.17,021,0x11B.17,17,17B.17,0x11,021D.17,21,11main( ){ int k=17;printf("%d,%o,%x \n",k,k,k);}(32)以下程序的输出结果是A.-1 1B.0 1C.1 0D.0 0main( ){ int a= -1,b=1,k;if((++a<0)&& ! (b-- <=0))printf("%d %d\n",a,b);elseprintf("%d %d\n",b,a);}(33)若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是A.*p=&a; scanf("%ld",p);B.p=(long *)malloc(8); scanf("%ld",p);C.scanf("%ld",p=&a);D.scanf("%ld",&a);(34)以下选项中,能定义s为合法的结构体变量的是A.typedef struct abcB.struct{ double a; { double a;char b[10]; char b[10];} s; } s;C.struct ABCD.typedef ABC{ double a; { double a;char b[10]; char b[10];} }ABC s; ABC s;(35)若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元素是A.t[2][0]B.t[2][2]C.t[l][2]D.t[2][l]int t[3][3], *pt([3], k;for (k=0;k<3;k++)pt[k]=&t[k][0];(36)下面程序把数组元素中的值放入a[0]中。