您的当前位置:首页正文

c语言模拟试题

2021-06-27 来源:年旅网
《C语言程序设计》模拟试题

(时间:120分钟 总分:100分)

一、判断题(每小题1分,共10分)

1、定义数组char c1[]={‘A’},c2[]={“A”},则数组c1与c2的长度都为1。 2、同一个程序文件中可同时有多个main()函数,运行时从第一个开始执行。 3、在函数内定义的变量称为全局变量。 4、在一个函数内不可以同时出现多个return语句。

5、若有语句:’A’/5;因为被除数和除数的类型不一致,编译时出错。

6、已知m和n都是正整型量,则不论m的值有多大,表达式(m+n)%n值永远小于n。 7、有三个表达式a+=1,++a和a++,若每个表达式在执行前a的值都为2,则执行完毕后,a 的值都变为3。

8、定义二维数组时,如果在定义时赋了初值,则第二维的大小可以不用指定。 9、continue语句只能用在for循环语句中,不能用在while循环语句中。 10、若有:int a=5;则语句--a和--5 的效果是一样的,结果都为4。

二、单项选择题(每小题2分,共40分)

1,下面哪个标识符是不合法的()

A) sum B) mus# C) true_ D)false5 2, 下面哪个不是定义整型变量的合法式子()

A) int a; B)long b; C)interger c; D)short d; 3,有语句:int a=0,b=2;则printf(“a=%d,b=%d”,a++,--b);的输出结果为() A)a=0,b=2 B)a=1,b=1 C)a=1,b=2 D)a=0,b=1 4,系统函数getchar()的功能是() A)在屏幕上输出一个字符 B)在屏幕上输出多个字符 C)从键盘获取一个字符 D)从键盘获取多个字符 5,从键盘输入一个整数值放入整型变量a中,下面哪个语句是正确的() A)scanf(“%a”,&a); B)scanf(“%d”,&a); C)scanf(“%c”,a); D)scanf(“%z”,a); 6,已知关系表达式的取值规则为:“满足”为1(真),“不满足”则为0(假)。据此,若有定义:int a=3,b=2,c=1;则表达式:a>b>c与ab?a:b值为() A)0 B)1 C)2 D)不确定 10,有如下语句: int i=0,j=5,k=0;; for( ;i<5;i++) for(j=0;j<5;j+=2) ++k;

(第1页)

printf(“k=%d”,k); 则执行结果为() A)k=0 B)1 C)15

D)因为第一个for语句后的括号中缺少一个表达式,所以出错 11,有如下语句: int i=1,sum=0; while(i<=3){sum=sum+i;i++;} 则执行结束后,sum的值为() A)6 B)4 C)2 D)0 12,若有语句:float a[5]={1,2,3,4 ,5};则a[5]的值为()

A)5 B)4 C)0 D)不确定

13,若有二维数组定义:double a[][3]={{1,2},{3,4}};则a数组中最多能存储多少个元素() A)12个 B)6个 C)4个 D)3个 14,若有如下代码: int a; float f1(){……} char f2(){……}

则下面关于变量a的有效范围的描述正确的是()

A) a在函数f1()和f2()中都可用 B) a在函数f1()和f2()中都不可用 C) a仅在函数f1()中可用,在f2()中不可用 D) a仅在函数f2()中可用,在f1()中不可用 15,以下哪个语句可用于定义符号常量PI() A)#define PI 3.14 B)#include PI 3.14 C)define PI 3.14 D)include PI 3.14 16,有以下程序: main()

{ int a,b,c=246; a=c/100%9; b=(-1)&& (-1);

printf(\"%d,%d\\n\ } 输出结果是( )

A) 2,1 B) 3,2 C) 4,3 D) 2,-1 17以下关于break语句的说法中不正确的是()

A) break语句可以出现在for循环语句中。 B) break语句可以出现在while循环语句中。 C) break语句可以出现在do{}while循环语句中。 D) break语句可以出现在任何语句中。 18,若有如下三个函数: int f1(){ int f2(){ void f3(){

int k; f3(); printf(“Excute f3()”); k=f2(); } }

}

则以下说法中不正确的是() A)f1()是主调函数 B)f2()是主调

(第2页)

函数

C)f2()是被调函数 函数

*(p+3)+=2;

printf(“%d,%d”,*p,*(p+2)); D)f3()是主调

}

19,以下程序的输出结果是( ) 4、以下程序的输出结果是 【4】 。 int d=1 ; #define MCRA(m) 2*m fun(int p) #define MCRB(n,m) 2*MCRA(n)+m

{ static int d=5.7;

main()

d+=p ;

{ int i=2,j=3;

printf(\"%d \

printf(\"%d\\n\return(d); }

} main( )

5、以下函数的功能是删除字符串s中的所有数字字{ int a=3;

符。请填空。 printf(\"%d \\n\

A).6 9 9 B).6 6 9 C).6 15 15 viod dele(char *s) D).6 6 15 { int n=0,i; 20, 有以下程序 for(i=0;s[i];i++) #include “stdio.h” if(___【5】_____) s[n++]=s[i]; main()

s[n]=____ 【6】____;

{ char str[ ][20]={\"Hello\ *p=str;

} printf(\"%d\\n\

}

程序运行后的输出结果是

A)0 B)5 C)7 D)20

四、编程题(共38分)

1、输入一个字符,请判断是字母、数字还是特殊字符。若是小写(大写)英文字母,则输出相应的大写(小写)字母及其ASCII码值。(8分) 1、

2、杨辉三角形(要求打印出10行如下图)(10分)

三、填空题(每空2分,共12分)

1、若有以下程序

main()

{ int p,a=5; if(p=a!=0)

printf(\"%d\\n\ else

printf(\"%d\\n\}

执行后输出结果是 【1】 。 2、若有以下程序 main() { int

a[4][4]={{1,2,-3,-4},{0,-12,-13,14} ,{-21,23,0,-24}, {-31,32,-33,0}}; int i,j,s=0; for(i=0;i<4;i++) { for(j=0;j<4;j++)

{ if(a[i][j]<0) continue; if(a[i][j]==0) break; s+=a[i][j]; } }

printf(\"%d\\n\}

执行后输出结果是 【2】 。 3、以下程序输出结果是【3】

main()

{ int a[ ]={1,2,3,4,5,6}, *p; p=a;

1 1 1 1 2 1 1 3 3 1 1 4 6 4 1

1 5 10 10 5 1 „„„„„„„„„„„„ 3、编一个函数fun(int *a,int n,int *odd,int *even),函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参n给了数组中数据的个数:利用指针odd返回奇数之和,利用指针even返回偶数之和。例如:数组中的值依次为:1,9,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。(20分)

《C语言程序设计》模拟试题2

(时间:120分钟 总分:100分) 一、选择题(本题共15道小题,每题2分,共30分。) 1. 以下程序运行后,输出结果是 main( )

(第3页)

{ char *s=\"abcde\"; s+=2; printf(\"%ld\\n\",s); }

A)cde B)字符c的ASCII码值 C)字符c的地址 D)出错

2. 下面程序的运行结果是 main()

{ char ch[7]={\"65ab21\int i,s =0

for(i=0;ch[i]>='0'&&ch[i]<'9';i+=2) s=10*s+ch[i]-'0' printf(\"%d\\n\",s);

}

A)12ba56 B)6521 C)6 D)62

3. 若有说明,double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是 A

*p=&a;

scanf(\"%lf\

B)p=(double*)malloc(8);scanf(\"%f\

C) p=&a;scanf(\"%lf\ D)p=&a; scanf(\"%le\

4.若k是int型变量,且有下面的程序片段: k=-3

if(k<=0) printf(\"####\") else printf(\"&&&&\"); 上面程序片段的输出结果是 A) #### B) &&&&

C)

D) 有语法错误,无输出结果 5. 以下程序运行后,输出结果是 #include #define PT 5.5

#define S(x) PT*x*x main( ) { int a=1,b=2;

printf(\"%4.1f\\n\",S(a+b))

}

A)49.5 B)9.5 C)22.0 D)45.0

