《C语言程序设计》试卷 A卷
注意:答案请填写在答题纸上!
一、 填空題(每空1分,共20分)
1.C程序是由 构成的,一个C源程序至少且仅包含一个 。
2.C语言规定标识符只能由 、 和下划线3种字符组成,且第一个字符必须为 或下划线。
3.计算机科学家沃思提出的一个公式:数据结构+算法= 。
4.Turbo C++中,若有语句:int a;则a的范围是-32768~ 。
5.C中的转义符“\n”表示: 。
6.表达式 21 % 4 的值为 。
7.C语言中没有专门的 变量,如果想将一个字符串存放在变量中以便保存,必须使用字符数组。
8.已知a=79.345,则表达式 (int)a 的值为 。
9.表达式 3 & 2 的值是 。
10. 若a=5,经a+=3;后a= 。
11.已知ch='B',则表达式【(ch>='A ' && ch<='Z')? (ch+32):ch 】的值为 。
12.C中定义符号常量PI为3.14159的宏命令是 。
13.函数形参和调用的实参是普通变量时,参数按 方式进行传递。
14.C中逻辑运算符的优先次序是: à à 。
15.定义一个共用体变量,共三个成员分别是字符型、整形和浮点型,则该共用体变量所占内存长度为 个字节。
二、 单项选择题(每题2分,共40分)
1.下列C语言标识符中,合法的是………………………………………………( )
A. if B. return
C. 23a D. a23
2.欲从键盘给整型变量a赋值3,b赋值2,则对应语句 scanf("%d,%d",&a,&b); 的输入格式是………………………………………………………………………( )
A. 3 2 B. 2,3
C. 2 3 D. 3,2
3. C语言源程序文件经过C编译程序编译连接之后生成的文件后缀名是……( )
A. .exe B. .obj
C. .bat D. .c
4.结构化程序设计的三种基本结构是…………………………………………( )
A. 顺序结构、复杂结构、循环结构
B. 顺序结构、复杂结构、分支结构
C. 顺序结构、分支结构、选择结构
D. 顺序结构、选择结构、循环结构
5.以下表达式中,值为0的是…………………………………………………( )
A. 4%5 B. 4/5.0
C. 4/5 D. 4<5
6.设下列表达式中所涉及的变量均已正确定义,则不符合C语言语法的是…( )
A. 4&&3 B. a++
C. a=b=5 D. int(3.14159)
7.设变量定义为【int a[3]={1,3,5}, *p=&a[0]+1; 】,则*p的值是…………( )
A. 2 B. 3
C. 4 D. &a[0]+1
8. 在C 语言程序中,在函数内部定义的变量称为……………………………( )
A. 全局变量 B. 外部变量
C. 全程变量 D. 内部变量
9. 对于以下的变量定义,正确的表达式是……………………………………( )
struct node {
char s[10];
int k;
} p[4];
A. p->k=2 B. p[0]->k=2
C. p(0)->k=2 D. p->s='a'
10.若变量c为char类型,则能正确判断出c为小写字母的表达式是…………( )
A. (c>= 'a')||(c<= 'z') B. 'a'<=c<= 'z'
C. (c>= 'a')&&(c<= 'z') D. ('a'<=c)and ('z'>=c)
11.C语言中以“只读”方式打开文件,应选择的参数是…………………………( )
A. o B. w
C. a D. r
12.设变量定义为【int a[2][3]={1,2,3,4,5,6}, *p=a[1]; 】,则p的值是…( )
A. 数组a的首地址
B. 数组a的第1个元素的地址
C. 数组a的第“1”行的首地址
D. 数组a的第“1”列的首地址
13.用链表表示线性表的优点是………………………………………………( )
A. 便于随机存取
B. 便于插入和删除操作
C. 花费的存储空间较顺序存储少
D. 数据元素的物理顺序与逻辑顺序相同
14. 结构化程序设计主要强调的是……………………………………………( )
A. 程序的规模
B. 程序设计语言的先进性
C. 程序的效率
D. 程序清晰的结构
15.以下表达式中,不正确的字符常量是………………………………………( )
A. 'n’ B. "a"
C. '2’ D. '\101’
16. 若【int x=12,*p=x;】,则正确的赋值表达式是……………………………( )
A. p=x B. p=*x
C. *p=x D. *p=*x
17.设有如下程序段:
int i=5;
for(;i<=10;)i++;
执行完这段程序后,i的值是………………………………………………( )
A. 5 B. 6
C. 10 D. 11
18.设有如下程序段:
int i=15;
while(i<15)i++;
则以下描述中正确的是……………………………………………………( )
A. 循环体语句执行15次
B. 这是一个死循环
C. 循环体语句一次也不执行
D. 循环体语句只执行一次
19.设有如下程序段:
char a[2][6]={"abcde","uvwxy"},*p=a[1];
printf("\n%s",p);
这段程序执行后,屏幕输出的结果是………………………………………( )
A. abced B. uvwxy
C. b D. v
20.设有如下程序段:
union
{
int i;
char c;
}a;
a.i=12;
a.c='A';
printf("\n%d",a.i);
这段程序执行后,屏幕输出的结果是………………………………………( )
A. 12 B. 97
C. 65 D. A
三、 程序填空(每空3分,共15分)
1.已知fibonacci数列:1,1,2,3,5,8,......,它可由下面公式表述:
F(1)=1 n=1
F(2)=1 n=2
F(n)=F(n-1)+F(n-2) n>2
以下程序的功能是求F(49)的值,请在下划线处填上正确内容,使程序能正确运行。
#include
#include
#include
main()
{
int i;
double f[50];
f[1]= ;f[2]= ;
for(i=3;i<=49;i++)
f[i]= ;
printf("f[49]=%12.0lf",f[49]);
}
2.以下程序的功能是用递归法求n!,请在下划线处填上正确的语句,使程序能正确运行。
#include
long f(int n)
{
if(n==1)return( );
else return ( );
}
main()
{
int n;
printf("n=");
scanf("%d",&n);
printf("%d!=%ld",n,f(n));
}
四、 写出以下程序运行结果(每题4分,共12分)
1.以下程序输出的结果是:
#include "stdio.h"
void main()
{
char s[]="hello\nworld";
printf("%s",s);
}
2.以下程序输出的结果是:
#include "stdio.h"
void main()
{
int i,g,s,b,q;
for(i=1234;i<1236;i++)
{
g=i/1 %10;
s=i/10 % 10;
b=i/100 % 10;
q=i/1000 % 10;
printf("%d%d%d%d\n",g,s,b,q);
}
}
3. 以下程序输出的结果是:
#include "stdio.h"
void main()
{
char ch[]="I-love-Great-Wall-of-China!";
char *p=ch;
printf("%c",*(p+5));
}
五、 编程题(第1题5分,第2题8分,共13分)
1.将一张百元大钞对换成1元、5元、10元的小钞,要求每种小钞最少要一张,编程求共有多少种对换方法。
2.编程输出所有"水仙花数"。(一个三位数等于它每一位数字的立方和,那么我们称这个数为"水仙花数" )
《C语言程序设计》试卷 A卷参考答案及评分标准
一、 填空題(每空1分,共20分)
1
函数
主函数 或 main函数
2
字母
数字
字母
3
程序
4
32767
5
换行
6
1
7
字符串
8
79
9
2
10
8
11
b 或 98
12
#define PI 3.14159
13
值传递 或 传值
14
!
&&
||
15
4
二、 单项选择题(每题2分,共40分)
1
2
3
4
5
6
7
8
9
10
D
D
A
D
C
D
B
D
A
C
11
12
13
14
15
16
17
18
19
20
D
C
B
D
B
C
D
C
B
C
三、 程序填空(每空3分,共15分)
1
1
1
f[i-1]+f[i-2]
2
1
n*f(n)
四、 写出以下程序运行结果(每题4分,共12分)
1. Hello
world
评分标准:输出内容正确扣得分,格式正确得2分
2. 5321
3. e
五、 编程题(第1题5分,第2题8分,共13分)
1.参考程序:
#include "stdio.h"
void main()
{
int y,w,s,n=0;
for(y=1;y<100;y++)
for(w=1;w<20;w++)
for(s=1;s<10;s++)
if(100==y+w*5+s*10)n++;
printf("n=%d",n);
}
评分标准:程序结构正确得3分,算法正确得2分
2.参考程序:
#include "stdio.h"
void main()
{
int i,g,s,b,m;
for(i=100;i<=999;i++)
{g=i%10;
s=i/10%10;
b=i/100%10;
m=g*g*g+s*s*s+b*b*b;
if(i==m)printf("\n%d",i);
}
}
评分标准:程序结构正确得4分,算法正确得4分