资源描述
计算机二级C语言五套模仿卷及答案
模仿试题一
一、 选用题(本大题30分,每题2分)
1.下列说法对旳是 。
E) main函数必要放在C程序开头
F) main函数必要放在C程序最终
G) main函数可以放在C程序中间某些,但在执行C程序时是从程序开头执行
H) main函数可以放在C程序中间某些,但在执行C程序时是从main函数开始
2.在下面几组数据类型中,全为最常用基本数据类型是哪一组: 。
A)整型 实型 字符型 B)整型 数组 指针
C)数组 构造体 共用体 D)指针 逻辑型 空类型
3.若有阐明语句:char c= ‘\64’ ;则变量C包括: 。
A)1个字符 B)2个字符
C)3个字符 D)阐明不合法,C值不确定
4.设有如下定义和执行语句,其输出成果为: 。
int a=3,b=3;
a = --b + 1; printf(“%d %d”,a,b);
A)3 2 B)4 2 C)2 2 D)2 3
5.C语言中,运算对象必要是整型数运算符是 。
A)% B)\ C)% 和 \ D)**
6.能对旳体现x取值范围在[0,100]和[-10,-5]内体现式是 。
A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)
B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100)
C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100)
D)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)
7.程序段如下
int k=0;
while(k++<=2); printf("last=%d\n",k);
则执行成果是last= 。
A)2 B)3 C)4 D)无成果
8.下面有关for循环对旳描述是 。
A)for循环只能用于循环次数已经确定状况
B)for循环是先执行循环体语句,后判断体现式
C)在for循环中,不能用break语句跳出循环体
D)for循环循环体语句中,可以包括多条语句,但必要用花括号括起来
9.若二维数组a有m列,则a[I][j]元素前数组元素个数为: 。
A)j*m+i B)i*m+j C)i*m+j-113 D)i*m+j+1
10.C语言中变量指针指是: 。
A)变量类型 B)变量值 C)变量值 D)变量地址
11.设有两字符串“Beijing”、“China”分别存储在字符数组str1[10],str2[10]中,下面语句中能把“China”连接到“Beijing”之后为: 。
A)strcpy(str1,str2);
B)strcpy(str1,“China”);
C)strcat(str1,“China”)
D)strcat(“Beijing”,str2);
12.如下程序运行成果是: 。
main( )
{ int a=2,i ;
for(i=0;i<3;i++) printf(“%4d”,f(a) ) ; }
f( int a)
{ int b=0,c=3;
b++; c++; return(a+b+c);}
A)7 10 13 B)7 7 7
C)7 9 11 D)7 8 9
13.在C语言程序中,若未在函数定义时阐明函数类型,则函数默认类型为: 。 A)void B)double C)int D)char
14.在阐明一种构造体变量时系统分派给它存储空间是 。
E) 该构造体中第一种组员所需存储空间
F) 该构造体中最终一种组员所需存储空间
G) 该构造体中占用最大存储空间组员所需存储空间
H) 该构造体中所有组员所需存储空间总和
15.使用fseek函数可以实现操作是 。
E) 变化文献位置指针目前位置
F) 文献次序读写
G) 文献随机读写
H) 以上都不对
二、判断题(本大题10分,每题1分)
1、C程序可以由若干个源文献构成,因而最小功能单位是源文献,最小编译单位是函数。( )
2、C程序有三种构造化程序设计措施,分别次序构造、选用构造和循环构造。( )
3、在if语句中,if子句与else子句都可以单独使用,构成了if语句两种缺省形式。( )
4、for语句作为循环控制语句时,其括号内各个体现式及其后分号都可缺省。( )
5、C程序中函数不可以嵌套定义但可以嵌套调用。( )
6、字符串可以用来给数组赋值,在C程序执行语句中可以直接用字符串给数组名赋值。 ( )
7、数组名也可作为函数参数使用,此时数组名代表数组起始地址。( )
8、在函数内复合语句中定义变量在本函数范围内有效。( )
9、申明一种构造体类型一般形式为struct 构造体名 {组员表列};。( )
10、ANCI C规定了原则输入输出函数库,用fseek()函数来实现打开文献。( )
三、程序填空题(本大题12分,每题2分)
1.下面程序可求出1~1000自然数中所有完数(因子和等于该数自身数)请填空。
main( )
{ int m,n,s;
for(m=2;m<1000;m++)
{ ____(1)____;
for(n=1;n<=m/2;n++)
if(__(2)___) s+=n;
if(__(3)___) printf(“%d\n”,m);} }
2.. 用起泡法对十个数由大到小排序。
main( )
{ int a[11],i,j,t;
printf(“input 10 numbers:\n”);
for(i=1;i<11;i++)
scanf(“%d”,&a[i]);
printf(“\n”);
for (j=1;j<=9;j++)
for(i=1; _(1)__;i++)
if (__(2)___)
{t=a[i]; a[i]=a[i+1]; __(3)__ ;}
printf(“the sorted numbers:\n”);
for ( i=1;i<11;i++)
printf(“%d”,a[i]);
}
四、写出下面程序执行成果(本大题24分,每题4分)
1.#include<stdio.h>
main( )
{ char c=‘A’+‘10’-‘5’;
printf(“c=%c\n”,c); }
2.#include<stdio.h>
main( )
{ int a,b,c;
a=1;b=2;c=3;
if(a>b)
if(a>c)
printf(“%d\n”,a);
else printf(“%d\n”,b);
printf(“over\n”); }
3. main( )
{ char a[6][6],i,j;
for(i=0;i<6;i++)
for(j=0;j<6;j++)
{ if ( i<j )
a[i][j]= ‘#’;
else if(i==j) a[i][j]= ‘ ’;
else a[i][j]= ‘*’ ;}
for(i=0;i<6;i++)
{ for(j=0;j<6;j++)
printf(“%c”,a[i][j]);
printf(“\n”);}
}
4.main( )
{ int i=2,x=5,j=7;
fun (j,6);
printf(“i=%d;j=%d;x=%d\n”,i,j,x ) ; }
printf(“i=%d;j=%d;x=%d\n”,i,j,x) ;
5. # include <stdio.h>
main ( )
{ int i,j; int ﹡p,﹡q; i=2; j=10;
p=&i; q=&j; ﹡p=10; ﹡q=2;
printf(〞i=%d,j=%d\n 〞,i,j); }
6. struct stru {int x; char c; };
main( )
{ struct stru a={10,’x’},*p=&a; func (p);
printf ( “%d,%c”,a.x,a.c); }
func (struct stru *b)
{b->x=20; b->c=’y’; }
五、编程题(本大题24分,第一题7分,第二题8分,第三题9分)
1.把输入整数(最多不超过5位)按输入次序反方向输出,例如,输入数是12345,规定输出成果是54321,编程实现此功能。
2.编一程序,从键盘输入10个整数并保留到数组,规定找出最小数和它下标,然后把它和数组中最前面元素对换位置。
3.编写一种函数计算一种字符串长度,输入输出在主函数内完毕。(使用指针)
模仿试题二
一、选用题(本大题30分,每题2分)
1.C语言中不能用来体现整常数进制是 。
A)十进制 B)十六进制 C)八进制 D)二进制
2.C语言规定标识符由 等字符构成。
A)字母 数字 下划线 B)中划线 字母 数字
C)字母 数字 逗号 D)字母 下划线 中划线
3.若有如下定义:int a=2,b=3;float x=3.5,y=2.5;则体现式:
(float)(a+b)/2+(int)x%(int)y值是 。
A)2.500000 B)3.500000 C)4.500000 D)5.000000
4.如下体现式: 2+’a’+i*f,其中i为整型变量,f为float型变量,则体现式最终数据类型为 。
A)int B)float C)char D)double
5.有如下语句:
printf(“%s,%5.3s\n”,“COMPUTER”,“COMPUTER”);
执行语句后最终成果为 。
A)COMPUTER ,CMP . B)COMPUTER, CMP.
C)COMPU, CMP. D)COMPU,CMP .
6.如下if语句中语法错误是 。
A)if (a>b)printf(“%f”,a); B)if(a>b)printf(“%f”,a);
else printf(“%f”,b);
C)if(a>b)printf(“%f”,a) D)if(a>b)printf(“%f”,b);
else printf(“%f”,b); else printf(“%f”,a);
7.能体现整数x符合下面两个条件语句是 。
(1)“能被4整除,但不能被100整除”.(2)能被4整除,又能被400整除.
A)(x%4==0&&x%100!=0)||x%400==0
B)(x%4==0||x%100!=0)&&x%400==0
C)(x%4==0&&x%400!=0)||x%100==0
D)(x%100==0||x%4!=0)&&x%400==0
8.循环语句中for语句,其一般形式如下:
for(体现式1;体现式2;体现式3) 语句
其中体现循环条件是 。
A)体现式1 B)体现式2 C)体现式3 D)语句
9.以数组作为函数参数时传递数组首地址,那么实参数组与形参数组之间数据传递方式为 。
A)地址传递 B)单向值传递
C)双向值传递 D)随机传递
10.将字符串str2连接到字符串str1中应使用 。
A)strcpy(str1,str2) B)strcat(str1,str2)
C)strcmp(str1,str2) D)strcat(str2,str1)
11.若有如下定义:
int a[10],*p=a;则*(p+3)体现是 。
A)元素a[3]地址 B)元素a[3]值
C)元素a[4]地址 D)元素a[4]值
12.若有如下语句: int *p1,*p2;则其中int所指是 。
A)p1类型 B)*p1和*p2类型
C)p2类型 D)p1和p2所能指向变量类型
13.若有如下阐明:
int a[10]={1,2,3,4,5,6,7,8,9,10};
char b=’a’,d,e;
则数值为4体现式是 。
A)a[4] B)a[d-b] C)a[‘d’-b] D)a[e-b]
14.有如下程序段,在Turbo C环境下运行成果为 。
main( )
{
int i=2,p,k=1; int f(int a,int b)
p=f(i,++k); { int c;
printf(“I=%d,p=%d”,k,p); if(a>b) c=1;
} else if (a==b) c=0;
else c=-1;return(c); }
A)1,0 B)2,0 C)2,-1 D)1,1
15.若fp是指向某文献指针,且已读到此文献末尾,则库函数feof(fp)返回值是 。
A) EOF B) 0 C) 非零值 D) NULL
二、判断题(本大题10分,每题1分)
1.在每个C语言程序中都必要并且只能有一种main函数。( )
2.在C语言中,整型数据与字符型数据在任何状况下都可以通用。( )
3.在C语言程序中,AHP和ahp分别代表两个不一样标识符。( )
4. 在if语句中,不可以没有else子句。( )
5.C语言规定,简朴变量做实参时,与其对应形参之间是单向值传递。( )
6. for语句作为循环控制语句时,括号内分号是用来分开体现式,因而要根据需要加分号。( )
7. 数组名也可作为函数参数使用,此时是地址传递。( )
8. C程序有三种构造化程序设计措施,分别嵌套构造、选用构造和循环构造。( )
9.数组在定义时没有必要指定数组长度,其长度可以在程序中根据元素个数再决定。( )
10.在定义指针型变量时指定基类型为该指针变量所能指向变量类型。( )
三、程序填空题(本大题12分,每题2分)
1.输入3个实数 a,b,c规定按从大到小次序输出三数.
main( )
{ float a,b,c,t;
scanf(“%f,%f,%f”,&a,&b,&c);
if (a<b)
{t=a; (1) ;b=t;}
if( (2) )
{t=a;a=c;c=t;}
if(b<c)
{ (3) b=c;c=t;}
printf(“%f,%f,%f”,a,b,c);
}
2.打印如下杨辉三角形.(规定打印出10行)
main( )
{ int a[10][10],i,j ; 1
for( i=0;i<10;i++) 1 1
{ (4) (5) } 1 2 1
for( i=2;i<10;i++ ) - 1 3 3 1
for(j=1;j<i ;j++ ) 1 4 6 4 1
a[i][j] = (6) ; … … …
for(i=0;i<10;i++)
{ for( j=1;j<=i;j++)
printf(“%5d”,a[i][j]);
printf(“\n”);}
}
四、写出下面程序执行成果(本大题24分,每题4分)
1.main( )
{ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},b[4][3];
int i,j;
for (i=0;i<3;i++ )
for (j=0;j<4;j++ )
b[j][i]=a[i][j];
for ( i=0;i<4;i++ )
{ for ( j=0;j<3;j++ )
printf( “%5d”,b[i][j] );
printf( “\n” );}
}
2.main( )
{ int a[21],i,j,n=0;
for(i=2;i<20;i++ )
a[i]=i;
for ( i=2;i<10;i++ )
{if (a[i]==0) continue;
for (j=i+1;j<=20;j++)
if (a[j]%a[i]==0) a[j]=0;}
for ( i=2;i<=20;i++ )
if (a[i]!=0) { printf(“%4d”,a[i]);n=n+1;}
if (n%4==0) printf(“\n”);
}
3. float fac(int n)
{ float f ;
if(n<0){printf(“n<0,dataerror!”);
f=-1;
else if (n==0||n==1) f=1;
else f=fac(n-1)*n;
return(f);
}
main( )
{int n ;
float y ;
printf(“input a integer number:”);
scanf(“%d”,&n);
y=fac(n);
printf(“%d!=%5.0f”,n,y);
} 假如在运行程序时输入5 ,写出程序运行状况及最终成果: 。
4.main()
{int i=10,j=0;
do
{j=j+i;i--;
while(i>2);
printf("%d\n",j);
}
5. # include <stdio.h>
main ( )
{ int ﹡p; p=&i; ﹡p=2; p++; ﹡p=5; printf(〞%d,〞,﹡p);
p﹣﹣; printf(〞%d\n 〞,﹡p); }
}
6. #include <stdio.h>
void f(int c)
{ int a=0;
static int b=0;
a++;
b++;
printf("%d:a=%d,b=%d\n",c,a,b);
}
void main(void)
{ int i;
for (i=1;i<=3;i++) f( i );
}
五、编程题(本大题24分,第一题7分,第二题8分,第三题9分)
1. 已知三角形三边长,试编程求三角形面积.
规定:三边长从键盘输入,要考虑数据输入与否对旳,能否构成三角形等状况.假设三
边分别为:a,b,c,s=1/2 (a+b+c),area= s(s-a)(s-b)(s-c)
2.有一分数序列:
2/1,3/2,5/3,8/5,13/8,21/13,… …
试编程求数列前20项和.
3. 输入10个学生成绩,分别用函数实现:
(1)求平均成绩;
(2)按分数高下进行排序并输出。
模仿试题三
一、选用题(本大题30分,每题2分)
1.下列有关C程序说法中,对旳是: 。
A) 一种C程序中只能有一种主函数且位置任意;
B) 一种C程序中可有多种主函数且位置任意;
C) 一种C程序中只能有一种主函数且位置固定;
D) 一种C程序中可以没有主函数。
2.如下论述中不对旳是: 。
A)在C程序运算符中,逗号运算符优先级最低;
B)C程序中,AHP和ahp代表两个不一样变量;
C)C程序中,整数和实数在内存中存储形式相似;
D)在C程序中,%是只能用于整数运算运算符.
3.已知ch是字符型变量,下面不对旳赋值语句是: 。
A)ch=‘\0’ B)ch=‘a+b’
C)ch=‘7’+‘9’ D)ch=7+9
4.设有如下定义
int x=10,y=5,z;
则语句printf("%d\n",z=(x+=y,x/y));
输出成果是 。
A)1 B)0 C)4 D)3
5.设有如下定义:char ch=’z’,则执行下面语句后变量ch是值为: 。
ch=(‘A’<=ch&&ch<=‘Z’)?(ch+32):ch
A)A B)a C)Z D)z
6.若x和y都为float型变量,且x=3.6,y=5.8 执行下列语句后输出成果为: 。
printf(“%f”,(x,y));
A)3.600000 B)5.800000
C)3.600000,5.800000 D)输出符号不够,输出不对旳值
7.设有两字符串“Beijing”、“China”分别存储在字符数组str1[10],str2[10]中,下面语句中能把“China”连接到“Beijing”之后为: 。
A)strcpy(str1,str2);
B)strcpy(str1,“China”);
C)strcat(str1,“China”)
D)strcat(“Beijing”,str2);
8.如下对一维整型数组a对旳阐明是 。
A)int a(10);
B)int n=10,a[n];
C)int n;scanf(“%d”,&n);int a[n];
D)#define SIZE 10 int a[SIZE];
9.设有如下程序段,则其执行成果为: 。
static int a[ ]= { 1,2,3,4 },*p ; int i;
p=a; (p+3) + =2; printf(“%d”,*(p+3) );
A)0 B)6 C)a[3]地址 D)不对旳值10.若I为整型变量,则下列程序段运行成果为 。
I=322;
if(I%2==0) printf(“#####”)
else printf(“*****”);
A)##### B)#####*****
C)***** D)有语法错误,无法输出成果
11.已知 int x=30,y=50,z=80;如下语句执行后变量x、y、z值分别为: 。
if (x>y||x<z&&y>z)
z=x;x=y;y=z;
A)x=50,y=80,z=80 B)x=50,y=30,z=30
C)x=30,y=50,z=80 D)x=80,y=30,z=50
12.下面程序段运行成果是: 。
x=y=0; while(x<15) y++,x+=++y;
printf(“%d,%d”,y,x);
A)20,7 B)6,12
C)20,8 D)8,20 13.若有语句 int *point ,a =45; point = &a;
下面均代表同一变量地址一组选项是: 。
A)&a point *&a
B)&*a &a *point
C)point &point &a
D) &a, &*point point
14.如下程序运行成果是: 。
main( )
{ int a=2,i ;
for(i=0;i<3;i++) printf(“%4d”,f(a) ) ; }
f( int a)
{ int b=0;static int c=3
b++; c++; return(a+b+c);}
A)7 10 13 B)7 7 7
C)7 9 11 D)7 8 9
15.若有如下定义:
int a[3][3]={1,2,3,4,5,6,7,8,9},i ;
则下列语句输出成果是: 。
for (i=0;i<=2;i++) printf(“%d”,a[i][2-i]);
A)3 5 7 B)3 6 9
C)1 5 9 D)1 4 7
二、判断题(本大题10分,每题1分)
1.C语言自身没有输入输出语句,输入输出操作都是通过调用库函数来实现。( )
2.在C语言中,int、char和short三种类型数据在内存中所占用字节数都是由顾客自己定义。( )
3.在C程序中一行内可以写几种语句,一种语句可以分写在多行上。因而,并不是每一条C语句都必要有一种分号。( )
4.在C语言if语句中,用作条件判断体现式只能是关系和逻辑体现式。( )
5.在C语言中break和continue都是循环中途退出语句,其中break语句用来跳出一层循环构造;continue语句用来结束一次循环。( )
6.C语言中while和do-while循环重要区别是while语句循环体至少会被执行一次,而do-while语句循环体则也许一次也不执行。( )
7.数组首地址不仅能通过数组中第一种元素地址体现,也可以通过数组名来体现。( )
8.在C语言中,只有在两个字符串所包括字符个数相似时,才能比较大小。如字符串“That”与“The”就不能进行大小比较。( )
9.函数返回值类型是由函数类型和return语句中体现式类型共同决定,当这两类型不一致时最终起决定作用是return中体现式类型。( )
10.定义指针变量时指定类型称为基类型,基类型是指针变量所指向变量类型,因而指针变量被定义之后都只能指向某一类型变量。( )
三、程序填空题(本大题12分,每题2分)
1.输入一种字符,假如是大写字母,则把其变成小写字母;假如是小写字母,则变成大写字母;其他字符不变。请填空:
main( )
{ char ch;
scanf(“%c”,&ch);
if ( (1) ) ch=ch+32;
else if(ch>’a’&&ch<‘z’) ((2));
printf(”%c\n”,ch); }
2. 如下程序是求矩阵a ,b和,成果存入矩阵c中并按矩阵形式输出。请填空:
main( )
{ int a[3][4] = { { 7,5,-2,3 },{ 1,0,-3,4 },{ 6,8,0,2 } };
int b[3][4] = { { 5,-1,7,6 },{ -2,0,1,4 },{ 2,0,8,6 } };
int i,j,c[3][4];
for ( i=0;i<3;i++ )
for ( j=0;j<4;j++ )
c[i][j] = ___(3)____ ;
for ( i=0;i<3;i++ )
{ for ( j=0;j<4;j++ )
printf ( “%3d”,c[i][j] ) ;
____(4)___ ; }
}
3.如下程序使用递归法求n!,请填空:
float fac( int n)
{ float f;
if(n<0) {printf(“n<0” data error);f=-1;}
else if(n==0||n==1) f=1;
else f= (5) ;
return( f ); }
main( )
{ int n; float y;
printf(“input a integer number”);
scanf(“%d”,&n);
y= (6);
printf(“%d! = %15.0f”,n,y ); }
四、写出下面程序执行成果(本大题24分,每题4分)
1.main( )
{ float a=3.14,b=3.14159;
printf(“%f,%5.3f\n”,a,b); }
2.main( )
{ char a[5][5],i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(i==0 ||i+j==4)
a[i][j]='*';
else a[i][j]=' '; for(i=0;i<5;i++)
{for(j=0;j<5;j++)
printf("%c",a[i][j]);
printf("\n"); } }
3.main( )
{ int x,i ;
for( i=1,x=1; i<=50; i++ )
{ if(x>=10) break;
if(x%2==1) { x+=5;continue;}
x - = 3;}
printf(“%d\n”,i ); }
4.func( int x, int y)
{ int z;
z=a+b;
return(z);}
main( )
{ int a=6,b=7,c=8,r;
r=func( ( a--,b++,a+b),c--)
printf(“%d”,r) ;}
5.#include <STDIO.H>
void increment(void);
void main(void)
{
increment();
increment();
}
void increment(void)
{
static int x = 8;
x ++;
printf("x = %d\n",x);
}
6. #include <stdio.h>
void main(void)
{ static char a[]="ABCDEFGH",b[]="abCDefGh";
char *p1,*p2;
int k;
p1=a;p2=b;
for(k=0;k<=7;k++)
if (*(p1+k)==*(p2+k)) printf("%c",*(p1+k));
printf("\n");
}
五.编程题(共30分)
1.有一函数,其函数关系如下,试编程求对应于每一自变量函数值。
x2 (x<0)
y = -0.5x+10 (0 x<10)
x- (x 10)
2.若有如下公式:
+ + +。。。。。。。+
试根据上述公式编程计算 近似值
(精确到10-6)。
3.编一程序,首先将一种包括10个数数组按照升序排列,然后将从一指定位
置m开始n个数按照逆序重新排列,并将新生成互相组输出。规定使用指
针控制措施实现上述功能。
模仿试题四
一、选用题(本大题30分,每题2分)
1.在C语言中,反斜杠符是 。
A)\n B)\t C)\v D)\ \
2.体现式 18/4*sqrt(4.0)/8值数据类型为 。
A)int B)float C)double D)不确定
3.设整型变量a值为9,则下列体现式中使b值不为4体现式 。
A)b=a/2 B)b=a%2
C)b=8-(3,a-5) D)b=a>5?4:2
4.已知变量C1为字符型变量,下面不对旳赋值语句是: 。
A)C1 = ‘abc’ B)C1= ‘\0’
C)C1 = ‘7’+ ‘9’ D)C1= 7 + 9
5.如下程序输出成果是: 。(注:▂体现空格)
main( )
{ printf(“\n*s1=%8s*”,“china”);
printf(“\n*s2=%-5s*”,“chi”) ; }
A)*s1=china▂ ▂ ▂* B)*s1=china▂ ▂ ▂*
*s2=chi* *s2=chi▂ ▂*
C)*s1=▂ ▂ ▂china* D)*s1=▂ ▂ ▂china*
*s2=▂ ▂chi * *s2=chi▂ ▂*
6.设a、b和c是int型变量,且a=2,b=4,c=6,则下面体现式中
展开阅读全文