C语言程序设计模拟精彩试题3(附问题详解)

C语言程序设计模拟精彩试题3(附问题详解)
C语言程序设计模拟精彩试题3(附问题详解)

《C语言程序设计》模拟试卷三

一、填空题。(每空2分,共16分)

1.在内存中,短整型变量占字节,单精度实型变量占字节,字符型变量占字节。

2.一个C语言文件是由若干个组成。

3.设有以下变量定义,并已赋确定的值

char w; int x; float y; double z;

则表达式:w*x+z-y所求得的数据类型为。

4.若x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达

式。

5.若有如下图所示五个连续的int类型的存储单元并赋值如下图,a[0]的地址小于a[4]的地址。p和s是基类型为int的指针变量。请对以下问题进行填空。

a[0] a[1] a[2] a[3] a[4]

(1)若p已指向存储单元a[1]。通过指针p,给s赋值,使s指向最后一个存储单元a[4]的语句

是。

(2)若指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是。

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

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

A) 3 B) 4 C) 11 D) 12

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

A) 3 B) 3.2 C) 0 D) 3.07

main()

{double d=3.2; int x,y;

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

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

}

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

A) 6 6 6.0 6.0 B) 6 6 6.7 6.7

C) 6 6 6.0 6.7 D) 6 6 6.7 6.0

main()

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

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

printf("%d %ld %f %f \n", i,l,f,d);

scanf("%d",&d);

}

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

A) short _a=1-.le-1; B) double b=1+5e2.5;

C) long do=0xfdaL; D) float 2_and=1-e-3;

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

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

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

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

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

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

else y=0;

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

if(x) if(x>=0)

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

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”,i);

}

8.以下叙述正确的是()。

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

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

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

D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。9.下列程序执行后的输出结果是()。

A) G B) H C) I D) J

main()

{ int x=’f’; printf(“%c \n”,’A’+(x-‘a’+1)); }

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

A) 不定值B) 33 C) 30 D) 10

int k=3, s[2];

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

11.若已定义:

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

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

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

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

A) 6 B) 7 C) 8 D) 9

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

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

main()

{ int a,b[5];

a=0; b[0]=3;

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

}

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

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

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

#include

main()

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

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

A) 3 B) 6 C) 9 D) 随机数

main()

{ int a[3][3], *p, i;

p=&a[0][0];

for(i=0; i<9; i++) p[i]=i+1;

printf(“%d \n”,a[1][2]);

}

15.设有数组定义: char array [ ]= “China”; 则数组 array所占的空间为()。

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

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

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

int b=2;

int func(int *a)

{ b += *a; return(b);}

main()

{ int a=2, res=2;

res += func(&a);

printf(“%d \n”,res);

}

17.有以下定义和语句

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

p[0]=a[1];

则*(p[0]+1)所代表的数组元素是 ( )

A)a[0][1] B)a[1][0] C)a[1][1] D)a[1][2]

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

A) 5 B) 6 C) 7 D) 8

struct abc

main()

{ struct abc s[2]={{1,2,3},{4,5,6}};

int t;

t=s[0].a+s[1].b;

printf(“%d \n”,t);

}

19.若有以下调用语句,则不正确的fun函数的首部是()。

A) void fun(int m, int x[]) B) void fun(int s, int h[41])

C) void fun(int p, int *s) D) void fun(int n, int a)

main()

{ …

int a[50],n;

fun(n, &a[9]);

}

20.在C程序中,可把整型数以二进制形式存放到文件中的函数是()。

A) fprintf函数B) fread函数C) fwrite函数 D) fputc函数

三、修改下列程序:(在程序出错的语句下划横线并标号,把修改后的语句写在程序下面的横线上。)(每小题5分,共10分)

