蚌埠学院2009年专升本专业课考试
《C语言程序设计》试题卷
考生姓名: 准考证号码:
考生须知:1、考生一律在答题卷上答题,在试题卷上答题无效;
2、答题不需要抄写题目,但必须写清题目编号(第几大题第几小题);
3、试题卷、答题卷及草稿纸不准带出考场,离开考场须经监考人员清点;
4、考试时间150分钟;试题满分150分;
5、本试题卷共5页,5大题,(注意反面)。
一.单项选择题(每题1.5分,共45分)
1.______是合法的用户自定义标识符。
A. b-b B.float C.
2.______是不正确的字符常量。
A.'n' B.'1' C."a" D.'\01'
3.表达式______的值是0。
A.3%5 B.3/5.0 C.3/5 D.3<5
4.以下符合C语言语法的实型常量是______。
A.1.2E0.5 B.3.14159E C..5E-3 D.E15
5.对于以下的变量定义,不正确的表达式是______。
struct node{int j,k;}x,*p=&x;
A.p->k=2; B.(*p).k=2; C.x.k=2 D.x->k=2
6.设变量定义为“int s[]="hello\nworld\n";”,则数组s中有______个元素。
A.12 B.13 C.14 D.15
7.下列条件语句中,功能与其他语句不同的是______。
A.if(a) printf("%d\n",x); else printf("%d\n",y);
B.if(a==0) printf("%d\n",y); else printf("%d\n",x);
C.if(a!=0) printf("%d\n",x); else printf("%d\n",y);
D.if(a==0) printf("%d\n",x); else printf("%d\n",y);
8.C标准库函数中,数学函数的原型在______头文件中。
A.stdio.h B.math.h C.string.h D.ctype.h
9.以下选项中非法的表达式是______。
A.x=(a=1,b=a+1) B.i=j==0 C.(char)(65+3) D.x+1=x+1
10.若变量c为char类型,则能正确判断出c为小写字母的表达式是______。
A.'a'<=c<='z' B.(c>='a')||(c<='z') C.('a'<=c)and('z'>=c) D.(c>='a')&&(c<='z')
11. 语句for(a=0,b=0;b!=100&&a<5;a++) scanf("%d",&b); scanf函数的执行次数是______。
A. 4 B. 6 C. 5 D. 1
12.以下定义语句正确的是______。
A.int n=5,a[n][n]; B.int a[][3]={{1,2},{3,4},{5,6}};
C.int a[][3]; D.int a[][]={{1,2},{3,4},{5,6}};
13.有数组定义“char array[]="China";”,则数组 array所占的空间是______。
A.4个字节 B.5个字节 C.6个字节 D.7个字节
14.C语言程序的基本单位是______。
A.函数 B.过程 C.子程序 D.子例程
15. C语言中用于结构化程序设计的三种基本结构是______。
A. 顺序结构、选择结构、模块结构 B. 选择结构、循环结构、模块结构
C. while do-while for D. 顺序结构、选择结构、循环结构
16.以下程序段,while 循环执行的次数是______。
int k=0; while(k=1) k++;
A.无限次 B.有语法错,不能执行 C.一次也不执行 D.执行1次
17.以下对于函数说法错误的是______。
A.函数可以递归调用 B.数组名可以作为函数的实际参数
C.函数可以嵌套定义 D.实际参数和形式参数必须对应
18.设有函数调用语句“func((a1,a2,a3),(a4,a5));”,则函数func中有______个形参。
A.1 B.5 C.2 D.不合法
19.当调用函数时,实参是一个数组名,则向函数传送的是______。
A.数组的长度 B.数组的首地址 C.数组每一个元素的地址 D.数组每个元素中的值
20.以下叙述中不正确的是______。
A.在不同的函数中可以使用相同名字的变量。
B. 函数中的形式参数是局部变量。
C. 在一个函数内的复合语句中定义的变量在本函数范围内有效。
D. 在一个函数内定义的变量只在本函数范围内有效。
21.设变量定义为“int a[2]={1,3}, *p=&a[0]+1;”,则*p的值是______。
A.2 B.3 C.4 D.&a[0]+1
22.下列程序段的输出结果是______。
int *p,*q,k=1,j=10; p=&j; q=&k;p=q;(*p)++; printf("%d",*q);
A.1 B.2 C.10 D.11
23.设变量定义为“int a[4];”,则不符合C语言语法的表达式是______。
A.*a B.a[0] C.a D.a++
24.不正确的赋值或赋初值的方式是______。
A.char str[]="string"; B.char str[10]; str="string";
C.char *p="string"; D.char *p; p="string";
25.设变量定义为“int x, *p=&x;”,则&*p相当于______。
A.p B.*p C.x D.*&x
26.若有以下定义,则值为4的表达式是______。
int a[]={1,2,3,4,5,6,7,8,9,10},*p=a;
A.p+=3,*(p++) B.p+=3,*++p C.p+=4,*p++ D.p+=4,++*p
27.程序中对fun函数的说明为“void *fun();”,此说明的含义是______。
A.fun函数无返回值 B.fun函数的返回值可以是任意的数据类型
C.fun函数的返回值是无值型的指针类型 D.指针fun指向一个函数,该函数无返回值
28.有数组定义“int a[3][4];”,不能表示a[1][1]的是______。
A.*(a[1]+1) B.*(&a[1][1]) C.(*(a+1))[1] D.*(a+5)
29.不合法的main函数命令行参数表示形式是______。
A.main(int a,char *c[]) B.main(int arc,char **arv)
C.main(int argc,char *argv) D.main(int argv,char *argc[])
30.下列关于C语言数据文件的叙述中正确的是______。
A.文件由ASCII码字符序列组成,C语言只能读写文本文件
B.文件由二进制数据序列组成,C语言只能读写二进制文件
C.文件由记录序列组成,可按数据存放形式分为二进制文件和文本文件
D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
二、填空题(每题2分,共30分)
1.一个C语言编写的程序是从______开始执行的。
2.一个C语言程序的开发过程包括:编辑、______、连接和运行4个步骤。
3.C语言源程序文件的扩展名是______。
4.表达式 !!5的值是______。
5.设ch是字符型变量,判断ch为英文字母的表达式是______。
6.执行下列语句后,变量i的值是______。
int i; for(i=1;i++<=5;);
7.若在程序中用到putchar函数,应在程序开头写上包含命令______,若在程序中用到strlen函数,应在程序开头写上包含命令______。
8.下面程序的运行结果是______。
char c[5]={'a','b','\0','c','\0'}; printf("%s",c);
9.定义“double w[10];”,则w数组元素下标的上限是______,下限是______。
10.数组 int a[3][4];共定义了______个数组元素。
11.C语言的预处理语句以______开头。
12.下列程序段的输出结果是______。
#define MIN(x,y) (x)<(y)?(x):(y)
printf("%d",10*MIN(10,15));
13.对于以下递归函数f,调用f(3)的返回值是______。
f(int n)
{return((n<=0)?n:f(n-1)+f(n-2));}
14.下列程序段的输出结果是______。
char *st[]={"abcd","efgh","ijkl","mnop"}; printf("%s", *(st+1)+1);
15.变量a所占内存字节数是______。
union U
{
char st[4];
int i;
long l;
};
struct A
{
int c;
union U u;
}a;
三、程序填空题(每题7分,共21分)
1.程序功能:从键盘上输入若干个学生的成绩(当输入为负数时结束输入),统计并输出最高成绩和最低成绩。
#include
main()
{
float x,amax,amin;
scanf("%f",&x);
amax =x;
amin=x;
while(_ _①___)
{
if( x>amax ) amax=x;
if(___②___) amin=x;
scanf("%f",&x);
}
printf("\namax=%f\n amin=%f\n",amax,amin);
}
2.程序功能:调用swap函数交换a和b的值,并输出交换后a和b的值。
void main()
{
int a=3, b=5;
swap( ③ );
printf("After swap %d,%d",a,b);
}
swap(int *p, int *q )
{
int t;
④ ;
⑤ ;
⑥ ;
}
3.程序功能:统计输入字符中每个大写字母的个数,#号为输入结束标志。
#include
#include
main()
{
int num[26],i; char c;
for(i=0;i<26;i++) num[i]=0;
while( ⑦ !='#') /*统计输入的大写字母个数*/
if(isupper(c)) num[c-65]+=1;
for(i=0;i<26;i++) /*输出大写字母和该字母的个数*/
if(num[i]) printf("%c:%d\n",i ⑧ ,num[i]);
}
四、程序阅读题(每题6分,共24分)
1.输入1,输出结果是______。
main()
{
int sum=0,n;
scanf("%d",&n);
while(n<=5)
{
sum+=n;
n++;
}
printf("sum=%d",sum);
}
2.输出结果是______。
#include
int f(int m)
{
static int k=0;
int s=0;
for(;k<=m;k++) s++;
return s;
}
void main()
{
int s1, s2;
s1=f(5);
s2=f(3);
printf("%d %d\n",s1,s2);
}
3.输出结果是______。
#include
main()
{
int y=9;
for(;y>0;y--)
if(y%3==0)
{
printf("%d",--y);
continue;
}
}
4.输出结果是______。
main()
{
int c[]={10,0,-10};
int *k=c+2;
printf("%d",*k--);
}
五、编程题(每题10分,共30分)
1.已知三角形的三边长,求三角形的面积。
要求:三边长从键盘输入(a、b、c),要考虑数据输入是否正确,能否构成三角形等情况。
提示:s=(a+b+c)/2,面积为
2.完成一个4位数的倒序输出。要求在主函数中输入一个4位数,然后调用自定义reverse函数,将该数倒序输出。如:输入的数为1234,则输出为4321。
3.一个5×5二维数组(要求通过键盘为其赋值),求其周边元素之和以及该数组中值最小的元素值,然后输出。
蚌埠学院2009年专升本专业课考试
《C语言程序设计》试题卷答案
一.单项选择题(每小题1.5分,共45分)
1-10 D C C C D B D B D D
11-20 C B C A D A C C B C
21-30 B B D B A A C D C D
二、填空题(每题2分,共30分)
1.main
2.编译
3..C
4.1
5.(ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')
6.7
7.#include "stdio.h" #include "string.h"
8.ab
9.9 0
10.12
11.#
12.15
13.-2
14.fgh
15.6
三、程序填空题(每题7分,共21分)
1.①x>=0 ②x
2.③&a, &b ④t=*p ⑤*p=*q ⑥*q=t
3.⑦(c=getchar()) 注意,外层括号不得遗漏
⑧+65 或 +'A'
四、程序阅读题(每题6分,共24分)
1.sum=15
2.6 0
3.8 5 2
4.-10
五、编程题(每题10分,共30分)
1.
#include
#include
main()
{
float a,b,c,s,s1;
printf("Please enter 3 reals:\n");
scanf("%f%f%f",&a,&b,&c);
if((a+b)>c&&(a+c)>b&&(b+c)>a)
{
s=(a+b+c)*0.5;
s1=s*(s-a)*(s-b)*(s-c);
s=sqrt(s1);
printf("\nArea of the triangle is %f\n",s);
}
else
printf("It is not triangle!\n");
}
2.
void reverse(int num)
{
int i,j,k,m;
i=num/1000;
j=num/100-i*10;
k=num/10-i*100-j*10;
m=num%10;
m=m*1000+k*100+j*10+i;
printf("倒序为:%d",m);
}
main()
{
int number;
printf("请输入一个四位数:");
scanf("%d",&number);
if(number>999&&number<10000)
reverse(number);
else printf("输入错误!");
}
3.
main()
{
int a[5][5],i,j,sum=0,min;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
min=a[0][0];
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(i==0||i==4) sum=sum+a[i][j];
else if(j==0||j==4) sum=sum+a[i][j];
if(min>a[i][j]) min=a[i][j];
}
printf("sum=%d,min=%d",sum,min);
}
本文来源:https://www.2haoxitong.net/k/doc/85a8e0774a2fb4daa58da0116c175f0e7dd11917.html
文档为doc格式