一、单项选择题(在每小题的四个备选答案中,选出一
个正确的答案,并将其代码填入题干后的括号内。
每小题1分,共20分)
1.程序中定义以下宏 #define S(a,b) a*b
若定义 int area; 且令area=S(3+1,3+4),则变量area的值为( )
A 10 B 12 C 21 D 28
2.正确的标识符是 ( )
A ?a B a=2 C a.3 D a_3
3.表达式1&3&5&7的值为 ( )
A 1 B 3 C 5 D 7
4.语句printf(″s\\t″)的输出结果为 ( )
A s\\t B s\t C s\ D s
5. 执行下列语句中,sum变量的值是 ( )
int sum=0
for(int i=0;i<10;i++,sum+=i);
A 45 B 55 C 0 D 编译错误
6.已知有共用体变量data1定义如下:
union data
{ int i;
char ch;
float f;
} data1; 则变量data1所占的内存存储空间可表示为 ( )
A size of(int) B size of(char)
C size of(float)
D size of(int)+size of(char)+size of(float)
7.若fp是指向某文件的指针,且feof(fp)的返回值是非零值,则表示
( )
A 已读到此文件末尾 B 未读到此文件的末尾
C 此文件已关闭 D 此文件尚未被打开
8.以下c语言函数声明中,不正确的是 ( )
A void fun (int x, int y); B fun (int x, int y);
C int fun (int x,y); D char *fun (char *s);
9.下列选项中,不合法的C语言关键字是 ( )
A auto B default C static D var
10.若x=4,则x*=x+2的值为 ( )
A 36 B 24 C 18 D 20
11.函数调用语句func((exp1,exp2),(exp3,exp4,exp5));中,实参的个
数为 ( )
A 1 B 2 C 4 D 5
12.设a为5,执行下列语句后,b的值不为2的是 ( )
A b=a/2 B b=6-(--a)
C b=a%2 D b=a>3?2:1
13.假设指针p1已经指向了某个整型变量,要使指针p2也指向同一个变量,则下面各项中正确的是( )
A p2=**p1 B p2=*&p1
C p2=*p1 D p2=&*p1
14.以下运算符中,运算对象必须是整型的是 ( )
A / B %= C != D 〈=
15.以下关于typedef的叙述中错误的是 ( )
A 用typedef可以增加新的类型
B 用typedef可以定义各种类型名,但不能用来定义变量
C 用typedef只是将已有的类型用新的标识符来代表
D 使用typedef有利于程序的通用和移植
16.若执行完成下列语句:
int a=3,b=6,c;
c=a∧b<<2;
则变量c的二进制值为 ( )
A 00011100 B 00010100 C 0001000 D 00011011
17.设有定义int x=1; int y=‘a’<‘A’?x--:x++;,则变量y的值是
( )
A 0 B 2 C 1 D 3
18.以下关于宏替换的叙述不正确的是 ( )
A 宏替换只是字符替换 B 宏名无类型
C 宏替换不占用运行时间 D 宏替换不占用编译时间
19. 以下对枚举类型名的定义中正确的是 ( )
A enum s={a,b,c} B enum s {a=9,b=2,c}
C enum s={′a′, ′b′, ′c′}
D enum s{′a′, ′b′, ′c′}
20. 假设指针p已经指向某个整型变量x,则*p相当于 ( )
A &x B &p C x D *x
二、多项选择题 (在每小题的五个备选答案中,选出二
至五个正确答案,并将其代码填写在题干后的括号
内;错选、多选不得分。每小题2分,共10分)
1. C语言中的文件类型有 ( )
A 索引文件 B 文本文件 C ASCII文件
D 二进制文件 E 随机文件
2. 以下关于C语言中循环的描述正确的是 ( )
A 在while和do-while循环体内应包含使循环趋于结束的语句
B do-while的循环体不能是复合语句
C do-while的循环体至少无条件执行一次
D 在for循环中可以使用break语句跳出循环体
E for循环只能用于循环次数已经确定的情况
3. 合法的变量名有 ( )
A a_1_2 B b2 C _abc D ABC E $1
4. 整型变量的类型标识符是 ( )
A short B long C Unsigned int
D int E char
5. 以下叙述中正确的是 ( )
A 一个C语言程序有且仅有一个main函数
B C语言程序中,main函数是没有参数的
C 一个函数通过其他函数间接的调用了自身,这种情况也是一种递归
调用
D main函数是由系统调用的
E 若要通过函数参数带回一个或多个返回值,则应使用按地址传送的
参数结合方式
三、判断题(认为对的,在题后的括号内打″√″,认
为错的打″×″。每小题1分,共6分)
1.若有说明int c;则while (c=getchar());是错误的C语句。( )
2.C语言中,共用体类型的变量在程序运行期间,所有成员都在内存中。
( )
3.在一个函数内部的复合语句中定义的变量,只在该复合语句范围内有效。
( )
4.C语言程序中,一个文件中的函数可以引用存储在另一个文件中的函数
和变量。 ( )
5.使用continue和break语句,都可以使得C程序的执行直接从循环中
跳出。 ( )
6.若a为一维数组名,则*(a+i)与a[i]等价。 ( )
四、阅读程序,将程序运行结果填写到题后的横线上
(每小题5分,共25分)
1. #include ″stdio.h″
main()
{ static char str[]=″Language″;
char *s=&str[8];
while (--s>=&str[0]) putchar (*s);
putchar(′\n′);
}
输出结果:___________________________
2. main( )
{ int a[6]={12,4,17,24,27,16};
int b[6]={27,13,4,25,23,16};
for (int i=0;i<6;i++)
{ for (int j=0;j<6;j++)
if (a[i]==b[j])
break;
if (j<6) printf(″%d″,a[i])
}
}
输出结果:_____________________________
3. #include <stdio.h>
int mian( )
{ int i=0,sum=0;
while (1)
{ sum+=i;
i++;
if (i>5) break;
}
printf (″sum=%d\n″,sum);
}
程序运行结果:
4. int fun(int n)
{ if (n>0)
return n*fun(n-1);
else
return 1;
}
main()
{ int a=fun(4);
printf(″a=%d\n″,a);
}
程序运行结果:____________________
5. fun (int i)
{ static int s=3;
s+=i
return (s);}
main()
{ int a=2,b=1,s;
s=fun(a); s=fun(b);
printf(″%d\n″,s);}
程序运行结果:____________________
五、程序填空题(根据题意要求,将程序补充完成。每
空2分,共22分)
1.以下程序输入整数a,b的值,然后交换a,b的值,并输出交换后的结果。
Vodi swap(①_________________)
{ int t;
t=*a;
②__________________
③__________________
}
main()
{ int a,b;
scanf(″%d,%d″,&a,&b);
④_____________________
printf(″a=%d,b=%d″,a,b);
}
2.以下程序的功能是:从键盘输入一串字符(以回车换行符结束),统计
其中小写英文字母的个数,将结果保存在变量count中。
main()
{
int ①__________________;
char c;
②______________________
while (c!=′\n′)
{
if (③______________________)
④______________________;
c=getchar();
}
printf(″have typed %d lower letters″,count);
}
3. 下面程序的功能是用函数递归方法计算菲波那契数列,请填空完善之。
main()
{ int n,m;
scanf(″%d″,&n);
m=①__________________;
printf(″%d″,m);
}
int fibo(n);
int n;
{ if(n==1) ②___________________;
else if(n==2) return(1);
else return (③_________________);
}
六、编程题(第1小题8分,第2小题9分,共17分)
1.求出10至1000之内能同时被2、3、7整除的数,并输出。
2.输出整数n,求表达式
的值。要求,程序中求2x的功能部分必须在一函数中完成,函数名使
用expt。
试题参考答案及评分标准
一.单项选择题(每小题1分,共20分)
1.A 2.D 3.A 4. B 5.B 6.C 7.A 8.C
9.D 10.B 11.B 12.C 13.D 14.B 15.A 16.D
17.C 18. D 19. B 20. C
二.多项选择题(错选、多选不得分。每小题2分,共10分)
1.B C D 2.A C D 3.A B C D 4.A B C D 5.A C D E
三.判断题(每小题1分,共6分)
1.× 2.× 3.√ 4.√ 5.× 6.√
四、阅读程序,将程序运行结果填写到题后的横线上(每小题5分,共25分)
1. egaugnal 2. 4 27 16 3. 15 4. 24 5. 6
五.程序填空题(每空2分,共22分)
1.① int *a, int *b ② *a=*b; ③ *b=t; ④ swap(&a,&b);
2. ① count=0 ② c=getchar(); (或scanf″%c″,&c);)
③ c>=′a′&&c<=′z′ ④ count++;
3. ① fibo(n) ②return(o) ③fibo(n-2)+fibo(n-1)
六.编程题(第1小题7分,第2小题8分,共15分)
1. main()
{ int i;
for (i=10; i<=1000; i++)
if (i%2==0&& i%3==0&& i%7==0)
printf(″%5d″,i);
}
2. #include <stdio.h>
float expt(int n)
{ float r=1;
if (n>0)
for(int i=0; i<n; i++) r*=2;
return r:
}
main()
{ int n;
float sum=0;
scanf(″%d″,&n);
for (int i=0;i<=n;i++)
for(int j=0;j<=i;j++)
sum+=expt(j);
printf(″%f″,sum);
}
正文
甘肃省2003年10月高等教育自学考试C语言程序设计试卷(应用型专科)2005-06-05 22:28:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/yaozheng/1501.html
阅读(6949) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论