四川省计算机二级C语言历年考题之程序填空
- 格式:docx
- 大小:52.86 KB
- 文档页数:34
四川省计算机二级 C语言试题(集)四川省普通高等学校计算机应用知识和能力第三^一次等级考试二级(C与C++语言)笔试试卷时间:2009年10月24日上午9:00—11:00第一部分软件技术基础(共15分)一、是非判断题(每小题1分,共10分)(判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B ) 1. 数据在计算机内存中的表示是指数据的存储结构。
(1 )2. 作业与进程的主要区别是前者是由系统自动生成,后者是由用户提交。
(2 )3. 从逻辑上可以把数据结构分为线性结构和非线性结构。
(3 )4. 在设备管理中,通道是处理输入、输出的软件。
(4 )5. 链表可以随机访问任意一个结点,而顺序表则不能。
(5 )6. 栈顶的位置是随着进栈和退栈操作而变化的。
(6 )7. 处于等待状态的进程,若其等待的事件已发生,就立即转入运行状态。
(7 )8. 任何两个并发进程之间一定存在互斥关系。
(8 )9. 在面向过程方法的软件生存期内,能准确确定软件系统必须做什么和必须具备的功能阶段是需求分析。
(9 )1.若进栈序列为1, 2, 3, 4,且进栈过程中可以出栈,贝U 不可能出栈的序列是( 11 (A) 1, 4, 3, 2(B) 2, 3, 4, 1(C) 3, 1, 4, 2(D) 3,11 )。
4, 1,12 (A)系统硬件(B)程序(C)数据结构(D)标准程序库3. 外部设备完成了预定的输入/输出操作所引起的中断是( 13 )。
13 (A)外中断 (B) I/O 中断 (C)程序中断程序库4.以下的准则中哪个不是软件设计应遵循的(14 )。
14 (A)抽象准则 (B)模块化准则(C)信息屏蔽准则(D)标准(D)综合性准则5.在结构化设计方法中,设计功能模块算法属于软件开发中的 (15 )阶段。
15 (A)详细设计 (B)需求分析 (C)总体设计(D)编程调试10. 在软件测试的基本方法中,静态测试不用测试用例。
四川省计算机二级c语言考试试题及答案及解析一、选择题(每题2分,共20分)1. C语言中,用于定义变量的关键字是()。
A. structB. intC. charD. float答案:B解析:在C语言中,定义变量时需要使用关键字,其中用于定义整型变量的关键字是int。
2. 下列哪个选项是合法的C语言标识符?()A. 2variableB. variable2C. _variableD. variable!答案:C解析:C语言中标识符可以由字母、数字、下划线组成,但不能以数字开头。
3. C语言中,用于表示逻辑“与”操作的运算符是()。
A. &&B. ||C. ==D. =答案:A解析:在C语言中,逻辑“与”操作符是&&,用于比较两个表达式是否都为真。
4. 下列哪个选项不是C语言中的控制语句?()A. ifB. switchC. forD. goto答案:D解析:goto语句虽然在C语言中存在,但它不是控制语句,而是一种跳转语句。
5. 在C语言中,用于定义一个结构体的关键字是()。
A. structB. unionC. enumD. typedef答案:A解析:struct关键字用于定义一个结构体类型。
6. 下列哪个选项是C语言中的预处理指令?()A. #includeB. #defineC. #ifD. All of the above答案:D解析:#include、#define和#if都是C语言中的预处理指令。
7. C语言中,用于表示逻辑“或”操作的运算符是()。
A. &&B. ||C. ==D. =答案:B解析:逻辑“或”操作符是||,用于比较两个表达式是否至少有一个为真。
8. C语言中,用于表示逻辑“非”操作的运算符是()。
A. !B. &&C. ||D. =答案:A解析:逻辑“非”操作符是!,用于取反一个表达式的逻辑值。
9. 在C语言中,用于定义一个数组的关键字是()。
3月全国计算机等级考试二级C语言上机题库(20~30套)考试频道小编收集整理计算机等级考试资料,免费提供给大家交流参考。
第二十一套1. 程序填空给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串右边的字符删去,只保留左边的k个字符。
ss所指字符串数组中共有N个字符串,且串小于M。
第一处void fun(char (*ss)[M], int k)第二处while (i第三处ss[i][k]=0;i++;}2. 程序修改给定程序MODI1.C中函数fun的功能是:根据以下公式求值,并作为函数值返回。
例如,给指定精度的变量eps输入0.0005时,应当输出Pi=30140578.。
/**found**/t=1;/**found**/return(2*s);3. 程序设计假定输入字符串中只包含字母和*号。
请编写函数fun,它的功能是:将字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。
函数fun中给出的语句仅供参考。
void fun(char*a,int n){int i=0,k=0;while(a[k]= =*)k++;if(kn){i=n;j=k;for(;a[j]!=0;j++)a[i++]=a[j];a[i]=0;}}第二十二套1. 程序填空给定程序中,函数fun的功能是:a所指43矩阵中第k行的元素与第0行元素交换。
例如:有下列矩阵1 2 34 5 67 8 910 11 12若k为2,程序执行结果为7 8 94 5 61 2 310 11 12第一处void fun(int (*a)[N],int k)第二处for(i=0;i第三处a[0][i]=a[k][i];2. 程序修改给定程序MODI1.C中函数fun的功能是:读入一个字符串(长度20),将该字符串中的所有字符串按ASCII码升序排序后输出。
计算机二级考试c语言考试真题及答案一、单项选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于声明一个函数?A. intB. voidC. returnD. function答案:A2. 若有定义:int a=5, b=10; 则以下哪个表达式的值不为5?A. a+bB. a-bC. a*bD. a/b答案:C3. 在C语言中,以下哪个选项不是标准输入输出库函数?A. printf()B. scanf()C. puts()D. strcat()答案:D4. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. _variableD. variable-2答案:B5. 若有定义:char c='A'; 则以下哪个表达式的值不为65?A. cB. 'A'C. "A"D. '\101'答案:C6. 在C语言中,以下哪个选项表示逻辑“与”操作?A. &&B. ||C. !D. =答案:A7. 在C语言中,以下哪个选项是正确的字符串声明?A. char str[5] = "ABCDE";B. char str[5] = {'A', 'B', 'C', 'D', 'E'};C. char str[5] = {'A', 'B', 'C', 'D'};D. char str[5] = "ABC" "DE";答案:D8. 若有定义:int x=10; 则以下哪个表达式的值不为10?A. x++B. x--C. ++xD. --x答案:D9. 在C语言中,以下哪个选项是正确的二维数组声明?A. int array[3][2];B. int array[][] = {1, 2, 3};C. int array[3][];D. int array[2, 3];答案:A10. 在C语言中,以下哪个选项是正确的文件操作函数?A. fopen()B. fclose()C. fgetc()D. All of the above答案:D二、程序填空题(每空2分,共20分)给定以下程序片段,请在空白处填入正确的代码。
二级(C与C++语言) 笔试试卷时间: 2011年4月16 日上午9:00—11:00第一部分软件技术基础(共15分)一、是非判断题(每小题1分,共10分)( 判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B )1. 作业与进程的主要区别是前者由用户提交,后者是由系统自动生成。
( A )2. 从循环链表中任意一个结点出发都能访问到整个链表。
( A )3. 如果分时操作系统的时间片一定,那么用户数越少,则响应时间越长。
( A )4. 队列在操作系统的各种资源请求排队及数据缓冲区管理中广泛使用。
( A )5. 死锁产生的根本原因是操作系统能够提供的资源比请求该资源的进程数少。
( B )分析:死锁产生原因:争夺共享资源;进程推进顺序不当6. 虚拟设备技术能将独占设备转换为可共享的设备,提高资源利用率。
( A )7. 链栈与顺序栈相比,有一个明显的优点是通常不会出现栈满的情况。
( A )8. 软件维护是长期的过程,交付使用的软件仍然需要排错、修改和扩充。
( A )9. 墨盒测试要求测试人员根据程序内部逻辑结构设计或选择测试用例。
( B )分析:白盒测试才是根据程序内部逻辑结构设计测试用例,黑盒测试是功能测试10.软件设计时,应力求增加模块的耦合,减少模块间的内聚。
( B )分析:软件设计时,应力求增加模块的内聚,减少模块间的耦合二、选择题(每小题1分,共5分)1. 设已将元素a1、a2、a3依次入栈,元素a4正等待进栈。
那么下列4个序列中不可能出现的出栈序列是( A )。
11 (A) a3、a1、a4、a2 (B) a3、a2、a4、a1(C) a3、a4、a2、a1 (D) a4、a3、a2、a12. 以下哪一个不是操作系统的特征( B )。
12 (A) 并发(B) 分解(C) 共享(D) 虚拟3. 下列的进程状态变化中,( C )变化是不可能发生的。
13 (A) 运行→就绪(B) 运行→等待(C) 等待→运行(D) 等待→就绪4. 很好地解决了碎片问题的存储管理方法是( D )。
四川省普通高等学校计算机应用知识和能力第二十九次等级考试二级(C与C++语言) 笔试试卷时间: 2008年10月18 日( 判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B )1. 在设备管理中通道是处理输入、输出的软件。
( 1 )2. 从逻辑上可以把数据结构分为线性结构和非线性结构。
( 2 )3. 若无进程处于运行状态,则就绪队列为空。
( 3 )4. 在单处理器系统中,程序的并发执行,实质上是程序的交替执行。
( 4 )5. 分页存储管理中,页面不能映射到不连续的内存块中。
( 5 )6. 瀑布模型的突出缺点是不适应用户需求的变化。
( 6 )7. 栈和队列的共同特点是允许在端点之外处插入和删除元素。
( 7 )8. 为了便于对照检查,测试用例应由输入数据和预期的输出结果两部分组成。
( 8 )9. 在软件生存期内,能确定软件系统必须做什么和必须具备的功能阶段是编码。
( 9 )10.在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、判定树。
( 10 )二、选择题(每小题1分,共5分)1. 软件开发中,模块设计的原则是(11 )。
11 (A) 低偶合、高内聚(B) 高偶合、高内聚(C) 高偶合、低内聚(D) 低偶合、低内聚2. 进程从运行状态进入就绪状态的原因可能是(12 )。
12 (A) 时间片用完(B) 等待某一事件(C) 等待的事件已发生(D) 被选中占有处理机3. 队列的操作原则是(13 )。
13 (A) 先进后出(B) 先进先出(C) 只进不出(D) 只出不进4. 以下(14 )不是实时操作系统的特点。
14 (A) 高可靠性(B) 及时响应(C) 高效性(D) 通用性5. 程序流程图是用于描述结构化方法中(15 )工作阶段的工具。
15 (A) 可行性分析(B) 程序编码(C) 详细设计(D) 需求分析1. 下列关于C++语言类的描述中错误的是(16 )。
3月全国计算机等级考试二级C语言上机题库(20~30套)3月全国计算机等级考试二级C语言上机题库(20~30套)考试频道小编收集整理计算机等级考试资料,免费提供给大家交流参考。
第二十一套1. 程序填空给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串右边的字符删去,只保留左边的k个字符。
ss所指字符串数组中共有N个字符串,且串小于M。
第一处void fun(char (*ss)[M], int k)第二处while (i第三处ss[i][k]=0;i++;}2. 程序修改给定程序MODI1.C中函数fun的功能是:根据以下公式求值,并作为函数值返回。
例如,给指定精度的变量eps输入0.0005时,应当输出Pi=30140578.。
/**found**/t=1;/**found**/return(2*s);3. 程序设计假定输入字符串中只包含字母和*号。
请编写函数fun,它的功能是:将字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。
函数fun中给出的语句仅供参考。
void fun(char*a,int n){int i=0,k=0;while(a[k]= =*)k++;if(kn){i=n;j=k;for(;a[j]!=0;j++)a[i++]=a[j];a[i]=0;}}第二十二套1. 程序填空给定程序中,函数fun的功能是:a所指43矩阵中第k行的元素与第0行元素交换。
例如:有下列矩阵1 2 34 5 67 8 910 11 12若k为2,程序执行结果为7 8 94 5 61 2 310 11 12第一处void fun(int (*a)[N],int k)第二处for(i=0;i第三处a[0][i]=a[k][i];2. 程序修改给定程序MODI1.C中函数fun的功能是:读入一个字符串(长度20),将该字符串中的所有字符串按ASCII码升序排序后输出。
C语言四川省计算机二级笔试真题C32总共30 题共100分一.单选题(共15题,共37.5分)1.【题号:5113】以下能正确进行字符串赋值的是()(2.5分)A.char s[5]={'a','e','i','o','u'};B.char s[5]; s="good";C.char s[5];s[5]="abcd";D.char s[5]; s[ ]="good";标准答案:A2.【题号:5114】有下面的说明和语句,则输出的结果是()char a=9,b=020;printf("%o\n",~a&b<<1);(2.5分)A.377B.40C.32D.以上答案均不对标准答案:B3.【题号:5115】若有float x; 则sizeof ( x ) 和sizeof ( float ) 两种描述()(2.5分)A.都正确B.都不正确C.前者正确,后者不正确D.后者正确,前者不正确标准答案:A4.【题号:5116】若有代数式,则不正确的C语言表达式是()(2.5分)A.3*a*e/b*cB.3*a*e/b/cC.a/b/c*e*3D.a*e/c/b*3标准答案:A5.【题号:5117】下列程序运行的结果是 ( )main(){ struct cmplx{ int x;int y;}cnum[2]={1,3,2,7};printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);}(2.5分)A.0B.1C.3D.6标准答案:D6.【题号:5118】若有以下说明和语句,且0=<iA.*(a+i)B.a[p-a]C.p+iD.*(&a[i])标准答案:C7.【题号:5119】#define M 2#define X(m) ((M+2)*m)则执行语句:z=2*(M+X(3+2); 后,z的值为()(2.5分)A.44B.45C.32D.338.【题号:5120】下列函数定义中,会出现编译错误的是( )(2.5分)A.int fun(int x,int y){ int z;z=(x>y)?x:y;return z;}B.int fun(int x,int y,int *z){ z=(x>y)?x:y;return z;}C.int fun(int x,int y){ return ( (x>y) ? x : y ); }D.int fun(int x,int y,int *z){ *z = (x>y) ? x : y ; }标准答案:B9.【题号:5121】下面C++的语句( )能实现printf("%d%d\n",a,b); 的功能(2.5分)A.cin>>a>>bB.cin>>a>>bC.cout<<a<<b< p="">D.cout<<a<<b<<endl< p="">标准答案:D10.【题号:5122】在如下程序段中的while循环 ( )int k=0;while(k=1) k++;(2.5分)A.有语法错,不能执行B.无限循环C.一次都不执行D.执行一次11.【题号:5123】下述程序的输出结果是 ( )# includevoid main(){int y=10;while(y--);printf("y=%d",y);}(2.5分)A.y=0B.y=1C.y=随机值D.y=-1标准答案:D12.【题号:5124】若有以下说明:char *str1="copy",str2[20],*str3="str",*str4,*str5="good";则错误的串操作语句是 ( )(2.5分)A.strcpy(str4,str1);B.strcat(str1,str3);C.str2="new str";D.strcpy(str5,str3);标准答案:C13.【题号:5125】下面程序运行后,x,y,z的值分别为( ) void main() { int x=0,y=0,z=0; ++x||++y||++z; printf("%d%d%d\n",x,y,z); }(2.5分)A.100B.000C.111D.001标准答案:A14.【题号:5126】关于C++和C语言学关系描述中,错误的是 ( )(2.5分)A.C语言与C++是兼容的B.C++对C语言进行了一些改进C.C语言是C++的一个子集D.C++和C语言都是面向对象的标准答案:D15.【题号:5127】#define f(x) 1+x+x*x#includevoid main(){int a=2,b=3;printf("%d\n",f(a+b));}(2.5分)A.17B.31C.13D.7标准答案:A二.读程序回答问题(共10题,共25分)16.【题号:5128】下列程序运行的结果为()。
计算机二级C语言题库之程序填空找Armstrong(水仙花)数:371=3*3*3+7*7*7+1*1*1#include <stdio.h>#include<math.h>void main(){ int i,a,b,c;for(i=100;i<=999;i++){ a=i/100;_______1_______ // b=i%100/10;c=i%10;if (________2________) // a*a*a+b*b*b+c*c*c = = iprintf("%d is a Armstrong number!\n",i);}}输入1个整数后,输出该数的位数。
(例:输入3214则输出4,输入-23156则输出5)。
#include <stdio.h>void main(){ int n,k=0;scanf("%d",&n);while( _____1_____ ){ // n!=0k++;_____2_____; // n=n/10}printf("%d\n",k);}求输入的整数各位数字之和,如输入234则输出9,输入-312则输出6。
#include <stdio.h>#include <math.h>void main(){int n,s=0;scanf("%d",&n);______ 1 ______ // if (n<0) n=-n;while(n!=0) {______ 2 ______ // s+=n%10;n=n/10;}printf("%d\n",s);}调用函数f,将一个整数首尾倒置。
三、程序填空(每空2分,共30分)1.下列程序实现将一个整数字符串转换为一个整数。
# include <string.h># include <stdio.h>int Fun(char *str){ int num,digital,len;①num=0 ;len=strlen(str);while(*str!=NULL){digital=*str-'0';for(int i=0;②i < len-1 ;i++)digital*=10;len--;③str++ ;num+=digital;}return num;}void main(){ char n[80];int number;gets(n);number=Fun(n);printf("%d\n",number);}11~999之间的数m,它满足m,m2,m3均为回文数(所谓回文数是指其各位数字左右对称的整数)。
# include <iostream.h>void main(){ int symm(long n);long m;for(m=11;m<1000;m++)if(①symm(m)&&symm(m*m)&&symm(m*m*m))cout<<"m="<<m<<"m*m="<<m*m<<"m*m*m="<<m*m*m<<endl;}int symm(long n){ long i,m;i=n; m=0;while(②i!=0 ){ ③m=m*10+i%10 ;i=i/10;}return (m==n);}3.已知head指向一个单向链表,如下图:主程序中调用add函数能求出链表中所有结点数据域的和sum并返回。
struct link{ int data;struct link *next;}int add(struct link *heak){ struct link *p;int s=0;p=①head ;while(p){ s+=②p->data ;p=③p->next ;}return (s);}void main(){ struct link *head;……/* 表示省掉的程序段,创建链表*/sum=add(head);printf("%d\n",sum);}4.下面程序功能是统计文本data.txt中各种大写字母的个数,将统计结果存放在数组count 中,(字母'A'的个数存入count[0]中,字母'B'的个数存入count[1]……依此类推),输出统计结果,一行输出5个。
请填空。
# include <stdio.h># include <stdlib.h>void main(){ FILE *fp;static int count[26]={0};int i;char ch;if(①(fp=fopen("data.txt", "r"))==NULL ){ printf("Cannot open the file!\n");exit(0);}while(! feof(fp)){ ②ch=fgetc(fp) ;if(ch>='A'&&ch<='Z') count[③ch-'A' ]++;}for(i=0;i<26;i++){if(i%5==0) printf("\n");printf("count[%d]=%-5d",count[i]);}fclose(fp);}5.下面程序的功能是输入两个字符串a和b和一个标志flag,当flag=0时,将b连在a 后;当flag=1时,将a连在b后;否则返回空指针。
请填空。
# include <stdio.h># include <string.h>char *stradd(char *s,char *t,int f){ char *p;if(f==0){ p=s;s+=strlen(s);①while(*s++=*t++ ) ;}else if(f==1){ p=t;while(*t++);t--;while(*s)*t++=*s++;②*t='\0' ;}③else p=NULL ;return p;}void main(){ char a[100],b[100],*str;int n;printf("Input string a and b:\n");gets(a);gets(b);printf("Input flag:");scanf("%d",flag);str=stradd(a,b,n);printf("Output: %s\n",str);}三、程序填空( 每空2分,共30分)下面程序是一个求数组元素之和的程序。
主程序中定义并初始化了一个数组,然后计算该数组各元素之和,并输出结果。
函数Sum计算数组元素之和。
请完成下列程序。
# include <iostream.h>int TotalSum(int [],int );void main(){ int a[5]={2,3,6,8,10};int Total;Total=①TotalSum(a,5) ;count<<"Aumof array: "②Total <<endl;}int TotalSum(int array[],int len){ int sum=0;for(int i=0;i<len;i++)③sum+=array[i] ;return sum;}输入一个8位二进制数,将其转换为十进制数输出。
# include "iostream.h"double power(double x,int n);void main(void){ int i;int value=0;char ch;cout<<"Enter an 8 bit binary number ";for(i=7;i>=0;i--){ cin>>ch;if(①ch=='1' )value+=②power(2,i) ;}cout<<"decimal value is "<<value<<endl;}double power(double x,int n){ double val=1.0;while(n--)③val=val*x ;return(val);}3. 以下程序是判断输入的字符串是否是“回文”(顺读和倒读都一样的字符串叫回文,如level),请填空。
# include "stdio.h"# include "string.h"void main(){char s[81],*p1,*p2;int n;gets(s);n=strlen(s);p1=s;p2=①s+n-1 ;while(②*p1!= '\0' ){ if(*p1!=*p2) break;else { p1++; ③p2-- ; }}if(p1<p2) printf("No\n");else printf("Yes\n");}4. 下面程序功能是检查一个4阶矩阵是否对称(即对所有的i,j,都有num[i][j]=num[j][i]),请填空。
# include <stdio.h>void main(){int num[4][4];int i,j,flag=0;printf("Input array num:\n");for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",①&num[i][j] );for(i=0;i<4;i++)for(j=0;j<4;j++)if(②num[i][j]!=num[j][i] ){ flag=1; break; }if(③flag==1 ) printf("No\n");else printf("Yes\n");}5. 下面程序的功能是从键盘输入一字符串,将该字符串与一文本文件进行比较,打印出也之相同的行的行号和内容。
void comp( )用于文件的比较,文件名用命令行参数提供。
请填空。
# include "stdio.h"# include "string.h"# include "stdlib.h"FILE *fp;void comp(char *string){ int line=0;char str[100];①while(!feof(fp) ){ fgets(str,100,fp);str[strlen(str)-1]='\0';line++;②if(strcmp(str,string)==0)printf("%d:%s\n",line,str);}}void main(int argc,char **argv){char string[100];if(argc!=2){ printf("Error \n");exit(0);}if(fp=③fopen(argv[1],"r") )==NULL){ printf("Can't open file %s!\n",argv[1]);exit(0);}printf("Please input the string:\n");gets(string);comp(string);fclose(fp);}1.以下程序能创建一张包含有4名学生信息的单向链表并输出。
# include <stdio.h># include <malloc.h># define LEN sizeof(struct student)struct student{ int data;①struct student *next ;};int num=1;struct student *creat(){ struct student *head,*p1,*p2;head=p1=p2=(struct student *)malloc(LEN);scanf("%d",&p1->data);while(num<4){ p1=(struct student *)malloc(LEN);scanf("%d",&p1->data);②p2->next=p1 ;p2=p1;num++;}p2->next=NULL;return(head);}main(){ struct student *head,*p;head=creat();p=head;if(head!=NULL)do{ printf("%d ", p->data);③p=p->next;}while(p!=NULL);}2.下面程序功能是在一个字符串中找出最大的字符并放在第一个位置上,并将该字符前的原字符往后顺序移动,如:cbyab 变成ycbab。