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语言试题及答案的内容。
- 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二、填空题。