6. 当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为 if(aA)1 B)2 C)3 D)6 7. 执行以下程序后,y的值是

main ( )

{ int a[]={2,4,6,8,10}; int y=1,x,*p; p=&a[1];

for(x=0;x<3;x++) y + = * (p + x); printf(\"%d\\n\ }

A) 17 B) 18 C) 19 D) 20 8.若有说明:int i,j=7, *p=&i;,则与i=j;等价的语句是

A) i= *p; B) *p=*&j; C) i=&j; D) i=* *p; 9. 执行语句:for(i=1;i++<4;)后;变量i的值是 A)3 B)4 C)5 D)不定

10. 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是

main( ) { int x;

scanf(\"%d\

if(x + + >5) printf(\"%d\

else printf(\"%d\\n\ }

A) 7和5 B) 6和3 C) 7和4 D) 6和4

11. 有以下程序

####&&&& int fun(int x,int y,int *cp,int *dp)

{*cp=x+y; *dp=x-y;} main()

{ int a,b,c,d; a=30;b=50; fun(a,b,&c,&d);

printf(\"%d,%d\\n\}

输出结果是

A)50,30 B)30,50 C)80,-20 D)80,20

12. 设有数组定义: char array [ ]=\"China\"; 则数组 array所占的空间为

A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节

13. 设j为int型变量,则下面for循环语句的执行结果是

for(j=10;j>3;j--) { if(j%3) j--; --j; --j;

(第4页)

printf(\"%d\

}

A)6 3 B)7 4 C)6 2 D)7 3

14. 设C语言中,一个int 型数据在内存中占2个字节,则unsigned int 型数据的取值范围为: A) 0-255 B) 1-32767 C) 0-65535 D) 0-2147483647 15. 设有如下定义: int (*ptr)[ 5];

则以下叙述中正确的是

A) ptr是指针变量,指向5个int型数据

B) ptr是指针变量,指向包含int型数据的一维数组 C) ptr是一维数组,包含5个元素,每个元素为int型

数据的指针变量

D) ptr是一个数组名,该数组包含有5个指针类型的

数据

二、判断题(本题共10道小题,共10分。) 1. 若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数( )

2. 全局变量使得函数之间的\"耦合性\"更加紧密,不利于模块化的要求( )

3. 若调用一个函数,且此函数中没有return语句,则返回一个不确定的值( )

4. 用户若需要调用标准库函数,调用前必须重新定义( )

5. 函数调用:strcat(strcpy(str1,str2),str3)的功能是将串str2复制到串str1中后再将串str3连接到串str1之后( )

6. 在实际编程中,do-while循环完全可以用for循环替换( )

7. C程序的注释只能是一行( )

8. 自增运算符(++)或自减运算符(--)只能用于变量,不能用于常量或表达式( )

9. 在函数内的复合语句中定义的变量在本函数范围内有定义( )

10. 一个变量在内存中占据一定的存储单元( ) 三、填空题(每空1分,共10分。)

1. C语言数组的下标总是从__________开始,不可以为负数;构成数组各个元素具有相同的__________。

2. 在C语言中(以16位PC机为例),一个char数据在内存中所占字节数为_______,一个int数据在内存中所占字节数为_______,一个long数据在内

存中所占字节数为_______,一个float数据在内存中所占字节数为_______。

3. C程序是由________构成的,一个C程序中至少包含________ 。因此,________是C程序的基本单位。

4. 假定一个二维数组为a[M][N],则a[i]的地址值(以字节为单位)为 __________。

四、读程序写结果题(本题共5道小题,每题3分,共15分。) 1、有以下程序

float fun(int x,int y)

{ return(x+y); } main()

{int a=2,b=5,c=8;

printf(\"%3.0f\\n\ }

程序运行后的输出结果是____________。 2、以下程序运行后的输出结果是_______________ 。 main()

{ char s[ ]=\"9876\

for( p=s ; p3、若有说明int i,j,k;则表达式i=10,j=20,k=30,k*=i+j的值为___________。

4、以下程序运行后的输出结果是 。 main() {int x=15;

while(x>10&&x<50)

{ x++; if(x/3){x++; break;} else continue;

}printf(\"%d\\n\ }

5、以下程序运行后的输出结果是 。 void fun(int x,int y)

{x=x+y;y=x-y;x=x-y; printf(\"%d,%d,\ main()

{int x=2,y=3;

fun(x,y); printf(\"%d,%d\\n\ }

五、编程题(本题共2道小题,共35分。) 1. 计算1-1/2+1/3-1/4-...+1/99-1/100的值,并显示出来。(10分)

2. 从键盘输入一个5*5整型数组赋值,找出其中的最小值并显示出来。(10分)

(第5页)

3、求数组a[N]中的所有素数的和,定义函数isprime

D) 用do-while语句构成的循环,在while后的

表达式为零时结束循环。 用来判断数组元素是否为素数。(注:素数是只能被

9.以下程序的输出结果是

1和本身整除且大于1的自然数)。(15分) A) 2 0 B) 3 1 C) 3 2 1 D) 2 1 0

main( ) 《C语言程序设计》模拟试题3

{ int n=4; 一、选择题(每题2分,共40分)

while(n--)printf(\"%d \",--n); 1. 若已定义x和y为double类型,则表达式x=1,

} y=x+3/2 的值是

10.以下程序的输出结果是 A) 1 B) 2 C) 2.0

A) #*#*# B) ##### C) ***** D) 2.5

D) *#*#* 2. 在C语言中,不正确的int类型的常数是

main( ) A) 32768 B) 0 C) 037

{ int i; D) 0xAF

for(i=1;i<6;i++) 3. 语句:printf(\"%d\",(a=2)&&(b=-2));的输出结果

{ if(i%2){ printf(\"#\");continue;} 是

printf(\"*\"); A) 无输出 B) 结果不确定 C) -1 D) 1

} 4. 能正确表示a和b同时为正或同时为负的逻辑表达

printf(\"\\n\"); 式是

} A) (a>=0‖b>=0)&&(a<0‖b<0)

11.设有数组定义: char array [ ]=\"China\"; 则数组 B) (a>=0&&b>=0)&&(a<0&&b<0)

array所占的空间为 C) (a+b>0)&&(a+b<=0) D) a*b>0

A) 4个字节 B) 5个字节 C) 6个5. 以下程序的输出结果是

A) -1 1 B) 0 1 C) 1 0 D) 0 字节 D) 7个字节

0

12. 若已定义:int a[9],*p=a;并在以后的语句 main( )

中未改变p的值,不能表示a[1] 地址的表达式 { int a=-1,b=1,k;

是 if((++a<0)&&!(b-- <=0))

A) a+1 B) a++ C) p+1 D) ++p printf(\"%d %d\\n\",a,b);

13. 若有以下定义和语句: else printf(\"%d %d\\n\",b,a);

double r=99, *p=&r; }

*p=r; 6. 以下循环体的执行次数是

则以下正确的叙述是 A) 3 B) 2 C) 1

A) 以下两处的*p含义相同,都说明给指针变量pD) 0

赋值 main()

B) 在\"double r=99, *p=&r;\"中,把r的地址 { int i,j;

赋值给了p所指的存储单元 for(i=0,j=1; i<=j+1; i+=2, j--)

C) 语句\"*p=r;\"把变量r的值赋给指针变量p printf(\"%d \\n\

