计算机二级c大题例题
- 格式:docx
- 大小:20.19 KB
- 文档页数:10
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]++;b reak;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考试真题及答案解析一、选择题(每题2分,共20分)1. 在C语言中,以下哪个选项是合法的字符常量?A. 'a'B. "a"C. 3D. 'ab'答案:A解析:在C语言中,字符常量需要用单引号括起来,因此'a'是合法的字符常量。
选项B是字符串常量,选项C是整数常量,选项D是两个字符的序列,不是单个字符常量。
2. 若有以下定义:```cint a = 3, b = 4;```则表达式`a + b`的值是:A. 7B. 3C. 4D. 0答案:A解析:根据题目中给出的变量定义,a的值为3,b的值为4。
因此,表达式`a + b`的值是3 + 4,即7。
3. 在C语言中,以下哪个选项是正确的整型变量声明?A. int a;B. float b;C. double c;D. All of the above答案:D解析:在C语言中,int、float和double都是合法的整型和浮点型变量声明。
因此,选项A、B和C都是正确的整型变量声明。
4. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. !D. All of the above答案:D解析:在C语言中,&&代表逻辑与,||代表逻辑或,!代表逻辑非,它们都是C语言中的逻辑运算符。
5. 若有以下定义:```cint x = 10;```则表达式`x % 3`的值是:A. 1B. 2C. 3D. 0答案:A解析:表达式`x % 3`表示x除以3的余数。
10除以3的商是3,余数是1,因此`x % 3`的值是1。
6. 在C语言中,以下哪个选项是正确的字符串声明?A. char str[10] = "Hello";B. char str[] = "Hello";C. Both A and BD. None of the above答案:C解析:在C语言中,选项A和B都是正确的字符串声明方式。
全国计算机等级考试二级C语言笔试试题及答案一、选择题1. 以下关于C语言的描述中,正确的是(A)A. C语言是一种结构化程序设计语言B. C语言是面向对象的程序设计语言C. C语言是一种解释型语言D. C语言是一种高级汇编语言答案:A2. 在C语言中,以下哪个选项是非法的整型常量?(D)A. 012B. 0x123C. 0XabcD. 0123答案:D3. 若变量已正确定义并赋值,以下正确的表达式是(C)A. a = b ++ + 1;B. a = b ++ = a++;C. a = b + b++;D. a = ++b + ++b;答案:C4. 在C语言中,以下哪个函数用于输出字符?(B)A. printfB. putcharC. putcharcD. putchart答案:B5. 已知 int a = 5, b = 3;,以下哪个选项的结果为1?(D)A. a % bB. a / bC. a + bD. a - b答案:D二、填空题1. 在C语言中,一个int类型的数据在内存中占______个字节。
答案:42. C语言中,逻辑运算符“或”用______表示。
答案:||3. 若定义 int a = 10, b = 20;,则执行语句 a += b -= a; 后,b的值为______。
答案:104. 在C语言中,函数的返回值类型为void时,表示该函数______。
答案:无返回值5. 在C语言中,以下函数的返回类型为______。
int max(int a, int b) {return (a > b) ? a : b;}答案:int三、判断题1. C语言中的数组名可以作为指针使用。
(正确)2. 在C语言中,静态存储区的数据在程序运行期间一直存在。
(正确)3. 在C语言中,结构体是一种用户自定义的数据类型。
(正确)4. 在C语言中,函数的参数传递都是按值传递的。
(错误,部分按引用传递)5. 在C语言中,文件操作完成后必须关闭文件,否则可能导致数据丢失。
计算机等级考试二级C真题参考答案及解析1、以下选项中可作为C语言合法常量的是______。
A) -80. B) -080 C) -8e1.0 D) -80.0e 【答案】A【解析】本题考点为数值常量的表示。
在C语言中,以0开头的整型常量为八进制数,其有效数字符号为0~7,故选项B错误。
在以指数形式表示实型常量时,e后面的指数只能是整数,且必须含有指数,故选项C、D错误。
2、以下不能定义为用户标识符的是______。
A) Main B) _0 C) _int D) sizeof 【答案】D解析】本题考点是C语言中标识符的命名规则。
C语言中的标识符包括变量名、符号常量名、函数名、数组名、结构名、类型名、文件名等,C语言中规定标识符只能由字母、数字和下划线三种符号组成,并且标识符的首字符必须是字母或下划线,C语言中的关键字如语句、数据类型名等不允许作为用户定义的标识符。
3、以下选项中,不能作为合法常量的是______。
参见第1题解析。
A) 1.234e04 B) 1.234e0.4 C) 1.234e+4 D) 1.234e0 【答案】B【解析】4、数字字符0的ASCII值为48,若有以下程序:main(){ char a='1',b='2'; printf("%c,",b++);printf("%d\n",b-a); }程序运行后的输出结果是______。
A) 3,2 B) 50,2 C) 2,2 D) 2,50 【答案】C【解析】本题考点为字符型数据的运算。
字符型数据的实质是字符的ASCII编码,因此字符型数据可以作为一个整数进行运算,参加运算的数据为字符对应的ASCII码。
因为b='2',故执行b++后b='3',但因在语句printf("%c,",b++);中b++为后增量,输出字符仍为'2',而b-a='3'-'1'=2,本题正确答案为C。
全国c二级计算机考试真题及答案解析一、选择题1. 在C语言中,以下哪个选项是正确的整型常量表示?A. 0x1AB. 0.123C. 1.2e3D. 0b1010答案:A解析:在C语言中,整型常量可以用十进制、八进制、十六进制表示。
选项A中的0x1A是十六进制表示法,是正确的整型常量表示。
选项B、C和D分别表示浮点数,不符合整型常量的要求。
2. 下列哪个选项是C语言中的合法标识符?A. 2variableB. _variableC. variable2D. variable$答案:C解析:C语言中的标识符可以由字母、数字和下划线组成,且不能以数字开头。
选项A以数字开头,选项B和D包含非法字符,只有选项C符合标识符的命名规则。
二、填空题3. 在C语言中,以下代码段的输出结果是____。
```c#include <stdio.h>int main() {int a = 10, b = 20;printf("%d", a + b);return 0;}```答案:30解析:在这段代码中,变量a和b分别被赋值为10和20,然后通过printf函数输出它们的和,即30。
4. 若有以下C语言代码:```cint x = 10;x += 5;```则x的值变为____。
答案:15解析:代码中的x += 5等价于x = x + 5,即x的值增加5,从10变为15。
三、编程题5. 请编写一个C语言程序,计算并输出100以内所有奇数的和。
```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i < 100; i += 2) {sum += i;}printf("%d", sum);return 0;}```解析:该程序使用for循环遍历1到99之间的所有奇数,每次循环增加2以跳过偶数,并将每个奇数累加到变量sum中,最后输出sum的值,即100以内所有奇数的和。
历年计算机c二级考试真题及答案一、选择题(每题2分,共40分)1. 在计算机系统中,CPU指的是什么?A. 计算机辅助设计B. 中央处理器C. 数据存储器D. 输入输出设备答案:B2. 下列哪个选项是计算机病毒的特点?A. 可执行性B. 可读性C. 可编辑性D. 可删除性答案:A3. 计算机硬件系统由哪两部分组成?A. 输入设备和输出设备B. 外部设备和内部设备C. 主机和外部设备D. 中央处理器和外围设备答案:C4. 在计算机中,1KB等于多少字节?A. 512字节B. 1024字节C. 2048字节D. 4096字节答案:B5. 以下哪个选项不是操作系统的功能?A. 进程管理B. 存储管理C. 文件管理D. 数据加密答案:D二、填空题(每题2分,共20分)1. 在计算机中,二进制数1011转换为十进制数是______。
答案:112. 计算机的存储器分为______和______。
答案:RAM;ROM3. 计算机病毒主要通过______传播。
答案:磁盘;网络4. 在计算机系统中,______是软件与硬件之间的接口。
答案:操作系统5. 计算机的外存储器包括______、______等。
答案:硬盘;光盘三、简答题(每题10分,共40分)1. 请简述计算机硬件系统的基本组成。
答案:计算机硬件系统主要由输入设备、输出设备、存储器、中央处理器和辅助设备等组成。
2. 计算机软件分为哪两大类?答案:计算机软件分为系统软件和应用软件两大类。
3. 什么是计算机的字长?它对计算机性能有何影响?答案:计算机的字长是指计算机一次性能处理的数据的位数。
字长越大,计算机处理数据的能力越强,性能越高。
4. 什么是计算机网络?它有哪些基本功能?答案:计算机网络是由多个计算机系统通过通信设备和线路连接起来,以实现资源共享和信息传递的系统。
其基本功能包括数据通信、资源共享、分布式处理和提高可靠性等。
1、在C语言中,以下哪个关键字用于定义一个函数?
A. class
B. void
C. struct
D. enum
(答案)B
2、以下哪个符号在C语言中用作字符串的结束标志?
A. \0
B. \n
C. \t
D. \r
(答案)A
3、在C语言中,要读取一个整数并存储到变量中,应使用哪个函数?
A. getchar()
B. scanf()
C. printf()
D. fgets()
(答案)B
4、以下哪项不是C语言的基本数据类型?
A. int
B. float
C. string
D. char
(答案)C
5、在C语言中,数组名表示的是?
A. 数组的首地址
B. 数组的长度
C. 数组的第一个元素
D. 数组的所有元素
(答案)A
6、以下哪个循环结构在C语言中用于至少执行一次循环体?
A. for循环
B. while循环
C. do-while循环
D. 以上都不是
(答案)C
7、在C语言中,指针变量主要用来存储什么?
A. 整数值
B. 浮点数值
C. 内存地址
D. 字符串
(答案)C
8、以下哪个头文件在C语言中用于标准输入输出函数?
A. <stdlib.h>
B. <string.h>
C. <stdio.h>
D. <math.h>
(答案)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考试真题及答案一、单项选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 若有定义 int a[5] = {1, 2, 3, 4, 5}; 则数组元素a[2]的值是多少?A. 1B. 2C. 3D. 4答案:C3. 在C语言中,哪个函数用于计算字符串的长度?A. strlen()B. strcpy()C. strcat()D. strcmp()答案:A4. 下面哪个选项不是C语言中的基本数据类型?A. intB. floatC. doubleD. string答案:D5. 在C语言中,以下哪个运算符用于逻辑与操作?A. &&B. ||C. !D. ~答案:A6. 若有定义 int x = 10; 则表达式 x % 3 的值是多少?A. 1B. 2C. 3D. 4答案:A7. 在C语言中,哪个关键字用于定义一个函数?A. functionB. defC. defineD. void答案:D8. 下面哪个选项是正确的C语言变量声明?A. int 5x;B. int x = 5C. int x = 5;D. int x = 5, y;答案:C9. 在C语言中,哪个函数用于将字符串复制到另一个字符串?A. strcpy()B. strncpy()C. strcat()D. strcmp()答案:A10. 若有定义 int a = 5, b = 10; 则表达式 a + b 的值是多少?A. 15B. 5C. 10D. 0答案:A二、程序填空题(每空2分,共20分)请根据题目要求,填写空白处的代码。
11. 给定以下代码片段,完成计算两个数之和的函数:```cint sum(int a, int b) {return _____;}```答案:a + b12. 给定以下代码片段,完成计算两个数之差的函数:```cint difference(int a, int b) {return _____;}```答案:a - b三、程序改错题(每题10分,共20分)13. 阅读以下代码,找出并修正其中的错误。
计算机二级c语言.考试题库及答案一、单项选择题(每题2分,共40分)1. C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 在C语言中,以下哪个选项是正确的注释方式?A. // 这是注释B. /* 这是注释 */C. //* 这是注释D. /* 这是注释 */答案:B3. 以下哪个选项不是C语言中的基本数据类型?A. intB. floatC. charD. string答案:D4. 在C语言中,以下哪个运算符用于取模运算?A. %B. /C. *D. -答案:A5. 以下哪个函数可以用于将字符串转换为浮点数?A. atoiB. atofC. itoaD. sprintf答案:B6. 在C语言中,以下哪个选项是正确的文件打开模式?A. "r"B. "w"C. "a"D. "r+"答案:D7. 在C语言中,以下哪个关键字用于声明一个函数?A. structB. voidC. intD. return答案:C8. C语言中,以下哪个选项是正确的数组声明方式?A. int array[5];B. int array[];C. int array[5] = {0};D. All of the above答案:D9. 在C语言中,以下哪个选项是正确的字符串声明方式?A. char str[] = "Hello";B. char str[10] = "Hello";C. char str[] = {'H', 'e', 'l', 'l', 'o'};D. All of the above答案:D10. 在C语言中,以下哪个关键字用于定义一个枚举类型?A. enumB. structC. unionD. typedef答案:A二、填空题(每题2分,共20分)1. 在C语言中,使用________关键字可以定义一个指针。
一填空题Str是全部由数字和字母字符组成的字符串,由num传入字符串的长度,请补充fun函数,该函数的功能是把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。
例如:str=“Abc123e456hui7890”,结果为:1234567890注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序:#include <stdio.h>#define N 80int bb[N];int fun(char s[], int bb[], int num){int i, n = 0;for (i=0; i<num; i++)if (s[i]>='0' ___1___ s[i]<='9'){bb[n] = ___2___;n++;}return ___3___;}main(){char str[N];int num = 0, n, i;printf("Enter a string :\n");gets(str);while (str[num])num++;n = fun(str, bb, num);printf("\nbb= ");for (i=0; i<n; i++)printf("%d", bb[i]);}第1处填空:&&第2处填空:s[i]-‘0’第3处填空:n改错题下列给定程序中,函数fun的功能是:求三个数的最小公倍数。
例如,给变量x1,x2,x3分别输入15112,则输出结果应当是330。
请改正程序中的错误,使其能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <stdio.h>int fun(int x, int y, int z){int j, t, n, m;/********found********/j = 1;t = m = n = 1;/********found********/while (t!=0 && m!=0 && n!=0){j = j+1;t = j%x;m = j%y;n = j%z;}return j;}main(){int x1, x2, x3, j;printf("Input x1 x2 x3: ");scanf("%d%d%d", &x1, &x2, &x3);printf("x1=%d, x2=%d, x3=%d \n", x1, x2, x3);j = fun(x1, x2, x3);printf("The minimal common multiple is : %d\n", j);}第1处:j=1;应改为j=0;第2处:while(t!=0&&m!=0&&n!=0)应改为while(t!=0||n!=0)编程题假定输入的字符串中只包含字母和*号。
请编写函数FUN,它的功能是:使字符串中前导*号全部移到字符串的尾部。
例如,若字符串中的内容为*******A*BC*DEF*G****,移动后,字符串中的内容应当是A*BC*DEF*G***********。
在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:#include <stdio.h>#include <conio.h>void fun( char *a){}main(){char s[81],*p;FILE *out;char test[4][80] = {"*******A*BC*DEF*G****","A******B*CD**EF*G*","****A****G*", "*d**b**a**e*"};int i;printf("Enter a string:\n");gets(s);fun( s );printf("The string after moveing:\n");puts(s);out=fopen("out.dat", "w");for(i=0;i<4;i++){fun(test[i]);fprintf(out, "%s\n", test[i]);}fclose(out);}答案是:void fun( char *a){int i=0,n=0;char *p;p=a;while(*p==’*’){n++;p++;}while(*p){a[i]=*p;i++;p++;}while(n!=0){a[i]=’*’;i++;n--;}a[i]=’\0’;}二填空题从键盘输入一组无符号整数并保存在数组xx[N]中,以整数0结束输入,要求这些数的最大位数不超过4位,其元素的个数通过变量num传入dun函数,该函数的功能是:从数组xx 中找出个位和十位的数字之和大于5的所以无符号整数,结果保存在数组yy,中其个数由fun函数返回。
例如:当xx[8]={123,11,23,222,42,333,14,5451}时,bb[3]={42,333,5451}注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填如所编写的若干表达式或语句。
试题程序:#include <stdio.h>#define N 1000int fun(int xx[], int bb[], int num){int i, n = 0;int g, s;for (i=0; i<num; i++){g = ___1___;s = xx[i]/10%10;if ((g+s) > 5)___2___;}return ___3___;}main(){int xx[N];int yy[N];int num = 0, n = 0, i = 0;printf("Input number :\n");do{scanf("%u", &xx[num]);} while (xx[num++] != 0);n = fun(xx, yy, num);printf("\nyy= ");for (i=0; i<n; i++)printf("%u ", yy[i]);}第1处填空:xx[i]%10第2处填空:bb[n++]=xx[i]第3处填空:n改错题下列给定程序中,函数fun的功能是:计算s所指字符串含有t所指字符串的数目,,并作为函数的值返回。
请改正函数fun 中的错误或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <conio.h>#include <stdio.h>#include <string.h>#define N 80int fun(char *s, char *t){int n;char *p, *r;n = 0;/********found********/p = &s[0];*r = t;while (*p){if (*r == *p){r++;if (*r == '\0'){n++;/********found********/___Ìî¿Õ___}}p++;}return n;}main(){char a[N], b[N];int m;printf("\nPlease enter string a :");gets(a);printf("\nPlease enter substring b :");gets(b);m = fun(a, b);m = printf("\nThe result is:m=%d\n", m);}第1处:*r=t;应改为r=t;或r=&t[0];第2处:应填r=t;或r=&t[0];编程题某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。
请编写函数FUN,它的功能是:求出该学生的平均分并放在记录的AVE成员中。
请自己定义正确的形参。
例如,若学生的成绩是85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应当是78.875。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:#include <stdio.h>#define N 8typedef struct{char num[10];double s[N];double ave;} STREC;void fun(STREC *p){}main(){STREC s={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};int i;FILE *out;fun( &s );printf("The %s's student data:\n", s.num);for(i=0;i<N;i++)printf("%4.1f\n",s.s[i]);printf("\nave=%7.3f\n",s.ave);out=fopen ("out.dat", "w");fprintf(out, "The %s's student data:\n", s.num);for(i=0;i<N;i++)fprintf(out, "%4.1f\n",s.s[i]);fprintf(out, "\nave=%7.3f\n",s.ave);fclose (out );}答案是:void fun(STREC *p){double av=0.0;int i;for(i=0;i<N;i++)av+=p->s[i];av/=N;p->ave=av;}三填空题请补充fun函数,该函数的功能是判断一个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回“yes!“,是否返回”no!”.注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。