《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