D) 语句\"*p=r;\"取变量r的值放回r中 }

14.有如下程序段 7. 有以下程序

int *p,a=10,b=1 main()

p=&a; a=*p+b; { int a,b,c=246;

执行该程序段后,a的值为 a=c/100%9; b=(-1)&&(-1);

A) 12 B) 11 C) printf(\"%d,%d\\n\

10 D) 编译出错 }

15. 以下程序的输出结果是 输出结果是:

A) 2,1 B) 3,2 C) 4,3 A)6 B) 6789 C) '6' D) 789

main( ) D) 2,-1

{ char a[10]={'1','2','3','4','5',8.以下叙述正确的是

'6','7','8','9',’\\0’},*p; A) do-while语句构成的循环不能用其它语句构

int i=8; 成的循环来代替。

p=a+i; B) do-while语句构成的循环只能用break语句

printf(\"%s\\n\",p-3); 退出。

} C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。

(第6页)

16. 下面程序把数组元素中的最大值放入a[0]中。则 int t(int x,int y,int cp,int dp) 在if 语句中的条件表达式应该是 { cp=x*x+y*y; A) p>a B) *p>a[0] C) *p>*a[0] dp=x*x-y*y; D) *p[0]> *a[0] } main( ) main( ) { int a[10]={6,7,2,9,1,10,5, { int a=4,b=3,c=5,d=6; 8,4,3},*p=a,I; t(a,b,c,d); for(i=0;i<10;i++,p++) printf(\"%d %d \\n\",c,d); if(________) *a=*p; } printf(\"%d\",*a); 3.以下程序的功能是:从键盘上输入若干个学生的成 } 绩,统计计算出平均成绩,并输出低于平均分的学生17.以下程序的输出结果是 成绩,用输入负数结束输入。请填空。 A) 5 2 B) 5 1 C) 5 3 D) 9 7 main( ) main( ) { float x[1000], sum=0.0, ave, a; { int i,x[3][3]={9,8,7,6,5,4,3, int n=0, i; 2,1},*p=&x[1][1]; printf(\"Enter mark:\\n\");scanf(\"%f\", for(i=0;i<4;i+=2)printf(\"%d \",p[i]); &a); } while(a>=0.0&& n<1000) 18. 以下程序的输出结果是 { sum+= (3) ; x[n]= (4) ; A) 12345678 B) 123456780 C) 147 258 n++; scanf(\"%f\",&a); 360 D) 123 456 780 } main( ) ave= (5) ; { char ch[3][4]={\"123\",\"456\",\"78\, printf(\"Output:\\n\"); *p[3]; int i; printf(\"ave=%f\\n\",ave); for(i=0;i<3;i++) p[i]=ch[i]; for (i=0;i一律无效)

#define f(x) x*x

一,单项选择题(每小题3分,共45分) main( )

1,下面哪个标识符是不合法的() { int a=6,b=2,c;

c=f(a) / f(b); A) sum B) mus# C) printf(\"%d \\n\",c); true_ D)false5 }

3, 当同时定义3个float型变量a,b,c时,下面

二、填空题(每空5分,共30分)

哪个式子是正确的() 1. 若想通过以下输入语句使a=5.0,b=4,c=3,则输

A)float a,b,c; B)float a,b;c; C)入数据的形式应该是 (1) 。

float a;b;c; D)float ,a,b,c; int b,c; float a;

3,在C语言中,合法的字符常量是()

scanf(\"%f,%d,c=%d\",&a,&b,&c);

A)“\\084” B)‘\\x43’ C) 2. 下列程序的输出结果是 (2) 。

‘ab’ D)“\\0”

(第7页)

4,设以下变量均为int类型,则值不等于7的表达 for(j=0;j<5;j+=2) ++k; 式是 。 printf(“k=%d”,k);

A)(x=y=6,x+y,x+1) B)(x=y=6,x+y,y+1) C)则执行结果为() (x=6,x+1,y=6,x+y) D)(y=6,y+1,x=y,x+1) A)k=0 B)1 C)15 D)因为第一个for语5,有语句:int a=0,b=2;则句后的括号中缺少一个表达式,所以出错 printf(“a=%d,b=%d”,a++,--b);的输出结果为() 12,有如下语句: A)a=0,b=2 B)a=1,b=1 C) int i=1,sum=0; a=1,b=2 D)a=0,b=1 while(i<=3){sum=sum+i;i++;} 6,系统函数getchar()的功能是() 则执行结束后,sum的值为()

A)在屏幕上输出一个字符 B)在屏 A)6 B)4 C)2幕上输出多个字符 D)0

C)从键盘获取一个字符 D)从键

盘获取多个字符 13,若有语句:float a[5]={1,2,3,4 ,5};则7,从键盘输入一个整数值放入整型变量a中,下面a[5]的值为() 哪个语句是正确的() A)5 B)4 C)0 A)scanf(“%a”,&a); B)scanf(“%d”,&a); D)不确定 C)scanf(“%c”,a); D)scanf(“%z”,a); 14,以下哪个语句可用于定义符号常量PI() 8,已知关系表达式的取值规则为:“满足”为1(真), A)#define PI 3.14 B)#include

PI 3.14 “不满足”则为0(假)。据此,若有定义:int

a=3,b=2,c=1;则表达式:a>b>c与aPI 3.14 为()

15,若有如下程序段,其中s、a、b、c均已定义为 A)0,0 B)0,1 C)

整型变量,c>0,且a、c均已赋值 1,0 D)1,1

for(s=a,b=1;b<=c;b++) s=s+1; 9,若有语句:int a=-1,b=0,c=1,d=2;则表达式:

则与上述程序段功能等价的赋值语句是:

a||b&&c||d的值为()

A)s=a+b; B)s=a+c; C)s=s+c; D)s=b+c;

A)-1 B)0 C)1二、填空题(每空4分,共20分) D)2 (1) 若有以下程序 10,若有以下定义: int x,a,b; 则正确的switch 语句 main()

{ int p,a=5; 是()

if(p=a!=0) printf(\"%d\\n\ A)switch(x)

else printf(\"%d\\n\B)switch(x)

}

{ case 1.0:printf(\"*\\n\"); { case

执行后输出结果是【1】。

1,2:printf(\"*\\n\"); (2)执行以下程序后,输出'#'号的个数是 【2】 case 2.0:printf(\"**\\n\"); case main() 3:printf(\"**\\n\"); { int i,j;

for(i=1; i<5; i++) } }

for(j=2; j<=i; j++) putchar('#'); } C)switch (a+b)

(3)以下程序输出结果是【3】

D)switch (a+b);

main()

{ case 1:printf(\"\\n\"); { case

{ int a[ ]={1,2,3,4,5,6}, *p;

1:printf(.\"*\\n\"); p=a; case 1+2:printf(\"**\\n\"); case *(p+3)+=2; 2:printf(\"**\\n\"); printf(“%d,%d”,*p,*(p+2));

} } }

11,有如下语句:

(4)以下程序输出x,y,z三个数中的最小值,请填 int i=0,j=5,k=0;;

(2)空使程序完整。 for( ;i<5;i++)

(第8页)

main ( )

{ int x=4,y=5,z=8 ; int u,v;

u = x三、编程题(第1题15分,第2题20分,共35分)

1、输入百分制成绩,要求输出成绩等级A、B、C、D、E,其中90分以上为A,80~90为B,70~79为C,60~69为D,60分以下为E。若超过100或小于0分则提示输入错误。 2、求1!+2!+3!+4! +…+n!

《C语言程序设计》中期测试题2

一、选择题(每小题3分,共45分)

case 3:a+=2;

default:a+=5; }

} printf(\"%d\\n\ }

A) 10 B) 20 C) 31 D) 32 7、当执行以下程序段时( )。 x=-1;

