2012年计算机二级C考试重点复习以及南开100题
2012二级c语言南开100题

2012 二级 c 语言南开 100 题 } }
6: 第 6 题 请编写一个函数 void fun(char a[],char[],int n),其功能是:删除以各字符串中指定 下标的字符。其中, a 指向原字符串,删除后的字符串存放在 b 所指的数组中, n 中存放指 定的下标。 答案: void fun(char a[],char b[], int n) { int I,j=0; for (i=0;i<LEN;i++) if (i!=n) { b[j]=a[i]; j++; } b[j]=‘\0’; }
17: 第 17 题 请编写一个函数 fun(char *s),该函数的功能使把字符串中的内容拟置。 答案: void fun(char *s) { char ch; int I,m,n; i=0; m=n=strlen(s)-1; while(i<(n+1)/2) { ch=s[i]; s[i]=s[m]; s[m]=ch; i++; m--; } }
14: 第 14 题 请别写函数 fun,函数的功能使求出二维数组周边元素之和,作为函数值返回。 二维数组中的值在主函数中赋予。
2012 二级 c 语言南开 100 题 答案: int fun(int a[M][N]) { int I,j,s=0; for(j=0;j<N;j++) { s+=a[0][j]; s+=a[M-1][j]; } for(i=1;i<=M-2;i++) { s+=a[i][0]; s+=a[i][N-1]; } return s; }
18: 第 18 题 编写程序,实现矩阵(3 行 3 列)的转置(即行列互换)。 答案: void fun(int array[3][3]) { int I,j,temp; for(i=0;i<3;i++) for(j=0;j<I,j++) { temp=array[i][j];
计算机二级c 南开100题

124、以下叙述正确的是A)输入项可以是一个实型常量,如:scanf("%f"、3、5); B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:scanf("a=%d,b=%d); C)当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:scanf("%4、2f",&f); D)当输入数据时,必须指明变量地址,例如:scanf("%f、&f); 、C、2125、以下叙述正确的是A) do-while语句构成的循环不能用其它语句构成的循环来代替。
B) do-while语句构成的循环只能用break语句退出。
C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。
D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。
、D、2126、以下叙述中不正确的是A) 在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。
B) 在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。
C) 在C中,外部变量的隐含类别是自动存储类别。
D) 在C中,函数形参可以说明为register 变量。
、C、2127、以下叙述中不正确的是____ A) 在不同的函数中可以使用相同名字的变量B) 函数中的形式参数是局部变量C) 在一个函数内定义的变量只在本函数范围内有效D) 在一个函数内的复合语句中定义的变量在本函数范围内有效、D、2128、以下程序运行后,输出结果是A)1000 B)10010 C)00110 D)10100 main () { int y=18,i=0,j,a[8]; do { a[i]=y%2;i++; y=y/2; } while(y>=1); for(j=i-1>0;j--)printf(%d",a[j]); printf("h\n"); }、B、2129、以下程序运行后,如果从键盘上输入:book book 则输出结果是A)*8 B)#9 C)#6 D)*9 #include main() {char a1[80],a2[80],*s1=a1,*s2=a2; gets(s1); gets(s2); if(!strcmp(s1,s2)) printf(“*”); else printf(“#”); printf(“%d\n”,strlen(strcat(s1,s2))) }、B、2130、以下程序运行后,输出结果是A)6385 B)22 C)33 D)693825 main() { char ch[2][5]={"693","825"},*p[2]; int i,j,s=0; for (i=0;i='0' && p[i][j]<='9';j+=2) s=10*s+p[i][j]-'0'; printf("%d\n",s); }、A、2131、以下程序运行后,输出结果是A)84 B)99 C)95 D)44 int d=1; fun (int p) { int d=5; d+=p++; printf("%d",d); } main() { int a=3; fun(a); d+=a++; printf("%d\n",d); }、A、2132、以下程序执行后a的值是A)4 B)1 C)0 D)运行时出错,a无定值main() { int a,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; printf("%d\n",a); } 、C、2133、以下程序执行后sum的值是A)15 B)14 C) 不确定D)0 min() { int i , sum; for(i=1;i、C、2134、以下程序中,while循环的循环次数是main() { int i=0; while(i、D、2135、以下定义语句中,错误的是A) int a[]={1,2}; B) char *a[3]; C) char s[10]="test"; D) int n=5,a[n];、D、2136、以下对C语言函数的有关描述中,正确的是A) 在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B) C函数既可以嵌套定义又可以递归调用C) 函数必须有返回值,否则不能使用函数D) C程序中有调用关系的所有函数必须放在同一个源程序文件中、A、2137、以下对枚举类型名的定义中正确的是____ A)enum a={one,two,three}; B)enum a {one=9,two=-1,three}; C)enum a={"one","two","three"}; D)enum a {"one","two","three"};、B、2138、以下各选项企图说明一种新的类型名,其中正确的是A) typedef v1 int; B) typedef v2=int; C) typedefv1 int v3; D) typedef v4: int;、C、2139、以下选项中,不能正确赋值的是A) char s1[10];s1="Ctest"; B) char s2[]={'C', 't', 'e', 's', 't'}; C) char s3[20]="Ctest"; D) char *s4="Ctest\n"、A、2140、以下选项中,非法的字符常量是A) '\t' B) '\17' C)"n" D) '\xaa'、C、2141、以下选项中不属于C语言的类型的是A) signed short imt B) unsigned long int C) unsigned int D) long short、D、2142、以下选项中合法的字符常量是A)"B" B) '\010' C) 68 D) D、B、2143、以下循环体的执行次数是A) 3 B) 2 C) 1 D) 0 main() { int i,j; for(i=0,j=1; i<=j+1; i+=2, j--)printf("%d \n",i); }、C、2144、以下有4组用户标识符,其中合法的一组是A) for B) 4d C) f2_G3 D) if、C、2145、用十进制数表示表达式:12/012的运算结果是A)1 B)0 C)14 D)12、A、2146、有如下程序main0 { int x=23; do { printf("%d",x--);} while(!x); } 该程序的执行结果是A) 321 B) 23 C) 不输出任何内容D) 陷入死循环、B、2147、有如下程序int runc(int a,int b) { return(a+b);} main0 { int x=2,y=5,z=8,r; r=func(func(x,y),z); printf("%\d\n",r); } 该程序的输出的结果是A) 12 B) 13 C) 14 D) 15、D、2148、有如下程序long fib(int n) { if(n>2) return(fib(n-1)+fib(n-2)); else return(2); } main0 { printf("%d\n",fib(3)); 该程序的输出结果是A) 2 B) 4 C) 6 D) 8、B、2149、有如下程序main() { char s[]="ABCD", *p; for(p=s+1; p、D、2150、有如下程序main0 { int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=1;i、A、2上一页[1] [2] [3] [4] [5] [6] [7] [8] 下一页计算机等级考试二级C语言超级经典400道题目baidu151、有如下程序main0 { int a=2,b=-1,c=2; if(a、C、2152、有如下程序main0 { int i,sum; for(i=1;i<=3;sum++) sum+=i; printf("%d\n",sum); } 该程序的执行结果是A) 6 B) 3 C) 死循环D) 0、C、2153、有如下程序main0 { int n[5]={0,0,0},i,k=2; for(i=0;i、D、2154、有如下程序main0 { int n=9; while(n>6) {n--;printf("%d",n);} } 该程序段的输出结果是A) 987 B) 876 C) 8765 D) 9876、B、2155、有如下程序main0 { int x=1,a=0,b=0; switch(x){ case 0: b++; case 1: a++ case 2: a++;b++ } printf("a=%d,b=%d\n",a,b); } 该程序的输出结果是A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2、A、2156、有如下程序main0 { int y=3,x=3,z=1; printf("%d %d\n",(++x,y++),z+2); } 运行该程序的输出结果是A) 3 4 B) 4 2 C) 4 3 D) 3 3、D、2157、有如下程序段int *p,a=10,b=1 p=&a; a=*p+b; 执行该程序段后,a的值为A) 12 B) 11 C) 10 D) 编译出错、B、2158、有如下说明int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是A) *p+9 B) *(p+8) C) *p+=9 D) p+8、B、2159、请读程序: # include void main( ) {char x=112,y=211; printf("\n%d",x<>1);} 则上面程序的输出结果是____ A) -32 B) 0 C) -32768 D) -22、A、2160、以下程序的输出结果是m。
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年计算机二级C考试重点复习以及南开100题

2012年计算机等级考试二级C++考点分析及南开100题C++语言的数据类型考点1 基本类型C++中的数据类型大体可以分为3类:基本类型、导出类型和用户定义类型。
基本类型是系统预先定义好的、与硬件直接相关的类型,是构造派生类型的基本元件。
它包括:逻辑型、字符型、整型、浮点型和空值型。
(1)逻辑型:又称布尔型,用关键字bool表示。
取值范围只包含true和false,这两个关键字分别对应整逻辑真)和0(表示逻辑假)。
(2)字符型:又称char型,用关键字char表示。
取值范围包含全部基本字符及ASCII 码集对应的全部符号,字符型数据占用1字节(Byte),即8位(bit)空间。
(3)整型:又称int型,用关键字int表示。
取值范围是计算机所能表示的所有整数。
整型是C++中最常用的数据类型。
(4)浮点型:包括单精度型(又称float型)和双精度型(又称double型)。
单精度型数据的取值范围是-.4E38~3.4E38(不能超过7位有效数字,若超出,则舍去第7位以后的数字),单精度数据一般占用4字节,双精度型数据一般占用8字节。
(5)空值型:又称void型,用关键字void表示。
取值为空。
注意:C++中没有空值型的常量或变量,void主要用于函数和指针的声明。
小提示:void是无值,而不是0,因为0也是一个值。
考点2 基本类型的派生类型在C++语言中,基本类型的字长及其取值范围可以放大和缩小,改变后的类型称为基本类型的派生类型。
由基本类型关键字int,char,float和double前面加上类型修饰符short(短类型,缩短字长),long(长类型长字长),signed(有符号类型,取值范围包括正负),unsigned无符号类型,取值范围只包括正)组成。
考点3 字面常量字面常量又称直接常量,C++中有以下几种常量类型。
(1)逻辑常量:逻辑类型包含的true和false两个取值,就称为逻辑常量。
逻辑常量主要用在逻辑运算中。
全国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]。
二级C上机南开100题

