《C语言程序设计》综合练习试卷(一)

  • 格式:doc
  • 大小:69.50 KB
  • 文档页数:15

《C语言程序设计》综合练习试卷(一)

试题一 判断题 (每题1分,共10 分)(用T表示正确、F表示不正确)

1.C的任何类型数据在计算机内部都是以二进制形式存储的。

2.按格式符“%d”输出float类型变量时,截断小数位后取整输出。

3.字符数组中字符串可以整体输入输出。

4.传值调用的形参只有在被调用时,才被创建(分配存储单元)。

5.C语言中数组名是指针常量。

6.结构体类型中的各成员项数据类型可以不相同。

7.函数必须有返回值,否则不能使用函数。

8.C程序执行总是从第一个函数开始。

9.可以用关系运算符对字符串进行大小比较。

10. For循环只能用于循环次数已确定的场合。

试题二 单选题(每题1分 共15分)

从A)、B)、C)、D)四个选项中,选出正确的一项。

1.以下程序运行后,输出结果是

#include"stdio.h"

void main( )

{ char s[10]="abcde",*p;

p=s+2;

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

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

2.对下面函数f,写出f(f(3))的值。

int f(int x)

{ static int k=0;

x+=k--;

return x;

}

A) 5 B) 3 C) 2 D) 4

3.以下程序运行后,输出结果是

#define PT 5

#define S(x) PT*x

#include"stdio.h"

void main( )

{ int a=1,b=2;

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

}

A) 15 B) 7 C) 8 D) 无正确答案

4. 若有 float a[3][4]; 正确的引用第3行第1列的元素是

A) **(a+2) B) *(*a+2) C) a[3][1] D) a[3][0]

printf("%.1f,%d\n",10./4,10/8);的输出是

A) 2.5, 1.25 B) 2.5, 1 C

A) int a[ ]; B)int n=5,a[n];

C) int n, a[n]={1,2,3,4,5}; D) int a[10/2];

7.若有定义:struct person { char name[9]; int age; } ; person st[10]={{"john",17},{"paul",19},{"Mary",18}};

能输出字母M的语句是

A) printf("%c",st[2].name);

B) printf("%c",st[3].name[1]);

C) printf("%c",st[2].name[1]);

D) printf("%c",st[2].name[0]);

8.不能把字符串:“Hello!”赋给数组b的语句是

A) char b[10]={'H','e','l','l','o','!','\0'};

B) char b[10];b="Hello!";

C) char b[10];strcpy(b,"Hello!");

D) char b[10]="Hello!";

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

则表达式值为6的是

A)*p+6 B)*(p+6) C)*p+=5 D)p+5

10. 已知:int *p,m=5, n; 正确的程序段是

A) p=&n; scanf(" %d",&p); B) p=&n; scanf(" %d", *p);

C) scanf("%d",&n); *p=n; D) p=&n; *p=m;

11. 下面程序的运行结果是:

#include"stdio.h"

void main( )

{ int x[4]={ 2,4,6,8},*p, **pp;

p=x;

pp=&p;

printf("%d",*p);

printf("%3d",**pp);

}

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

12.下面程序执行后a的值是

#include"stdio.h"

void main( )

{ int a,k=4,m=6,*p1=&k,*p2=&m;

a=p1!=&m;

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

}

A)4 B)1 C)0 D)运行时出错,a无定值

13.下列语句序列中,能够将变量u、s中最大值赋给变量t的是

A) if (u>s) t=u; t=s; B) t=s; if (u>s) t=u;

C) if (u>s) t=s; else t=u; D) t=u; if (u>s) t=s;

14. 若有 int a=7,b=12;则语句printf("%d",a&b);输出结果

A) 19 B) 9 C) 5 D) 4

15.若有 FILE *fp; 以“只读”方式打开文本文件a:\aa.dat,下列语句中正确的是

A) fp=fopen("a:\aa.dat","w");

B) fp=fopen("a:\aa.dat","r");

C) fp=fopen("a:\\aa.dat","w");

D) fp=fopen("a:\\aa.dat","r");

试题三 阅读程序题( 每题4分,共24分) 写出读下列程序的输出结果

1. #include

void main()

{ char ch;

for(ch='a';ch<'f'; ch++)

{ putchar(ch-32);

putchar(ch);

}

}

2. #include"stdio.h"

void main()

{ int i;

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

{ if ((i%3)==0) { printf("$"); continue;}

else printf("*");

printf("#");

}

}

3. #include "stdio.h"

void main()

{ int i;

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

switch(i%5)

{ case 5: printf(" 5");

case 3: printf(" 3");

case 1: printf(" 1");

default: printf("%2d",i);

}

}

4. #include"stdio.h"

void main()

{ int x[10];

int t,i,j,m=1;

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

{ m=-m;

x[i]=m*i;

}

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

{ t=x[i];

for(j=i-1; j>=0; j--)

if(t>x[j]) break;

else x[j+1]=x[j];

x[j+1]=t;

}

for(i=0;i<10;i++) printf("%3d",x[i]);

} 5. #include

void main()

{ void swap1(int x ,int y );

void swap2(int *x,int *y);

void swap3(int &x,int &y);

int a1,b1,a2,b2,a3,b3;

a1=a2=a3=10;

b1=b2=b3=5;

swap1(a1,b1);

swap2(&a2,&b2);

swap3(a3,b3);

printf("a1=%d b1=%d\n",a1,b1);

printf("a2=%d b2=%d\n",a2,b2);

printf("a3=%d b3=%d\n",a3,b3);

}

void swap1(int x,int y)

{ int t;

t=x;x=y;y=t; }

void swap2(int *x,int *y)

{ int t;

t=*x; *x=*y; *y=t; }

void swap3(int &x,int &y)

{ int t;

t=x; x=y; y=t; }

6. struct node{

int num;

node *next;

};

int fun( node *h)

{ int s,n=0,i;

node *p=h ;

while(p!=NULL)

{ for(s=0,i=1;inum;i++)

if ((p->num)%i==0) s+=i;

if (s==p->num) n++;

p=p->next;

}

return n;

}

写出执行语句“printf(“%d\n”,fun(head));”的输出结果。head是头指针,以head为头指针的链表各结点的当前值如下所示:

试题四 程序填空题 ( 每空2分,共24分)

1. 下列程序读入时间数值,将其加一秒后输出,时间格式为hh:mm:ss,即时:分:秒,当小时7 NULL 4 6 5 28 head