do{ x=x*x; }while(!x);

A)循环体将执行一次 B)循环体将执行二次

C)循环体将执行无限次 D)系统将提示有语法错误

8、若有以下程序: main() {int k=2,i=2,m; m=(k+=i*=k); printf(\"%d,%d\\n\执行后的输出结果是( )。 1、选项中合法的用户标识符是( )。

A) short B) _2Test C) 3Dmax D) 9、以下非法的赋值语句是______。

A) n=(i=2,++i); B) j++; C) hello.txt

++(i+1); D) x=j>0; 2、若有定义:int a=8,b=5,c;,执行语句c=a/b+0.4;

10、以下选项中非法的表达式是( )。 后,c的值为( )

A)0<=x<100 B)i=j==0 C)(char)(65+3) D)

A) 1.4 B) 1 C) 2.0

x+1=x+1

D) 2

11、在下列程序中,要求给i赋10,给j赋20,则

3、以下程序的输出结果是( )。 应该从键盘输入( ) 。

main() main( ) { int a=12,b=12;

{ int i,j; scanf(\"i=%d,j=%d\",printf(“%d \\n”, a--,++b); }

&i,&j); printf(\"i=%d,j=%d\\n\ }

A)10 10 B)12 12 C)11 13 D)12 13

A)10,20 B) 10 20 C)i=10,j=20 D)

4、C语言对嵌套if语句的规定是:else总是与( )

“i=10,j=20”

配对。

12、以下程序的输出结果是( )。

A)其之前最近的if B)第一个if C)缩main() 进位置相同的if D)其之前最近且不带else的if { int p=30; printf(\"%d\\n\

p%3)); } 5、执行语句for(i=1;i++<4;);后,变量i的值是

A)3 B) 1 C)30 D)0 ( )。

13、假定int类型变量占用两个字节,其有定义:

A)3 B)4 C)5 D)不定

int x[10]={0,2,4};,则数组x在内存中所占

6、以下程序运行后,输出结果是()。 字节数是( )。

A) 3 B) 6 C) 10 D) main()

20

{ int a=0,i;

14、诺a,b为int型变量,则执行以下语句后,b

for(i=1;i<5;i++) 的值为( ).

{ switch(i) { case 0:

a=1; b=10; do{b-=a;}while(b--<0);

case 1:

A)9 B)-2 C)-1 case 2:a+=3;

(第9页)

D)8

15、以下程序的输出结果是( )。 main( )

{ int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};

printf(\"%d%d%d%d\\n\],a[3][0]); }

A) 0650 B) 1470 C) 5430 D) 输出值不定 二、填空题(每空4分,共20分)

(2)S111111 求......i!1!2!3!4!20!120S的值。(20分)

《C语言程序设计》中期测试题3

一、单项选择题(每小题3分,共30分)

1、选出下列标识符中不是合法的标识符的是( )。

A. hot_do B. cat1 C. _pri

1、以下程序段的运行结果是【1】。

D. 2ab

main( )

2、为了避免嵌套的条件分支语句if-else的二义

{int x=2000, y=2001;

性,C语言规定:C程序中的else总是与( )

printf(\"%d\\n\

组成配对关系。

2、以下程序运行后的输出结果是【2】 。

A. 缩排位置相同的if B. 在其之前未配对的

main()

if C.在其之前未配对的最近的if D.同一行上的

{ int a=1,b=3,c=5;

if

if(c=a+b) printf(\"yes\\n\"); else

3、以下程序的输出结果是( )。

printf(\"no\\n\"); }

main( )

3、以下程序运行后的输出结果是【3】

{ int a=5,b=6; printf(“%d %d\\n”,

main()

a--,++b); }

{ int arr[ ]={1,2,4,8,10,12}, *p=arr;

A.5 6 B.5 7 C.4 6 D.4 7

p++; printf(\"%d\\n\

4、设有如下定义: int x=10,y=3,z;则语句

4、设有以下程序:

printf(\"%d\\n\的输出结果是

main()

( )。

{ int n1,n2;

A. 4 B. 3 C. 1 D. 0

scanf(\"%d\

5、设整型变量a为5,使b不为2的表达式是

while(n2!=0) { n1=n2%10; n2=n2/10;

( )。

printf(\"%d\

A. b=a/2 B. b=6-(--a) C. b=a%2 D.

}

b=a>3?2:1

程序运行后,如果从键盘上输入1298;则输出

6、以下程序段的输出结果是( )。

结果为【4】

int a=5; float x=3.14;

5、有以下程序,若运行时从键盘输入:18,11<回

a*=x*(‘E’ - ‘A’);

车>,则程序的输出结果是___【5】____。

printf(“%f\\n”,(float)a); main()

A. 62.000000 B. 62.800000 C. { int a,b;

63.000000 D. 62 printf(\"Enter a,b:\");

scanf(%d,%d\7、以下程序的输出结果是( )。 while(a!=b) { while(a>b) a-=b; main() while(b>a) b-=a;

{ int a=0,i;

} printf(\"%3d%3d\\n\

for(i=0;i<4;i++) { switch(i)

}

{ case 0:

三、编程题(35分) case 1: a+=3;

break;

1、随机输入一个字符,判断其是英文字母、数字、

case 2: a+=2;

空格还是其他特殊字符。(15分)

default: a+=5;

2、

(第10页)

for(i=1,sum=0.0;i<11;i++) { (1) ;

} (2) ; A. 18 B. 17 C. 16 D. 12 }printf(“average=%f\\n”,sum/10); 8、若有定义:int a=5,b=2,c;,执行语句c=a/b+0.5;} 后,c的值为( ) 2、以下程序的功能是:从键盘上输入若干个学生的A. 2 B. 2.0 C. 2.5 D. 3 成绩, 统计并输出最高成绩和最低成绩,当输入负9、以下程序执行后输出结果是( ) 数时结束输入.

main() main() { int i=1,j=1,k=2; { float x,amax,amin; if((j++‖scanf(\"%f\k++)&&i++) printf(\"%d,%d,%d\\n\amax=x; amin=x; } while( (3) )

A) 1,1,2 B) 2,2,1 C) 2,2,2 D) { if(x>amax) amax=x; 2,2,3 (4) amin=x; 10、以下对二维数组a进行正确初始化的是( ) scanf(\"%f\(5) );

A. int a[2][3]={{1,2},{3,4},{5,6}}; }printf(\"\\namax=%f\\namin=%f\\n\B. int a[ ][3]={1,2,3,4,5,6}; }

C. int a[2][ ]={1,2,3,4,5,6}; 四、编程题(共35分) D. int a[2][ ]={{1,2},{3,4}}; 1. 三个整数a、b、c,由键盘输入,输出其中最大二、读程序写结果题(每小题4分,共计20分) 的一个数。(15分) 1、float f=3.1415927; 2. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...printf(“%f,%3.3f”,f,f); 求出这个数列的前20项之和。(20分)

则输出结果是 (1) 。 2、int x=6, y=7;

printf(“%d,”,x++); printf(“%d\\n”,++y);

输出结果是 (2) 。 3、a=3;

a+=(a<1)?a:1; printf(“%d”,a); 输出结果是 (3) 。 4、for (a=1,b=1;a<=100;a++)

{ if(b>=20) break;

if(b%3==1) { b+=3; continue;} b-=5; }

程序的输出结果a的值为 (4) 5、 int y=1, x, *p, a[ ]={2,4,6,8,10};

p=&a[1];

for(x=0;x<3;x++) y + = * (p + x); printf(\"%d\\n\

程序的输出结果y的值是 (5) 三、程序填空题(每空3分,共15分)

1、从键盘上输入10个数,求其平均值。 main()

{ int i;float f,sum;

}

} printf(\"%d\\n\

《C语言程序设计》模拟试题一

一、选择题(每题1.5分,共45分) 1. 以下选项中属于C语言的数据类型是

A) 复数型 B) 逻辑型 C) 双精度型 D) 集合型

2. 在C语言中,不正确的int类型的常数是 A) 32768 B) 0 C) 037 D) 0xAF

3. 语句:printf(\"%d\",(a=2)&&(b= -2));的输出结果是

A) 无输出 B) 结果不确定 C) -1 D) 1 4. 下列描述中不正确的是

A) 字符型数组中可以存放字符串

B) 可以对字符型数组进行整体输入、输出 C) 可以对整型数组进行整体输入、输出

D) 不能在赋值语句中通过赋值运算符\"=\"对字符型数组进行整体赋值

5. 设有如下定义:int x=l,y=-1;,则语句:printf(\"%d\\n\",(x--&++y));的输出结果是 A) 1 B) 0 C) -1 D) 2 6. 当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是

A) c=b=a; B) (a=c) ‖(b=c) ; C) (a=c) &&(b=c); C) a=c=b;

(第11页)

7. 以下程序的输出结果是

A) 10,1 9,2 B) 9,8 7,6 C) 10,9 9,0 D) 10,10 9,1 main( )

