C语言程序设计试题A

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

四川职业技术学院2005—2006学年第 1 学期期末考试
《C 语言程序设计》 (A )
(供04电气、04机电班使用)
考试时间:120分钟 满分:100分 命题人:陈 科
…………………………………………………………………………………………
一、单项选择题,答案不写入答题栏的一律不得分!(每题1.5分,共52.5分)
1、结构化程序设计的3种结构是 。

A)顺序结构、选择结构、转移结构 B )分支结构、等价结构、循环结构 C)多分支结构、赋值结构、等价结构 D )顺序结构、选择结构、循环结构
2、以下叙述中正确的是 。

A )C 语言比其他语言高级
B)C 语言可以不用编译就能被计算机识别执行
C )C 语言以接近英语国家的自然语言和数学语言作为语言的表达 形式
D )C 语言出现的最晚,具有其他语言的一切优点 3、C 语言中最简单的数据类型包括 。

A )整型、实型、逻辑型
B )整型、实型、字符型
C )整型、字符型、逻辑型
D )字符型、实型、逻辑型 4、若变量已正确定义并赋值,以下符合C 语言语法的表达式是 。

A)a:=b+1 B )a=b=c+2 C )int 18.5%3 D)a=a+7=c+b
5、若变量a ,i 已正确定义,且i 已正确赋值,合法的语句是 。

A )a= =1
B )++i ;
C )a=a++=5;
D )a=int (i ); 6、已知: int t=0;
while(t=1){。

.}
则以下叙述正确的是 。

A )循环控制表达式的值为0 B)循环控制表达式的值为1 C)循环控制表达式不合法 D)以上说法都不对
7、若变量已正确说明为float 型,要通过语句scanf ("%f %f%f ",&a ,&b ,&c );给a 赋予10.0,b 赋予22.0,c 赋予33.0,下列不正确的输入形式是 .
A)10〈回车〉22<回车〉33<回车> B )10。

0,22.0,33.0〈回车> C )10。

0<回车>22。

033.0<回车〉 D )10 22<回车〉33〈回车〉 8、有如下程序:
main () {
int x=1,a=0,b=0; switch (x) {
case 0: b++; case 1: a++; case 2: a++;b++; }
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 ()
{int i=1,j=1,k=2;
if ((j++||k++)&&i++)
printf (”%d ,%d ,%d \n",i,j ,k); }
执行后输出结果是 .
A)1,1,2 B )2,2,1 C )2,2,2 D)2,2,3 10、有如下程序
main ()
{float x=2.0,y ; 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
11、有如下程序:
main()
{int n=9;
while(n>6){n-—; printf(”%d”,n);}

该程序的输出结果是 .
A)987 B)876 C)8765 D)9876
12、在下列选项中,没有构成死循环的是。

A)int i=100;
while(1)
{i=i%100+1;
if(i〉100)break;
}
B)for(;;);
C)int k=10000;
do{k++;}while(k>10000);
D)int s=36;
while(s)——s;
13、设int x=1,y=1;表达式(!x||y——)的值是。

A)0 B)1 C)2 D)—1
14、有以下程序
float fun(int x,int y)
{return(x+y);}
main()
{int a=2,b=5,c=8;
printf(”%3.0f\n”,fun((int)fun(a+c,b),a-c));
}
程序运行后的输出结果是。

A)编译出错 B)9 C)21 D)9。

0
15、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的
是。

A)函数调用可以作为独立的语句存在
B)函数调用可以作为一个函数的实参
C)函数调用可以出现在表达式中
D)函数调用可以作为一个函数的形参16、若有以下调用语句,则不正确的fun函数的首部是。

main()
{ …
int a[50],n;

fun(n,&a[9]);


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)
[解析]把数组a中9号元素的地址传递给fun的函数参数,本题的考点是用什么来做函数的形参。

A选项用不定长度的数组x作形参;B选项用长度小于50的数组h作形参;C用指针变量*s作形参;显然D中形参变量a只是普通的整形变量,不能接收来自于实参9号元素的地址。

17、fseek函数的正确调用形式是。

A)fseek(文件指针,起始点,位移量) B)fseek(文件指针,位移量,起始点)
C)fseek(位移量,起始点,文件指针) D)fseek(起始点,位移量,文件指
针)
18、若fp是指向某文件的指针,且已读到文件末尾,则函数feof(fp)的返回值是。

A)EOF B)—1 C)1 D)NULL
19、若有说明语句:char c=’\72’;则变量c 。

