c语言综合练习题及答案 下载本文

模拟试题二

一、选择题(本大题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&&x0!=0)||x@0==0 B)(x%4==0||x0!=0)&&x@0==0 C)(x%4==0&&x@0!=0)||x0==0 D)(x0==0||x%4!=0)&&x@0==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

{t=a; (1) ; b=t;} if( (2) ) {t=a; a=c; c=t;} if(b

{ (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

{ for( j=1; j<=i; j++) printf(“]”,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( “]”,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(“M”,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(\}

5. # include

main ( )

{ int ﹡p; p=&i; ﹡p=2; p++; ﹡p=5; printf(〞%d,〞, ﹡p);

p﹣﹣; printf(〞%d\\n 〞, ﹡p); }

}

6. #include

void f(int c) { int a=0; static int b=0; a++; b++;

printf(\}

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)按分数高低进行排序并输出。