{ int x=10,y=10,i; for(i=0;x>8;y=++i)

printf(\"%d,%d \",x--,y); }

8. 以下程序的输出结果是

A) 5 2 B) 5 1 C) 5 3 D) 9 7 main( )

{ int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1]; for(i=0;i<4;i+=2)printf(\"%d \",p[i]); }

9. 以下程序的输出结果是

A)6 B) 6789 C) '6' D) 789 main( )

{ char a[10]={'1','2','3','4','5','6','7','8','9',0},*p; int i; i=8; p=a+i;

printf(\"%s\\n\",p-3); }

10. 以下程序的运行结果是

A) 运行后报错 B) 6 6 C) 6 12 D) 5 5

#include \"stdio.h\" main( ) {

int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12,};

int *p=a+5, *q=NULL; * q=*(p+5);

printf(\"%d %d \\n\",*p,*q); }

11. 以下说法中正确的是

A) #define和printf都是C语句 B) #define是C语句,而printf不是 C) printf是C语句,但#define不是 D) #define和printf都不是C语句

12. 语句:printf(\"%d \\n\",12 &012);的输出结果是 A) 12 B) 8 C) 6 D) 012

13. 能正确表示a和b同时为正或同时为负的逻辑表达式是

A) (a>=0‖b>=0)&&(a<0‖b<0) B) (a>=0&&b>=0)&&(a<0&&b<0) C) (a+b>0)&&(a+b<=0) D) a*b>0

14. 以下程序的输出结果是

A) 2 0 B) 3 1 C) 3 2 1 D) 2 1 0

main( )

{ int n=4;

while(n--)printf(\"%d \",--n); }

15. 若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是 A) p+1 B) a+1 C) a++ D) ++p 16. 以下程序的输出结果是

A) 17,021,0x11 B) 17,17,17 C) 17,0x11,021 D) 17,21,11 main( )

{ int k=17;

printf(\"%d,%o,%x \\n\",k,k,k); }

17. 以下程序的输出结果是

A) -1 1 B) 0 1 C) 1 0 D) 0 0

main( )

{ int a= -1,b=1,k; if((++a<0)&& ! (b-- <=0))

printf(\"%d %d\\n\",a,b); else

printf(\"%d %d\\n\",b,a); }

18. 若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是

A) *p=&a; scanf(\"%ld\",p);

B) p=(long *)malloc(8); scanf(\"%ld\",p); C) scanf(\"%ld\",p=&a); D) scanf(\"%ld\",&a);

19. 以下选项中,能定义s为合法的结构体变量的是 A) typedef struct abc B) struct { double a; { double a;

char b[10]; char b[10];

} s; } s; C) struct ABC D) typedef ABC

{ double a; { double a;

char b[10]; char b[10];

} }

ABC s; ABC s;

20. 下面程序把数组元素中的最大值放入a[0]中。则在if 语句中的条件表达式应该是

A) p>a B) *p>a[0] C) *p>*a[0] D) *p[0]> *a[0] main( )

{ int a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,I;

for(i=o;i<10;i++,p++)

(第12页)

if(________) *a=*p; printf(\"%d\",*a); }

21. 以下程序的输出结果是

A) 6 9 9 B) 6 6 9 C) 6 15 15 D) 6 6 15 int d=1; fun(int p)

{ static int d=5; d+=p;

printf(\"%d \",d); return(d); }

main( )

{ int a=3; printf(\"%d \\n\",fun(a+fun(d))); } 22. 以下程序的输出结果是

A) 123456780 B) 123 456 780 C) 12345678 D) 147 main( )

{ char ch[3][4]={\"123\",\"456\",\"78\, *p[3]; int i;

for(i=0;i<3;i++) p[i]=ch[i]; for(i=0;i<3;i++) printf(\"%s\",p[i]); }

23. 以下程序的输出结果是

A) 1 B) 4 C) 7 D) 5 #include

int a[3][3]={1,2,3,4,5,6,7,8,9,},*p;

main( )

{ p=(int*)malloc(sizeof(int)); f(p,a);

printf(\"%d \\n\",*p); }

f(int *s, int p[][3]) { *s=p[1][1]; } 24. 以下程序的输出结果是

A) 9 B) 6 C) 36 D) 18 #define f(x) x*x main( )

{ int a=6,b=2,c; c=f(a) / f(b);

printf(\"%d \\n\",c); }

25. 以下程序的输出结果是

A)4 2 1 1 B) 0 0 0 8 C) 4 6 7 8 D) 8 8 8 8

main( )

{ char *s=\"12134211\"; int v[4]={0,0,0,0},k,i;

for(k=0;s[k];k++) { switch(s[k])

{ case '1':i=0;

case '2':i=1; case '3':i=2; case '4':i=3; }

v[i]++; }

for(k=0;k<4;k++) printf(\"%d \",v[k]); }

26. 以下程序的输出结果是

A) AfghdEFG B) Abfhd C) Afghd D) Afgd

#include main( )

{ char *p1,*p2,str[50]=\"ABCDEFG\"; p1=\"abcd\"; p2=\"efgh\";

strcpy(str+1,p2+1); strcpy(str+3,p1+3);

printf(\"%s\",str); }

27. 以下程序的输出结果是

A) #*#*# B) ##### C) ***** D) *#*#* main( ) { int i;

for(i=1;i<6;i++)

{ if(i%2){printf(\"#\");continue;} printf(\"*\"); }

printf(\"\\n\"); }

28. 若有以下定义和语句:

double r=99, *p=&r; *p=r;

则以下正确的叙述是

A) 以下两处的*p含义相同,都说明给指针变量p赋值

B) 在\"double r=99, *p=&r;\"中,把r的地址赋值给了p所指的存储单元

C) 语句\"*p=r;\"把变量r的值赋给指针变量p D) 语句\"*p=r;\"取变量r的值放回r中 29. 以下程序的输出结果是

A) 编译不通过,无输出 B) aceg

C) acegi D) abcdefghi main( )

