全国计算机等级考试二级C语言操作题2+2016年
- 格式:doc
- 大小:5.43 KB
- 文档页数:1
全国计算机等级考试二级笔试卷基础知识和C语言程序设计(考试时间120分钟,满分100分)2016年4月6日一、选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分)下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) 一个完整的计算机系统包括A) 主机、键盘与显示器B) 计算机与外部设备C) 硬件系统与软件系统D) 系统软件与应用软件(2) 十六进制数1000转换成十进制数是A) 4096 B) 1024 C) 2048 D) 8192(3) 十进制数269转换成十六进制数是A) 10E B) 10D C) 10C D) 10B(4) 如果用八位二进制补码表示带符号的定点整数,则能表示的十进制数的范围是A) -127到+127 B) -128到+128 C) -127到+128 D) -128到+127(5) 下列设备中,既可作为输入设备又可作为输出设备的是A) 鼠标器B) 打印机C) 键盘D) 磁盘驱动器(6) 下列各叙述中,正确的是A) 正数十进制原码的补码是原码本身B) 所有的十进制小数都能准确地转换为有限位二进制小数C) 汉字的计算机内码就是国标码D) 存储器具有记忆能力,其中的信息任何时候都不会丢失(7) 在下列操作中,能导致DOS系统重新启动但不进行系统自检的是A) 加电开机B) 按<Ctrl>+<Break>C) 按<Ctrl>+<Alt>+<Del> D) 按RESET按钮(8) 如果给定一个带有通配符的文件名F*.?,则在下列各文件中,它能代表的文件名是A) FA.EXE B) F.C C) EF.C D) (9) DOS系统启动后,下列文件中常驻内存的是A) *.COM B) C) AUTOEXEC.BAT D) (10) 设A盘的目录结构为(画方框的为目录)如果当前盘为C盘,A盘的当前目录为\D2,则下列对A盘上文件QR.C的指定中,合法的是A) \D2\D4\QR.C B) D4\QR.C C) A:D4\QR.C D) A:D2\D4\QR.C(11) 为了要将A盘当前目录(不是根目录)中所有扩展名为.C的文件同名复制到A盘的目录\USER中,正确的命令是A) COPY A:*.C USER\*.C B) COPY A:*.C A:\USERC) COPY A:*.C A:USER\ D) COPY A:*.C A:USER\*.C(12) 为了在屏幕上一次显示当前盘当前目录下的所有扩展名为.TXT的文件内容,下列命令中正确的是A) TYPE *.TXT B) TYPE *.TXT CONC) COPY *.TXT>CON D) COPY *.TXT CON(13) 设当前盘为A盘,为了将当前盘当前目录下的文件AB1.TXT连接在C盘根目录下的文件XYZ.TXT的后面,正确的命令是A) COPY C:\XYZ.TXT+AB1.TXT B) COPY AB1.TXT>>C:\XYZ.TXTC) TYPE AB1.TXT>C:\XYZ.TXT D) COPY AB1.TXT+C:\XYZ.TXT>C:\XYZ.TXT(14) 设A盘为启动盘,其目录结构为(画方框的为目录)其中文件AUTOEXEC.BA T的内容为MD \XYZCD \DOS\USER则由A盘启动成功后,A盘的当前目录是A) \DOS\USER B) \XYZ C) \ D)\DOS(15) 下列DOS命令中为内部命令的是A) COMP B) PATH C) PRINT D) FORMAT(16) 设当前盘为C盘,所用的所有软盘已格式化且容量相同,则下列DOS命令中错误的是A) DISKCOPY A: C: B) DISKCOPY A: A: C) COPY A:*.* D) COPY A:*.* C:(17) 下列DOS命令中,有错误的是A) TYPE AAB.FOR>PRN B) TYPE ?AB.FORC) COPY *.C PRN D) COPY CON PRN(18) 设当前盘为C盘,在当前目录下有全部的DOS系统文件与批处理命令文件AB.BAT,且该批处理命令文件的内容为FORMAT A:/4MD \XYZCD \XYZRD \XYZMD \XYZ如果在1.2软盘驱动器A中插入一张360K容量的软盘片,执行批自理命令文件AB.BAT后,结果A盘的目录结构是A) 根目录B) 根目录----子目录XYZ----子目录XYZC) 根目录─┬─子目录XYZ└─子目录XYZD) 根目录----子目录XYZ(19) 下列带有通配符的文件名,能代表文件ABC.FOR的是A) *BC.? B) A?.* C) ?BC.* D) ?.?(20) 设当前盘为C盘,且C盘上含有子目录\DOS,A盘为只有根目录的启动盘(根目录下只有三个DOS系统文件与扩展名为. C的文件)。
2016计算机二级c考试答案解析一、选择题1. 在C语言中,以下哪个选项是正确的数据类型?A. intB. floatC. doubleD. char答案:ABCD解析:在C语言中,int、float、double和char都是合法的数据类型,分别表示整型、浮点型、双精度浮点型和字符型。
2. 下列哪个选项是C语言中合法的变量名?A. 2variableB. _variableC. variable2D. variable-variable答案:B C解析:在C语言中,变量名必须以字母或下划线开头,不能以数字开头。
因此,_variable和variable2是合法的变量名,而2variable和variable-variable不是。
3. 在C语言中,以下哪个选项是正确的数组声明?A. int array[10];B. int array[];C. int array[5] = {1, 2, 3, 4, 5};D. int array[10] = {1, 2, 3};答案:AC解析:在C语言中,数组可以预先声明大小,如int array[10];也可以在声明时初始化,如int array[5] = {1, 2, 3, 4, 5};。
但是,如果数组的大小在声明时没有指定,那么在初始化时必须指定,如int array[] = {1, 2, 3};是不合法的。
二、填空题1. 在C语言中,使用________关键字可以定义一个函数。
答案:void解析:在C语言中,使用void关键字可以定义一个不返回任何值的函数。
2. 若有以下代码片段:```cint a = 5;int b = a++;```则变量b的值为________。
答案:5解析:在C语言中,后置增量运算符(a++)会先返回变量的当前值,然后再将变量的值增加1。
因此,变量b的值将是a的初始值5。
三、编程题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 first 10 terms is: %f\n", sum);return 0;}```解析:该程序使用一个for循环来计算数列的前10项之和。
2016年3月份全国计算机等级考试二级C语言题库(全)一、选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为A)PAD图B)N-S图C)结构图D)数据流图(2)结构化程序设计主要强调的是A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性(3)为了使模块尽可能独立,要求A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强(4)需求分析阶段的任务是确定A)软件开发方法B)软件开发工具C)软件开发费用D)软件系统功能(5)算法的有穷性是指A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是A)快速排序B)冒泡排序C)直接插入排序D)堆排序(7)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是A)e3,e1,e4,e2 B)e2,e4,e3,e1 C)e3,e4,e1,e2 D) 任意顺序(8)将E-R图转换到关系模式时,实体与联系都可以表示成A)属性B)关系C)键D)域(9)有三个关系R、S和T如下:RB C Da 0 k1b 1 n1SB C Df 3 h2a 0 k1n 2 x1TB C Da 0 k1由关系R和S通过运算得到关系T,则所使用的运算为A)并B)自然连接C)笛卡尔积D)交(10)下列有关数据库的描述,正确的是A)数据处理是将信息转化为数据的过程B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变C)关系中的每一行称为元组,每一个列称为属性D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字(11)以下叙述中正确的是A)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须要有输入C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出(12)下列可用于C语言用户标识符的一组是A)void, define, WORD B)a3_3,_123,Car C)For, -abc, IF CaseD)2a, DO, sizeof 标识符由数字、字母、下划线组成,开头不能为数字(13)以下选项中可作为C语言合法常量的是A)-80 B)-080 C)-8e1.0 D)-80.0e e后为整数(14)若有语句:char *line[5];,以下叙述中正确的是A) 定义line是一个数组,每个数组元素是一个基类型为char为指针变量B) 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C) 定义line是一个指针数组,语句中的*号称为间址运算符D) 定义line是一个指向字符型函数的指针(15)以下定义语句中正确的是A)int a=b=0; B)char A=65+1,b=′b′; C)float a=1,*b=&a,*c=&b;D)double a=00;b=1.1;(16)有以下程序段char ch; int k;ch=′a′;k=12;printf("%c,%d,",ch,ch,k); printf("k=%d \n",k);已知字符a的ASCII码值为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12D)a,97,k=12(17)有以下程序main(){ int i,s=1;for (i=1;i<50;i++)if(!(i%5)&&!(i%3)) s+=i;printf("%d\n",s);}A)409 B)277 C)1 D)91 (18)当变量c的值不为2、4、6时,值也为"真"的表达式是A)(c==2)||(c==4)||(c==6)B)(c>=2&& c<=6)||(c!=3)||(c!=5)C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&& c<=6)&&(c%2!=1)(19)若变量已正确定义,有以下程序段int a=3,b=5,c=7;if(a>b) a=b; c=a;if(c!=a) c=b;printf("%d,%d,%d\n",a,b,c);其输出结果是A)程序段有语法错B)3,5,3 C)3,5,5 D)3,5,7(20)有以下程序#include <stdio.h>main(){ int x=1,y=0,a=0,b=0;switch(x){ case 1:switch(y){ case 0:a++; break;case 1:b++; break;}case 2:a++; b++; break;case 3:a++; b++;}printf("a=%d,b=%d\n",a,b);}A)a=1,b=0 B)a=2,b=2 C)a=1,b=1 D)a=2,b=1(21)下列程序的输出结果是#include "stdio.h"main(){ int i,a=0,b=0;for(i=1;i<10;i++){ if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b); }A)a=4,b=4 B)a=4,b=5 C)a=5,b=4 D)a=5,b=5(22)已知#int t=0;while (t=1){...}则以下叙述正确的是A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对(23)下面程序的输出结果是main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}A)3 B)4 C)1 D)2(24)以下错误的定义语句是A)int x[][3]={{0},{1},{1,2,3}}; B)int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};C)int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; D)int x[][3]={1,2,3,4}; (25)有以下程序void ss(char *s,char t){ while(*s){ if(*s==t)*s=t-′a′+′A′;s++; } }main(){ char str1[100]="abcddfefdbd",c=′d′;ss(str1,c); printf("%s\n",str1);}程序运行后的输出结果是A)ABCDDEFEDBD B)abcDDfefDbD C)abcAAfefAbA D)Abcddfefdbd(26)有如下程序main(){ char ch[2][5]={"6937","8254"},*p[2];int i,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>′\0′;j+=2)s=10*s+p[i][j]-′0′;printf("%d\n",s);}该程序的输出结果是A)69825 B)63825 C)6385 D)693825(27)有定义语句:char s[10];,若要从终端给s输入5个字符,错误的输入语句是A)gets(&s[0]); B)scanf("%s",s+1); C)gets(s); D)scanf("%s",s[1]); (28)以下叙述中错误的是A)在程序中凡是以"#"开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#define MAX 是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的(29)设有以下说明语句typedef struct{ int n;char ch[8];} PER;则下面叙述中正确的是A)PER 是结构体变量名B)PER是结构体类型名C)typedef struct 是结构体类型D)struct 是结构体类型名(30)以下叙述中错误的是A)gets函数用于从终端读入字符串B)getchar函数用于从磁盘文件读入字符C)fputs函数用于把字符串输出到文件D)fwrite函数用于以二进制形式输出数据到文件(31)以下能正确定义一维数组的选项是A)int a[5]={0,1,2,3,4,5}; B)char a[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′}; C)char a={′A′,′B′,′C′}; D)int a[5]="0123";(32)有以下程序#include<string.h>main(){ char p[]={′a′, ′b′, ′c′},q[10]={ ′a′, ′b′, ′c′};printf("%d%d\n",strlen(p),strlen(q));}以下叙述中正确的是A) 在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3B) 由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3C) 由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3D) 由于p和q数组中都没有字符串结束符,故长度都不能确定(33)有以下程序#include <stdio.h>#include <string.h>void fun(char *s[],int n){ char *t; int i,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])) {t=s[i];s[i]:s[j];s[j]=t;}}main(){ char *ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5); printf("%s,%s\n",ss[0],ss[4]);}程序的运行结果是A)xy,aaaacc B)aaaacc,xy C)bcc,aabcc D)aabcc,bcc(34)有以下程序#include <stdio.h>int f(int x){ int y;if(x==0||x==1) return(3);y=x*x-f(x-2);return y;}main(){ int z;z=f(3); printf("%d\n",z);}程序的运行结果是A)0 B)9 C)6 D)8(35)下面程序段的运行结果是char str[]="ABC",*p=str;printf("%d\n",*(p+3));A)67 B)0 C)字符′C′的地址D)字符′C′(36)若有以下定义:struct link{ int data;struct link *next;} a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:指针p指向变量a,q指向变量c。
2016年3月全国计算机等级考试二级《C语言》真题(总分100, 考试时间120分钟)一、选择题(每小题1分,共40分)1. 有以下程序:#include <stdio.h>int mul(int val){ static int init = 1;return init *= val;}main(){ int i;for(i=1;i<=5;i++)printf("%d,",mul(i));}程序运行后的输出结果是()。
A 1,2,6,24,120,B 1,2,3,4,5,C 1,1,1,1,1,D 1,2,4,6,8,该问题分值: 1答案:Astatic静态变量只在声明时初始化一次。
mul()累乘,第一次init=1,init}=val,第二次init=1,val=2,第三次init=2,val=3,第四次init=6,val=4,第五层init=24,val=5,因此结果为l,2,6,24,120。
故答案为A选项。
2. 下列叙述中正确的是()。
A 软件是程序、数据和文档B 软件是程序和数据C 软件是算法和数据结构D 软件是算法和程序该问题分值: 1答案:A计算机软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。
故选A选项。
3. 语句prinff(”%d\n”,strlen(”\t\”\、、n\"\065\08AB”));的输出结果是()。
A 6B 7C 8D 9该问题分值: 1答案:A字符串”\t\¨\\\nV、065\08AB”中共有13个字符,而strlen()函数从字符串第一个字符开始扫描,直到碰到第一个结束符’\0’为止,然后返回计数器值(长度不包含”、O”)。
故输出结果为6。
答案为A选项。
4. 函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回给调用函数,函数不完整。
2016年03月全国计算机等级考试二级《C语言》真题(总分100, 考试时间90分钟)一、选择题1. 有以下定义:struct data{ int i;char c;double d;}x;以下叙述中错误的是______。
A x的内存地址与x. i的内存地址相同B struct data是一个类型名C 初始化时,可以对x的所有成员同时赋初值D 成员i、c和d占用的是同一个存储空间答案:D[解析] 变量i、c、d是结构体变量x中三个不同的成员,占用不同的存储空间。
2. 以下函数的功能是:计算a的n次方作为函数值返回。
double fun(double a,int n){ int i;double s=1.0;for(i=1;i<=n;i++)s=______;return s;}为实现上述功能,函数中下划线处应填入的是______。
A s*iB s*aC s+i*iD s+a*a答案:B[解析] s为a的(i-1)次方的结果,所以令s=s*a即可得到a的i次方。
3. 有以下程序:#include<stdio.h>#include<string.h>main( ){ char str[ ]={"Hello,Beijing"};printf("%d,%d\n",strlen(str),sizeof(str));}程序的运行结果是______。
A 13,13B 13,14C 13,15D 14,15答案:B[解析] strlen返回字符串的长度,不包含字符串末尾的结束字符"\0",结果为13;sizeof返回字符串所占存储空间的大小,由于字符串最后要加上一个"\0",所以结果为13+1=14。
4. 若有说明:typedef struct{int a;char c;}w;,则以下叙述正确的是______。
A 编译后系统为w分配5个字节B 编译后系统为w分配6个字节答案:D[解析] w是一个自定义类型,不是变量,故编译后系统不为w分配存储空间。
2016年3月份全国计算机等级考试二级C语言题库(全)一、选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为A)PAD图B)N-S图C)结构图D)数据流图(2)结构化程序设计主要强调的是A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性(3)为了使模块尽可能独立,要求A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强(4)需求分析阶段的任务是确定A)软件开发方法B)软件开发工具C)软件开发费用D)软件系统功能(5)算法的有穷性是指A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是A)快速排序B)冒泡排序C)直接插入排序D)堆排序(7)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是A)e3,e1,e4,e2 B)e2,e4,e3,e1 C)e3,e4,e1,e2 D) 任意顺序(8)将E-R图转换到关系模式时,实体与联系都可以表示成A)属性B)关系C)键D)域(9)有三个关系R、S和T如下:RB C Da 0 k1b 1 n1SB C Df 3 h2a 0 k1n 2 x1TB C Da 0 k1由关系R和S通过运算得到关系T,则所使用的运算为A)并B)自然连接C)笛卡尔积D)交(10)下列有关数据库的描述,正确的是A)数据处理是将信息转化为数据的过程B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变C)关系中的每一列称为元组,一个元组就是一个字段D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字(11)以下叙述中正确的是A)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须要有输入C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出(12)下列可用于C语言用户标识符的一组是A)void, define, WORD B)a3_3,_123,Car C)For, -abc, IF CaseD)2a, DO, sizeof(13)以下选项中可作为C语言合法常量的是A)-80 B)-080 C)-8e1.0 D)-80.0e(14)若有语句:char *line[5];,以下叙述中正确的是A) 定义line是一个数组,每个数组元素是一个基类型为char为指针变量B) 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C) 定义line是一个指针数组,语句中的*号称为间址运算符D) 定义line是一个指向字符型函数的指针(15)以下定义语句中正确的是A)int a=b=0; B)char A=65+1,b=′b′; C)float a=1,*b=&a,*c=&b;.1;(16)有以下程序段char ch; int k;ch=′a′;k=12;printf("%c,%d,",ch,ch,k); printf("k=%d \n",k);已知字符a的ASCII码值为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12D)a,97,k=12(17)有以下程序main(){ int i,s=1;for (i=1;i<50;i++)if(!(i%5)&&!(i%3)) s+=i;printf("%d\n",s);}A)409 B)277 C)1 D)91 (18)当变量c的值不为2、4、6时,值也为"真"的表达式是A)(c==2)||(c==4)||(c==6)B)(c>=2&& c<=6)||(c!=3)||(c!=5)C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&& c<=6)&&(c%2!=1)(19)若变量已正确定义,有以下程序段int a=3,b=5,c=7;if(a>b) a=b; c=a;if(c!=a) c=b;printf("%d,%d,%d\n",a,b,c);其输出结果是A)程序段有语法错B)3,5,3 C)3,5,5 D)3,5,7(20)有以下程序#include <stdio.h>main(){ int x=1,y=0,a=0,b=0;switch(x){ case 1:switch(y){ case 0:a++; break;case 1:b++; break;}case 2:a++; b++; break;case 3:a++; b++;}printf("a=%d,b=%d\n",a,b);}A)a=1,b=0 B)a=2,b=2 C)a=1,b=1 D)a=2,b=1(21)下列程序的输出结果是#include "stdio.h"main(){ int i,a=0,b=0;for(i=1;i<10;i++){ if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b); }A)a=4,b=4 B)a=4,b=5 C)a=5,b=4 D)a=5,b=5(22)已知#int t=0;while (t=1){...}则以下叙述正确的是A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对(23)下面程序的输出结果是main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}A)3 B)4 C)1 D)2(24)以下错误的定义语句是A)int x[][3]={{0},{1},{1,2,3}}; B)int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};C)int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; D)int x[][3]={1,2,3,4}; (25)有以下程序void ss(char *s,char t){ while(*s){ if(*s==t)*s=t-′a′+′A′;s++; } }main(){ char str1[100]="abcddfefdbd",c=′d′;ss(str1,c); printf("%s\n",str1);}程序运行后的输出结果是A)ABCDDEFEDBD B)abcDDfefDbD C)abcAAfefAbA D)Abcddfefdbd(26)有如下程序main(){ char ch[2][5]={"6937","8254"},*p[2];int i,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>′\0′;j+=2)s=10*s+p[i][j]-′0′;printf("%d\n",s);}该程序的输出结果是A)69825 B)63825 C)6385 D)693825(27)有定义语句:char s[10];,若要从终端给s输入5个字符,错误的输入语句是A)gets(&s[0]); B)scanf("%s",s+1); C)gets(s); D)scanf("%s",s[1]); (28)以下叙述中错误的是A)在程序中凡是以"#"开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#define MAX 是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的(29)设有以下说明语句typedef struct{ int n;char ch[8];} PER;则下面叙述中正确的是A)PER 是结构体变量名B)PER是结构体类型名C)typedef struct 是结构体类型D)struct 是结构体类型名(30)以下叙述中错误的是A)gets函数用于从终端读入字符串B)getchar函数用于从磁盘文件读入字符C)fputs函数用于把字符串输出到文件D)fwrite函数用于以二进制形式输出数据到文件(31)以下能正确定义一维数组的选项是A)int a[5]={0,1,2,3,4,5}; B)char a[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′}; C)char a={′A′,′B′,′C′}; D)int a[5]="0123";(32)有以下程序#include<string.h>main(){ char p[]={′a′, ′b′, ′c′},q[10]={ ′a′, ′b′, ′c′};printf("%d%d\n",strlen(p),strlen(q));}以下叙述中正确的是A) 在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3B) 由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3C) 由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3D) 由于p和q数组中都没有字符串结束符,故长度都不能确定(33)有以下程序#include <stdio.h>#include <string.h>t i,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])) {t=s[i];s[i]:s[j];s[j]=t;}}main()fun(ss,5); printf("%s,%s\n",ss[0],ss[4]);}程序的运行结果是A)xy,aaaacc B)aaaacc,xy C)bcc,aabcc D)aabcc,bcc(34)有以下程序#include <stdio.h>int f(int x){ int y;if(x==0||x==1) return(3);-f(x-2);return y;}main(){ int z;z=f(3); printf("%d\n",z);}程序的运行结果是A)0 B)9 C)6 D)8(35)下面程序段的运行结果是char str[]="ABC",*p=str;printf("%d\n",*(p+3));A)67 B)0 C)字符′C′的地址D)字符′C′(36)若有以下定义:struct link{ int data;struct link *next;} a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:指针p指向变量a,q指向变量c。
2016年计算机二级C语言操作题及答案1.给定程序中,函数fun的功能是:统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。
例如,形参s所指的字符串为:abcdef35adgh3kjsdf7。
输出结果为:4。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!给定源程序:#includevoid fun(char *s, int *t){ int i, n;n=0;for(i=0; ___1___ !=NULL; i++)if(s[i]>='0'&&s[i]<= ___2___ ) n++;___3___ ;}main(){ char s[80]="abcdef35adgh3kjsdf7";int t;printf("\nThe original string is : %s\n",s);fun(s,&t);printf("\nThe result is : %d\n",t);}【解题思路】:第一处:在for循环中终止值要判断字符串是否结束符,所以应填:s[i]。
第二处:判断是否是数字,所以应填:'9'。
第三处:字符串中数字字符出现的次数n,并存放在形参t所指的变量中,所以应填:*t=n。
***************************************************给定程序MODI1.C中函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。
例如变量a 中的值原为8,b中的值原为3, 程序运行后 a 中的值为 3,b中的值为8。
2.请改正程序中的错误,使它能得出正确的结果。
全国计算机等级考试二级C语言真题题库2 2016年3月(总分:100.00,做题时间:120分钟)一、选择题(每小题1分,共40分)(总题数:40,分数:40.00)1.设有以下程序段: struct book { float price; char language; char title[20]; } rec,*ptr; ptr = &rec; 要求输入字符串给结构体变量rec的title成员,错误的输入语句是()。
(分数:1.00)A.seanf(”%s”Ptrtitle);√B.scanf(”%s”,rec.title);C.scanf(’’%s”,(*pu).title);D.scanf(”%s”,ptr->title);解析:符号“_>”是指针特用的,符号“.”用于指定元素的成员。
ptr是指针,只能用符号“一>”,因此选项A错误。
+P是指定元素(Fee)可以使用“.”运算,因此选项D正确。
选项B,Fee.title代表数组title,同理选项C正确。
答案为A选项。
2.有以下程序:aBeDefG##,则输出结果是()。
(分数:1.00)A.AbCdEFgB.ABCDEFGC.BCDEFGH √D.bedefgh解析:循环的作用是将输入的字符串转化为大写,9etchar()每次读入一个字符,putchar()每次输出一个字符,当遇到#字符结束。
putchar(++C),表示将字符变量C加1后输出。
因此,输入aBcDefG##,得到的结果是BCDEFGH。
故答案为c选项。
3.以下与存储类别有关的四组说明符中,全部属于静态类的一组是()。
(分数:1.00)A.extem和static √B.auto和staticC.register和staticD.register和excerl解析:auto用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。
2016计算机二级考试c语言真题及答案一、选择题(每题1分,共20分)1. 下列关于C语言的叙述中,正确的是()。
A. C语言的源程序文件名的后缀是.cB. C语言的源程序文件名的后缀是.cppC. C语言的源程序文件名的后缀是.javaD. C语言的源程序文件名的后缀是.py答案:A2. 在C语言中,以下哪个关键字用于定义函数?()A. structB. functionC. defineD. void答案:D3. 若有以下定义:```cint a = 10, b = 20, c = 30;```则执行以下语句后,变量c的值是多少?()```cc = a > b ? a : b;```A. 10B. 20C. 30D. 40答案:B4. 在C语言中,以下哪个运算符用于取模运算?()A. %B. /C. *D. -答案:A5. 下列关于C语言中数组的叙述,不正确的是()。
A. 数组名代表数组的首地址B. 数组名是一个常量C. 数组名可以被赋值D. 数组名可以作为函数参数答案:C6. 在C语言中,以下哪个函数用于计算字符串的长度?()A. strlen()B. strcpy()C. strcat()D. strcmp()答案:A7. 在C语言中,以下哪个关键字用于定义指针?()A. pointerB. ptrC. int*D. *答案:D8. 在C语言中,以下哪个函数用于打开文件?()A. fopen()B. fclose()C. fgetc()D. fwrite()答案:A9. 在C语言中,以下哪个函数用于将字符串复制到字符数组中?()A. strcpy()B. strncpy()C. strcat()D. strcmp()答案:A10. 在C语言中,以下哪个函数用于将格式化的数据写入文件?()A. printf()B. fprintf()C. scanf()D. fscanf()答案:B11. 在C语言中,以下哪个函数用于计算两个浮点数之间的差的绝对值?()A. fabs()B. floor()C. ceil()D. fmod()答案:A12. 在C语言中,以下哪个关键字用于定义结构体?()A. structB. unionC. enumD. typedef答案:A13. 在C语言中,以下哪个函数用于将整数转换为字符串?()A. atoi()B. itoa()C. sprintf()D. sscanf()答案:B14. 在C语言中,以下哪个函数用于获取当前时间?()A. time()B. localtime()C. mktime()D. gmtime()答案:A15. 在C语言中,以下哪个函数用于将字符串转换为浮点数?()A. atof()B. atoi()C. atol()D. atoll()答案:A16. 在C语言中,以下哪个关键字用于定义枚举类型?()A. enumB. unionC. structD. typedef答案:A17. 在C语言中,以下哪个函数用于获取字符串中的子字符串?()A. strncpy()B. strncat()C. strstr()D. strtok()答案:C18. 在C语言中,以下哪个函数用于计算两个整数之间的差的绝对值?()A. fabs()B. floor()C. abs()D. labs()答案:C19. 在C语言中,以下哪个函数用于将浮点数转换为字符串?()A. sprintf()B. sscanf()C. atof()D. atoi()答案:A20. 在C语言中,以下哪个函数用于释放动态分配的内存?()A. malloc()B. calloc()C. realloc()D. free()答案:D二、填空题(每题2分,共20分)1. 在C语言中,使用____关键字可以定义一个全局变量。
2016全国计算机等级考试二级C语言笔试选择真题及答案一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分)(1)下列数据结构中,属于非线性结构的是A.循环队列B.带链队列C.二叉树D.带链栈(2)下列数据结果中,能够按照“先进后出”原则存取数据的是A.循环队列B.栈C.队列D.二叉树(3)对于循环队列,下列叙述中正确的是A.队头指针是固定不变的B.队头指针一定大于队尾指针C.队头指针一定小于队尾指针D.队头指针可以大于队尾指针,也可以小于队尾指针(4)算法的空间复杂度是指A.算法在执行过程中所需要的计算机存储空间B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时工作单元数(5)软件设计中划分模块的一个准则是A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合(6)下列选项中不属于结构化程序设计原则的是A.可封装B.自顶向下C.模块化D.逐步求精(7)软件详细设计产生的图如下:该图是A.N-S图B.PAD图C.程序流程图D.E-R图(8)数据库管理系统是A.操作系统的一部分B.在操作系统支持下的系统软件C.一种编译系统D.一种操作系统(9)在E-R图中,用来表示实体联系的图形是A.椭圆图B.矩形C.菱形D.三角形(10)有三个关系R,S和T如下:其中关系T由关系R和S通过某种操作得到,该操作为A.选择B.投影C.交D.并(11)以下叙述中正确的是A.程序设计的任务就是编写程序代码并上机调试B.程序设计的任务就是确定所用数据结构C.程序设计的任务就是确定所用算法D.以上三种说法都不完整(12)以下选项中,能用作用户标识符的是A.voidC._0_D.unsigned(13)阅读以下程序#includemain(){ int case; float printF;printf(“请输入2个数:”);scanf(“%d %f”,&case,&pjrintF);printf(“%d %f\n”,case,printF);}该程序编译时产生错误,其出错原因是A.定义语句出错,case是关键字,不能用作用户自定义标识符B.定义语句出错,printF不能用作用户自定义标识符C.定义语句无错,scanf不能作为输入函数使用D.定义语句无错,printf不能输出case的值(14)表达式:(int)((double)9/2)-(9)%2的值是A.0B.3C.4D.5(15)若有定义语句:int x=10;,则表达式x-=x+x的值为B.-10C.0D.10(16)有以下程序#includemain(){ int a=1,b=0;printf(“%d,”,b=a+b);printf(“%d\n”,a=2*b);}程序运行后的输出结果是A.0,0B.1,0C.3,2D.1,217)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是A.if(a>B.c=a,a=b,b=c;B.if(a>B.{c=a,a=b,b=c;}C.if(a>B.c=a;a=b;b=c;D.if(a>B.{c=a;a=b;b=c;}(18)有以下程序main(){ int c=0,k;for (k=1;k<3;k++)switch (k){ default: c+=kcase 2: c++;break;case 4: c+=2;break;}printf(“%d\n”,C.;}程序运行后的输出结果是A.3B.5C.7D.9(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是A.if((a>b)&&(b>C.) k=1;else k=0;B.if((a>b)||(b>C.k=1;else k=0;C.if(a<=B.k=0;else if(b<=C.k=1;D.if(a>B.k=1;else if(b>C.k=1;else k=0;20)有以下程序#includemain(){ char s[]={“012xy”};int i,n=0; for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’) n++; printf(“%d\n”,n);}程序运行后的输出结果是A.0B.2C.3D.5(21)有以下程序#includemain(){ int n=2,k=0;while(k++&&n++>2);printf(“%d %d\n”,k,n);}程序运行后的输出结果是A.0 2B.1 3C.5 7D.1 2(22)有以下定义语句,编译时会出现编译错误的是A.char a=’a’;B.char a=’\n’;C.char a=’aa’;D.char a=’\x2d’;(23)有以下程序#includemain(){ char c1,c2;c1=’A’+’8’-‘4’;c2=’A’+’8’-‘5’;printf(“%c,%d\n”,c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是A.E,68B.D,69C.E,DD.输出无定值(24)有以下程序#includevoid fun(int p){ int d=2;p=d++; printf(“%d”,p);}main(){ int a=1;fun(a); printf(“%d\n”,a);}程序运行后的输出结果是A.32B.12C.21D.22(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能#define MIN -2147483647int findmax (int x[],int n){ int i,max;for(i=0;i{ max=MIN;if(maxreturn max;}造成错误的原因是A.定义语句int i,max;中max未赋初值B.赋值语句max=MIN;中,不应给max赋MIN值C.语句if(maxD.赋值语句max=MIN;放错了位置(26)有以下程序#includemain(){ int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%d\n”,m,n,*p,*q);}程序运行后的输出结果是A.1,2,1,2B.1,2,2,1C.2,1,2,1D.2,1,1,2(27)若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是A.p=aB.q[i]=a[i]C.p=a[i]D.p=&a[2][1](28)有以下程序#include#includemain(){ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1]; printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序运行后的输出结果是A.9,One*WorldB.9,One*DreamC.10,One*DreamD.10,One*World(29)有以下程序#includemain(){ int a[ ]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){ case 0:switch(a[i]%2){case 0:a[i]++;break;case 1:a[i]--;}break;case 1:a[i[=0;}for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“\n”); }A.3 3 4 4B.2 0 5 0C.3 0 4 0D.0 3 0 4(30)有以下程序#include#includemain(){ char a[10]=”abcd”;printf(“%d,%d\n”,strlen(a),sizeof(a));}程序运行后的输出结果是A.7,4B.4,10D.10,10(31)下面是有关C语言字符数组的描述,其中错误的是A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组中的内容不一定是字符串D.字符数组只能存放字符串(32)下列函数的功能是fun(char * a,char * b){ while((*b=*a)!=’\0’) {a++,b++;} }A.将a所指字符串赋给b所指空间B.使指针b指向a所指字符串C.将a所指字符串和b所指字符串进行比较D.检查a和b所指字符串中是否有’\0’(33)设有以下函数void fun(int n,char * s) {……}则下面对函数指针的定义和赋值均是正确的是A.void (*pf)(); pf=fun;B.viod *pf(); pf=fun;C.void *pf(); *pf=fun;D.void (*pf)(int,char);pf=&fun;(34)有以下程序int f(int n);main(){ int a=3,s;s=f(a);s=s+f(a);printf(“%d\n”,s); }int f(int n){ static int a=1;n+=a++;return n;}程序运行以后的输出结果是A.7B.8C.9D.10(35)有以下程序#include#define f(x) x*x*xmain(){ int a=3,s,t;s=f(a+1);t=f((a+1));printf(“%d,%d\n’,s,t);}程序运行后的输出结果是A.10,64B.10,10C.64,10D.64,64(36)下面结构体的定义语句中,错误的是A.struct ord {int x;int y;int z;}; struct ord a;B.struct ord {int x;int y;int z;} struct ord a;C.struct ord {int x;int y;int z;} a;D.struct {int x;int y;int z;} a;(37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是A.char str[ ]=”string”;c=str;B.scanf(“%s”,C.;C.c=getchar();D.*c=”string”;(38)有以下程序#include#includestruct A{ int a; char b[10]; double c;};struct A f(struct A t);main(){ struct A a={1001,”ZhangDa”,1098.0};a=f(a);jprintf(“%d,%s,%6.1f\n”,a.a,a.b,a.C.;}struct A f(struct A t)( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; ) 程序运行后的输出结果是A.1001,ZhangDa,1098.0B.1001,ZhangDa,1202.0C.1001,ChangRong,1098.0D.1001,ChangRong,1202.0(39)若有以下程序段int r=8;printf(“%d\n”,r>>1);输出结果是A.16B.8C.4D.2(40)下列关于C语言文件的叙述中正确的是A.文件由一系列数据依次排列组成,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可以构成二进制文件或文本文件D.文件由字符序列组成,其类型只能是文本文件二、填空题(每空2分,共30分)(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有【1】个结点。
2016年3月全国计算机等级考试二级《C语言》真题二(总分100, 考试时间120分钟)一、选择题(每小题1分,共40分)1. 设有以下程序段:struct book{ float price;char language;char title[20];} rec,*ptr;ptr = &rec;要求输入字符串给结构体变量rec的title成员,错误的输入语句是()。
A seanf(”%s”Ptrtitle);B scanf(”%s”,rec.title);C scanf(’’%s”,(*pu).title);D scanf(”%s”,ptr->title);该问题分值: 1答案:A符号“_>”是指针特用的,符号“.”用于指定元素的成员。
ptr是指针,只能用符号“一>”,因此选项A错误。
+P是指定元素(Fee)可以使用“.”运算,因此选项D正确。
选项B,Fee.title代表数组title,同理选项C正确。
答案为A选项。
2. 有以下程序:执行时输入:aBeDefG##<回车>,则输出结果是()。
A AbCdEFgB ABCDEFGC BCDEFGHD bedefgh该问题分值: 1答案:C循环的作用是将输入的字符串转化为大写,9etchar()每次读入一个字符,putchar()每次输出一个字符,当遇到#字符结束。
putchar(++C),表示将字符变量C加1后输出。
因此,输入aBcDefG##,得到的结果是BCDEFGH。
故答案为c选项。
3. 以下与存储类别有关的四组说明符中,全部属于静态类的一组是()。
A extem和staticB auto和staticC register和staticD register和excerl该问题分值: 1答案:Aauto用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。
2016年计算机二级c语言题库及答案一、选择题(每小题1分,共40小题,共40分)1.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。
现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为( )。
A.20B.0或35C.15D.162.下列关于栈的叙述中,正确的是( )。
A.栈底元素一定是最后入栈的元素B.栈操作遵循先进后出的原则C.栈顶元素一定是最先入栈的元素D.以上三种说法都不对3.下列链表中,其逻辑结构属于非线性结构的是( )0、A.双向链表B.带链的栈C.二叉链表D.循环链表4.在关系数据库中,用来表示实体间联系的是( )。
A.网状结构B.树状结构C.属性D.二维表5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。
则实体部门和职员间的联系是( )。
A.1:m联系B.m:n联系C.1:1联系D.m:l联系则由关系R得到关系S的操作是( )。
A.自然连接B.并C.选择D.投影7.数据字典(DD)所定义的对象都包含于( )。
A.软件结构图B.方框图C.数据流图(DFD图)D.程序流程图8.软件需求规格说明书的作用不包括( )。
A.软件设计的依据B.软件可行性研究的依据C.软件验收的依据D.用户与开发人员对软件要做什么的共同理解9.下面属于黑盒测试方法的是( )。
A.边界值分析B.路径覆盖C.语句覆盖D.逻辑覆盖10.下面不属于软件设计阶段任务的是( )。
A.制订软件确认测试计划B.数据库设计C.软件总体设计D.算法设计11.以下叙述中正确的是( )。
A.在C语言程序中,main函数必须放在其他函数的最前面B.每个后缀为C的C语言源程序都可以单独进行编译C.在C语言程序中,只有main函数才可单独进行编译D.每个后缀为.C的C语言源程序都应该包含一个main函数A.预定义标识符(如库函数中的函数名)可用做用户标识符,但失去原有含义B.用户标识符可以由字母和数字任意顺序组成C.在标识符中大写字母和小写字母被认为是相同的字符D.关键字可用做用户标识符,但失去原有含义13.以下选项中表示一个合法的常量是(说明:符号口表示空格)( )。
2016年3月全国计算机等级考试二级C语言上机考试题库及答案第1套一、填空给定函数的功能是调用fun函数建立班级通讯录。
通讯录记录每位学生的编号,姓名和电话号码。
班级的人数和学生的从低位开始取出长整形过程中,把复制的内容输该节点,是链表缩短。
出到终端屏幕。
主函数中答案: next t->data 变量s中的奇数位上的t 源文件名放在变量数,依次构成一个新数放二、修改 sfname中,目标文件名放在t中,高位仍放在高位,在变量tfname中将字符串中的字符按逆低位仍放在低位。
序输出,单补改变字符串答案:“r” fs ft 答案: long *t sl = 中的内容。
二、修改 sl*10; 答案:void fun (char *a) 将长整形数中每一位上三、程序 printf("%c", *a) ; 为偶数的数依次取出,构将两个两位数的正整数三、程序成一个新数放在t中。
高a,答案合并成一个整数比较两个字符串的长度位仍在高位仍在低位。
信息从键盘读入,每个人的信息作为一个数据块写到名为答案yfile5.dat的二进制文件中。
答案:1. STYPE 2. FILE 3. 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作为字符串输入结束的标记。
然后将文件的内容读出显示在屏幕上。
2016年国家计算机二级C语言试题库及答案1.(A )是构成程序的基本单位。
A、函数B、过程C、子程序D、子例程2.C语言程序从(C) 开始执行。
A、程序中第一条可执行语句B、程序中第一个函数C、程序中的main函数D、包含文件中的第一个函数3、以下说法中正确的是( C )。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函数中定义C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部分4.下列关于C语言的说法错误的是( B ) 。
A、 C程序的工作过程是编辑、编译、连接、运行B、 C语言不区分大小写。
C、 C程序的三种基本结构是顺序、选择、循环D、C程序从main函数开始执行5.下列正确的标识符是(C)。
A、-a1B、a[i]C、a2_iD、int t5-8题为相同类型题考点:标识符的命名规则只能由字母、数字、下划线构成数字不能作为标识符的开头关键字不能作为标识符选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B )。
A、3axB、xC、caseD、-e2 E)union参考解析:选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是( C )。
A、 %xB、a+bC、a123D、123参考解析:选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是( A)。
A、print _3d db8 aBcB、I\am one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line# His.age参考解析:选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D )。
2016年c语言二级试题及答案2016年C语言二级试题及答案一、选择题1. 下列关于C语言的描述中,错误的是()。
A. C语言是一种高级语言B. C语言可以直接在操作系统上运行C. C语言具有结构化的特点D. C语言具有丰富的库函数答案:B2. 在C语言中,用于定义整型变量的关键字是()。
A. intB. floatC. charD. double答案:A3. 下列选项中,不是C语言标准库函数的是()。
A. printf()B. scanf()C. strcpy()D. strcat()答案:C二、填空题1. 在C语言中,一个整型变量占用的字节数是()。
答案:42. C语言中,用于定义字符常量的是()。
答案:单引号3. C语言中,用于定义浮点型变量的关键字是()。
答案:float三、简答题1. 请简述C语言中数组的定义方式。
答案:C语言中数组的定义方式是通过指定数组的类型、名称和大小来定义的。
例如,定义一个整型数组可以写作:`int array[10];`,其中`int`是数组的类型,`array`是数组的名称,`10`是数组的大小。
2. 请说明C语言中指针和数组的关系。
答案:在C语言中,指针和数组有密切的关系。
指针可以用于访问数组元素,数组名在大多数情况下可以作为指向数组第一个元素的指针使用。
例如,如果有一个数组`int arr[10];`,那么`arr`可以作为指向`arr[0]`的指针。
四、编程题1. 编写一个C语言程序,实现计算两个整数的和。
答案:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个整数的和是:%d\n", sum); return 0;}```2. 编写一个C语言程序,实现字符串的反转。
全国计算机等级考试二级C语言操作题24 2016年(总分:30.00,做题时间:90分钟)1.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。
函数fun的功能是将形参a 中的数据进行修改,把修改后的数据作为函数值返回主函数进行输出。
例如:传给形参a的数据中,学号、姓名、和三门课的成绩依次是:10001、"ZhangSan"、95、80、88,修改后的数据应为:10002、"LiSi"、96、81、89。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!给定源程序:#include #include struct student { long sno; char name[10]; float score[3]; }; /**********found**********/ __1__ fun(struct student a) { int i; a.sno = 10002; /**********found**********/ strcpy(__2__, "LiSi"); /**********found**********/ for (i=0; i(分数:10.00)__________________________________________________________________________________________ 正确答案:()解析:解题思路:本题是对结构体变量中的值进行修改并通过函数值返回。
第一处:必须定义结构返回类型,所以应填:struct student。
第二处:对姓名进行修改,所以应填:。
第三处:分别对成绩增加1分,所以应填:a.score[i]。
2.假定整数数列中的数不重复,并存放在数组中。
全国计算机等级考试二级C语言操作题2 2016年
(总分:30.00,做题时间:90分钟)
1.给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!给定源程序:#include void fun(char *s, int a, double f) { /**********found**********/ __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);
/**********found**********/ while (!feof(__2__)) { /**********found**********/ 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); }
(分数:10.00)
__________________________________________________________________________________________ 正确答案:()
解析:解题思路:本题是考察先把给定的数据写入到文本文件中,再从该文件读出并显示在屏幕上。
第一处:定义文本文件类型变量,所以应填:FILE *。
第二处:判断文件是否结束,所以应填:fp。
第三处:显示读出的字符,所以应填:ch。
2.给定程序MODI1.C中函数fun的功能是: 依次取出字符串中所有数字字符, 形成新的字符串, 并取代原字符串。
请改正函数fun中指定部位的错误, 使它能得出正确的结果。
注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构! 给定源程序:#include void fun(char *s) { int i,j; for(i=0,j=0; s[i]!='/0'; i++) if(s[i]>='0' && s[i]<='9') /**********found**********/ s[j]=s[i];
/**********found**********/ 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 ); }
(分数:10.00)
__________________________________________________________________________________________ 正确答案:()
解析:解题思路:第一处: 要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量j来控制新字符串的位置,所以应改为:s[j++]=s[i];。
第二处: 置新字符串的结束符,所以应改为:
s[j]='/0';
3.请编写函数fun, 函数的功能是: 将M行N列的二维数组中的字符数据, 按列的顺序依次放到一个字符串中。
例如, 二维数组中的数据为: W W W W S S S S H H H H 则字符串中的内容应是: WSHWSHWSH。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。
给定源程序: #include #define M 3 #define N 4 void fun(char s[][N], char *b) { int i,j,n=0; for(i=0; i < N;i++) /* 请填写相应语句完成其功能*/ { } b[n]='/0'; } main() { char a[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}}; int i,j;
printf("The matrix:/n"); for(i=0; i { for(j=0;j3c",w[i][j]); printf("/n"); } fun(w,a);
printf("The A string:/n");puts(a); printf("/n/n"); NONO(); }
(分数:10.00)
__________________________________________________________________________________________ 正确答案:(void fun(char s[][N], char *b) { int i,j,n=0; for(i=0; i < N;i++) /* 请填写相应语句完成其功能 */ { for(j = 0 ; j < M ; j++) { b[n] = s[j][i] ; n = i * M + j + 1; } } b[n]='/0'; }) 解析:解题思路:本题是把二维数组中的字符数据按列存放到一个字符串中。
1. 计算存放到一维数组中的位置。
2. 取出二维数组中的字符存放到一维数组(已计算出的位置)中。