模拟试题一
一、
选择题(本大题30分,每小题2分) A) main函数必须放在C程序的开头 B) main函数必须放在C程序的最后
C) main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的 D) 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)% 和 \\
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= 。
A)2 B)3 C)4 D)无结果 8.下面有关for循环的正确描述是 。
A)for循环只能用于循环次数已经确定的情况 B)for循环是先执行循环体语句,后判断表达式 C)在for循环中,不能用break语句跳出循环体
D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
1.下列说法正确的是 。
D)**
6.能正确表示x的取值范围在[0,100]和[-10,-5]内的表达式是 。
9.若二维数组a有m列,则a[I][j]元素前的数组元素个数为: 。
A)j*m+i B)i*m+j C)i*m+j-2 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(“M”,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.在说明一个结构体变量时系统分配给它的存储空间是 。
A) 该结构体中第一个成员所需存储空间 B) 该结构体中最后一个成员所需存储空间
C) 该结构体中占用最大存储空间的成员所需存储空间 D) 该结构体中所有成员所需存储空间的总和
15.使用fseek函数可以实现的操作是 。
A) 改变文件的位置指针的当前位置
B) 文件的顺序读写 C) 文件的随机读写 D) 以上都不对
二、判断题(本大题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
{ char c=‘A’+‘10’-‘5’; printf(“c=%c\\n”,c); }
2.#include
{ 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 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 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&&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)按分数高低进行排序并输出。 模拟试题三 一、选择题(本大题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(\,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=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(“M”,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 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 ( “=”, 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! = .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(\ printf(\ } } 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 increment(); increment(); } void increment(void) { static int x = 8; x ++; printf(\ } 6. #include { static char a[]=\char *p1,*p2; int k; p1=a; p2=b; for(k=0;k<=7;k++) if (*(p1+k)==*(p2+k)) printf(\ printf(\ } 五.编程题(共30分) 1.有一函数,其函数关系如下,试编程求对应于每一自变量的函数值。 x2 (x<0) y = -0.5x+10 (0?x<10) x-2.若有如下公式: x (x?10) ?26? 112 + 122 + 132+。。。。。。。+ 1n2 试根据上述公式编程计算? 的近似值 (精确到10)。 3.编一程序,首先将一个包含10个数的数组按照升序排列,然后将从一指定位 置m开始的n个数按照逆序重新排列,并将新生成的相互组输出。要求使用指 针控制方法实现上述功能。 -6 模拟试题四 一、选择题(本大题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,则下面表达式中值为0的是: 。 A)‘a’+ ?b? B)a<=b C)a||b+c&&b-c D)!( (a 7.已知 int x=10,y=20,z=30;以下语句执行后变量x、y、z的值分别为: 。 if (x>y||x { z=x; x=y; y=z;} A)x=10, y=20, z=30 B)x=20, y=30, z=30 C)x=20, y=30, z=10 D)x=20, y=30, z=20 8.下列字符串赋值语句中,不能正确把字符串C program赋给数组的语句是: 。 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中,下面正确的语句是: 。 A)scanf(“%s”,&str); B)scanf(“%c”,&str[10]); C)scanf(“%s”, str) ; D)scanf(“%s”,str[10]); 10.C语言规定,C程序的各函数之间 。 A)允许嵌套调用,但不允许嵌套定义; B)不允许嵌套调用,但允许嵌套定义; C)不允许嵌套调用,也不允许嵌套定义; D)允许嵌套调用,也允许嵌套定义;。 11.若有如下定义和语句: char s[12]= “a_book!”; printf(“%d”,strlen(s) ); 则输出结果是: 。 A)12 B)10 C)7 D)6 12.下面程序的运行结果是: 。 #include { int y=10; do { y--; } while(--y) ; printf(“%d\\n”,y--); } A)-1 B)1 C)8 D)0 13.下面函数调用语句中实参的个数为: 。 func((exp1,exp2),(exp3,exp4,exp5)) A) 1 B) 2 C) 4 D) 5 14.有如下语句 int a=10,b=20,*p1,*p2; p1=&a; p2=&b; 如图1所示;若实现如图2所示的存储结构,可选用的赋值语句是: 。 p1 p2 p1 p2 a b a b 10 20 10 20 图1 图2 A)*p1=*p2 B)p1=p2 C)p1=*p2 D)*p1=p2 15.以下对结构体类型变量的定义中不正确的是 。 A) #define STUDENT struct student B) struct student STUDENT { 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) ; printf(“gongyue=%d,gongbei=%d\\n”, c,d ) ; } gongyue( int num1, int num2 ) { int temp, x, y ; if (__ (2) __) { temp=num1; num1=num2 ; num2=temp ; } x=num1 ; y=num2 ; while(__ (3) _____) { 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++) b[I]= (5) ; for(I=1;I<10;I++) { printf(“=”,b[I]); if ( (6) ) 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(\ printf(\ } } 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); } 4.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(\} 5. 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 ) ; } 6.# include main ( ) { int a[ ]={1,2,3,4,5,6},﹡p; for (p=&a[5];p>=a;p﹣﹣) printf(〞%d〞, ﹡p); printf(〞\\n〞); } 五、编程题(共27分) 1.编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上为?A?;80~89分为 ?B?;70~79分为?C?;60~69分为?D?;60分以下为 ?E?。 2.有一个5*5二维数组,试编程求周边元素及对角线元素之和,并输出该数组中值最小的元素。 3.编写一个程序,用12个月份的英文名称初始化一个字符指针数组,当键盘输入整数为1到12时,显示相应的月份名,键入其它整数时显示错误信息。 模拟试题五 一、选择题(本大题30分,每小题2分) 1.下列说法正确的是 。 A) 在执行C程序时不是从mian函数开始的 B) C程序书写格式严格限制,一行内必须写一个语句 C) C程序书写格式自由,一个语句可以分写在多行上 D) C程序书写格式严格限制,一行内必须写一个语句,并要有行号 2.设有以下定义,则能使值为3的表达式是: 。 int k=7, x=12; A)x%=(k%=5) B)x%=(k-k%5) C)x%=k D)(x%=k)-(k%=5) 3.以下选项中是C语言的数据类型的是: 。 A)复数型 B)逻辑型 C)双精度型 D)集合型 4.下面能正确表示变量a在区间[0,5]或(6,10)内的表达式为: 。