{ int i;

for(i='A';i<'I';i++,i++) printf(\"%c\",i+32);

printf(\" \\n\"); }

30. 有以下程序 #include main()

{ int a,b,c=246; a=c/100%9; b=(-1)&&(-1);

(第13页)

printf(\"%d,%d\\n\ }

输出结果是

A) 2,1 B) 3,2 C) 4,3 D) 2,-1

二、填空题(每空2分,共30分)

1. 若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是 (1) 。

int b,c; float a;

scanf(\"%f,%d,c=%d\",&a,&b,&c);

2. 下列程序的输出结果是 (2) 。 #include main( )

{ char b[30],*chp; strcpy(&b[0],\"CH\"); strcpy(&b[1],\"DEF\"); strcpy(&b[2],\"ABC\"); printf(\"%s \\n\",b); }

3. 下列程序的输出结果是 (3) 。

int t(int x,int y,int cp,int dp) { cp=x*x+y*y; dp=x*x-y*y; }

main( )

{ int a=4,b=3,c=5,d=6; t(a,b,c,d);

printf(\"%d %d \\n\",c,d); }

4. 下列程序中字符串中各单词之间有一个空格,则程序的输出结果是 (4) 。 #include main( )

{ char strl[]=\"How do you do\", *p1=strl;

strcpy(strl+strlen(strl)/2,\"es she\"); printf(\"%s \\n\",pl); }

5. 以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。 main( )

{ float x[1000], sum=0.0, ave, a; int n=0, i;

printf(\"Enter mark:\\n\");scanf(\"%f\",&a);

while(a>=0.0&& n<1000)

{ sum+ (5) ; x[n]= (6) ; n++; scanf(\"%f\",&a); }

ave= (7) ;

printf(\"Output:\\n\"); printf(\"ave=%f\\n\",ave);

for (i=0;iif (8) printf (“%f\\n”,x[I]); }

6. 有以下定义和语句,则sizeof(a)的值是 (9) ,而sizeof(a.share)的值是 (10) struct date{ int day; int month; int year;

union{int share1 float share2; }share; }a;

7. 以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件文件中形成文本文件,并将字符的个数写到文件尾部,请填空。 #include main( )

{ FILE *fp;

char ch,fname[32]; int count=0;

printf(\"Input the filename :\"); scanf(\"%s\",fname);

if((fp=fopen( (11) ,\"w+\"))==NULL) { printf(\"Can't open file:%s \\n\",fname); exit(0);}

printf(\"Enter data:\\n\");

while((ch=getchar())!=\"#\"){ fputc(ch,fp); count++;}

fprintf( (12) ,\"\\n%d\\n\", count); fclose(fp); }

8. 以下函数creatlist用来建立一个带头节点的单链表,链表的结构如下图所示,新的结点总是插入在链表的末尾。链表的头指针作为函数值返回,链表最后一个节点的next域放入NULL,作为链表结束标志。data为字符型数据域,next为指针域。读入时字符以#表示输入结束(#不存入链表)。请填空。 struct node

{ char data;

struct node * next; };

······ (13) creatlist( ) { struct node * h,* s,* r; char ch;

h=(struct node *)malloc(sizeof(struct node));

r=h;

ch=getchar( );

{ s=(struct node *)malloc(sizeof(struct node)); s->data= (14) ; r->next=s; r=s; ch=getchar( ); } r->next= (15) ;

(第14页)

return h; }

三、编程题(第1题10分,第2题15分,共25分) 一、选择题 二、填空题

(1) 5.0,4,c=3 (2) CDABC (3) 5 6 (4) How does she (5) =a (6) a (7) sum/n (8) x[i]else if(x==0)y=0; else y=-1;

else y=-1;

7. 以下循环体的执行次数是

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\ } 《C语言程序设计》模拟试题二

8. 以下叙述正确的是

一、选择题(每题1.5分,共45分)

A) do-while语句构成的循环不能用其它语句构

1. 设有 int x=11; 则表达式 (x++ * 1/3) 的值是

成的循环来代替。

A) 3 B) 4 C) 11

B) do-while语句构成的循环只能用break语句

D) 12

退出。

2. 下列程序的输出结果是

C) 用do-while语句构成的循环,在while后的

A) 3 B) 3.2 C) 0

表达式为非零时结束循环。

D) 3.07

D) 用do-while语句构成的循环,在while后的

main()

表达式为零时结束循环。

{ double d=3.2; int x,y;

9. 下列程序执行后的输出结果是

x=1.2; y=(x+3.8)/5.0;

A) G B) H C) I

printf(\"%d \\n\

D) J

}

main()

3. 下列程序执行后的输出结果是(小数点后只写一

{ int x='f'; printf(\"%c

位)

\\n\

A) 6 6 6.0 6.0 B) 6 6

10. 执行下面的程序段后,变量k中的值为

6.7 6.7

A) 不定值 B) 33 C) 30

C) 6 6 6.0 6.7 D) 6 6

D) 10

6.7 6.0

int k=3, s[2];

main()

s[0]=k; k=s[1]*10;

{ double d; float f; long l; int i;

11. 若已定义:

i=f=l=d=20/3;

int a[ ]={0,1,2,3,4,5,6,7,8,9}, *p=a,i;

printf(\"%d %ld %f %f \\n\

其中 0≤i≤9, 则对a数组元素不正确的引用

}

4. 下列变量定义中合法的是

A) a[p-a] B) *(&a[i]) C) p[i]

A) short _a=1-.le-1; B)

D) a[10]

double b=1+5e2.5;

12. 下列程序执行后的输出结果是

C) long do=0xfdaL; D) float

A) 6 B) 7 C) 8

2_and=1-e-3;

D) 9

5. 设 int x=1, y=1; 表达式(!x||y--)的值是

void func(int *a,int b[])

A) 0 B) 1 C) 2

{ b[0]=*a+6; }

D) -1

main()

6. 与 y=(x>0?1:x<0?-1:0);的功能相同的if语句是

{ int a,b[5];

A) if (x>0) y=1; B) if(x)

a=0; b[0]=3;

else if(x<0)y=-1;

func(&a,b); printf(\"%d \\n,b[0]);

if(x>0)y=1;

}

else y=0;

13. 下列程序的运行结果是

else if(x<0)y=-1;

A) a=%2,b=%5 B) a=2,b=5

C) a=d, b=d D) a=%d,b=%d

else y=0;

#include

C) y=-1 D) y=0;

main()

if(x)

