2012 年9月 全国计算机二级c语言试题
2012年9月份二级C语言答案汇总(100套题)
.,, ( 共 4 套 )来自52、 17、 21,,,,,,,,,,,,,,,,,,,, 十二、四舍五入操作
.,,,,
.(共 3 套 )
16,,,,,,,,,,,,,,,,,,,, 十三、链表操作
.,,,,,,,,
.( 共 1 套 )
22、 85. ,,,,,,,,,,,,,, 十四、其它
.,,,,,,,,,,,
for(i=1;i<=1000;i++) if((i%7==0||i%11==0)&&(i%77!=0)) a[cnt++]=i; *n=cnt;
}
3. 参考答案 :
1. n-- 2.s[i]=s[n] 参考答案 :
3.s[n]=t
1.s[j]=s[i]; 应改为 :s[j++]=s[i]; 2.s[j]= ” \0” ;应改为 :s[j]= ’ \0’ ; 参考答案 :
void fun(int x, int pp[], int *n)
{
int i,cnt=0;
for(i=1;i<=x;i++) if((x%i==0)&&(i%2!=0)) pp[cnt++]=i;
*n=cnt;
}
4. 参考答案 :
1.i<=n 2.|| 3.1.0 参考答案 : 1.void fun(char *s,int a,int b) 应改为 void fun(char *s,int *a,int *b) 2.a++ 应改为 (*a)++; 3.b++ 应改为 (*b)++; 参考答案 :---------26 分 void fun(char *tt, int pp[]) {int i;
2012年9月c语言考试真题
简答题1.么是低级语言,高级语言,面向过程的语言,面向对象的语言?2.C语言的特点?(8个特点)4.表达式在计算时,其类型如何确定?5. C语言中,如何实现类型的转换?选择题1.以下字符串可以为用户定义的标示符的是 D。
A. shortB. LINE 5C. nextday D. _my2.设c是字符变量,则以下表达式正确的是B。
A. c=1234B. c='c'C. c="c" D. c="abcd"3.类型修饰符unsinged不能修饰下面的D类型。
A. intB. charC.long D. double4.下列正确的字符常量是D。
A. ' \234'B. ' \af'C. "a" D. ' a'8.以下选项中不正确的整型常量是__C__。
A. 12LB. -10C.1,900 D. 123U5. 若有语句:int a,b,c;则下面输入语句正确的是C。
A. scanf(" %D%D%D",a, b, c);B. scanf("%d%d%d",a,b,c);C.scanf("%d%d%d",&a,&b,&c);D. scanf("%D%D%D",&a,&b,&c);6.int m=546, n=765;printf(" m=%-6d,n=%6d",m,n);则输出的结果是B。
A. m=546,n=765B. m=546 ,n= 765C. m=%546,n=%765D.m= 546,n=7657.有如下程序:main( ){int x;float y;scanf("%3d%f",&x,&y);printf("x=%d,y=%f\n",x,y);}其输入数据为12345 678↙,则输出结果为 D 。
2012年9月计算机二级C语言上机题库及答案(破译版)
计算机二级c语言上机题库内部资料,切勿外传!.第1套填空题请补充FUN函数,FUN函数的功能是求10的阶乘。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序:#include <stdio.h>long fun(int n){if (___1___)return (n*fun(___2___));return ___3___;}main(){p rintf("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 2 and 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月份全国二级C语言编程题(2012)
1.假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其它*号全部删除。
形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。
在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为;****A*BC*DEF*G*********删除后,字符串中的内容应当是;****ABCDEFG********。
在编写函数时,不得使用C语言提供的字符串函数。
void fun(char *a,char *h,char *p){char b[81],*q;int i=0,j;q=a;while(q<h) {b[i++]=*q;q++;}while(h<=p)if(*h!='*'){b[i++]=*h;h++;}else h++;p++;while(*p){b[i++]=*p;p++;}b[i]='\0';i=j=0;while(b[i]) a[j++]=b[i++];a[i]='\0';}2.请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):程序运行后,如果输入精度0.0005,则程序输出为3.140578。
double fun ( double eps){ int i=1;double pi=0.0,a=1.0,b=1.0;while(a/b>=eps){pi=pi+a/b;a=a*i;b=b*(2*i+1);i++;}return 2*pi;}3.请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。
若两个字符串长度相同,则返回第一个字符串。
例如,输入beijing <CR> shanghai <CR>(<CR>为回车键)函数将返回shanghai。
2012年9月国家计算机二级C语言上机考试题库
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)。
2012年9月全国计算机的等级考试二级C语言笔试试卷答案详解及解析汇报汇报
(1)下列链表中,其逻辑结构属于非线性结构的是_________。
A)双向链表B) 带链的栈 C) 二叉链表D) 循环链表(1)C 【解析】见/uuxzhang上全国计算机二级考试参考资料_数据结构.pps 中第13张说明:链表存储结构是数据的存储结构;排除链表因素,从数据逻辑结构来看,线性结构包括线性表、栈和队;非线性结构包括树形结构和图形结构,所以二叉树是树形结构,即非线性结构。
(2)设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。
现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为A) 20 B) 0或35 C) 15 D) 16(2)B 【解析】见/uuxzhang上全国计算机二级考试参考资料_数据结构.pps中第100-101张关于入队(Q.rear=Q.rear+1)与退队(Q.front=Qfront+1)运算规则,此外第一次入队为Q.rear=1;第一次退队为Q.front=1。
并假定循环队列最大个数为maxsize,其相应存储空间为1: maxsize,则循环队列的入队与退队图例和运算后元素个数的确定原则如下:循环队列中的元素个数或称队列长度通用计算公式:(Q.rear-Q.front+ maxsize)% maxsize 例如,Q.rear=20,Q.front=15,则循环队列中的元素个数=(20-15+35)%35=5;Q.rear=40,Q.front=15,则循环队列中的元素个数=(40-15+35)%35=25;本题根据Q.rear=Q.front=15,maxsize=35,则循环队列中元素个数=(15-15+35)%35=0或35;(3)下列关于栈的叙述中,正确的是A) 栈底元素一定是最后入栈的元素B) 栈操作遵循先进后出的原则C) 栈顶元素一定是最先入栈的元素D) 以上三种说法都不对(3)B 【解析】见/uuxzhang上全国计算机二级考试参考资料_数据结构.pps中第63张幻灯片说明:栈元素入、退原则:先进后出(FILO)或后进先出(LIFO)。
全国2012年9月计算机等级考试二级C语言上机题库100套(第二部分50至100套)(二级C语言)
第50套:给定程序中,函数fun的功能是:有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。
例如,若N=3,有下列矩阵:1 2 34 5 67 8 9计算结果为1 0 06 5 010 14 9请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!给定源程序:#include <stdio.h>#define N 4/**********found**********/void fun(int (*t)___1___ )/* 宏为世纪教育 */{ int i, j;for(i=1; i<N; i++){ for(j=0; j<i; j++){/**********found**********/___2___ =t[i][j]+t[j][i];/**********found**********/___3___ =0;}}}main(){ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,1 0}, i, j;printf("\nThe original array:\n");for(i=0; i<N; i++){ for(j=0; j<N; j++) printf("%2d ",t[i][j]);printf("\n");}fun(t); printf("\nThe result is:\n");for(i=0; i<N; i++){ for(j=0; j<N; j++) printf("%2d ",t[i][j]);printf("\n");}}解题思路:第一处:形参t的定义,整数数组其宽度为N,所以应填:[N]。
2012年计算机二级c语言试题及答案
2012年计算机二级c语言试题及答案一、选择题1. 下列选项中,不属于C语言的关键字是()A. intB. mainC. whileD. break2. 下列选项中,不属于C语言标准数据类型的是()A. floatB. doubleC. long doubleD. real3. 在C语言中,i++和++i的区别是()A. i++先做赋值,再自增;++i先自增,再赋值B. i++和++i完全相同C. i++先自增,再做赋值;++i先赋值,再自增D. i++和++i都不进行赋值操作4. 在C语言中,用于输出语句的函数是()A. printB. scanfC. getsD. printf5. 下列选项中,程序的入口函数是()A. mainB. startC. beginD. init二、填空题1. 计算机二进制以0b开头,十六进制以_____开头。
2. C语言中,用于循环执行一段代码的关键字是_____。
3. 在C语言中,用于定义常量的关键字是_____。
4. C语言种类转义字符'\n'表示_____。
5. C语言中,用于声明一个整型变量的关键字是_____。
三、简答题1. 请简述C语言中的条件判断语句if-else的用法。
2. 请简述C语言中的for循环的用法。
3. 请简述C语言中的switch语句的用法。
四、编程题1. 编写一个C语言程序,求1到100之间所有奇数的和。
```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 != 0) {sum += i;}}printf("1到100之间所有奇数的和为:%d\n", sum);return 0;}```2. 编写一个C语言程序,输出九九乘法表。
```c#include <stdio.h>int main() {for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {printf("%d * %d = %d\t", j, i, i*j);}printf("\n");}return 0;}```以上是2012年计算机二级C语言试题及答案的内容。
全国计算机等级考试二级C语言机试真题2012年09月
全国计算机等级考试二级C语言机试真题2012年09月(总分:100.00,做题时间:90分钟)一、程序填空题(总题数:1,分数:30.00)1.下列给定程序中已建立一个带头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。
函数fun的功能是:把形参x的值放入一个新结点并插入链表中,使插入后各结点数据域中的数据仍保持递增有序。
请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!试题程序:#include <stdio.h>#include <stdlib.h>#define N 8typedef struct listint data;struct 1ist * next;SLIST;void fun(SLIST * h, int x)SLIST * P, * q, * s;s=(SLIST* )malloc(sizeof(SLIST));/********** found********** /s->data=______;q=h;p=h->next;while(p! =NULL && x>p->data)/********** found********** /q=______;p=p->next;s->next=p;/********** found********** /q->next=______;SLIST * creatlist(int * a)SLIST * h, * p, * q; int i;h=p=(SLIST * )malloc(sizeof(SLIST));for(i=0; i<N; i ++)q=(SLIST * )malloc(sizeof(SLIST));q->data=a[i]; p->next=q; p=q;p->next=0;return h;void outlist(SLIST * h)SLIST * p;p=h->next;if(p==NULL)printf("/nThe list is NULL! /n");elseprintf("/nHead");do printf("->% d", p->data);p=p->next;while(p!=NULL);printf("->End/n");main()SLIST * head; int x;int a[N]=11, 12, 15, 18, 19, 22, 25, 29;head=creatlist(a);printf("/nThe list before inserting: /n");outlist(head);printf("/nEnter a number: ");scanf("%d", &x);fun(head, x);printf("/nThe list after inserting: /n");outlist(head);(分数:30.00)填空项1:__________________ (正确答案:(1)x (2)p (3)s)解析:[考点] 本题考查:链表的基本操作。
2012年9月全国计算机等级考试二级C语言上机题库(完整版)
第一套1.程序填空程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。
函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
第一处struct student t;第二处for(i=0;i<n-1;i++)第三处if(strcmp(a[i].name,a[j].name)>0)2程序修改给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向上顺序移动。
/**found**/q=p+i;/**found**/while(q>p)3程序设计学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写了函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
int fun(STREC *a,STREC *b,int l,int h){int i,j=0;for(i=0;i<N;i++)if((a[i].s>=1&&a[i].s<=h)b[j++]=a[i];return j;}第二套1.程序填空给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。
函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。
第一处free(q);第二处q=p->next;第三处q=q->next;2. 程序修改给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n各元素按从小到大的顺序进行排序。
/**found**/p=j;/**found**/p=i;3. 程序设计请编写一个fun函数,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n 返回这些数的个数。
2012年9月计算机二级C语言考试(试题及详解)
C语言程序设计(考试时间90 分钟,满分100 分)一、选择题((1)—(10)、(21)—(40)每题2 分,(11)—(20)每题1 分,共70 分)(11)以下叙述中正确的是A)在C语言程序中,main 函数必须放在其他函数的最前面B)每个后缀为.C的C语言源程序都可以单独进行编译C)在C语言程序中,只有main 函数才可单独进行编译D)每个后缀为.C的C语言源程序都应该包含一个main函数(12)C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是A)预定义标识符(如库函数中的函数名)可用作用户标识符,但失去原有含义B)用户标识符可以由字母和数字任意顺序组成C)在标识符中大写字母和小写字母被认为是相同的字符D)关键字可用作用户标识符,但失去原有含义(13)以下选项中表示一个合法的常量是(说明:符号□表示空格)A)9□9□9 B)0Xab C)123E0.2 D)2.7e(14)C语言主要是借助以下哪个功能来实现程序模块化A)定义函数B)定义常量和外部变量C)三种基本结构语句D)丰富的数据类型(15)以下叙述中错误的是A)非零的数值型常量有正值和负值的区分B)常量是在程序运行过程中值不能被改变的量C)定义符号常量必须用类型名来设定常量的类型D)用符号名表示的常量叫符号常量(16)若有定义和语句:int a,b; scanf("%d,%d",&a,&b); 以下选项中的输入数据,不能把值3 赋给变量a、5 赋给变量b 的是A)3,5, B)3,5,4 C)3 ,5 D)3,5(17)C语言中char 类型数据占字节数为A)3 B)4 C)1 D)2(18)下列关系表达式中,结果为“假”的是A)(3+4)>6 B)(3!=4)>2 C)3<=4||3 D)(3<4)==1(19)若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的switch 语句是A)switch(a+9) B)switch a*b{ case c1:y=a-b; { case 10:x=a+b;case c1:y=a+b; default :y=a-b;} }C)switch(a+b) D)switch (a*b+b*b){ case1 : case3:y=a+b;break; { default :break;case0 : case4:y=a-b; case 3:y=a+b; break;} case 2:y=a-b; break;}(20)有以下程序# include <stdio.h>main(){int a=-2,b=0;while(a++&&++b);printf("%d,%d\n",a,b);}程序运行后的输出结果是A)1,3 B)0,2 C)0,3 D)1,2(21)设有定义:int x=0,*p;,立即执行以下语句,正确的语句是A)p=x; B)*p=x; C)p=NULL; D)*p=NULL;2012 年9 月笔试真卷及答案详解第3 页(共12 页)(22)下列叙述中正确的是A)可以用关系运算符比较字符串的大小B)空字符串不占用内存,其内存空间大小是0C)两个连续的单引号是合法的字符常量D)两个连续的双引号是合法的字符串常量(23)有以下程序#include <stdio.h>main(){char a='H';a=(a>='A'&&a<='Z')?(a-'A'+'a'):a;printf("%c\n",a);}程序运行后的输出结果是A)A B)a C)H D)h(24)有以下程序#include <stdio.h>int f(int x);main(){ int a,b=0;for(a=0;a<3;a++){b=b+f(a);putchar('A'+b);}}int f(int x){return x*x+1;}程序运行后的输出结果是A)ABE B)BDI C)BCF D)BCD(25)设有定义:int x[2][3];,则以下关于二维数组x 的叙述错误的是A)x[0]可看作是由3 个整型元素组成的一维数组B)x[0]和x[1]是数组名,分别代表不同的地址常量C)数组x 包含6 个元素D)可以用语句x[0]=0;为数组所有元素赋初值0(26)设变量p 是指针变量,语句p=NULL;,是给指针变量赋NULL 值,它等价于A)p=""; B)p='0'; C)p=0; D)p='';(27)有以下程序#include <stdio.h>main(){ int a[]={10,20,30,40},*p=a,i;for(i=0;i<=3;i++){a[i]=*p;p++;}printf("%d\n",a[2]);}A)30 B)40 C)10 D)20(28)有以下程序#include <stdio.h>#define N 3void fun(int a[][N],int b[]){ int i,j;for(i=0;i<N;i++)2012 年9 月笔试真卷及答案详解第4 页(共12 页){ b[i]=a[i][0];for(j=1;j<N;j++)if(b[i]<a[i][j]) b[i]=a[i][j];}}main(){ int x[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;fun(x,y);for(i=0;i<N;i++) printf("%d,",y[i]);printf("\n");}A)2,4,8 B)3,6,9 C)3,5,7 D)1,3,5(29)有以下程序(strcpy 为字符串复制函数,strcat 为字符串连接函数)#include <stdio.h>#include <string.h>main(){ char a[10]="abc",b[10]="012",c[10]="xyz";strcpy(a+1,b+2);puts(strcat(a,c+1));}程序运行后的输出结果是A)a12xyz B)12yz C)a2yz D)bc2yz(30)以下选项中,合法的是A)char str3[]={'d', 'e', 'b', 'u', 'g', '\0'};B)char str4; str4="hello world";C)char name[10]; name="china";D)char str1[5]= "pass",str2[6]; str2=str1;(31)有以下程序#include <stdio.h>main(){ char *s="12134";int k=0,a=0;while(s[k+1]!='\0'){ k++;if(k%2==0){a=a+(s[k]-'0'+1);continue;}a=a+(s[k]-'0');}printf("k=%d a=%d\n",k,a);}程序运行后的输出结果是A)k=6 a=11 B)k=3 a=14 C)k=4 a=12 D)k=5 a=15 (32)有以下程序#include <stdio.h>main(){ char a[5][10]={"one","two","three","four","five"};int i,j;char t;for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(a[i][0]>a[j][0])2012 年9 月笔试真卷及答案详解第5 页(共12 页){ t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;}puts(a[1]);}程序运行后的输出结果是A)fwo B)fix C)two D)owo(33)有以下程序#include <stdio.h>int a=1,b=2;void fun1(int a, int b){ printf(“%d%d”,a,b); }void fun2( ){ a=3; b=4; }main(){ fun1(5,6); fun2();printf("%d%d\n",a,b);}程序运行后的输出结果是A)1 2 5 6 B)5 6 3 4 C)5 6 1 2 D)3 4 5 6(34)有以下程序#include <stdio.h>func(int n){ static int num=1;num=num+n;printf("%d",num);}void main(){ func(3);func(4);printf("\n"); }程序运行后的输出结果是A)4 8 B)3 4 C)3 5 D)4 5(35)有以下程序#include <stdio.h>#include <stdlib.h>fun(int *p1,int *p2,int *s){ s=(int*)malloc(sizeof(int));*s=*p1+*p2;free(s);}void main(){ int a=1,b=40,*q=&a;fun(&a,&b,q);printf("%d\n",*q);}程序运行后的输出结果是A)42 B)0 C)1 D)41(36)有以下程序#include <stdio.h>struct STU{char name[9];char sex;int score[2];};void f(struct STU a[]){ struct STU b={"zhao",'m',85,90};a[1]=b;}main(){ struct STU c[2]={{"Qian",'f',95,92},{"Sun",'m',98,99}};f(c);printf("%s,%c,%d,%d,",c[0].name,c[0].sex,c[0].score[0],c[0].score[1]); printf("%s,%c,%d,%d\n,",c[1].name,c[1].sex,c[1].score[0],c[1].score[1]); }程序运行后的输出结果是A)Zhao,m,85,90,Sun,m,98,99 B)Zhao,m,85,90, Qian,f,95,92C)Qian,f,95,92,Sun,m,98,99 D)Qian,f,95,92,Zhao,m,85,90(37)以下叙述中错误的是A)可以用trpedef 说明的新类型名来定义变量B)trpedef 说明的新类型名必须使用大写字母,否则会出编译错误C)用trpedef 可以为基本数据类型说明一个新名称D)用trpedef 说明新类型的作用是用一个新的标识符来代表已存在的类型名(38)以下叙述中错误的是A)函数的返回值类型不能是结构体类型,只能是简单类型B)函数可以返回指向结构体变量的指针C)可以通过指向结构体变量的指针访问所指结构体变量的任何成员D)只要类型相同,结构体变量之间可以整体赋值(39)若有定义语句int b=2; 则表达式(b<<2)/(3||b)的值是A)4 B)8 C)0 D)2(40)有以下程序#include <stdio.h>main(){ FILE *fp;int i,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w+");for(i=0;i<6;i++) fprintf(fp,"%d\n",a[i]);rewind(fp);for(i=0;i<6;i++) fscanf(fp,"%d",&a[5-i]);fclose(fp);for(i=0;i<6;i++) printf("%d",a[i]);}程序运行后的输出结果是A)4,5,6,1,2,3 B)1,2,3,3,2,1 C)1,2,3,4,5,6 D)6,5,4,3,2,1二、填空题(每空2 分,共30 分)(6)请写出与!(a<=b)等价的C语言表达式【6】。
计算机2级2012年9月份上机内部试题及答案
2012年9月全国计算机等级考试二级C语言笔试试题和答案(含公共基础题)全解
29 1)main() { char a[10]="abcde",b[]="fgh"; int i=0; strcpy(a+1,b+2); printf("%s",a); } 请详细解释一下”strcpy(a+1,b+2)”这句语句 2)main() { char s[][10]={"a","good",world"}; strcat(s[0],s[1]); printf("%s",s[0]);}请详细解释一下”strcat(s[0],s[1])”这句语句strcpy()是字符串复制函数。
连字符串的结束标志‘\0’一同复制。
对于strcpy(a+1,b+2);中的b+2则是数组里的“h\0”的首地址。
a+1则是数组里的“bcde”的首地址。
即此函数的意义是:把“h\0”复制到“bcde”的位置。
字符串遇到‘\0’结束即结果是:ah。
对于strcat(s[0],s[1]);中的二为数组可以看成是多个一维数组组成的。
所以s[0]代表的是“a”的首地址,s[1]代表的是“good”的首地址。
这是字符串连接函数。
即把good 放到了a的后面。
结果是:agood。
二级C语言程序设计答案及详解一、选择题(11)B)【解析】每一个C 语言的文件或函数都可以单独编译,但只有main 函数的才可以执行。
(12)A)【解析】预定义标识符是C语言中的标识符,在C语言中也有特定的含义,如函数printf、scanf、sin 等和编译预处理命令名(如define 和include)。
预定义标识符可以作为用户标识符使用,只是这样会失去系统规定的原义。
(13)B)【解析】0xab 是十六进制表示的常量。
(14)A)【解析】C语言用函数实现软件的模块化设计。
(15)C)【解析】C语言中,常常用一个标识符来代表一个常量,称为符号常量。
2012年9月全国计算机等级考试二级C语言笔试试题和答案-------2013
29 1)main(){char a[10]="abcde",b[]="fgh";int i=0;strcpy(a+1,b+2);printf("%s",a);}请详细解释一下”strcpy(a+1,b+2)”这句语句2)main(){char s[][10]={"a","good",world"};strcat(s[0],s[1]);printf("%s",s[0]);}请详细解释一下”strcat(s[0],s[1])”这句语句strcpy()是字符串复制函数。
连字符串的结束标志…\0‟一同复制。
对于strcpy(a+1,b+2);中的b+2则是数组里的“h\0”的首地址。
a+1则是数组里的“bcde”的首地址。
即此函数的意义是:把“h\0”复制到“bcde”的位置。
字符串遇到…\0‟结束即结果是:ah。
对于strcat(s[0],s[1]);中的二为数组可以看成是多个一维数组组成的。
所以s[0]代表的是“a”的首地址,s[1]代表的是“good”的首地址。
这是字符串连接函数。
即把good 放到了a的后面。
结果是:agood。
二级C语言程序设计答案及详解一、选择题(11)B)【解析】每一个C 语言的文件或函数都可以单独编译,但只有main 函数的才可以执行。
(12)A)【解析】预定义标识符是C语言中的标识符,在C语言中也有特定的含义,如函数printf、scanf、sin 等和编译预处理命令名(如define 和include)。
预定义标识符可以作为用户标识符使用,只是这样会失去系统规定的原义。
(13)B)【解析】0xab 是十六进制表示的常量。
(14)A)【解析】C语言用函数实现软件的模块化设计。
(15)C)【解析】C语言中,常常用一个标识符来代表一个常量,称为符号常量。
2012年9月 全国计算机等级考试 二级C语言 笔试试卷、答案及解析
2012年9月22日网上发布的全国计算机等级考试二级C语言笔试答案一、选择题:(1)C、(2)B、(3)B、(4)D、(5)A(6)C、(7)C、(8)B、(9)A、(10)A(11)B、(12)A、(13)B、(14)A、(15)C(16)C、(17)C、(18)B、(19)D、(20)D(21)B、(22)D、(23)D、(24)B、(25)D(26)C、(27)A、(28)B、(29)C、(30)A(31)C、(32)A、(33)B、(34)A、(35)D(36)D、(37)B、(38)A、(39)B、(40)D二、填空题【1】6【2】20【3】逻辑独立【4】选择【5】系统软件【6】a>b【7】%lf%f【8】224【9】16【10】4321【11】7【12】22【13】2【14】6【15】p=p->next2012年9月22日评阅者注释的全国计算机等级考试二级C语言笔试答案一、选择题:(1)C、(2)B、(3)B、(4)D、(5)A(6)C、(7)C、(8)B、(9)A、(10)A(11)B、(12)A、(13)B、(14)A、(15)C(16)C、(17)C、(18)B、(19)D、(20)D(21)B?、(22)D、(23)D、(24)B、(25)D(26)C?、(27)A、(28)B、(29)C、(30)A(31)C、(32)A、(33)B、(34)A、(35)D(36)D、(37)B、(38)A、(39)B、(40)D二、填空题【1】6【2】20【3】逻辑独立性【4】选择【5】系统软件【6】a>b【7】%lf%f【8】224【9】16【10】4321【11】7【12】22【13】2【14】6【15】p=p->next2012年9月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、选择题(⑴-(10)、(21)-(40)每题2分,(11)-(20)每题1分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
2012年9月全国计算机等级考试二级C++笔试试卷与答案
2012年9月全国计算机等级考试二级笔试试卷C++语言程序设计(考试时间90分钟,满分100分)一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)下列链表种,其逻辑结构属于非线性结构的是A)循环链表B)双向链表C)带链的栈D)二叉链表(2)设循环队列的存储空间为Q(1:35),初始状态为front=rear=35,现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为A)16 B)20 C)0或35 D)15(3)下列关于栈的叙述中,正确的是A)栈顶元素一定是最先入栈的元素B)栈操作遵循先进后出的原则C)栈底元素一定是最后入栈的元素D)以上三种说法都不对(4)在关系数据库中,用来表示实体间联系的是A)二维表B)树状结构C)属性D)网状结构(5)公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,则实体部门和职员间的联系是A)m:1联系B)1:m联系C)1:1联系D)m:n联系A)自然连接B)选择C)并D)投影(7)数据字典(DD)所定义的对象都包含于A)程序流程图B)数据流图(DFD图)C)方框图D)软件结构图(8)软件需求规格说明书的作用不包括A)软件可行性研究的依据B)用户与开发人员对软件要做什么的共同理解sC)软件验收的依据D)软件设计的依据(9)下面属于黑盒测试方法的是A)逻辑覆盖B)语句覆盖C)路径覆盖D)边界值分析(10)下面不属于软件设计阶段任务的是A)数据库设计B)算法设计C)软件总体设计D)制定软件确认测试计划(11)下列关于函数重载的叙述中,错误的是A)重载函数的参数个数可以不同B)重载函数的参数类型可以不同C)重载函数的返回值类型必须不同D)重载函数的参数个数或参数类型必须有所不同(12)下列关于类成员对象构造函数调用顺序的叙述中,正确的是A)与它们在初始化列表中顺序相同B)与它们在类中声明的顺序相同C)与析构函数的调用顺序相同D)顺序不确定(13)下列关于派生类的叙述中,错误的是A)派生类至少要有一个基类B)派生类中包括了从基类继承的成员C)一个派生类可以作为另一个派生类的基类D)基类成员被派生类继承以后访问权限保持不变(14)下列关于运算符重载的叙述中,正确的是A)通过运算符重载机制可以为C++语言扩充新的运算符B)运算符重载的作用是使已有的运算符作用于类的对象C)重载运算符的操作数类型可以全部为基本类型D)所有运算符都可以重载(15)下列关于模板的叙述中,错误的是A)调用模板函数时,有时可以省略模板实参B)函数模板的每个实例就是一个函数定义C)类模板的每个实例就是一个类定义D)类模板的实例是一个类对象(16)下列关于输入输出流的叙述中,正确的是A)一个文件流可以与一个数据文件相联系B)cin是专门从键盘输入数据的输入流类C)流运算符<<用来从输入流中读取数据D)宽度设置的效果永久有效(17)下列选项中可以做C++标识符的是A)_256 B)fat/pig C)delete D)5char (18)关键字unsigned不能修饰的类型是A)char B)int C)float D)long int(19)有如下程序:#include<iostream>using namespace std;int main(){char a;cin>>a;if(a='*') cout<<"***"<<endl;else cout<<"###"<<endl;return 0;}A)*** B)### C)***### D)无输出(20)下列对一维数组a的定义中,语法正确的是A)int a(10) B)int n=7,a[n]; C)int n;cin>>n;int a[n]; D)const int size=10;int a[size];(21)假设函数fun已经定义,其原型为”void fun(int a,int b=7,char *p=”**”);”,下列函数调用中错误的是A)fun(5) B)fun(5,8) C)fun(6,”##”) D)fun(0,0.”==”)(22)已经函数print()没有返回值,如果在类中将之声明为常成员函数,正确的是A)void print()const; B)const void print(); C)void const print(); D)void print(const);(23)已知基类Employees只有一个构造函数,其定义如下:Employee::Employee(int n):id(n){}Manager是Employees的派生类,则下列对Manager的构造函数的定义中,正确的是A)Manager::Manager(int n):id(n){}B)Manager::Manager(int n){id=n;}C)Manager::Manager(int n):Employee(n){}D)Manager::Manager(int n){Employee(n);}(24)已知将运算符“+”和“*”作为类Complete的成员函数重载,设c1和c2是类Complex的对象,则表达式c1+c2*c1等价于A)c1.operator*(c2.operator+(c1)) B)c1.operator+(c2.operator*(c1)) C)c1.operator*(c1.operator+(c2)) D)c2.operator+(c1.operator*(c1))(25)下列类模板的定义中语法格式错误的是A)template<class T>class Buffer{/*…*/};B)template<typename T>class Buffer{/*…*/};C)template<class T1,class T2>class Buffer{/*…*/};D)template<T>class Buffer{/*…*/};(26)在C++中既可以用于文件输入又可以用于文件输出的流类是A)fstream B)ifstream C)ofstream D)iostream(27)有如下类定义:class MyClass{int b;char a;double c;public:MyClass():c(0.0),b(0),a(','){}};创建这个类的对象时,数据成员的初始化顺序是A)a,b,c B)c,b,a C)b,a,c D)c,a,b(28)有如下类定义class MyClass{int x;public:MyClass():x(0),y(0){}int GetX(){return x;}void SetX(int xx){x==xx;}int y;};已知obj是类MyClass的对象,下列语句中违反类成员访问控制权限的是A)obj.x; B)obj.y; C)obj.GetX(); D)obj.SetX(0);(29)有如下类定义class Test{char a; const char b;public:Test(char c){a=c;b=c;} //第1行void f(char a)const{this->a=a;} //第2行void g(char b){this->b=b;} //第3行char h()const{return a;} //第4行};编译时没有错误的行是A)第1行B)第2行C)第3行D)第4行(30)有如下程序:#include<iostream>using namespace std;class A{public:A(){cout<,'A';}~A(){cout<<'C';}};class B:public A{public:B(){cout<<'G';}~B(){cout<<'T';}};int main(){B obj;return 0;}运行这个程序的输出结果是A)GATC B)AGTC C)GACT D)AGCT(31)有如下程序:#include<iostream>using namespace std;class Base{public;void fun(){cout<<'B';}};class Derived:public Base{public;void fun(){ cout<<'D';}};int main(){Derived d;d.fun();return 0;}若程序的输出结果是BD,则划线处缺失的部分是A)fun() B)Base.fun() C)Base::fun() D)Base->fun()(32)有如下程序:#include<iostream>using namespace std;class B{public;virtual void f() {cout<<"B";}void g(){cout<<"B";}}class D;public B {public;void f(){cout<<"D";}void g(){coun<<"D";}}void h(B*p){p->f();p->g();}int main(){D obj;h(&obj);return 0;}运行这个程序的输出结果是:A)DD B)BB C)BD D)DB(33)有如下程序:#include<iostream>#include<cstring>using namespace std;class MyString{public;char str[80];MyString(const char*s) {strcpy(str,s);}MyString&operator+=(MyString a){strcat(str,a.str);return*this;}};ostream&operator<<(ostream&s,const MyString&z){return s << z.str}int main(){MyString x("abc"),y("cde");cout<<(x+=y)<<endl;return 0;}运行这个程序的输出结果是A)abc B)cde C)abcde D)abccde(34)有如下程序:#include<iostream>#include<iomanip>using namespace std;int main(){cout<<setfill('#')<<setw(4)<<"OK"<<123<<endl;return 0;}A)##OK123 B)##OK#123 C)OK##123 D)OK##123#(35)有如下语句序列:ifstream infile("DATA.DAT");if(infile.good())cout<<"A";else{cout<<"B";ofstream outfile("DATA.DAT");if(outfile.fail())cout<<"C";else cout<<"D";}若执行这个语句序列显示的是BD,则说明文件DATA.DATA)以读方式打开成功B)以读方式打开失败,但以写方式打开成功C)以读方式打开失败,以写方式打开也失败D)以读方式打开成功,以写方式打开也成功二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2012 年9月全国计算机二级c语言试题(11)以下叙述中正确的是A)在C语言程序中,main 函数必须放在其他函数的最前面B)每个后缀为.C的C语言源程序都可以单独进行编译C)在C语言程序中,只有main 函数才可单独进行编译D)每个后缀为.C的C语言源程序都应该包含一个main函数(12)C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是A)预定义标识符(如库函数中的函数名)可用作用户标识符,但失去原有含义B)用户标识符可以由字母和数字任意顺序组成C)在标识符中大写字母和小写字母被认为是相同的字符D)关键字可用作用户标识符,但失去原有含义(13)以下选项中表示一个合法的常量是(说明:符号□表示空格)A)9□9□9B)0XabC)123E0.2D)2.7e(14)C语言主要是借助以下哪个功能来实现程序模块化A)定义函数B)定义常量和外部变量C)三种基本结构语句D)丰富的数据类型(15)以下叙述中错误的是A)非零的数值型常量有正值和负值的区分B)常量是在程序运行过程中值不能被改变的量C)定义符号常量必须用类型名来设定常量的类型D)用符号名表示的常量叫符号常量(16)若有定义和语句:int a,b; scanf("%d,%d",&a,&b); 以下选项中的输入数据,不能把值3 赋给变量a、5 赋给变量b 的是A)3,5,B)3,5,4C)3 ,5D)3,5(17)C语言中char 类型数据占字节数为A)3B)4C)1D)2(18)下列关系表达式中,结果为“假”的是A)(3+4)>6B)(3!=4)>2C)3<=4||3D)(3<4)==1(19)若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的switch 语句是A)switch(a+9){ case c1:y=a-b;case c1:y=a+b;}B)switch a*b{ case 10:x=a+b;default :y=a-b;}C)switch(a+b){ case1 : case3:y=a+b;break;case0 : case4:y=a-b;}D)switch (a*b+b*b){ default :break;case 3:y=a+b; break;} case 2:y=a-b; break;}(20)有以下程序# includemain(){int a=-2,b=0;while(a++&&++b);printf("%d,%d\n",a,b);}程序运行后的输出结果是A)1,3B)0,2C)0,3D)1,2(21)设有定义:int x=0,*p;,立即执行以下语句,正确的语句是A)p=x;B)*p=x;C)p=NULL;D)*p=NULL;(22)下列叙述中正确的是A)可以用关系运算符比较字符串的大小B)空字符串不占用内存,其内存空间大小是0C)两个连续的单引号是合法的字符常量D)两个连续的双引号是合法的字符串常量(23)有以下程序#includemain(){char a='H';a=(a>='A'&&a<='Z')?(a-'A'+'a'):a;printf("%c\n",a);}程序运行后的输出结果是A)AB)aC)HD)h(24)有以下程序#includeint f(int x);main(){ int a,b=0;for(a=0;a<3;a++){b=b+f(a);putchar('A'+b);}}int f(int x){return x*x+1;}程序运行后的输出结果是A)ABEB)BDIC)BCFD)BCD(25)设有定义:int x[2][3];,则以下关于二维数组x 的叙述错误的是A)x[0]可看作是由3 个整型元素组成的一维数组B)x[0]和x[1]是数组名,分别代表不同的地址常量C)数组x 包含6 个元素D)可以用语句x[0]=0;为数组所有元素赋初值0(26)设变量p 是指针变量,语句p=NULL;,是给指针变量赋NULL 值,它等价于A)p="";B)p='0';C)p=0;D)p='';(27)有以下程序#includemain(){ int a[]={10,20,30,40},*p=a,i;for(i=0;i<=3;i++){a[i]=*p;p++;}printf("%d\n",a[2]);}A)30B)40C)10D)20(28)有以下程序#include#define N 3void fun(int a[][N],int b[]){ int i,j;for(i=0;i{ b[i]=a[i][0];for(j=1;jif(b[i]}}main(){ int x[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;fun(x,y);for(i=0;iprintf("\n");}A)2,4,8B)3,6,9C)3,5,7D)1,3,5(29)有以下程序(strcpy 为字符串复制函数,strcat 为字符串连接函数)#include#includemain(){ char a[10]="abc",b[10]="012",c[10]="xyz";strcpy(a+1,b+2);puts(strcat(a,c+1));}程序运行后的输出结果是A)a12xyzB)12yzC)a2yzD)bc2yz(30)以下选项中,合法的是A)char str3[]={'d', 'e', 'b', 'u', 'g', '\0'};B)char str4; str4="hello world";C)char name[10]; name="china";D)char str1[5]= "pass",str2[6]; str2=str1;(31)有以下程序#includemain(){ char *s="12134";int k=0,a=0;while(s[k+1]!='\0'){ k++;if(k%2==0){a=a+(s[k]-'0'+1);continue;}a=a+(s[k]-'0');}printf("k=%d a=%d\n",k,a);}程序运行后的输出结果是A)k=6 a=11B)k=3 a=14C)k=4 a=12D)k=5 a=15(32)有以下程序#includemain(){ char a[5][10]={"one","two","three","four","five"}; int i,j;char t;for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(a[i][0]>a[j][0]){ t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;}puts(a[1]);}程序运行后的输出结果是A)fwoB)fixC)twoD)owo(33)有以下程序#includeint a=1,b=2;void fun1(int a, int b){ printf(“%d%d”,a,b); }void fun2( ){ a=3; b=4; }main(){ fun1(5,6); fun2();printf("%d%d\n",a,b);}程序运行后的输出结果是A)1 2 5 6B)5 6 3 4C)5 6 1 2D)3 4 5 6(34)有以下程序#includefunc(int n){ static int num=1;num=num+n;printf("%d",num);}void main(){ func(3);func(4);printf("\n"); }程序运行后的输出结果是A)4 8B)3 4C)3 5D)4 5(35)有以下程序#include#includefun(int *p1,int *p2,int *s){ s=(int*)malloc(sizeof(int));*s=*p1+*p2;free(s);}void main(){ int a=1,b=40,*q=&a;fun(&a,&b,q);printf("%d\n",*q);}程序运行后的输出结果是A)42B)0C)1D)41(36)有以下程序#includestruct STU{char name[9];char sex;int score[2];};void f(struct STU a[]){ struct STU b={"zhao",'m',85,90};a[1]=b;}main(){ struct STU c[2]={{"Qian",'f',95,92},{"Sun",'m',98,99}};f(c);printf("%s,%c,%d,%d,",c[0].name,c[0].sex,c[0].score[0],c[0].score[1]);printf("%s,%c,%d,%d\n,",c[1].name,c[1].sex,c[1].score[0],c[1].score[1]);}程序运行后的输出结果是A)Zhao,m,85,90,Sun,m,98,99B)Zhao,m,85,90, Qian,f,95,92C)Qian,f,95,92,Sun,m,98,99D)Qian,f,95,92,Zhao,m,85,90(37)以下叙述中错误的是A)可以用trpedef 说明的新类型名来定义变量B)trpedef 说明的新类型名必须使用大写字母,否则会出编译错误C)用trpedef 可以为基本数据类型说明一个新名称D)用trpedef 说明新类型的作用是用一个新的标识符来代表已存在的类型名(38)以下叙述中错误的是A)函数的返回值类型不能是结构体类型,只能是简单类型B)函数可以返回指向结构体变量的指针C)可以通过指向结构体变量的指针访问所指结构体变量的任何成员D)只要类型相同,结构体变量之间可以整体赋值(39)若有定义语句 int b=2; 则表达式(b<<2)/(3||b)的值是A)4B)8C)0D)2(40)有以下程序#includemain(){ FILE *fp;int i,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w+");for(i=0;i<6;i++) fprintf(fp,"%d\n",a[i]);rewind(fp);for(i=0;i<6;i++) fscanf(fp,"%d",&a[5-i]);fclose(fp);for(i=0;i<6;i++) printf("%d",a[i]);}程序运行后的输出结果是A)4,5,6,1,2,3B)1,2,3,3,2,1C)1,2,3,4,5,6D)6,5,4,3,2,1二、填空题。