模拟试题四一、选择题(本大题30分,每小题2分)1.在C语言中,反斜杠符是 D 。
A)\n B)\t C)\v D)\ \2.表达式18/4*sqrt(4.0)/8值的数据类型为 C 。
A)int B)float C)double D)不确定3.设整型变量a值为9,则下列表达式中使b的值不为4的表达式 B 。
A)b=a/2 B)b=a%2C)b=8-(3,a-5) D)b=a>5?4:24.已知变量C1为字符型变量,下面不正确的赋值语句是: A 。
A)C1 = ...abc‟B)C1= 0C)C1 = …7‟+ …9‟D)C1= 7 + 95.以下程序的输出结果是: D 。
(注:▂表示空格)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,则下面表达式中值为0的是: D 。
A)‘a’+ …b‟B)a<=bC)a||b+c&&b-c D)!( (a<b) &&!c || 1 )7.已知int x=10,y=20,z=30;以下语句执行后变量x、y、z的值分别为:A 。
if (x>y||x<z&&y>z){ z=x; x=y; y=z;}A)x=10, y=20, z=30 B)x=20, y=30, z=30C)x=20, y=30, z=10 D)x=20, y=30, z=208.下列字符串赋值语句中,不能正确把字符串C program赋给数组的语句是:C 。
A)char a1[]={…C‟, …‟, …p‟, …r‟, …o‟, …g‟, …r‟, …a‟, …m‟}B)char a2[10]; strcpy(a2, “C program”);C)char a3[10]; a3= “C program”;D)char a4[10]={ “C program”}9.用scanf函数输入一个字符串到数组str中,下面正确的语句是: C 。
A)scanf(“%s”,&str); B)scanf(“%c”,&str[10]);C)scanf(“%s”, str) ; D)scanf(“%s”,str[10]);10.C语言规定,C程序的各函数之间 A 。
A)允许嵌套调用,但不允许嵌套定义;B)不允许嵌套调用,但允许嵌套定义;C)不允许嵌套调用,也不允许嵌套定义;D)允许嵌套调用,也允许嵌套定义;。
11.若有如下定义和语句:char s[12]= “a_book!”;printf(“%d ”,strlen(s) );则输出结果是: C 。
A )12B )10C )7D )612.下面程序的运行结果是: D 。
#include <stdio.h>main( ){ int y=10;do { y--; } while(--y) ;printf(“%d\n ”,y--); }A )-1B )1C )8D )013.下面函数调用语句中实参的个数为: B 。
func((exp1,exp2),(exp3,exp4,exp5))A) 1 B) 2 C) 4 D) 514.有如下语句 int a=10,b=20,*p1,*p2; p1=&a; p2=&b; 如图1所示;若实现如图2所示的存储结构,可选用的赋值语句是: B 。
p1 p2 p2a b图1 图2A )*p1=*p2B )p1=p2C )p1=*p2D )*p1=p215.以下对结构体类型变量的定义中不正确的是 D 。
A) #define STUDENT struct student B) struct studentSTUDENT { int num;{ int num; float age;float age; }std1; }std1;C) struct D) struct{ int num; { int num;float age; float age; } student;}std1; struct student std1;二、判断题(本大题10分,每小题1分)-1.在每个C 文件中都必须并且只能有一个main 函数。
( )2. 在C 语言中,整型数据与实型数据在任何情况下都可以通用。
( )3. 在C 语言程序中,happy 是正确的标识符。
(√ )4.在if 语句中,if 子句与else 子句都可以单独使用,构成了if 语句的两种缺省形式。
( )5. C 语言规定,简单变量做实参时,与其对应的形参之间是双向的值传递。
( )6.数组在定义时要求指定数组类型,数组名及数组长度,其中表示数组长度的表达式可以是任意类型的常量表达式。
( )7.在发生函数调用时,主~被调函数中的参数可以是简单变量,也可以是数组名,当采用数组名作为参数时其数据传递方式为单向值传递。
( )8.C 语言的一个重要特点是能够直接处理物理地址,其指针类型数据就是用来存放变量地址的。
(√)9.字符串是C语言中一种基本数据类型,字符串总是以‘\n’作为结束标志。
()10.C程序的三种结构化程序设计方法分别顺序结构、选择结构和循环结构,由这三种结构组成的程序可以解决任何复杂的问题。
(√)三、程序填空题(本大题12分,每小题2分)1.下面程序的功能是利用函数调用求两整数的最大公约数和最小公倍数,请填空。
main( ){ int a, b ,c,d;scanf(“%d, %d”, &a, &b ) ;c = gongyue( a, b ) ;(1)d=a*b/c ;printf(“gongyue=%d,gongbei=%d\n”, c,d ) ; }gongyue( int num1, int num2 ){ int temp, x, y ;if (__ (2)num1<num2 __){ temp=num1; num1=num2 ; num2=temp ; }x=num1 ; y=num2 ;while(__ (3)x%y _____){ temp=x%y ; x=y ; y = temp ; }return (y) ; }2.下面程序中的数组a包括10个整数元素,从a中第二个元素起,分别将后项减前项之差存入数组b,并按每行3个元素输出数组b。
请填空。
main( ){ int a[10],b[10], I;for(I=0;I<10; I++)scanf(“%d”,&a[I]) ;for(I=1; (4)i<10 ; I++)b[I]= (5)a[i]-a[i-1] ;for(I=1;I<10;I++){ printf(“%3d”,b[I]);if ( (6)i%3= =0 )printf(“\n”); }}四、写出下面程序的执行结果(本大题24分,每小题4分)1.main( ){ int i;for(i=1;i<=5;i++)switch(i%5){ case 0: printf(“*”) ; break;case 1: printf(“#”) ; break;default: printf(“\n”);case 2: printf(“&”); }} #&*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)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 i=5 ;printf(“%d\n”, sub(i) ); }sub( int n){ int a;if(n==1) a=1;else a= n+sub(n-1);return(a); } 154.int f(int x,int y){ return((y-x)*x); }main(){ int a=3,b=4,c=5,d;d=f(f(3,4),f(3,5));printf("%d\n",d);} 95. main( ){ int a = 2, b = 3, c ;c = a ;if ( a>b ) c = 1 ;else if ( a == b ) c = 0 ;else c = -1 ;printf ( “%d\n”, c ) ;} -16.# include <stdio.h>main ( ){ int a[ ]={1,2,3,4,5,6},﹡p; for (p=&a[5];p>=a;p﹣﹣)printf(〞%d〞, ﹡p); printf(〞\n〞); } 654321五、编程题(共27分)1.编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。
设:90分以上为…A‟;80~89分为…B‟;70~79分为…C‟;60~69分为…D‟;60分以下为…E‟。
main(){float score;scanf(“%f”,&score);if(score>=90) printf(“A”);else if(score>=80) printf(“B”);else if(score>=70) printf(“C”);else if(score>=60) printf(“D”);else printf(“E”);}2.有一个5*5二维数组,试编程求周边元素及对角线元素之和,并输出该数组中值最小的元素。
main(){int a[5][5],i,j,sum=0,min;for(i=0;i<5;i++)for(j=0;j<5;j++)scanf(“%d”,&a[i][j]);min=a[0][0];for(i=0;i<5;i++)for(j=0;j<5;j++){if(i= =0||i= =4) sum=sum+a[i][j];else if(j= =0||j= =4) sum=sum+a[i][j];else if(i= =j) sum=sum+a[i][j];else if(i+j= =4) sum=sum+a[i][j];if(min>a[i][j]) min=a[i][j];}printf(“sum=%d,min=%d”,sum,min);}3.编写一个程序,用12个月份的英文名称初始化一个字符指针数组,当键盘输入整数为1到12时,显示相应的月份名,键入其它整数时显示错误信息。