计算机二级C语言上机南开100题1: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指定的函数中。
2: 第2题请编写函数fun,它的功能是:求出1到100之内能被7或者11整除,但不能同时被7和11整除的所有整数,并将他们放在a所指的数组中,通过n返回这些数的个数。
3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。
5: 第5题请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。
6: 第6题请编写一个函数void fun(char a[],char b[],int n),其功能是:删除一个字符串中指定下标的字符。
其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。
7: 第7题请编写一个函数int fun(int *s,int t,int *k),用来求出数组的最大元素在数组中的下标并存放在k所指的储存单元中。
8: 第8题编写函数fun,功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。
S=1+1/(1+2)+1/(1+2+3)+…….+1/(1+2+3+4+……+n)9: 第9题编写一个函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。
M与n为两个正整数,且要求m>n。
p=m!/n!(m-n)!10: 第10题编写函数fun,它的功能是:利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。
2012级c语言南开100题

第1套填空题请补充FUN函数,FUN函数的功能是求10的阶乘。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序:#include <stdio.h>long fun(int n){if (___1___)return (n*fun(___2___));return ___3___;}main(){printf("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))第2套填空题请在函数FUN的横线上填写若干表达式,使从键盘上输入一个整数N,输出斐波纳契数列。
全国计算机考试二级C语言南开100题答案(Word版)