{ int a=2,c=5;

if(x>=0)

printf(\"a=%d,b=%d\\n\

if(x>0)y=1;

14. 下列程序执行后的输出结果是

if(x>0)y=1;

(第15页)

A) 3 B) 6 C) 9 { char x=0xFFFF; printf(\"%d \\n\ D) 随机数 22. 若有定义: float w; int a, b; 则合法的switch main() 语句是 { int a[3][3], *p,i; A) switch(w) B) p=&a[0][0]; switch(a); for(i=p; i<9; i++) p[i]=i+1; { case 1.0: printf(\"*\\n\"); { case printf(\"%d \\n\ 1 printf(\"*\\n\"); } case 2.0: printf(\"**\\n\"); 15. 设有数组定义: char array [ ]=\"China\"; 则数case 2 printf(\"**\\n\"); 组 array所占的空间为 } } A) 4个字节 B) 5个字节 C) 6个 C) switch(b) D) 字节 D) 7个字节 switch(a+b); 16. 下列程序的输出结果是 { case 1: printf(\"*\\n\"); A) 4 B) 6 C) 8 { case 1: printf(\"*\\n\"); D) 10 default: printf(\"\\n\"); int b=2; case 2: printf(\"**\\n\"); int func(int *a) case 1+2: printf(\"**\\n\"); { b += *a; return(b);} default: printf(\"\\n\"); main() } } { int a=2, res=2; 23. 以下程序段的执行结果是 res += func(&a); A) a=12 y=12 B) a=12 printf(\"%d \\n\ y=12 } a=14 y=16 a=16 17. 下列程序的输出结果是 y=28 A) 4 B) 3 C) 2 a=16 y=20 D) 1 a=18 y=24 main() C) a=12 y=12 D) a=12 { int i, j, m=0, n=0; y=12 for(i=0; i<2; i++) a=14 for(j=0; j<2; j++) y=26 if(j>=i) m=1; n++; a=14 printf(\"%d \\n\ y=44 } int a, y; 18. 下列程序的输出结果是 a=10; y=0; A) 5 B) 6 C) 7 do D) 8 { a+=2; y+=a; struct abc printf(\"a=%d y=%d\\n\ { int a, b, c; }; if(y>20) break; main() }while(a==14); { struct abc s[2]={{1,2,3},{4,5,6}}; „ int t; 24. 若有以下调用语句,则不正确的fun函数的首部 t=s[0],a+s[1],b; 是 printf(\"%d \\n\ A) void fun(int m, int x[]) B) void } fun(int s, int h[41]) 19. 设 int b=2;表达式(b>>2)/(b>>1)的值是 C) void fun(int p, int *s) D) void A) 0 B) 2 C) 4 fun(int n, int a) D) 8 main() 20. 在C程序中,可把整型数以二进制形式存放到文 { „ 件中的函数是 int a[50],n; A) fprintf函数 B) fread函数 C) „ fwrite函数 D) fputc函数 fun(n, &a[9]); 21. 下列程序执行后的输出结果是 „ A) -32767 B) FFFE C) -1 } D) -32768 25. 语句printf(\"a\\bre\\'hi\\'y\\\\\\bou\\n\");的输出 main() 结果是

(第16页)

A) a\\bre\\'hi\\'y\\\\\\bou B) A) hello good B) hg C) hel a\\bre\\'hi\\'y\\bou D) hellogood C) re'hi'you D) main()(int argc, char *argv[]) abre'hi'y\\bou { int i; (说明:'\\b'是退格符) if(argc<-0)return; 26. 请选出正确的程序段 for(i=1;i1)若p已指向存储单元a[1]。通过指针p,给s赋

序段中正确的是

值,使s指向最后一个存储单元 a[4]的语句是

A) char a[11], *p; strcpy(p=a+1,&st[4]);

(2) 。 B) char a[11]; strcpy(++a, st);

2)若指针s指向存储单元a[2],p指向存储单元

C) char a[11]; strcpy(a, st);

a[0],表达式s-p的值是 (3) 。 D) char a[], *p; strcpy(p=&a[1],st+2);

3. 下面函数用来求出两个整数之和,并通过形参传回

28. 下列程序执行后的输出结果是

两数相加之和值,请填空。 A) you&me B) you C) me

int add(int x, int y, (4) z) D) arr

{ (5) =x+y; } main()

4. 下面程序的功能是:计算1到10之间奇数之和及偶

{ char arr[2][4];

数之和,请填空。 strcpy(arr,\"you\");

#include strcpy(arr[1],\"me\");

main() arr[0][3]='&';

{ int a, b, c, i; printf(\"%s \\n\

a=c=0; }

for(i=0;i<10;i+=2) 29. 下列程序执行后的输出结果是

{ a+=i; A) hello B) hel C) hlo

(6) ; D) hlm

c+=b; void func1(int i);

} void func2(int i);

printf(\"偶数之和=%d\\n\ char st[]=\"hello,friend!\";

printf(\"奇数之和=%d\\n\ void func1(int i)

} { printf(\"%c\

5. 下面程序的功能是:输出100以内能被3整除且个

if(i<3){i+=2;func2(i);}

位数为6的所有整数,请填空。 }

#include void func2(int i)

main() { printf(\"%c\

{ int i, j; if(i<3){i+=2;func1(i);}

for(i=0; (7) ; i++) }

{ j=i*10+6; main()

if( (8) ) continue; { int i=0; func1(i); printf(\"\\n\");}

printf(\"%d\ 30. 假定下列程序的可执行文件名为prg.exe,则在该

} 程序所在的子目录下输入命令行: prg hello good<

} 回车>后,程序的输出结果是

(第17页)

6. 下面程序的功能是:将字符数组a中下标值为偶数 } 的元素从小到大排列,其它元素不

(16)A (17)C (18)A (19)A (20)B (21)A (22)C (23)D (24)A (25)A 变。请填空。

(26)D (27)A (28)B (29)B (30)C (31)B (32)D (33)B (34)A (35)A #include

#include (36)C (37)C (38)C (39)D (40)C (41)C (43)A (44)A (45)C (46)B main() 三、编程题(第1题10分,第2题15分,共25分) { char a[]=\"clanguage\ 一、选择题 int i, j, k; 二、填空题 k=strlen(a); (1) double(2) s= p+3(3) 2 (4) int * (5) * z (6) for(i=0; i<=k-2; i+=2) b = i + 1 (7) i<10 (8) i % 3 != 0 (9) j+=2 (10) for(j=i+2; j<=k; (9) ) a[i]>a[j] (11) 8,17 (12) p=s (13) *(++p) (14) – if( (10) ) 1 (15) *sn { t=a[i]; a[i]=a[j]; a[j]=t; }

《C语言程序设计》模拟试题三 puts(a);

一、选择题(每题1.5分,共45分) printf(\"\\n\");

1. 若变量已正确定义并赋值,下面符合C语言语法的 }

表达式是 7. 以下程序的运行结果是 (11)

A) a:=b+1 B) a=b=c+2 C) int #include

18.5%3 D) a=a+7=c+b main()

2. C语言中运算对象必须是整型的运算符是 { int k=4, m=1, p;

A) %= B) / C) p=func(k,m); printf(\"%d,\

= D) 〈= p=func(k,m); printf(\"%d \\n\

3. 若已定义x和y为double类型,则表达式x=1, }

y=x+3/2 的值是 func(int a, int b)

A) 1 B) 2 C) { static int m=0, i=2;

2.0 D) 2.5 i+=m+1;

4. 若变量a、i已正确定义,且i已正确赋值,合法 m=i+a+b;

的语句是 return m;

A) a==1 B) ++i; C) }

a=a++=5; D) a=int(i); 8. 以下程序的功能是:将无符号八进制数字构成的字

5. 若有以下程序段, 符串转换为十进制整数。例如,输入的字符串为:556,

int c1=1,c2=2,c3; 则输出十进制整数366。请填空。

c3=1.0/c2*c1; #include

则执行后,c3中的值是 main()

A) 0 B) 0.5 C) 1 { char *p, s[6];

D) 2 int n;

6. 有如下程序 (12) ;

main0 gets(p);

{ int y=3,x=3,z=1; n=*p-'0';

printf(“%d %d\\n”,(++x,y++),z while( (13) !='\\0')n=n*8+*p-'0';

+2); printf(\"%d \\n\

} }

运行该程序的输出结果是 9. 函数 void fun(float *sn, int n)的功能是:根

A) 3 4 B) 4 2 C) 4 据以下公式计算S,计算结果通过形参指针sn传回;n

3 D) 3 3 通过形参传入,n的值大于等于0。请填空。

7. 能正确表示逻辑关系:“a≥=10或a≤0”的C语S=1-1/3+1/5-1/7+„1/(2n+1)

言表达式是 void fun( float *sn, int n)

A) a>=10 or a<=0 B) a>=0|a<=10 C) { float s=0.0, w, f=-1.0;

a>=10 &&a<=0 D) a>=10‖a<=0 int i=0;

8. 有如下程序 for(i=0; i<=n; i++)

main() { f= (14) * f;

{ int x=1,a=0,b=0; w=f/(2*i+1);

switch(x){ s+=w;

case 0: b++; }

case 1: a++ (15) =s;

case 2: a++;b++

(第18页)

}

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 9. 有如下程序

main()

{ float x=2.0,y;

A) 987 B) 876 C) 8765 D) 9876

