C语言实验指导

孝感学院-物电学院实验中心

实验十 综合练习

【目的与要求】

1.要求学生能够运用所学过的基础语法知识和基本编程技能进行综合练习。 2.独立完成3套模拟试题。 【上机内容】

模拟试题一

一、选择题(每题1分 共15分)

1.设x,y为float型变量,则下列()为不合适的赋值语句

A. ++x; B. y=(float)3; C. x=y=0; D. x*=y+8;

2.若x为int 变量,则执行下列语句x的值为()

x=65535; printf(“%d\\n”,x); A. 65535 B. 1 C. 无定值 D. -1 3.下面()不正确的转义符() A. ?\\t? B. ?\\a? C. ?\\081? D. ?\\n?

4.在C语言中,char类数据在内存中是以()形式存储的 A. 原码 B. 反码 C. 补码 D. ASCII码 5.以下变量名()是合法的。

A. break B. $123 C. lotus_2_3 D.

6.判断char型变量c1是否为小写字符的最简单且正确的表达式()。

A. ?a?<=c1<=?z ? B. (c1<=a)&&(c1<=z) C. (?a?<=c1)&&(?z?>=c1) D. (c1>=?a?)&&(c1<=?z?) 7.在C语言中,int,char,float所占用的内存。

A. 均为2个字节 B. 由用户自己定义 C. PC 机为2,1,4 D. 2,2,4

8.若有说明int x,y,下面程序()不能实现以下函数关系

y= -1 x<0 0 x=0 1 x>0

A. if (x<0) y=-1;else if (x==0) y=0;else y=1; B. y=-1; if (x!=0) if (x>0) y=1;else y=0; C. y=0; if (x>=0) { if (x>0) y=1;} else y=-1; D. if (x>=0) if (x>0) y=1;else y=0; else y=-1; 9.while (!x)中(!x)与下面条件()等价

A. x= =0 B. x= =1 C x!=1 D. x!=0 10. 以下不是无限循环的语句为()。

30

纸上得来终觉浅,绝知此事要躬行

孝感学院-物电学院实验中心

A. for (y=0,x=1;x>=++y;x++); B. for (;;x++); C. while (1) { x++;} D. for (i=10;;i--) sum+=i;

11. 若有以下语句,则下面()是正确的描述。

Char x[]=”12345”; Char y[]={?1?,?2?,?3?,?4?,?5?}; A. x,y完全相同。 B. x,y不相同。

C. x数组长度小于y数组长度。 D. x,y字符串长度相等。

12. 为了判断两个字符串s1 和s2是否相等,应当使用()。

A. if (s1= =s2) B. if (s1=s2)

C. if (strcpy(s1,s2)) D. if (strcmp(s1,s2)= =0) 13. C程序中函数返回值的类型是由()决定。

A. return语句中的表达式类型。 B. 调用该函数的主调函数类型。 C. 调用函数时临时决定。

D. 定义函数时所指定的函数类型。

14 若 int t, a=5,b=6,w=1,x=2,y=3,z=4,则经过 t=(a=w>x)&&(b=y>z)计算后变量t ,a, b的

值分别为()

A. 0,0,0 B. 0,0,6 C. 1,0,0 D. 1,0,6

15 如果变量grade的值为1, 则运行下列程序段后输出结果为()

switch(grade) { case 1:printf(“a\\n”); case 2:printf(“b\\n”); case 3:printf(“c\\n”); }

A. a B. a

b c

C. abc D. ab

二.写出下列程序的运行结果(每题3分,共15分) 1. main()

{

int i,j,k; char space=? ?; for(i=0;i<=5;i++) {

for (j=i;j<=i;j++) printf(“%c”,space); for (k=0;k<=5;k++) printf(“%c”,?*?);

31

纸上得来终觉浅,绝知此事要躬行

孝感学院-物电学院实验中心

printf(“\\n”); } } 2.main() {

int n=0; while(n++<=2) printf(“%d\\t”,n); printf(“%d\\n”,n); } 3.main()

{

int a[3][3]={1,2,3,4,5,6,7,8,9}; int i,j,t;

for (i=0;i<3;i++) for (j=0;j<3;j++) {

t=a[i][j]; a[i][j]=a[j][i]; a[j][i]=t;} for (i=0;i<3;i++) {

for(j=0;j<3;j++) printf(“M ”,a[i][j]); }

printf(“\\n”); } }

4.#include “string.h”

main() {

char string1[20]=”abcd”; char string2[]=”\\\\cd\\t”; strcat(string1,string2); printf(“%d”,strlen(string1)); } 5. main()

{

int count ,sum, x; count=sum=0; do {

scanf(“%d”,&x); if (x%2!=0) continue;

32

纸上得来终觉浅,绝知此事要躬行

孝感学院-物电学院实验中心

count++; sum+=x; }

while (count<5); printf(“sum=%d”,sum);

}

假设输入的数据为:3 6 -2 9 10 11 8 12 三 编程(共70分)

1. 编写一个程序,输入一个字符串,按反序存放后再输出该字符串。(10分)

2. 写一个程序,能分别统计出从键盘上输入的字符串中小写字符的个数、数字字符的个数

和其他字符的个数。输入的字符串以“!”作为结束标记。(10分) 3. 编写一个求4个数中的最大数(要求用函数实现求最大数)。(10分)

4. 青年歌手参加歌曲大奖赛,有5个评委对她的进行打分,试编程求这位选手的平均得分

(去掉一个最高分和一个最低分)。(13分) 5. 编程求3~100之间所有的素数及其个数 。(12分)

6. 已知在一个ASCII“stud.dat”中,有10个学生的记录,每条记录有4项数据,第1项为学

号(int型),第2、3、4项为成绩(float型),编写一个程序从该文件中将这些学生的数据读出来,计算每个人的平均成绩,然后在将原有数据和计算出的平均成绩写到另外一个ASCII“aver.dat”中。(15分)

模拟试题二

一、选择题(每题2分 共26分)

1. 以下几个语句执行后i,j,k的值分别为()

int i,j,k; i=j=0; k=1; if (i>j?(j--)

i--)) k++;

A. 1,9,1 B. 1,0,2 C. -1,0,1 D. 0,0,2 2. int i=0,j=0;

int a=2,b=4,c=5,d=6;

表达式(i=a-b)&&(j=c-d)的结果是() A. 1 B. 0 C. -2 D. -1 3.若给定条件表达式(m)?(a++)

a--),则表达式m()

A. 等价于(m==0) B. 等价于(m==1) C. 等价于(m!=0) D. 等价于(m!=1) 4 下列程序运行结束后,n的值为()

n=2; do { n=n+n; n--;

} while (n<20); A. 21 B. 22

33

纸上得来终觉浅,绝知此事要躬行

联系客服:779662525#qq.com(#替换为@)