A)包含1个字符 B)包含2个字符 C)包含3个字
符 D)说明不合法,c的值不确定
20、若有说明 int a[3][4];则a数组元素的非法引用是 .
A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a [0][4]
21、设有以下说明语句
struct stu
{int a;
float b;
} stutype;
则下面的叙述不正确的是 .
A)struct是结构体类型的关键字 B)struct stu是用户定义的结构体类型
C)stutype是用户定义的结构体类型名 D)a和b都是结构体成员名
22、在C语言中,引用数组元素时,其数组下标的数据类型允许
是 .
A)整型常量 B)整型表达式 C)整型常量或整型表达式 D)任何类型的表达式
23、若运行时给变量x输入12,则以下程序的运行结果是。

main()
{int x,y;
scanf(”%d”,&x);
y=x〉12?x+10:x—12;
printf("%d\n",y);
}
A)0 B)22 C)12 D)10
24、以下说法正确的是 .
A)C语言程序总是从第一个的函数开始执行
B)在C语言程序中,要调用函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言程序中的main()函数必须放在程序的开始部分
25、表达式0x13^0x17的值是 .
A)0x04 B)0x13 C)0xE8 D)0x17
26、有以下程序
#define F(X,Y)(X)*(Y)
main()
{int a=3, b=4;
printf(”%d\n”, F(a++, b++));

程序运行后的输出结果是。

A)12 B)
15 C)16 D)20
27、下列程序执行后的输出结果是。

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]);

A)6 B)7 C)
8 D)9
[解析]func(&a,b)中两个参数分别把整形变量a的地址传递给指针变量*a、把数组b(即数组名作实参)首元素的地址传递给形参数组b[]。

因此在func()函数中,b[0]=*a+6=0+6=6。

28、若有下面的程序段:
char s[]=”china”;char *p; p=s;
则下列叙述正确的是。

A)s和p完全相同 B)数组s中的内容和指针变量p中的内容相等C)s数组长度和p所指向的字符串长度相等 D)*p与s[0]相等
29、有以下程序
void sort(int a[],int n)
{int i,j,t;
for(i=0;i〈n—1;i++)
for(j=i+1;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for(i=0;i<10;i++)printf(”%d,",aa[i]);
printf("\n");

程序运行后的输出结果是。

A)1,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1,
C)1,2,3,8,7,6,5,4,9,10, D)1,2,10,9,8,7,6,5,4,3, [解析]sort(&aa[3],5)的作用是把数组aa的第3号元素及其后续4个元素(一共5个元素)由大到小排列,其他元素原样输出。

30、以下程序的运行结果是。

#include ”stdio.h"
main()
{struct date
{int year,month,day;}today;
printf("%d\n”,sizeof(struct date));
}
A)6 B)8 C)
10 D)12
31、若有语句int *point, a=4;和 point=&a;下面均代表地址的一组选项
是。

A)a,point,*&a B)&*a,&a,*point C)*&point,*point,&
a D)&a,&*point,point
32、已定义以下函数
fun(char *p2, char *p1)

while((*p2=*p1)!='\0’){p1++;p2++;}

函数的功能是。

A)将p1所指字符串复制到p2所指内存空间 B)将p1所指字符串的地址赋给指针p2
C)对p1和p2两个指针所指字符串进行比较 D)检查p1和p2两个指针所指字符串中是否有’\0'
33、若执行下述程序时,若从键盘输入6和8时,结果为 .
main()
{int a,b,s;
scanf(”%d%d”,&a,&b);
s=a
if(a<b)
s=b;
s*=s;
printf("%d",s);

A)36 B)64 C)
48 D)以上都不对
34、下列关于C语言数据文件的叙述中正确的是。

A)文件由ASCII码字符序列组成,C语言只能读写文本文件
B)文件由二进制数据序列组成,C语言只能读写二进制文件
C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
35、有以下程序
void ss(char *s,char t)
{while(*s)
{if(*s= =t)*s=t —’a’+ 'A’;
s++;

}
main()
{char str1[100]="abcddfefdbd”,c=’d';
ss(str1,c); printf(”%s\n”,str1);
}
程序运行后的输出结果是 .
A)ABCDDEFEDBD B)abcDDfefDbD C)
abcAAfefAbA D)Abcddfefdbd
[解析]把字符串中的小写字符‘d'转换为大写字符‘D’。

字符指针*s是指向该串的首字符(即字符‘a’),随着s++不断向后续字符移动。

t —’a’+ ’A’是英文字符小写转大写的公式,这里不再赘述.
二、填空题,答案不写入答题栏的一律不得分!(每空2分,共30分)
36、以下程序段的输出结果是 28 。