1.下列给定程序的功能是:读入一个整数(2<=k<=10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出2、3、5、7、11。

#include

#include

*******************************

IsPrime(int n);

{int i,m;

m=1;

for ( i=2; i

******************************

if !(n%i)

{ m=0; contitue; }

return (m);

}

main()

{ int j,k;

clrscr();

printf(“nPlease enter an integer number between 2 and 10000:”); scanf(“%d”,k);

printf(“nnThe prime factor(s) of %d is (are):”,k);

for (j=2;j<=k;j++)

if ( (!(k%j))&(IsPrime(j)) ) printf(" %4d",j);

getchar();

})

2.下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或等于的字符一次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串为:aBcdeFgh。

#include

#include

****************************************

void; fun(char *p,char *q,char *c);

***************************************

{int k=1;

***************************************

while(*p!=*q)

{if (*p<*q) c[k]=*q;

else c[k]=*p;

if (*p) p++;

if (*q) q++;

k++;

}

K=’\0’;

}

***************************************

main()

{char a[10]=“aBCDeFgh”,b[10]=“ABcd”,c[80]={“”};

fun(a,b,c);

printf(“The string a:”); puts(a);

printf(“The string b:”); puts (b);

printf(“The result:”); puts(c);

}

四、阅读下列程序,在程序后面的横线上,写出该程序的功能或给出运行结果。(每小题4分,共16分)

1. #include

void main()

{ char ch; int k=0;

for(ch=’A’;ch<’H’;ch++,k++)

if(k%2==0) printf(“%c”,ch);

printf(“\n”);

}

输出结果:

2. #include

void main( )

{ int k=0;

char c=’A’;

do {

switch (c++)

{case ‘A’: k++; break;

case ‘B’: k--;

case ‘C’: k+=2; break;

case ‘D’: k=k%2; break;

case ‘E’: k=k*10; break;

default: k=k/3;

}

k++;

} while(c<’G’);

printf(“k=%d\n”, k);

}

输出结果:

3. #include

void main()

{ int

a[6]={12,4,17,25,27,16},b[6]={27,13,4,25,23,16},i,j;

for(i=0;i<6;i++) {

for(j=0;j<6;j++) if(a[i]==b[j])break;

if(j<6) printf(“%d ”,a[i]);

}

printf(“\n”);

}

输出结果:

4. #include

void main()

{ int a[8]={1,0,1,0,1,0,1,0},i;

for(i=2;i<8;i++) a[i]+=a[i-1]+a[i-2];

for(i=0;i<8;i++) printf(“%d ”,a[i]);

printf(“\n”);

}

输出结果:

五、按给出的程序功能,在空格处,填写正确的程序语句,使程序完整。(每空1分,共6分)

1.将两个数从小到达输出。

main()

{float a,b, ;

scanf( ,&a,&b);

if (a>b)

{t=a;

;

b=t;

}

printf(“The num small to big : %d %d”,a,b);

}

2.输出购买总价值和数量。

# define 30

main()

{ ;

num=10;

total=num*PRICE;

printf (“total=%d, num=%d\n”,

);

}

六、按要求编写下列程序。(每题6分,共12分)

1.输出下图。

*

* *

* * *

* * * *

2.编程判断输入的正整数是否既是5又是7的整数倍数。若是,则输出yes;否则输出no。

《C语言程序设计》模拟试卷三答案

一、填空题。(每空2分,共16分)

1 2 4 1

2.函数

3. double

4.x==0||x==1

5.s=p+3 2

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

1.A 2.C 3.A 4. A 5.B

6.A 7.C 8.D 9. A 10. A

11.D 12.A 13.B 14. B 15.C

16.B 17.C 18.B 19.D 20. C

三、修改下列程序:(在程序出错的语句下划横线并标号,把修改后的语句写在程序下面的横线上。)(每小题5分,共10分)

1

IsPrime(int n)

if (!(n%i))

scanf(“%d”,&k);

2.

void fun(char *p,char *q,char *c)

k=0;

while(*p||*q)

四、阅读下列程序,在程序后面的横线上,写出该程序的功能或给出运行结果。(每小题4分,共16分)

1. ACEG

2. k=8

3. 4 25 27 16

4. 1 0 2 2 5 7 13 20

五、按给出的程序功能,在空格处,填写正确的程序语句,使程序完整。(每空1分,共6分)

1.t

“a=%f,b=%f”

a=b

2.

PRICE

int num ,total

total,num

六、按要求编写下列程序。(每题6分,共12分)1.

main()

{

int i,j;

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

{

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

printf("* ");

printf("\n");

}

getchar();

}

2.

main()

{

int n;

printf("请输入整数 n :");

scanf("%d",&n);

if(!(n%5)||!(n%7))

printf("Yes!");

else

printf("No!");

}

相关文档
最新文档