计算机二级c 上机考试题库80题答案
- 格式:docx
- 大小:163.78 KB
- 文档页数:200
全国计算机二级c考试题库及答案一、单项选择题(每题2分,共20分)1. 在C语言中,以下哪个选项是合法的标识符?A. 2variableB. variable2C. _variableD. variable-2答案:C2. 若有定义:int a=5, b=6;,则表达式a+=b的值是多少?A. 11B. 6C. 5D. 1答案:A3. 在C语言中,字符串"\"abc\""的长度是多少?A. 3B. 4C. 5D. 6答案:C4. 下列哪个函数不能用来输入数据?A. scanf()B. printf()C. getchar()D. gets()答案:B5. 若有定义:int a=5;,则执行语句a*=a+1;后,变量a的值是多少?A. 5B. 6C. 25D. 10答案:C6. 在C语言中,以下哪个选项是正确的二维数组定义?A. int a[5][6];B. int a[5,6];C. int a(5)(6);D. int a[5 6];答案:A7. 若有定义:int a=1, b=2;,则执行语句a=b=a+b;后,变量a的值是多少?A. 3B. 4C. 1D. 2答案:A8. 在C语言中,以下哪个选项是正确的函数定义?A. int add(int x, int y) { return x+y; }B. int add(int x; int y) { return x+y; }C. int add(int x, int y) { int z; return z; }D. int add(int x, int y) { return x-y; }答案:A9. 在C语言中,以下哪个选项是正确的结构体定义?A. struct Student { int age; float score; };B. struct { int age; float score; } Student;C. struct Student { int age, float score; };D. struct { int age; float score; };答案:A10. 若有定义:int a=10, b=20;,则执行语句a=a+b;后,变量b的值是多少?A. 10B. 20C. 30D. 40答案:B二、填空题(每题2分,共20分)1. 在C语言中,字符型数据在内存中是以______形式存储的。
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)在数据管理技术发展的三个阶段中,数据共享最好的是( )。
计算机二级C上机考试题库及答案一、选择题1. 在C语言中,以下哪个选项是正确的整型常量表示?A. 0x12B. 0.123C. 1.2e3D. 0b1010答案:A2. 若有以下定义:```cint a=1, b=2, c;```则执行语句 `c = a + b;` 后,变量 `c` 的值是多少?A. 0B. 1C. 3D. 4答案:C3. 在C语言中,以下哪个关键字用于声明一个函数?A. structB. unionC. staticD. void答案:D二、填空题1. 在C语言中,`printf` 函数用于输出,其对应的输入函数是________ 。
答案:scanf2. 若定义 `char str[10] = "Hello";`,则 `str` 数组的第7个元素是 ________ 。
答案:\03. 在C语言中,声明一个指向整型的指针变量 `p`,其正确的声明方式是 ________ 。
答案:int *p;三、编程题1. 编写一个C程序,计算并输出以下数列的前10项之和:1, 1/2, 1/3, 1/4, ...```c#include <stdio.h>int main() {double sum = 0.0;for (int i = 1; i <= 10; i++) {sum += 1.0 / i;}printf("The sum of the series is: %f\n", sum);return 0;}```2. 给定一个字符串,编写一个C程序,将字符串中的所有小写字母转换为大写字母。
```c#include <stdio.h>int main() {char str[] = "Hello, World!";for (int i = 0; str[i] != '\0'; i++) {if (str[i] >= 'a' && str[i] <= 'z') {str[i] -= 'a' - 'A';}}printf("%s\n", str);return 0;}```结束语:以上是计算机二级C上机考试题库及答案的部分内容,希望对您的学习和复习有所帮助。
全国计算机等级考试二级C语言笔试试题及答案解析试题一:选择题1. 下列关于C语言的说法,错误的是()A. C语言是一种高级语言B. C语言具有跨平台性C. C语言编译器可以直接生成机器码D. C语言是一种解释型语言答案:D解析:C语言是一种高级语言,具有跨平台性。
编译器将C语言源程序编译成目标代码,然后通过链接器生成可执行文件,这个过程生成的机器码可以被计算机直接执行,因此C语言不是解释型语言。
2. 以下哪个选项不是C语言的基本数据类型?()A. intB. charC. floatD. string答案:D解析:C语言的基本数据类型包括整型(int)、字符型(char)、浮点型(float)和双精度浮点型(double)。
string不是C语言的基本数据类型,而是由字符数组构成的一种自定义类型。
试题二:填空题1. 在C语言中,每个语句的结尾必须使用()符号。
答案:分号(;)解析:在C语言中,每个语句的结尾必须使用分号(;)作为结束符,表示一个语句的结束。
2. 以下程序的输出结果是()。
```c#include <stdio.h>int main() {int a = 5;int b = 3;printf("%d\n", a % b);return 0;}```答案:2解析:在C语言中,取模运算符(%)用于计算两个整数相除的余数。
在本题中,5除以3的余数为2,因此输出结果为2。
试题三:编程题1. 编写一个C程序,实现以下功能:从键盘输入10个整数,计算并输出这些整数的平均值。
```c#include <stdio.h>int main() {int i, num;float sum = 0.0, average;for (i = 0; i < 10; i++) {printf("请输入第%d个整数:", i + 1);scanf("%d", &num);sum += num;}average = sum / 10;printf("这10个整数的平均值为:%.2f\n", average);return 0;}```解析:本题考查了循环语句、输入输出函数等基本知识。
~计算机二级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 所指的数组中。
第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中。
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中。
重要说明:本题库为从题中一题一题复制出来工作量大,而且有许多表达式无法在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的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
第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的花括号中填入所编写的若干语句。
#include<conio.h>#include<stdio.h>#define N 100void fun(int m,int*b,int*n){int i,j=0;*n=0;for(i=1;i<=m;i++)if(i%7==0||i%11==0){b[j]=i;j++;}*n=j;}main(){int a[N],n,i;FILE*out;fun(20,a,&n);for(i=0;i<n;i++)if((i+1)%20==0)printf("%4d\n",a[i]);elseprintf("%4d",a[i]);printf("\n");out=fopen("outfile.dat","w");fun(100,a,&n);for(i=0;i<n;i++)if((i+1)%10==0)fprintf(out,"%4d\n",a[i]);elsefprintf(out,"%4d",a[i]);fclose(out);}第2套一、填空题函数fun的功能是:统计长整数test的各位上出现数字5、6、7的次数,并通过外部(全局)变量sum5、sum6、sum7返回主函数。
例如:当test=89431676时,结果应该为:sum5=0 sum6=2 sum7=1。
请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。
#include<stdio.h>int sum5,sum6,sum7;void fun(long test){sum5=sum6=sum7=0;while(test){switch(test%10){case 5:sum5++;break;case 6:sum6++;break;case 7:sum7++;}test/=10;}}main(){long test=89431676L;fun(test);printf("\nThe count result:\n");printf("test=%ld sum5=%d sum6=%d sum7=%d\n",test,sum5,sum6,sum7);}二、改错题下列给定程序中,函数fun的功能是:将字符串str中的小写字母都改为对应的大写字母,其它字符不变。
例如,若输入“asAS”,则输出“ASAS”。
请修改程序中的错误,使它能统计出正确的结果。
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构#include<conio.h>#include<stdio.h>#include<string.h>char*fun(char str[]){int i;for(i=0;str[i];i++)if((str[i]>='a'&&str[i]<='z'))str[i]-=32;return(str);}main(){char str[81];printf("\nplease enter a string:");gets(str);printf("\nThe result string is:\n%s",fun(str));}三、编程题请编写一个函数fun,它的功能是:找出一维整型数组元素中最小的值和它所在的下标,最小的值和它所在的下标通过形参传回。
数组元素中的值已在主函数中赋予。
主函数中a是数组名,n是a中的数据个数,min存放最小值,flag存放最小值所在元素的下标请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include<stdlib.h>#include<stdio.h>#include<string.h>void fun(int b[],int n,int*min,int*d){int i;*min=b[0];*d=0;for(i=0;i<n;i++)if(b[i]<*min){*min=b[i];*d=i;}}main(){int i,a[20],min,flag,n=10;FILE*out;for(i=0;i<n;i++){a[i]=rand()%50;printf("%4d",a[i]);}printf("\n");fun(a,n,&min,&flag);printf("min=%5d,Index=%4d\n",min,flag);out=fopen("outflie.dat","w");memcpy(a,"3.141592653589793238462643383279",32);fun(a,8,&min,&flag);fprintf(out,"min=%5d,Index=%4d",min,flag);fclose(out);}第3套上机考试试题一、填空题请补充main函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整数。
当输入的整数为-1时结束。
例如:输入96 121 23 343 232 54 89 365 89 -1时,最大的数为365。
仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容#include<stdio.h>#include<conio.h>#define NUM 100main(){int n[NUM];int i=-1;int MAX=-1;printf("\nInsert integer with the '-1' as end:\n");do{i++;printf("n[%d]=",i);scanf("%d",&n[i]);MAX=MAX<n[i]?n[i]:MAX;}while(n[i]!=-1);printf("The MAX=%d\n",MAX);}二、改错题下列给定程序中,函数fun的功能是:将一个由八进制数字字符组成的字符串转换为与其数值相等的十进制整数。
例如,若输入11111,则输出将是4681。
请修改程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构#include<stdio.h>#include<stdlib.h>#include<string.h>int fun(char*s){int n;n=*s-'0';s++;while(*s!=0){n=n*8+*s-'0';s++;}return n;}main(){char str[6];int i;int n;printf("Enter a string(octal digits):");gets(str);if(strlen(str)>5){printf("Error:string too longer!\n\n");exit(0);}for(i=0;str[i];i++)if(str[i]<'0'||str[i]>'7'){printf("Error:%c not is octal digits!\n\n",str[i]);exit(0);}printf("The original string:");puts(str);n=fun(str);printf("\n%s is convered to intege number:%d\n\n",str,n);}三、编程题下列程序定义了N ×N 的二维数组,并在主函数中赋值。
请编写函数fun ,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的r 。
例如:若c 数组中的值为:则返回主程序后r 的值应为4.625000请勿改动主函数main 与其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句#include<stdio.h>#include<conio.h>#include<stdlib.h>#define N 3double fun(int b[][N]){C= 1 9 7 4 5 2 3 8 3double r=0.0;for(j=0;j<N;j++){r+=b[0][j];k++;}for(j=0;j<N;j++){r+=b[N-1][j];k++;}for(i=1;i<=N-2;i++){r+=b[i][0];k++;}for(i=1;i<=N-2;i++){r+=b[i][N-1];k++;}return r/=k;}main(){int c[N][N]={1,9,7,4,5,2,3,8,3}; int i,j;FILE*out;double r;printf("**********\n");for(i=0;i<N;i++){for(j=0;j<N;j++){printf("%4d",c[i][j]);}printf("\n");}r=fun(c);printf("THE RESULT\n"); printf("The r is %lf\n",r);out=fopen("outfile.dat","w"); fprintf(out,"%lf",r);}第4套上机考试试题一、填空题请补充fun函数,该函数的功能是将字符串str中的小写字母都改为对应的大写字母,其它字符不变。