国家计算机二级c语言历年上机真题及基础知识
全国计算机等级考试二级C语言上机考试题库及答案
第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中。
计算机二级c语言试题及答案详解
计算机二级c语言试题及答案详解一、基础知识部分1. 下列关于C语言的描述中,错误的是:A) C语言是一种高级语言B) C语言是一种编译型语言C) C语言是一种面向对象语言D) C语言是一种结构化语言答案:C) C语言是一种面向对象语言解析:C语言是一种过程式语言,不是面向对象语言。
2. 下列关于C语言标识符的说法中,错误的是:A) 标识符由字母、数字和下划线组成B) 标识符可以以字母或下划线开头C) 标识符区分大小写D) 标识符不能与C语言的关键字相同答案:C) 标识符区分大小写解析:C语言标识符是不区分大小写的。
3. 以下哪项不是C语言关键字?A) ifB) whileC) varD) for答案:C) var解析:C语言中没有关键字var,正确的关键字是int。
4. 下列代码中,哪个选项是合法的C语言注释?A) /* This is a comment */B) // This is a commentC) # This is a commentD) <!-- This is a comment -->答案:A) /* This is a comment */解析:C语言的注释格式是/* ... */。
二、程序设计部分请写一段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;}```解析:以上代码实现了从用户输入两个整数,然后将其相加并输出结果的功能。
三、综合应用部分下列代码中,输出的结果是多少?```c#include <stdio.h>int main() {int a = 5, b = 2;float result;result = a / b;printf("结果为:%f\n", result);return 0;}```答案:结果为2.000000解析:由于a和b都是整数类型,除法运算得到的结果也是整数类型。
历年全国计算机等级考试_二级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中。
计算机二级C语言上机复习题及答案解析范文一份
计算机二级C语言上机复习题及答案解析范文一份计算机二级C语言上机复习题及答案解析 1计算机二级C语言上机复习题及答案解析填空题给定程序中,函数fun的功能是:在形参ss所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息。
ss所指字符串数组__有N个字符串,且串长小于M。
程序中库函数strstr(s1, s2)的功能是在s1串中查找s2子串,若没有,函数值为0,若有,为非0。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#define N 5#define M 15void fun(char (*ss)[M], char *substr){ int i,find=0;for(i=0; i __1__ ; i++)if( strstr(ss[i], __2__) != NULL ){ find=1; puts(ss[i]); printf(“\n"); }if (find==__3__) printf("\nDon't found!\n");}main(){ char x[N][M]={"BASIC","C langwage","Java","QBASIC","Access"},str[M];int i;printf("\nThe original string\n\n");for(i=0;i printf("\nEnter a string for search : "); gets(str);fun(x,str);}解题思路:本题是根据给定的字符串数组中查找指定的字符串,如果存在,则显示。
全国计算机等级考试二级C语言上机题库(全)
int i; for(i=1;i<strlen(ss);i+=2) {if(ss[i]>=’a’&&ss[i]<=’z’) ss[i]-=32; } } 第五套 1. 程序填空 给定程序中,函数 fun 的功能是:计算下式前 n 项的和作为函数值返 回。例如:当形参 n 的值为 10 的时,函数返回:9.6125588。 第一处 s=0; 第二处 for(i=1;i<=n;i++) 第三处 s=s+(2.0*i-1)*(2.0*i+1)/(t*t); 2. 程序修改 给定程序 MODI1.C 中函数 fun 的功能是:统计 substr 所指字符串在 str 所指字符串中出现次数。 /**found**/ for(i=0;str[i];i++) /**found**/ if(substr[k+1]==’\0’) 3. 程序设计 请编写一个函数 fun,它的功能是:根据以下公
for(i=1;i<N;i++) if(max<a[i].s)max=a[i].s; for(i=0;i<N;i++) if(max==a[i].s)b[n++]=a[i]; return n; } 第九套 1. 程序填空 给定程序中,函数 fun 的功能是:计算形参 x 所指数组中 N 个数的平 均值,(规定所有数均为正数),将所指数组中小于平均值的数据移至 数据的前部,大于等于平均数的移至 x 所指数组的后部,平均值作为 函数值返回,在主函数中输出平均值和移动后的数据。 第一处 for(i=0;i<N;i++) av+=x[i]/N 第二处 y[j]=x[i]; x[i]=-1;j++;} 第三处 i++; 2. 程序修改 给定程序 MODI1.C 中函数 fun 的功能是:统计字符串各元音字母 (即:A、E、I、O、U)的个数。注意字母不分大小写。 /**found**/ num[k]=0;
历届国家二级c语言考试真题及其答案,word版
B)操作系统C)教务管理系统D)汇编程序(6)下面叙述中错误的是A)软件测试的目的是发现错误并改正错误B)对被调试的程序进行“错误定位”是程序调试的必要步骤C)程序调试通常也称为DebugD)软件测试应严格执行测试计划,排除测试的随意性(7)耦合性和内聚性是对模块独立性度量的两个标准。
下列叙述中正确的是A)提高耦合性降低内聚性有利于提高模块的独立性B)降低耦合性提高内聚性有利于提高模块的独立性C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度(8)数据库应用系统中的核心问题是A)数据库设计B)数据库系统设计C)数据库维护D)数据库管理员培训(9)有两个关系R,S如下:由关系R通过运算得到关系S,则所使用的运算为A)选择 B)投影 C)插入 D)连接(10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性 B)键 C)关系 D)域(11)以下选项中合法的标识符是A) 1-1 B)1—1 C)-11 D)1--(12)若函数中有定义语句:int k;,则A)系统将自动给k赋初值0B)这时k中值无定义C)系统将自动给k赋初值-1D)这时k中无任何值(13)以下选项中,能用作数据常量的是A)o115 B) 0118 C)1.5e1.5 D) 115L(14)设有定义:int x=2;,以下表达式中,值不为6的是A) x*=x+1B) x++,2*xC)x*=(1+x)D)2*x,x+=2(15)程序段:int x=12;double y=3.141593; printf(“%d%8.6f”,x,y);的输出结果是A)123.141593B)123.141593C)12,3.141593D)123.141593(16)若有定义语句:double x,y,*px,*py,执行了px=&x, py=&y;之后,正确的输入语句是A)scanf(“%f%f”,x,y);B) scanf(“%f%f”,&x,&y);C) scanf(“%lf%le”,px,py);D) scanf(“%lf%lf”,x,y);(17)以下是if语句的基本形式:if(表达式)语句其中“表达式”A)必须是逻辑表达式B)必须是关系表达式C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式(18)有以下程序#include <stdio.h>main(){int x;scanf(“%d”,&x);if(x<=3); elseif(x!=10)printf(“%d\n”,x);}程序运行时,输入的值在哪个范围才会有输出结果A)不等于10的整数B)大于3且不等于10的整数C)大于3或等于10的整数D)小于3的整数(19)有以下程序#include<stdio.h> Main(){int a=1,b=2,c=3,d=0;if(a= =1 &&b++= =2)if(b!=2 || c--!=3)printf(“%d,%d,%d\n”,a,b,c);else printf(“%d,%d,%d\n”,a,b,c);else printf(“%d,%d,%d\n”,a,b,c);}程序运行后的输出结果是A)1,2,3B)1,3,2C)1,3,3D)3,2,1(20)以下程序中的变量已正确定义for(i=0;i<4;i++,i++for(k=1;k<3;k++);printf(*”);程序段的输出结果是A)********B)****C)**D)*(21)有以下程序#include<stdio.h>main(){char*s=(“ABC);do{printf(“%d”,*s%10);s++;}while(*s);}注意,字母A的ASCII码值为65。
国家计算机二级c语言历年上机真题及基础知识
第一套1.填空题请补充main函数,该函数的功能是:从键盘输入一个字符串并保存在字符str1中,把字符串str1中下标为偶数的字符保存在字符串str2中并输出。
例如,当str1=“cdefghij”,则str2=“cegi”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:#include<stdio.h>#include<conio.h>#define LEN 80main(){char str1[LEN],str2[LEN];char *p1=str1,*p2=str2;int i=0,j=0;clrscr();printf("Enter the string:\n");scanf(【1】);printf("***the origial string***\n");while(*(p1+j)){printf("【2】",*(p1+j));j++;}for(i=0;i<j;i+=2)*p2++=*(str1+i);*p2='\0';printf("\nThe new string is:%s\n",【3】);}答案及评析:【1】″%s″,str1【2】%c 【3】str2【解析】填空1:本题考查对标准输入函数scanf()的调用格式,当输入字符串时,格式控制字符串为″%s″,题目要求输入的字符串保存在str1中,所以地址表列应为字符串的首地址,即为str1。
填空2:本题考查对标准输出函数printf()的调用格式,当输出为字符型变量时,格式控制字符串为″%c″。
填空3:题目要求将str1中下标为偶数的字符保存在字符串str2中并输出,所以printf()函数的输出表列是str22. 改错题在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。
国家计算机二级考试C语言100套上机题
国家计算机二级考试C语言100套上机题第一套1.下列给定程序中,函数fun的功能是计算如下公式直到,并且把计算结果作为函数值返回。
例如,若形参e的值为1e-3,则函数返回值为0.551690。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
(1)3.0或(double)3(2)>(3) (t+1)2.下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。
和值通过函数值返回。
例如,若n=5,则应输出8.391667。
请改正程序中的错误,使其得出正确的结果。
(1)double fun(int n)(2)s=s+(double)a/b;3.请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。
int fun (int a[ ][M]){int i,j,max=a[0][0];for(i=0;i<2;i++)for(j=0;j<m;j++)< bdsfid="77" p=""></m;j++)<> if(max<a[i][j])< bdsfid="79" p=""></a[i][j])<>max=a[i][j];return max;}第二套1.下列给定程序中,函数fun的功能是:计算如下公式前n项的和并作为函数值返回。
例如,当形参n的值为10时,函数返回值为9.612558。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
(1) 0(2) n(3) (t*t)2.下列给定程序中函数fun的功能是:统计substr所指的子符串在str所指的字符串中出现的次数。
例如,若字符串为aaas 1kaaas,子字符串为as,则应输出2。
请改正程序中的错误,使它能得出正确的结果。
全国计算机等级考试二级C语言上机题库及详细解答
1 第一套给定程序的功能是:求二分之一圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为:S r π=2,在程序中定义的变量名要与公式的变量相同)。
例如,输入圆的半径值:19.527,输出为:s=598.949991。
注意:部分源程序给出如下。
请勿改动main 函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。
试题程序:#include <stdio.h> double fun( double r) { return 3.14159*【1】/2.0; }void main() { double x; printf("Enter x: "); scanf("%lf",【2】); printf("s=%lf\n",fun(【3】)); }【参考答案】 (1)r*r (2)&x (3)x 【考点分析】 本题考查:圆面积计算公式S π=*r*r;scanf( )函数的形式,其一般形式为"scanf("格式控制字符串",地址表列);",注意地址是由地址运算符"&"后跟变量名组成的;printf( )函数的形式,其一般形式为"printf("格式控制字符串",输出表列);";函数实参调用,函数作为另一个函数调用的实际参数出现。
【解题思路】填空1:计算圆的面积,公式为:s r π=*r 。
填空2:scanf( )函数一般形式为scanf(格式控制,地址表列),因此填入&x 。
填空3:函数的实际参数是圆的半径x 。
下列给定程序中,函数fun 的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。
例如,当n 为5时,函数值应为10.407143。
全国计算机等级考试二级C语言公共基础知识(附例题)
第1章数据结构与算法经过对部分考生的调查以及对近年真题的总结分析,笔试部分经常考查的是算法复杂度、数据结构的概念、栈、二叉树的遍历、二分法查找,读者应对此部分进行重点学习。
详细重点学习知识点:1.算法的概念、算法时间复杂度及空间复杂度的概念2.数据结构的定义、数据逻辑结构及物理结构的定义3.栈的定义及其运算、线性链表的存储方式4.树与二叉树的概念、二叉树的基本性质、完全二叉树的概念、二叉树的遍历5.二分查找法6.冒泡排序法1.1算法考点1 算法的基本概念考试链接:考点1在笔试考试中考核的几率为30%,主要是以填空题的形式出现,分值为2分,此考点为识记内容,读者还应该了解算法中对数据的基本运算。
计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法.1.算法的基本特征:可行性、确定性、有穷性、拥有足够的情报。
2.算法的基本要素:(1)算法中对数据的运算和操作一个算法由两种基本要素组成:一是对数据对象的运算和操作;二是算法的控制结构。
在一般的计算机系统中,基本的运算和操作有以下4类:算术运算、逻辑运算、关系运算和数据传输。
(2)算法的控制结构:算法中各操作之间的执行顺序称为算法的控制结构.描述算法的工具通常有传统流程图、N—S结构化流程图、算法描述语言等。
一个算法一般都可以用顺序、选择、循环3种基本控制结构组合而成。
考点2 算法复杂度考试链接:考点2在笔试考试中,是一个经常考查的内容,在笔试考试中出现的几率为70%,主要是以选择的形式出现,分值为2分,此考点为重点识记内容,读者还应该识记算法时间复杂度及空间复杂度的概念。
1.算法的时间复杂度算法的时间复杂度是指执行算法所需要的计算工作量。
同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行,效率均不同。
这表明使用绝对的时间单位衡量算法的效率是不合适的。
撇开这些与计算机硬件、软件有关的因素,可以认为一个特定算法"运行工作量”的大小,只依赖于问题的规模(通常用整数n表示),它是问题规模的函数。
国家计算机二级c语言上机等级考试历年真题
本文由kpy1121贡献 doc文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
1. 计算下面公式的值: T=1+1/(2*3)+1/(3*4)+……+1/(m*(m+1))当 m=70时,的结果(按四舍五入保留6位小数)。
1.485915 2. 计算下面公式的值。
T=1/1!+1/2!+1/3!+……+1/m! 当m=10时,的结 果(按四舍五入保留10位小数)。
1.7182818011 3. 计算下面公式的值。
T=1+1/(1*2)+1/(2*3)+……+1/(m-1)*m 当m=70 时,的结果(按四舍五入保留6位小数)。
1.985714 4. 计算并输出500以内的最大的10个能被13或17整除的自然数之和。
4622 5. 计算并输出2500以内的最大的10个能被13和17整除的自然数之和。
4365 6. 求出以下分数序列的前35之和, 2/1,3/2,5/3,8/5,13/8,21/13,……(按四舍五入保留6位小数)。
56.930771 7. 求出以下分数序列的前25之和, 2/1,3/2,5/3,8/5,13/8,21/13,……(按四舍五入保留6位小数)。
40.750431 8. 求出以下分数序列的前28项之和, 2/1,3/2,5/3,8/5,13/8,21/13,……(按四舍五入保留6位小数)。
45.604533 9. 求1000以内的最大的20个素数之和。
18580 10.求800以内的最大的20个素数之和。
14510 11.求500以内的所有的素数之和。
21536 12.求400以内的所有的素数之和。
13887 13.求600以内的所有的素数之和。
29296 14.计算:s=f(-30)+f(-29)+……+f(-1)+f(0)+f(1)+……+f(30)的 值。
其中函数定义如下: f(x)=(x+1)/(x-2) 如果 x>1; f(x)=0 如 果 x=0 或 x=2 ;f(x)=(x-1)/(x-2) 如果 x<0(按四舍五入保留6 位小数)。
全国计算机二级C语言公共基础120题详解版
公共基础知识120题详解篇(1) 下面叙述正确的是______。
A. 算法的执行效率与数据的存储结构无关B. 算法的空间复杂度是指算法程序中指令(或语句)的条数C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止D. 以上三种描述都不对(1)[答案]C [考点]程序设计基础[评析]时间复杂度:在运行算法时所耗费的时间为f(n)(即n的函数)。
空间复杂度:实现算法所占用的空间为g(n)(也为n的函数)。
A 应为有关。
(2) 以下数据结构中不属于线性数据结构的是______。
A. 队列B. 线性表C. 二叉树D. 栈(2)[答案]C [考点]数据结构与算法[评析]一棵二叉树的一个结点下面可以有2个子结点,故不是线性结构(通俗地理解,看是否能排成条直线)。
A是先进先出的线性表;B是宏观概念,包括顺序表、链表、堆栈、队列;D是先进后出的线性表(3) 在一棵二叉树上第5层的结点数最多是______。
A. 8B. 16C. 32D. 15(3)[答案]B [考点]数据结构与算法[评析]依次从上到下,可得出:第1层结点数为1;第2层结点数为2*1=2;第3层结点数为2*2=4;第n层结点数为2的n-1次幂。
(4) 下面描述中,符合结构化程序设计风格的是______。
A. 使用顺序、选择与重复(循环)三种基本控制结构表示程序的控制逻辑B. 模块只有一个入口,可以有多个出口C. 注重提高程序的执行效率D. 不使用goto语句(4)[答案]A [考点]程序设计基础[评析]B没这规定,模块之间的可以通过多个接口来耦合;C结构化程序设计提倡程序的可读性(可理解性),超过程序执行效率的要求;D结构化程序设计限制goto语句的使用,因为goto语句的功能可以用三种基本的控制结构来代替,但也不是绝对不能用,只是限制使用(少用)。
(5) 下面概念中,不属于面向对象方法的是______。
A. 对象B. 继承C. 类D. 过程调用(5)[答案]D [考点]软件工程基础[评析]面向对象=对象+类+继承+通过消息的通信;对象:一组属性与其上的操作的封装体;类:一组有相同属性与操作的对象的集合;继承:一个类为另一个类上的扩充的方式,子类继承父类,主要目的是代码复用;消息:对象间通信的手段。
国家二级C语言(C语言基础知识)机试-试卷3
国家二级C语言(C语言基础知识)机试-试卷3(总分:50.00,做题时间:90分钟)一、选择题(总题数:25,分数:50.00)1.以下叙述中错误的是(分数:2.00)A.C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件B.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中C.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令√D.C语言源程序经编译后生成后缀为.obj的目标程序解析:解析:C语言中的非执行语句例如宏定义命令,在预编译之后替换到代码中,该命令本身也就不存在了,不会转换成二进制的机器指令。
由高级语言编写的程序称为“源程序”,把由二进制代码表示的程序称为“目标程序”。
C语言编写的源程序就是一ASCII的形式存放在文本文件中的。
C源程序经过C编译程序编译之后生成一个后缀为obi的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件,把此.obj文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。
2.下列叙述中错误的是(分数:2.00)A.C程序可以由多个程序文件组成B.一个C语言程序只能实现一种算法√C.C程序可以由一个或多个函数组成D.一个C函数可以单独作为一个C程序文件存在解析:解析:算法是指为解决某个特定问题而采取的确定且:有限的步骤。
在C语言中一个算法是用函数来实现的。
一个C语言源程序山许多函数组成,这些函数都是根据实际任务,确定具体的算法,由用户自己编写。
C语言源程序可以放在不同的文件中,同一个源程序中的函数也可放在不同的文件中,所以一个C 语言程序可以实现多种算法。
3.以下叙述中错误的是(分数:2.00)A.结构化程序由顺序、分支、循环三种基本结构组成B.C语言是一种结构化程序设计语言C.使用三种基本结构构成的程序只能解决简单问题√D.结构化程序设计提倡模块化的设计方法解析:解析:结构化程序由顺序结构、选择结构和循环结构3种基本结构组成。
全国计算机等级考试《二级C语言程序设计》历年真题精选及详解
全国计算机等级考试《二级C语言程序设计》历年真题精选及详解一、选择题(请在【答题】菜单上选择【选择题】命令,启动选择题测试程序,按照题目上的内容进行答题。
作答选择题时键盘被封锁,使用键盘无效,考生须使用鼠标答题。
选择题部分只能进入一次,退出后不能再次进入。
选择题部分不单独计时。
)1.下列叙述中正确的是()。
A.所有数据结构必须有根结点B.所有数据结构必须有终端结点(即叶子结点)C.只有一个根结点,且只有一个叶子结点的数据结构一定是线性结构D.没有根结点或没有叶子结点的数据结构一定是非线性结构【答案】D【解析】D项正确,线性结构的特点是:①集合中必存在“第一个元素”且惟一;②集合中必存在“最后一个元素”且惟一;③除最后一个元素外,其他数据元素均有惟一的“后继”;④除第一个元素外,其他数据元素均有惟一的“前驱”。
所以没有根结点或没有叶子结点的数据结构一定是非线性结构。
AB两项错误,不是所有数据结构都必须有根结点和叶子结点;C项错误,数据结构中若有中间结点不满足只有一个前件或者后件的条件,就不是线性结构。
答案选择D选项。
2.以下叙述中错误的是()。
A.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令B.C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件C.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中D.C语言源程序经编译后生成后缀为.obj的目标程序【答案】A【解析】A项错误,注释语句不会被翻译成二进制的机器指令。
C源程序经过C编译程序编译之后生成后缀为.obj的二进制文件(称为目标文件),然后由“链接程序”(Link)的软件把.obj文件与各种库函数连接起来生成一个后缀为.exe的可执行文件。
答案选择A选项。
3.C语言主要是借助以下()功能来实现程序模块化的。
A.定义函数B.定义常量和外部变量C.三种基本结构语句D.丰富的数据类型【答案】A【解析】C程序的模块化主要通过函数来实现。
国家计算机二级c语言历年上机真题及基础知识[1]
第一套1.填空题请补充main函数,该函数的功能是:从键盘输入一个字符串并保存在字符str1中,把字符串str1 中下标为偶数的字符保存在字符串str2 中并输出。
例如,当str1= “cdefghij ”,则str2=“cegi”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun() 的横线上填入所编写的若干表达式或语句。
试题程序:#i ncl ude<stdi o.h>#i ncl ude<coni o.h>#defi ne LEN 80mai n(){char str1[LEN],str2[LEN];char *p1=str1,*p2=str2;int i=0,j=0; clrscr();pri ntf("Enter the string:\n");scanf( 【1】);pri ntf("***the ori gial string***\n"); while(*(p1+j)){pri ntf(" 【2】",*(p1+j)); j++;}for(i=0;i<j;i+=2)*p2++=*(str1+i); *p2='\0';pri ntf("\nThe new stri ng i s:%s\n", 【3 】);}答案及评析:【1】″%s″,str1 【2】%c 【3】str2【解析】填空1:本题考查对标准输入函数scanf()的调用格式,当输入字符串时,格式控制字符串为″%s″,题目要求输入的字符串保存在str1 中,所以地址表列应为字符串的首地址,即为str1。
填空2:本题考查对标准输出函数printf() 的调用格式,当输出为字符型变量时,格式控制字符串为″%c″。
填空3:题目要求将str1 中下标为偶数的字符保存在字符串str2 中并输出,所以printf() 函数的输出表列是str22. 改错题在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。
二级C语言上机试题汇编(含答案)
二级C语言上机试题汇编说明:本题库共有100套题目(每套题目包含3道题:一道程序填空题、一道程序修改题、一道程序设计题)真实考试题库中将有50套题目,考生输入准考证后计算机随机为你抽取一套考试,每个考生考试时只需考一套题目(包含三道题),但由于考试时是随机抽题,所以即使把原题库告诉大家,你也不能知道到时计算机会给你抽取哪一套题,所以大家只有把全部题库都理解才能万无一失)※※※※※※※※※※※※※※※※※※※※※※※※※第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)/**********found**********/{ t=*n % __1__;/**********found**********/if(t%2!= __2__){ x=x+t*i; i=i*10; }*n =*n /10;}/**********found**********/*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。
国家计算机二级_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的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
第1 处 FILE * fp;第2 处 while (!feof(fp)) {第3 处 putchar(ch); ch = fgetc(fp); }2.程序修改给定程序MODI1.C中函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
历年全国计算机等级考试_二级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中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一套1.填空题请补充main函数,该函数的功能是:从键盘输入一个字符串并保存在字符str1中,把字符串str1中下标为偶数的字符保存在字符串str2中并输出。
例如,当str1=“cdefghij”,则str2=“cegi”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:#include<stdio.h>#include<conio.h>#define LEN 80main(){char str1[LEN],str2[LEN];char *p1=str1,*p2=str2;int i=0,j=0;clrscr();printf("Enter the string:\n");scanf(【1】);printf("***the origial string***\n");while(*(p1+j)){printf("【2】",*(p1+j));j++;}for(i=0;i<j;i+=2)*p2++=*(str1+i);*p2='\0';printf("\nThe new string is:%s\n",【3】);}答案及评析:【1】″%s″,str1【2】%c 【3】str2【解析】填空1:本题考查对标准输入函数scanf()的调用格式,当输入字符串时,格式控制字符串为″%s″,题目要求输入的字符串保存在str1中,所以地址表列应为字符串的首地址,即为str1。
填空2:本题考查对标准输出函数printf()的调用格式,当输出为字符型变量时,格式控制字符串为″%c″。
填空3:题目要求将str1中下标为偶数的字符保存在字符串str2中并输出,所以printf()函数的输出表列是str22. 改错题在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。
下列给定程序中,函数fun()的功能是计算数组元素中值为负数的平均值(不包括0)。
例如:数组中元素的值依次为43,-47,-21,53,-8,12,0,则程序的运行结果为-25.333333。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <conio.h>#include <stdio.h>double fun(int x[ ]){double sum=0.0;int c=0, i=0;/**********************found***********************/ while(x[i]==0){if(x[i]<0){sum=sum+x[i];c++;}i++;}/**********************found***********************/ sum=sum\c;return sum;}main(){int x[1000];int i=0;clrscr();printf("\nPlease enter some data(end with 0) :");do{scanf("%d",&x[i]);}while(x[i++]!=0);printf("%f\n",fun(x));}答案及评析:(1)错误:while(x[i]==0)正确:while(x[i]!=0)(2)错误:sum=sum\c;正确:sum=sum/c;【解析】错误1:此处考查的是对循环条件的理解,当被判断的数组元素为0时,说明这是数组的最后一个元素,此时要跳出循环。
错误2:C语言中的除法运算符是"/",而不是"\"。
3. 编程题请编写一个函数int fun(int *s,int t,int *k),用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元中。
例如,输入如下整数:234 345 753 134 436 458 100 321 135 760则输出结果为6,100。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include <conio.h>#include <stdio.h>int fun(int *s,int t,int *k){}main(){int a[10]={234,345,753,134,436,458,100,321,135,760},k;clrscr();fun(a, 10, &k);printf("%d, %d\n ", k, a[k]);}答案及评析:int fun(int *s,int t,int *k){int i;*k=0; /*k所指的数是数组的下标值*/for(i=0;i<t;i++)if(s[*k]>s[i])*k=i; /*找到数组的最小元素,把该元素的下标赋给k所指的数*/return s[*k]; /*返回数组的最小元素*/}【解析】本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应让*k的值为数组中的某一下标值,即*k=0。
第二套1.填空题请补充函数fun(),该函数的功能是:从…a‟到…z‟统计一个字符串中所有字母字符各自出现的次数,结果保存在数组alf中。
注意:不区分大小写,不能使用字符串库函数。
例如,输入:“A=abc+5*c”,结果为:a=2,b=1,c=2。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:#include<conio.h>#include<stdio.h>#define N 100void fun(char *tt,int alf[]){int i;char *p=tt;for(i=0;i<26;i++)【1】;while(*p){if(*p>='A'&&*p<='Z')【2】;if(*p>='a'&&*p<='z')alf[*p-'a']++;【3】;}}main(){char str[N];char a='a';int alf[26],k;clrscr();printf("\nPlease enter a char string:");scanf("%s",str);printf("\n**The original string**\n");puts(str);fun(str,alf);printf("\n**The number of letter**\n");for(k=0;k<26;k++){if(k%5==0)printf("\n");printf("%c=%d ",a+k,alf[k]);}printf("\n");}答案及评析:【1】alf[i]=0 【2】*p+=32 【3】p++【解析】填空1:数组alf[26]用来存放字母字符出现的次数,在使用之前需要清零。
填空2:题目要求不区分大小写,所以可以先将所有的大写字母都转换为对应的小写字母,然后一并记录出现的次数。
将大写字母转换为对应的小写字母,只需将ASCII码加上32就可以了。
填空3:指针p指向字符串tt,通过p 自加1来移动指针,访问字符串中的所有字符。
2. 改错题下列给定程序中函数fun()的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。
例如,当s中的数为4576235时,t中的数为4725。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:#include<stdio.h>#include <conio.h>/**********************found***********************/int fun(long s,long *t){long s1=10;*t=s%10;while(s>0){/**********************found***********************/s=s%100;*t=s%10*s1+*t;s1=s1*10;}}main(){long s, t;clrscr();printf("\nPlease enter s: ");scanf("%ld",&s);fun(s,&t);printf("The result is: %ld\n ",t);}答案及评析:(1)错误:int fun(long s,long *t)正确:void fun(long s,long *t)(2)错误:s=s%100;正确:s=s/100;【解析】错误1:函数由指针来完成参数的传递,所以没有返回值,应定义函数的类型为void。
错误2:此处要注意特殊运算符号"%"--取余和"/"--整除的区别。
将一个数整除100则可得到由其百位数以上的数组成的新数字,将一个数整除100取余则可得到由十位数和个位数组成的新数。
3. 编程题请编写一个函数fun(),它的功能是:求出一个4×M整型二维数组中最小元素的值,并将此值返回调用函数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:#define M 4#include <stdio.h>fun (int a[][M]){}main(){int arr[4][M]={11,3,9,35,42,-4,24,32,6,48,-32,7,23,34,12,-7};printf("min=%d\n",fun(arr));}答案及评析:fun (int a[][M]){int i,j,min=a[0][0];for(i=0;i<4;i++)for(j=0;j<M;j++)if(min>a[i][j])min=a[i][j];/*求出二维数组的最小值*/return min;}【解析】此类求最大值或最小值的C语言问题,我们可以采用逐个比较的方式。