全国计算机考试二级C语言南开100题答案(Word版)1、B:STYPE FILE fp M:for(i = 0 ; i < sl ; i++) t[2*sl] = 0; P: *c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10);2、B: *fw str str M: long *t sl = sl*10; P: *c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);3、B: fp fclose(fp) fname M: i<n p=i P: *c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10);4、B: “r”ft fs M:(d%2==0) s /= 10; P: *c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10);5、B: x p s M:long k=1; num/=10 ;P: int i; float ave=0.0; for(i=0; i<n; i++) ave=ave+a[i] ; ave=ave/n; return ave;6、B: next t->data t M:fun (char *a) printf("%c", *a) ; P: int i; char *p=s, *q=t; for(i=0;*p && *q; i++) {p++; q++; } if(*p == 0 && *q == 0) return s ; if(*p) return s ; else return t ;7、B: q next next M: p = j; p=i; P: int i ; *n=0 ; for(i=7 ; i<=m; i++) if((i % 7 == 0) || (i % 11 == 0)) a[(*n)++]=i ;8、B: NULL n head,ch M: for c[t]='\0'; P: int i ; for(i = 1 ; i < strlen(*ss) ; i+=2) { if(ss[i] >= 'a' && ss[i] <= 'z') ss[i] -= 32 ;9、B: *n next head M: a = NULL; *r == *p P: int i, j = 0 ; for(i = 0 ; i < strlen(s) ; i += 2) if(s[i] % 2 == 0) t[j++] = s[i] ; t[j] = 0 ;10、B: data next head M: *r r++; P: int i, j = 0 ; for(i = 1 ; i < strlen(s); i+=2) t[j++] = s[i] ; t[j] = 0 ;11、B: STU std[i].num std[i] M: p++; *r==‟\0‟ ;P: int i, j = 0 ; for(i = 0 ; i < strlen(s); i++) if(s[i] % 2) t[j++] = s[i] ; t[j] = 0 ;12、B: std[i].year std[i] n M:分号去掉if (!( n%i ))P: int i, max = a[0].s, j = 0; for(i = 1 ; i < N ; i++) if(max < a[i].s) { j = i ; max = a[i].s ; } *s = a[j] ;13、B: STU score[i] &std M:( ) k= =0 P: int i, j; for(i = 0 ; i < N ; i++) for(j = 0 ; j <= i; j++) a[i][j] *= n ;14、B: *std PERSON std M:int str[k][i] P: int i, j; for(i = 0 ; i < N ; i++) for(j = 0 ; j <= i; j++) a[i][j] =0;15、B: *std std[i].age M: int *b t = *b; *b = *a ; *a = t; P: int i,j, min, k ; for(i= 0 ; i < N ; i++) { min = tt[0][i] ; k = 0 ; for(j = 1 ; j < M ; j++) if(min > tt[j][i]) { min=tt[j][i] ; k = j ; } pp[i] = tt[k][i] ; }16、B: tt tt.score[i]std M: m=i m=kP: if(w>10000) w %= 10000 ; else if(w>1000) w %= 1000 ; else if(w>100) w %= 100 ; else if(w>10) w %=10 ; return w ;17、B: i+1 k=j t M: char *str != 0P: char b[N] ; int i = 0, j ; for(j = strlen(s) - 1 ; j >= 0 ; j--) b[i++] = s[j] ; b[i]=0; strcpy(s, b) ;18、B: k len ss[i][j] M:n-- result P: char *p = s ; int i = 0 ; while(*p) { if(*p != c) s[i++] = *p ; p++ ; } s[i] = 0 ;19、B:ss[i] n+j 1 M: *p ; P: char ch ; int i, j ; for(i = 1 ; i < 6 ; i++)for(j = i + 1 ; j < 6 ; j++) { if(*(s + i) < *(s + j)) { ch = *(s + j) ; *(s + j) = *(s +i) ; *(s + i) = ch ; } }20、B: [N] len *n=len M:t += 1.0/i; return t; P: int cnt = 0 ; char *p = str, *q ;while(*p) {q = strstr(p, substr) ; if(q == NULL) break; p = q + strlen(substr) ; cnt++ ; } return cnt ;strstr:在前串中找出后串第一次出现的位置,若找到返回地址否则返回NULL21、B: M < k M: && tt[i] -= 32;P: int i,j;*k=0;for(i=2;i<m;i++){for(j=2;j<=i/2;j++)if(i%j==0) break; if(j<=i/2) {xx[*k]=i;(*k)++;}}22、B: j++ s[i]=t1[i] j M:; ; *(pstr + j) P: int cnt = 0 ; char *p = ss ; while(*p) { if(*p == c) cnt++ ; p++ ;}23、B: && 0 s[j] M: <= 1.0P: int c[3][3] ; int i, j ; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < 3 ; j++) { c[i][j] = a[j][i] ;b[i][j] = a[i][j] + c[i][j] ; }24、B: s[i] …9‟*t=n;M: t = *x ; *x = y ; return(t) ;P: int i ; *n = 0 ; for(i = 7 ; i < 1000 ; i++) if(((i % 7) == 0 || (i % 11) == 0) && (i % 77) != 0) a[(*n)++] = i ;25、B: n-1 s[k] c M:t=0 t=t/10P: char *p = tt ; int i ; for(i = 0 ; i < 26 ; i++) pp[i] = 0 ; while(*p) { if(*p >= 'a' && *p <= 'z') pp[*p - 'a'] += 1 ; p++ ; }26、B: t=i; i 0 M:(fabs(t)) s/n P: strncpy(b, a, n) ; b[n] = 0 ; strcat(b, a + n + 1) ;27、B: 0 0 c M:double/= P: int i,j,t; float s=0; for(i=1;i<=n;i++) { t+=j;s=s+1./t; } return s;28、B:i++ m m M:) ; P: float x0, x1=0.0; do{ x0=x1; x1=cos(x0); } while(fabs(x0-x1)>0.000001); return x1;29、B: N N-1 0 M: s=s+(n+1.)/n; return t; P: int f0 = 0, f1 = 1, f ; do { f = f0 + f1 ; f0 = f1 ; f1 = f ; } while(f < t) ; return f ;30、B: 0 j-- j M: double ; P: double s = 0.0 ; int i ; for(i = 1 ; i <= m ; i++) s += log(1.0 * i) ; s = sqrt(s) ; return s ;31、B: [N] t[i][j] t[j][i] M: ((m)/(n)) return (value);P: int j=0; char *p = a ; while(*p == '*') p++ ; while(*p) a[j++] = *p++; a[j]=0 ;32、B: t[ ][N]i=0;i<n; s M: fun(int a[],int m) ifP: char *q=a; int j=0; while(*q && q<p) { if(*q != '*') a[j++] = *q ;q++ ; } while(*p) a[j++]=*p++; a[j]=0;33、B: sum=0; t[i][i] 1M:double r; > P: int j=0; char *q=a; while(*q && q < h) a[j++]= *q++ ;while(*h&&*p &&h < p) { if(*h != '*') a[j++] = *h ; h++; } while(*p) a[j++] = *p++ ; a[j] = 0 ;34、B: 1 j++ j M:t=b; return (b); P: int j =0 ; char *p=a; while(*p) {if(*p != '*') a[j++]=*p ; p++ ; } a[j]=0;35、B: a[i]%2 a[j] j M:int n n==1P: char *p=a ; int j=0; while(*p) p++; p--; while(*p == '*') p--; p++; while(j<n && *p) { p++ ; j++; } *p = 0 ;36、B: a[i] a[j] a[j]M:分号去掉case 1;分号改冒号P: int i ; for(i =0 ; i < N ; i++) a->ave += a->s[i] ; a->ave /= N ;37、B: *a 2 i+1M:sum=0.0; if((i+1)%5==0) P: int i ; double ave = 0.0 ; *n = 0 ; for(i = 0 ; i < N ; i++) ave = ave + a[i].s ; ave /= N ;for(i = 0 ; i < N ; i++) if(a[i].s < ave) { b[*n]=a[i] ; (*n)++; } return ave ;38、B: 1 i a[p+i] M:k <P: int i, max = a[0].s, n=0; 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;39、B: n/2 i a[n-1-i] M:*P→*p …o‟→…0‟P: STREC c ; int i ; c.num[0] = '\0' ;c.s = -1 ;for(i = 0 ; i < N ; i++) if(strcmp(a[i].num, b)==0) { strcpy(c.num, a[i].num);c.s=a[i].s;break ; } return c ;40、B: char ch<='9' …0‟M:*p ……(空格字符)P: STREC *p=h->next; double av=0.0; int n = 0 ;while(p!=NULL) {av+= p->s ; p=p->next; n++; } return (av / n) ;41、B: && 'A' ch M: int *a a[j]=a[j-1]; P: int s = 0, i ; for(i = 2 ; i < n ; i++) if(n % i == 0) s +=i ; return s ;42、B: 1 -1 t M: for(i=1; i<=3; i++) k>=0 && k<=6(K变小写)P: double s=1 ; long t=1; int i; for(i=1; i<=n; i++) { t=t*i; s+=1./t; } return s;43、B: x n fabs(t) M: <= %P: int n=1; double sn=1, xn=1; while(fabs(xn)>=0.000001) { xn=xn*x*(0.5-n+1)/n; n+=1;sn+=xn; } return(sn);44、B: 1 1 i M:k=i; c=k%10; P: int i; double avg=0.0, sum=0.0, abs=0.0, fc; for(i=0;i<10;i++) sum+=x[i]; avg=sum/10; for (i=0;i<10;i++) abs+=(x[i]-avg)*(x[i]-avg); fc=sqrt(abs/10) ; return fc;45、B: x n t M: d=1 d=d/10; P: int i ; double avg=0.0,sum=0.0;for(i=0;i<8;i++){avg=(x[i]+x[i+1])/2;sum+=sqrt(avg);}return sum;46、B: j=2 i j M: sum=0;j=0; = =P: int i; double sum=0.0; if (n>1 && n<=100) { for(i=1; i<=n; i++) sum+=1.0/(2*i-1)-1.0/(2*i); } return sum;47、B: n%10 break break M: t==0 *zeroP: double s=0, t=1; int i ; for(i=1; i<=n; i++) {t *= i; s+= 1./t;} return s;48、B: a[i] a[i] 0 M:y=1; d=a-i;P: int i; double sum=0.0; for(i=1; i<=n; i++) if(i%5 == 0 || i%9 == 0) sum+=1.0/i; return sum;49、B: i t++ count M:int return 1;P: int i,j=0; double s=0; for (i=3; i<=n; i++) { for (j=2; j<i; j++)if (i%j == 0) break; if (j == i) s=s+sqrt(i); } return s;50、B: b a b M:c=c+32; c=c+5; P: int i; double fac=1.0; double sum=1.0;for(i=2;i<=n;i++) { fac+=sqrt(i); sum+=fac; } return sum;51、B: 0 x t++ M:int i,sl; t[i] = s[sl-i-1];P: *c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);52、B: 999 t/10 x M:long *t s>0P: STREC tmp; int i,j; for(i = 0; i < N; i++)for(j = i+1; j < N; j++) if(a[i].s < a[j].s) {tmp = a[i]; a[i] = a[j]; a[j] = tmp; }53、B: 1 s i*10 M: xx[][M] %d P: *c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);54、B: 0 x*10 n/10 M:*t != P: char *p=p1; while(*p)p++; while(*p2)*p++=*p2++; *p=0;55、B: 10 0 x M: (n == 0) 少分号P: while(*p) x = x*10-48+(*p++);56、B: 0 n (t*t) M:; ; if P: double s=1,t=1./3; int n=1;while(t>=eps){ s+=t; n++; t=t*n/(2.0*n+1); } return (s*2.0);57、B: 1 2*i (-1) M:; = =P: int i ; *max=a[0];*d = 0 ; for(i= 1; i < n; i++) if(*max < a[i]) {*max=a[i]; *d = i ; }58、B: 3.0 > 2*i+1 M: double doubleP: int i, j, max=a[0][0]; for(i=0; i<2; i++) for(j=0; j<M; j++) if(max<a[i][j]) max=a[i][j]; return max;59、B: 0 i++ 2.0*i M:(char *s, char *t) t[2*d] = '\0';P: int i, j = 0 ; for(i = 1 ; i < strlen(s) ; i += 2) if(s[i] % 2) t[j++] = s[i] ; t[j] = 0 ;60、B: s[i] k 0 M: *w ifP: int i, j = 0 ; for(i = 0 ; i < strlen(s); i++) if(s[i] % 2==0) t[j++] = s[i] ; t[j] = 0 ;61、B:j k p M:< ifP: int i, j = 0 ; for(i = 0 ; i < strlen(s) ; i++) if(!((i % 2) ==0 && (s[i] % 2))) t[j++] = s[i] ;t[j] = 0 ;62、B: 0 x[i]/N j++ M:double ; ; P: int i, min = a[0].s, j = 0; for(i = 1 ; i < N ; i++)if(min > a[i].s) { j = i ; min = a[i].s ; } *s = a[j] ;63、B: *av i x[j] M:float <=n P: int i, j; for(i = 0 ; i < N ; i++) for(j= i ; j< N ; j++) a[i][j] *= m ;64、B:s/N j++ -1 M:#include *pP: int i, n=0; double sum=0; for ( i =0; i<N; i++ ) { sum+=w[0][i]+w[N-1][i]; n+=2; }for(i =1; i<N-1; i++) { sum +=w[i][0]+w[i][N-1]; n+=2; } return sum/n; 65、B: x[i]/N j++ i++M:num[k]=0; *sP: int i,sum=0; for(i=0;i<N;i++) sum+=a[0][i]+a[M-1][i]; for(i=1;i<M-1;i++) sum+=a[i][0]+a[i][N-1]; return sum;66、B: '0' s++ ctod(a)+ctod(b) M:*a *b *a *bP: long w ; w = h * 100 + 0.5 ; return (float) w / 100;67、B: N break n M:sum=0; &a[i][j]P: int i,j;int arr[3][3];for(i=0;i<3;i++) for(j=0;j<3;j++) arr[i][j]=array[i][j];for(i=0;i<3;i++) for(j=0;j<3;j++) array[i][j]=arr[j][i];68、B: a[0][i] < x,y M:int *x,int *y t=*x;*x=*y;*y=t;P: for(j = 2 ; j <= (i/2) ; j++) if(i % j == 0) break; if(j > (i/2)) aa[k++] = i;69、B: [N] I i+1 M:m%k aa[ i-1 ] P: if(strlen(a[i]) > maxlen) { maxlen = strlen(a[i]) ;k= i ; }70、B: 0 || 1 M:t = t-1.0/i; return t; P: char *p = str ; int i = 0 ;while(*p) { if(*p != ' ') str[i++] = *p ; p++ ; } str[i] = 0 ;71、B: k N a[k][i] M:strlen( t )-1 > P: int i; for(i=1;i<strlen(ss);i+=2) if(ss[i]<='z'&&ss[i]>='a') ss[i]-=32;72、B: k N-1 temp M:int a[][M] (k+1)*(j+1) P: *c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10);73、B: j 0 i++ M:i <= m y -= 1.0/(i * i) ;P: float av=0.0 ; int i, j=0 ; for(i=0; i<m; i++) av += score[i] ; av /= m;for(i=0; i<m; i++) if(av>score[i]) below[j++]=score[i]; return j;74、B: t,s s[i] 0 M:= = > = P: int i; *n=0; for(i=1; i <= x; i++) if((x % i== 0) && (i % 2)) pp[(*n)++]=i;75、B: s -- return 0 M:double b=c P: for(i = 2 ; i < t; i++) if(t % i==0) break; if(i==t) { xx[j-1] = i; j++; } t++;76、B: n++ 0 s++ M:t += s[k] ave P: int i, pos = 0, max = *s ; for(i = 1 ; i < t ; i++) {if(max < *(s + i)) { max = *(s + i) ; pos = i ; } } *k = pos ;77、B: *s s++ n M:c=0; >= P: float p,a=1,b=1,c=1; int i; for(i=1;i<=m;i++)a=a*i;for(i=1;i<=n;i++) b=b*i; for(i=1;i<=m-n;i++) c=c*i; p=a/(b*c); return p;78、B: 48 s++ sum M: = = = = }P: double sum=0.0; int i; for(i=21; i<=n; i++) if((i%3==0)&&(i%7==0))sum+=i; return sqrt(sum) ;79、B: *s 1 k[n] M:double ; P: double s = 0.0 ; int i ; for(i = 1 ; i <= n ; i++) s = s + 1.0 / (i * (i + 1)) ; return s ;80、B: i ps[j] tp M:double ; P: double s=1.0,t=1.0; int i; for(i=1;i<=n;i++){ t*=x/i; s+=t; } return s;81、B: N i -1 M:a2=k/10; return i; P: char *p = a ; while(*p) p++ ; p-- ; while(*p == '*') p-- ; p++ ; *p = 0 ;82、B: N k ss[i] M: k=0 || P: if(a[i] != '*') a[k++]=a[i]; i++;83、B: N substr 0 M: int y, int z return j;P: char *p=a ; int j=0,len=0; while(*p) {p++; len++;} while(j<len-h-e) { a[j]=a[h+j]; j++; } a[j]=0;84、B: [M] N 0 M: t=1; 2*s P: for(; a[j] !=0 ; j++) a[i++]=a[j]; a[i] = 0;85、B: a score[i] M:s[j++]=s[i]; s[j]='\0'; P: while(*p) *q++=*p++;86、B: b->sno b->name &t M:double x0 (x1-x0) P: double t=0 ; int i ; *n = 0 ; for(i = 0 ; i < N ; i++)t = t + a[i].s ; t = t / N ; for(i = 0 ; i < N ; i++) if(a[i].s > t) b[(*n)++] = a[i] ; return t ;87、B: struct student a.score[i] M:P改小写a[i]=a[i+1]; P: int i,n=0,min=a[0].s;for(i=1;i<N;i++) if(min>a[i].s) min=a[i].s; for(i=0;i<N;i++) if(a[i].s==min) b[n++]=a[i];return n;88、B: struct student * a->score[i] a M:char * sp P: *c =(b%10)*1000+(a/10)*100+(b/10)*10+a%10;89、B: struct student t; n-1 a[i].name,a[j].name M: ; whileP: int i,j = 0 ; for(i = 0 ; i < N ; i++) if(a[i].s >= l && a[i].s <= h) b[j++] = a[i] ; return j ;90、B: fp== fp M:n=strlen( aa ); ch=aa[i]; P:double max=h->s; STREC *p;p=h->next;while(p) { if(p->s>max ) max=p->s; p=p->next; } return max;91、B: double f1 f2 M: p=h->next; p=p->next;P: int i=0,j=strlen(str)-1; while(str[i++]==str[j--]);if(i>=j) return 1;return 0;92、B: h->next p->next >= M:p=h->next; p=p->nextP: int i,j; *n=0; for(i=0;i<mm;i++) for(j=0;j<nn;j++) b[(*n)++]=s[i][j];93、B: NODE next r M:|| t[j]=0;P: for(i = 0 ; i < nn ; i++) for(j = 0 ; j < mm ; j++) { b[np] = s[j][i] ; np = i * mm + j + 1; }94、B: next 0 r M:r=t; *r== 0 P: for(i = 0 ; i < M ; i++) strcat(b, a[i]) ;95、B: p->next q p->next M:while(*s) s++P: int i, j = 0, b[N] ; for(i = p + 1 ; i < n ; i++) b[j++] = w[i] ;for(i = 0 ; i <= p ; i++) b[j++] = w[i] ; for(i = 0 ; i < n ; i++) w[i]= b[i] ;96、B: double f1 f2M:char *fun ss++; tt++;P: int i; for(i = 0 ; i < m ; i++) fun1(w);97、B: h->next p->next >= M:p=h->next; p=p->nextP: int i,j; *n=0; for(i=0;i<mm;i++) for(j=0;j<nn;j++) b[(*n)++]=s[i][j];98、B: FILE * fclose(fp) fp M:; t[k]=b[j];P: int i, j = 1, k = a[0] ; for(i = 1 ; i < n ; i++) if(k != a[i]) { a[j++]=a[i] ; k = a[i] ; } a[j] = 0 ; return j ;99、B: "rb" > fwrite M:p=s; ; P: int i, j ; for(i = 0 ; i < M ; i++) b[i] = 0 ; for(i = 0 ; i < N ; i++) { j = a[i] / 10 ;if(j > 10) b[M - 1]++ ; else b[j]++ ; }100、B: filename fp fp M:NODE * return h P: int k = 1 ; while(*s) { if(*s == ' ') k++ ; s++ ; } return k ;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2012年计算机等级考试二级C++考点分析及南开100题C++语言的数据类型考点1 基本类型C++中的数据类型大体可以分为3类:基本类型、导出类型和用户定义类型。
基本类型是系统预先定义好的、与硬件直接相关的类型,是构造派生类型的基本元件。
它包括:逻辑型、字符型、整型、浮点型和空值型。
(1)逻辑型:又称布尔型,用关键字bool表示。
取值范围只包含true和false,这两个关键字分别对应整逻辑真)和0(表示逻辑假)。
(2)字符型:又称char型,用关键字char表示。
取值范围包含全部基本字符及ASCII 码集对应的全部符号,字符型数据占用1字节(Byte),即8位(bit)空间。
(3)整型:又称int型,用关键字int表示。
取值范围是计算机所能表示的所有整数。
整型是C++中最常用的数据类型。
(4)浮点型:包括单精度型(又称float型)和双精度型(又称double型)。
单精度型数据的取值范围是-.4E38~3.4E38(不能超过7位有效数字,若超出,则舍去第7位以后的数字),单精度数据一般占用4字节,双精度型数据一般占用8字节。
(5)空值型:又称void型,用关键字void表示。
取值为空。
注意:C++中没有空值型的常量或变量,void主要用于函数和指针的声明。
小提示:void是无值,而不是0,因为0也是一个值。
考点2 基本类型的派生类型在C++语言中,基本类型的字长及其取值范围可以放大和缩小,改变后的类型称为基本类型的派生类型。
由基本类型关键字int,char,float和double前面加上类型修饰符short(短类型,缩短字长),long(长类型长字长),signed(有符号类型,取值范围包括正负),unsigned无符号类型,取值范围只包括正)组成。
考点3 字面常量字面常量又称直接常量,C++中有以下几种常量类型。
(1)逻辑常量:逻辑类型包含的true和false两个取值,就称为逻辑常量。
逻辑常量主要用在逻辑运算中。
例如两个整数x和y:bool a=(x>y);若x大于y,则a的值为true;若是其他情况,则为false。
(2)字符常量:用一对单引号括起来的一个或多个字符称为字符常量。
例如:’a’,’\123’,’\n’等。
以反斜杠开头的字符常量称为转义字符序列,如’\a’,’\n’等。
反斜杠后的字符将被“转义”成具有某种控制功能的字符,如’\a’中的字符a被解释为响铃,如’\n’中的字符n被解释为换行。
为了表示作为特殊标记使用的可显示字符,也必须用反斜杠引导,如’\\’表示反斜杠字符自身。
(3)字符串常量:简称字符串,它们是用双引号括起来的字符序列,例如,“Hello,world!\n"。
小提示:字符串常量与字符常量在计算机内部存储上是有区别的。
一个字符串常量在存储时是在给定的字符序列后再加一个空字符(’\o’),而字符常量则不加。
(4)整型常量:简称整数,十进制数、八进制数和十六进制数是它的3种表示方式。
具体内容如表2-2所示。
另外,在C++语言中,除了一般的表示方法之外,对于任意一种进制的整型数据还可以添加后缀u(大、小写均可,无符号整型)和l(大、小写均可,长整型)。
(5)实型常量:简称实数,实型常量有十进制数的定点和浮点两种表示方式。
定点表示的实数是以小数形式表示的,例如,3.141,1.236,256.0,52,.23,0.21等都是合法的C++实数。
浮点表示的实数是以指数形式表示的,在C++中,指数形式表示为:<数字部分>E(e)<指数部分>。
其中,数字部分是实数,指数部分是整数,字母E (e)前后必须有数字,字母E (e)后必须是整数。
例如2004×103在C ++中记为2004E3或2004e3。
实型常量分为单精度、双精度和长双精度3类。
小提示:在C++中,小数点前的0可以省略,但小数点不可以省略。
6)枚举常量:是枚举类型中定义的值(枚举值)。
枚举类型(enum类型)用关键字enum表示,属于用户定义类型。
声明格式为:enum<类型名>{<枚举值表>};枚举值有两种定义形式:<值名><值名>=<整型常量>枚举类型的声明也可以用做成组声明整型符号常量的方法。
enum类型需要注意的是:一个枚举类型实际是int类型的一个子集;n个枚举值未全部赋值时,它们的值从左至右分别与0,1,…,n一一对应;若第i个枚举赋值的常量值为a,则其后续的未赋常量值的枚举值分别与整数a+1,a+2,…相对应,直到已经被赋了枚举值或结束。
考点4 变量1.变量的定义变量是在程序的执行过程中其值可以改变的量。
变量有数据类型和初值。
变量在使用之前必须首先声明其类型和名称。
变量声明语句的一般格式为:[<存储类>]<类型名><变量名>[=<初值表达式>],…;其中,<存储类>有auto,register,static,extern 4种。
当存储类默认时按auto处理。
<类型名>是一种根据类型名称,如int,char等基本类型名,或者用户定义的数据类型名。
<变量名>是用户定义的一种标识符,表示一个变量,它可以通过后面的选项进行变量初始化。
变量名的命名遵循如下规则:(l)一定不可以是C++关键字;(2)第一个字符必须是字母或下画线;(3)中间不可以有空格;(4)变量名中不可以包含特殊符号。
<初值表达式>是一个表达式,为变量赋初值。
例如:char A; //定义了字符型变量Aint x=2; //定义了x和y两个整型变量,其中,x的初值为2在C++中,还有另外一种赋值方法,如给整型变量j赋初值2004,可写成:int j(2004);2.变量的使用方式C++中有关变量使用方面的几个概念如下:(1)全局变量和局部变量:全局变量也叫外部变量,它是在所有函数定义、类定义或程序块之外声明的变量。
如果全局变量在声明时未被初始化,该变量将被系统自动初始化为0。
全局变量的作用范围是从定义变量的位置开始直到整个程序结束。
而局部变量是在所有函数定义、类定义或程序块之内声明的变量,它只在定义它的函数、类或程序块内有效。
(2)生存周期与作用域:生存周期是从时间的角度考虑的,是指一个变量从被声明且分配了内存开始,一直到这个变量的声明语句失效且它占用的内存空间被释放为止。
而作用域是从空间的角度考虑的,它是指一个变量存储空间的使用范围。
(3)变量的存储类属性:在C++中有4种存储类别。
(4) typedef类型说明:typedef类型是用户定义类型,使用关键字typedef声明新的类型名来代替已有的类型名。
语法格式为:typedef <已有类型名><新类型名>如:typedef int INTEGER;小提示:用typedef可以声明各种类型名,但不能用来定义变量。
考点5 符号常量1.符号常量的声明语句用eonst修饰的标识符称为符号常量因为符号常量同样需要系统为其分配内存,所以又称为const变量符号常量在使用之前一定要先进行声明,声明的格式为:const<类型名><符号常量名>=<初值表达式>,…;该语句也可以声明多个符号常量符号常量声明语句既可出现在函数体外,也可出现在函数体内。
注意:用类型修饰符const声明的变量只能被读取,该变量必须在声明时进行初始化,并且它的值在程序中不能改变。
2.使用#define命令定义符号常量#define命令定义一个标识符及串,在源程序中每次遇到该标识符时,编译器均用定义的串代替之。
这实际上就是定义符号常量,命令格式为:#define<符号常量名><字符序列>其中,<符号常量名>是C++中用户定义的有效的标识符,又称宏(宏名);<字符序列>是用户给定的用来替换宏的一串字符序列,又称宏替换体,它可以是字符串、数值常量或可计算值的表达式。
考点6 运算符和表达式的概念运算符是一种用来对数据进行操作的符号,在c十+语言中又称为操作符。
运算中所需要的数据又称为操作数(或运算分量),运算符与操作数组成的符号序列称为表达式。
在C++语言中,根据操作数的个数可将运算符分为单目、双目和三目3类运算符。
在C++语言中,运算符有的是一个字符,有的是2个或3个字符,也有的是关键字。
每种运算都有一种相对应的运算符,有些运算符还可以一符多用。
考点7 赋值运算赋值运算是一种改变存储区域内容的操作,这个内存空间由左值表达式指定。
左值是指具有对应的可由用户访问的存储单元,并可由用户改变其值的量。
赋值运算是一种双目运算符,运算符是“=”,其作用是将右操作数送到左操作数,该左操作数必须是一个可修改的左值赋位运算的形式为:<变量名>=<表达式>,例如x=2+6。
赋值号两边的数据类型应该是一致的,当不一致时,编译器会在赋值前将右操作数转换成与左操作数相同的类型。
一个赋值表达式中使用多个赋值运算符可实现多个变量赋值的功能,如表达式(x=y=z=2)与操作序列(z=2;y=z;x=y;)是等价的。
另外,C++语言中还有许多复合赋值运算符,它们是把右边表达式的值同左边变量的值进行运算后的结果再赋给左边变量。
例如,表达式(x+=y+2)等价于表达式(x=x+(y+2))。
注意:C++与其他语言有点不同,用const修饰的变量是左值,但不能放在赋值号的左边。
小提示:(1)要区别赋值号“=”与等于号“= =”,不可以写错。
(2)声明语句中使用的符号“=”称为初始化符,它不是赋值运算符。
考点8 算术运算符和算术表达式1.算术运算符算术运算中所使用的运算符称为算术运算符。
C++提供如下两类算术运算符。
(1)单目算术运算符:-(负)、++(增量)、-(减量)。
-(负)的格式为:-<运算分量>。
它相当于对运算分量取反。
++(增量)的形式有两种,分别是++<运算分量>和<运算分量>++。
两者若不参与其他运算的话,++放在运算分量的前后都一样,若参与其他运算,前者是运算分量先加1后进行其他运算,后者是先进行其他运算再将运算分量加1。
--(减量)的格式与操作与++(增量)类似。
(2)双目算术运算符:+(加),-(减),*(乘),/(除)和%(模,取余)。
它们的含义与数学中的相同,这里不再细讲。
2.算术表达式用算术运算符连接起来的式子称为算术表达式。
算术表达式的值的类型有如下规定。
(1)若参与运算的两个操作数(或运算分量)都为整型时(但具体的类型可以不同,如一个为int型,另一个为char型的情况),则运算结果为int型。