main()
{int a=2,b=3,c=4;
a*=16+(b++)-(++c);
printf(”%d",a);

37~38、若变量n中的值为24,则print()函数共输出 5 行,最后一行有 4 个数。

void print (int n,int aa[])
{int i;
for (i=1; i〈n+1; i++)
{printf (”%6d”, aa[i]);
if(!(i%5)) printf (”\n”);

printf ("\n”);

39、调用C语标准库函数时要求用 include 命令。

40、stract函数的作用是连接两个字符数组中的字符串。

41、C语言程序的注释可以出现在程序中的任何地方,一个注释以 /* */ 作为开始和结束。

42、设二进制数A是00101101,若想通过异或运算A^B使A的高4位取反,低4位不变,则二进制数B应是1111 0000。

43、若已知a=10,b=20,则表达式!a〈b的值为 1 。

44、设i,j,k均为int型变量,则执行完下面的for语句后,k的值
为 10 。

for(i=0, j=10; i〈=j; i++, j—-)k=i+j;
45~46、下面函数的功能是:找出一维数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回.数组元素中的值已在主函数中赋予。

主函数中x 是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。

randomize()是初始化随机数生成器函数,rand()返回一个随机数函数。

请填空。

#include<stdlib.h〉
#include〈stdio.h〉
void fun(int a[],int n, int *max, int *d)
{ int i;
*max=a[0];
*d=0;
for(i=0; i<n ;i++)
if(*max〈 a[i] )
{*max=a[i];*d=i;}

main()
{ int i, x[20], max, index, n=10;
randomize();
for(i=0;i<n;i++)
{
x[i]=rand()%50; printf(”%4d”,x[i]);

printf(”\n");
fun(x,n,&max,&index);
printf("Max=%5d,Index=%4d\n", max, index);

47、以下程序的输出结果是 246 。

void fun()
{ static int a=0;
a+=2; printf(”%d",a);

main()
{ int cc;
for(cc=1;cc<4;cc++)fun();
printf(”\n");

[解析]第一次调用fun(),输出a为2;第二次调用fun(),输出a为4(局部静态变量,不重新赋初值);则第三次调用输出为6.
48、以下程序的输出结果是 7 .
#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);

49、下列y的值是 8 。

int y; y=sizeof(2。

25*4);
50、mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。

请填空。

int mystrlen(char *str)
{ int i;
for(i=0;*(str+i)或者写成str[i]!= ′\0′;i++);
return(i);

三、程序设计题。

要求程序结构清晰,没有逻辑错误,书写工整,无需写出运行结果。

请写在背面并标明题号(第51题7。

5分、第52题10分,共17.5分,按关键步骤评分)
51、输入一个3╳3的整数矩阵,求其对角线元素之差.
#include <stdio.h〉
void main()

int a[3][3],minus;
int i,j;
printf(”enter data:\n”);
for (i=0;i〈3;i++)
for (j=0;j<3;j++)
scanf(”%d”,&a[i][j]);
minus=a[0][0];
for (i=1;i<3;i++)
minus=minus—a[i][i];
printf("minus=%6d\n”,minus);

52、有10个学生,每个学生的数据包括学号(stu_num,6个字符,如s00101)、姓名(name,8个字符)、三门课程的成绩(score[3],实型)及其平均分(avr,实型,初始时不赋值,).首先输入这10个学生的数据,然后再计算每个学生3门课程的平均分,存回avr中,并输出第6号学生的所有信息。

#include 〈stdio。

h>
#define N 10
struct student

char stu_num[6];
char name[8];
float score[3];
float avr;}stu[N];
void main()
{
float sum;
int i,j;
for (i=0;i〈N;i++)
{printf(”enter information of student %d:\n”,i+1);
printf("stu_num:”);
scanf(”%s",stu[i]。

stu_num);
printf("name:");
scanf(”%s",stu[i].name);
for (j=0;j<3;j++)
{printf(”score %d:”,j+1);
scanf(”%f",&stu[i].score[j]);/*此处的&运算符是指取结构体数组中元素的地址*/


for (i=0;i<N;i++)
{sum=0;
for (j=0;j<3;j++)
sum+=stu[i]。

score[j];
stu[i].avr=sum/3。

0;
}
printf
("stu_num name score1 score2 s core3 average_score\n");
printf(”%6s%10s”,stu[5]。

stu_num,stu[i].name);
for (j=0;j〈3;j++)
printf(”%9。

2f",stu[5]。

score[j]);
printf(”%8。

2f”,stu[5]。

avr);
}。

相关文档
最新文档