14. 设有说明语句:char a=’\\72’;则变量a A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法 15. 有如下函数调用语句

func(rec1,rec2+rec3,(rec4,rec5);

该函数调用语句中,含有的实参个数是

A) 3 B) 4 C) 5 if(x<0.0) y=0.0;

else if(x<10.0) y=1.0/x; else y=1.0;

printf(“%f\\n”,y); }

该程序的输出结果是 A) 0.000000 B) 0.250000 C) 0.500000 D) 1.000000 10. 有如下程序

main()

{ int a=2,b=-1,c=2;

if(aif(b<0) c=0; else c++;

printf(“%d\\n”,c); }

该程序的输出结果是 A) 0 B) 1 C) 2 D) 3 11. 有如下程序

main()

{ int i,sum;

for(i=1;i<=3;sum++) sum+=i; printf(“%d\\n”,sum); }

该程序的执行结果是 A) 6 B) 3 C) 死循环 D) 0 12. 有如下程序

main()

{ int x=23; do

{ printf(“%d”,x--);} while(!x);

}

该程序的执行结果是

A) 321 B) 23 C) 不输出任何内容 D) 陷入死循环 13. 有如下程序 main()

{ int n=9;

while(n>6)

{n--;printf(“%d”,n);} }

该程序段的输出结果是

D) 有语法错 16. 有如下程序

int func(int a,int b) { return(a+b);} main()

{ 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 17. 有如下程序段

int *p,a=10,b=1 p=&a; a=*p+b;

执行该程序段后,a的值为

A) 12 B) 11 C) 10 D) 编译出错

18. 对于基类型相同的两个指针变量之间,不能进行的运算是

A) < B) = C) + D) -

19. 以下函数返回a所指数组中最小的值所在的下标值

fun(int *a, int n) { int i,j=0,p; p=j;

for(i=j;iif(a[i]return(p); }

在下划线处应填入的是

A) i=p B) a[p]=a[i] C) p=j D) p=i 20. 有如下程序

long fib(int n)

{ if(n>2) return(fib(n-1)+fib(n-2));

else return(2);

}

main()

{ printf(“%d\\n”,fib(3)); } 该程序的输出结果是

A) 2 B) 4 C) 6 D) 8

21. 在C语言中,函数的隐含存储类别是

(第19页)

A) auto B) static C) 该程序的输出结果是 extern D) 无存储类别 A) 不确定的值 B) 2 C) 1 22. 有如下程序 D) 0

#define N 2 29. 有如下程序 #define M N+1 main() #define NUM 2*M+1 { int #main() a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; { int i; for(i=1;i<3;i++)

for(i=1;i<=NUM;i++)printf(“%d\\n” for(j=0;j,i); printf(“%d\\n”,s);

} } 该程序中的for循环执行的次数是 该程序的输出结果是 A) 5 B) 6 C) 7 A) 14 B) 15 C) D) 8 16 D) 17 23. 有以下函数 30. 有如下定义

char fun(char *p) struct person{char name[9]; int { return p; } age;}; 该函数的返回值是 strict person class[10]={“Johu”, A) 无确切的值 B) 17, 形参p中存放的地址值 “Paul”,

B) 一个临时存储单元的地址 D) 19 形参p自身的地址值 “Mary”, 24. 有如下程序段 18,

int a=14,b=15,x; “Adam char c=’A’; 16,}; x=(a&&b)&&(c<’B’); 根据上述定义,能输出字母M的语句是 执行该程序段后,x的值为 A) prinft(“%c\\n”,class[3].mane); A) ture B) false C) B) pfintf(“%c\\n”,class[3].name[1]); 0 D) 1 C) prinft(“%c\\n”,class[2].name[1]); 25. 若fp是指向某文件的指针,且已读到此文件末 D) printf(“%^c\\n”,class[2].name[0]); 尾,则库函数feof(fp)的返回值是 二、填空题(每空2分,共30分)

A) EOF B) 0 C) 1. 以下程序的输出结果是 (1) 。 非零值 D) NULL main() 26. 若有以下说明和定义 { unsigned short a=65536; int b;

fun(int *c){ } printf(“%d\\n”,b=a); main() } { int (*a)()=fun,*b(),w[10],c; 2. 若有定义:int a=10,b=9,c=8;接着顺序执行下列

┆ 语句后,变量b中的值是 (2) 。 } c=(a-=(b-5)); 在必要的赋值之后,对fun函数的正确调用 c=(a%11)+(b=3); 语句是 3. 表示“整数x的绝对值大于5”时值为“真”的C

A) a=a(w); B) (*a)(&c); C) 语言表达式是 (3) 。 b=*b(w); D) fun (b); 4. 要使以下程序段输出10个整数,请填入一个整数。 27. 有如下说明 for(i=0;i<= (4) ;printf(“%d\\n”,i+=2));

int 5. 函数pi的功能是根据以下近似公式求π值: a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; (π*π)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n)

则数值为9的表达式是 现在请你在下面的函数中填空,完成求π的功能。 A) *P+9 B) *(P+8) C) #include “math.h” *P+=9 D) P+8 double pi(long n) 28. 有如下程序 { double s=0.0; long i;

main() for(i=1;i<=n;i++)s=s+ (5) ; { int n[5]={0,0,0},i,k=2; return(sqrt(6*s));

for(i=0;i,则以下while循环体 } 将执行 (6) 次。

(第20页)

while((ch=getchar())==’e’) printf(“*”); 7. 以下函数用来求出两整数之和,并通过形参将结果传回,请填空。

void func(int x,int y, (7) z) { *z=x+y; } 1. B 8. 若有以下定义,则不移动指针p,且通过指

11.C

针p引用值为98的数组元素的表达式是 (8) 。

21.C int

w[10]={23,54,10,33,47,98,72,80,61}, *p=w; 9. 设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部 (9) 。要求形参名为b。 main()

{ double s[10][22]; int n; ┆ ┆

fun(s); ┆ }

10. 以下程序的输出结果是 (10) 。 void fun()

{ static int a=0; a+=2; printf(“%d”,a); }

main()

{ int cc;

for(cc=1;cc<4;cc++) fun(); printf(“\\n”); }

11. 以下程序的输出结果是 (11) 。 #define MAX(x,y) (x)>(y)?(x):(y) main()

{ int a=5,b=2,c=3,d=3,t; t=MAX(a+b,c+d)*10; printf(“%d\\n”,t); }

12. 若要使指针p指向一个double类型的动态存储单元,请填空。

p= (12) malloc(sizeof(double));

13. 设有以下结构类型说明和变量定义,则变量a在内存所占字节数是 (13) 。 struct stud { char num[6]; int s[4]; double ave; } a,*p;

14. 以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。 strcen(char a[], char b[]) { int num=0,n=0;

while(*(a+num)!= (14) ) num++;

while(b[n]){*(a+num)=b[n]; num++; (15) ;} return(num); }

三、编程题(第1题10分,第2题15分,共25分) 一、选择题:

二、填空题:

2. A 3. C 4. B 5. A 6. D 7. D 8. A 9. C 10.C 12.B 13.B 14.A 15.A 16.D 17.B 18.C 19.D 20.B 22.B 23.B 24.D 25.C 26.B 27.B 28.D 29.A 30.D (1) 0 (2) 3 (3) x>5||x<-5 (4) 18 (5) 1.0/(i*i) (6) 0 (7) int * (8) P[5]或*(p+5)

(9) void fun(double b[][22]) 或 void fun(double b[0][22]) 或 void fun(double

(*b)[22]) (10) 246 (11) 7 (12) (double *) (13) 22 (14) '\\0'或0 (15) n++或n+=1或n=n+1

(第21页)

因篇幅问题不能全部显示,请点此查看更多更全内容