全国计算机二级C语言上机考试题库(可直接打印)
- 格式:doc
- 大小:794.00 KB
- 文档页数:39
二级C语言上机考试复习资料(前面为填空题题目,后面同序号依次为此套题的填空题、改错题、编程题答案)前39套带* 的为本次考试重点,共100套* 3、给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),作为函数值返回;并将大于平均值的数放在形参y所指数组中,在主函数中输出。
例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000主函数中输出:46 32 40 45 48请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
3、(1)0(2)x[i]/N(3)j++3、(1)double fun(int m)(2)for(i=100;i<=m;i~1+=0)3.fun( STU a[], STU *s ){int i;*s=a[0];for(i=1;i<N;i++){if(a[i].s<s->s){*s=a[i];}}}* 5、给定程序中,函数fun的功能是将a和b所指的两个字符串转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含9个以下数字字符。
例如,主函数中输入字符串:32486和12345,在主函数中输出的函数值为:44831。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
5、(1)'0'(2)s++(3)ctod(a)+ctod(b)5、(1)void fun ( char *s, int *a, int *b )(2)++(*a);(3)++(*b);5.float fun ( float h ){long i=h*1000;if(i%10<5) return (i/10)/100.0;else return (i/10+1)/100.0;}* 7、给定程序中,函数fun的功能是:在3×4的矩阵中找出在行上最大、在列上最小的那个元素,若没有符合条件的元素则输出相应信息。
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套一、填空给定函数的功能是调用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中。
全国计算机2级c试题及答案一、单项选择题(每题1分,共20分)1. 在C语言中,以下哪个选项是正确的字符串声明?A. char str[] = "Hello";B. char str[6] = "Hello";C. char str[] = {"Hello"};D. char str[6] = {"Hello"};答案:A2. 下列关于C语言中数组的描述,错误的是?A. 数组的索引从0开始。
B. 数组的大小在声明时必须确定。
C. 数组可以存储不同类型的数据。
D. 数组的元素在内存中是连续存储的。
答案:C3. 在C语言中,哪个关键字用于声明函数?A. classB. functionC. defD. int答案:D4. 以下哪个选项是C语言中的合法整数常量?A. 0x1AB. 01AC. 1.2E3D. 0b1010答案:A5. C语言中,以下哪个选项是正确的注释方式?A. // 这是注释B. /* 这是注释 */C. //这是注释D. /*这是注释*/答案:B6. 在C语言中,以下哪个选项是正确的二进制数表示?A. 0b1010B. 0x2AC. 0101D. 02A答案:A7. 以下哪个选项是C语言中的合法浮点数常量?A. 1.23B. .23C. 123.D. 1.23E+5答案:D8. 在C语言中,以下哪个选项是正确的结构体声明?A. struct {int a;float b;};B. struct Student {int age;float height;};C. struct Student {int age;float height;} student1;D. All of the above答案:D9. 在C语言中,以下哪个选项是正确的指针声明?A. int *p;B. int *p = 0;C. int *p = NULL;D. All of the above答案:D10. 以下哪个选项是C语言中正确的文件包含指令?A. #include <stdio.h>B. #include "stdio.h"C. #include "stdio"D. #include <stdio>答案:A11. 在C语言中,以下哪个选项是正确的宏定义?A. #define PI 3.14159B. #define PI = 3.14159C. #define PI 3.14159;D. #define PI 3.14159答案:A12. 在C语言中,以下哪个选项是正确的条件语句?A. if (x > 0)B. if x > 0C. if (x > 0) {// code}D. All of the above答案:C13. 在C语言中,以下哪个选项是正确的循环语句?A. for (int i = 0; i < 10; i++)B. for (i = 0; i < 10; i++)C. for (int i = 0; i <= 10; i++)D. All of the above答案:A14. 在C语言中,以下哪个选项是正确的函数声明?A. int add(int a, int b);B. int add(int, int);C. int add();D. All of the above答案:D15. 在C语言中,以下哪个选项是正确的枚举类型声明?A. enum Color {RED, GREEN, BLUE};B. enum {RED, GREEN, BLUE};C. enum Color {0, 1, 2};D. All of the above答案:D16. 在C语言中,以下哪个选项是正确的位运算符?A. &B. |C. ^D. All of the above答案:D17. 在C语言中,以下哪个选项是正确的逻辑运算符?A. &&B. ||C. !D. All of the above答案:D18. 在C语言中,以下哪个选项是正确的类型转换?A. (int)xB. int(x)C. x(int)D. All of the above答案:A19. 在C语言中,以下哪个选项是正确的多文件程序结构?A. main.cB. main.hC. main.c and main.hD. All of the above答案:C20. 在C语言中,以下哪个选项是正确的内存分配方式?。
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所指的数组中。
计算机二级《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.1 填空给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶函数的数去除,剩余的书按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。
void fun(unsigned long *n){ unsigned long x=0, i; int t;i=1;while(*n)/**********found**********/{ t=*n % 10 ;/**********found**********/if(t%2!= 0){ x=x+t*i; i=i*10; }*n =*n /10; }/**********found**********/*n=x; }1.2 改错给定程序MODI1.C 中函数fun的功能是:计算n!。
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 ;}1.3 程序请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
long fun ( char *p){ /* 以下代码仅供参考*/int i, len, t; /* 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; }第二套:2.1填空给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数些到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
计算机二级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 套填空题请补充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 所指的数组中。
2012年9月全国计算机考试上机题库100套第01套:给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。
例如,输入一个数:27638496,新的数:为739。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!给定源程序:#include <stdio.h>void fun(unsigned long *n){ unsigned long x=0, i; int t;i=1;while(*n){ t=*n % __1__;if(t%2!= __2__){ x=x+t*i; i=i*10; }*n =*n /10;}*n=__3__;}main(){ unsigned long n=-1;while(n>99999999||n<0){ printf("Please input(0<n<100000000): "); scanf("%ld",&n); } fun(&n);printf("\nThe result is: %ld\n",n);}解题思路:第一处:t是通过取模的方式来得到*n的个位数字,所以应填:10。
第二处:判断是否是奇数,所以应填:0。
第三处:最后通形参n来返回新数x,所以应填:x。
给定程序MODI1.C中函数fun 的功能是:计算n!。
例如,给n输入5,则输出120.000000。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include <stdio.h>double fun ( int n ){ double result = 1.0 ;if n = = 0return 1.0 ;while( n >1 && n < 170 )result *= n--return result ;}main ( ){ int n ;printf("Input N:") ;scanf("%d", &n) ;printf("\n\n%d! =%lf\n\n", n, fun(n)) ;}解题思路:第一处:条件语句书写格式错误,应改为:if (n==0)。
第二处:语句后缺少分号。
*************************************************** 请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
例如,若输入字符串"-1234",则函数把它转换为整数值-1234。
函数fun中给出的语句仅供参考。
注意: 部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:#include <stdio.h>#include <string.h>long fun ( char *p){int i, len, t; /* len为串长,t为正负标识*/long x=0;len=strlen(p);if(p[0]=='-'){ t=-1; len--; p++; }else t=1;/* 以下完成数字字符串转换为一个数字*/return x*t;}main() /* 主函数*/{ char s[6];long n;printf("Enter a string:\n") ;gets(s);n = fun(s);printf("%ld\n",n);NONO ( );}NONO ( ){/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/FILE *fp, *wf ;int i ;char s[20] ;long n ;fp = fopen("c:\\test\\in.dat","r") ;wf = fopen("c:\\test\\out.dat","w") ;for(i = 0 ; i < 10 ; i++) {fscanf(fp, "%s", s) ;n = fun(s);fprintf(wf, "%ld\n", n) ;}fclose(fp) ;fclose(wf) ;}解题思路:本题是将一个数字字符串转换为一个整数。
参考答案:#include <stdio.h>#include <string.h>long fun ( char *p){int i, len, t; /* 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;}main() /* 主函数*/{ char s[6];long n;printf("Enter a string:\n") ;gets(s);n = fun(s);printf("%ld\n",n);NONO ( );}NONO ( ){/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/FILE *fp, *wf ;int i ;char s[20] ;long n ;fp = fopen("c:\\test\\in.dat","r") ;wf = fopen("c:\\test\\out.dat","w") ;for(i = 0 ; i < 10 ; i++) {fscanf(fp, "%s", s) ;n = fun(s);fprintf(wf, "%ld\n", n) ;}fclose(fp) ;fclose(wf) ;}注意:由于NONO( )这个函数是改卷人用的,与考生没有什么关系,故下面从第2套试题开始均省略NONO( )※※※※※※※※※※※※※※※※※※※※※※※※※第02套:给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!给定源程序:#include <stdio.h>void fun(char *s, int a, double f){__1__ fp;char ch;fp = fopen("file1.txt", "w");fprintf(fp, "%s %d %f\n", s, a, f);fclose(fp);fp = fopen("file1.txt", "r");printf("\nThe result :\n\n");ch = fgetc(fp);while (!feof(__2__)) {putchar(__3__); ch = fgetc(fp); }putchar('\n');fclose(fp);}main(){ char a[10]="Hello!"; int b=12345;double c= 98.76;fun(a,b,c);}解题思路:本题是考察先把给定的数据写入到文本文件中,再从该文件读出并显示在屏幕上。
第一处:定义文本文件类型变量,所以应填:FILE *。
第二处:判断文件是否结束,所以应填:fp。
第三处:显示读出的字符,所以应填:ch。
***************************************************给定程序MODI1.C中函数fun的功能是: 依次取出字符串中所有数字字符, 形成新的字符串, 并取代原字符串。
请改正函数fun中指定部位的错误, 使它能得出正确的结果。
注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!给定源程序:#include <stdio.h>void fun(char *s){ int i,j;for(i=0,j=0; s[i]!='\0'; i++)if(s[i]>='0' && s[i]<='9')s[j]=s[i];s[j]="\0";}main(){ char item[80];printf("\nEnter a string : ");gets(item);printf("\n\nThe string is : \"%s\"\n",item);fun(item);printf("\n\nThe string of changing is : \"%s\"\n",item );}解题思路:第一处: 要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量j来控制新字符串的位置,所以应改为:s[j++]=s[i];。
第二处: 置新字符串的结束符,所以应改为:s[j]='\0';.***************************************************请编写函数fun, 函数的功能是: 将M行N列的二维数组中的字符数据, 按列的顺序依次放到一个字符串中。
例如, 二维数组中的数据为:W W W WS S S SH H H H则字符串中的内容应是: WSHWSHWSH。