华侨大学2013年C暑期重修试卷
华侨大学本科考试卷
2013暑期独立重修班
学院 全校公共课 课程名称 高级语言程序设计 考试日期2013/08/29
姓名 专 业 学 号
题 号 一 二 三 四 五 总分
得 分
一、单项选择题 (20分,每小题2分)
1. 在,语言中,合法的字符常量是( )。
A) '字' B) "A" C) "ABC" D) '\x41' 2. C语言的下列运算符中,优先级最高的运算符是( )。
A) ++ B) += C) || D) !=
3. 已知'A'的ASCII码的十进制值为65,'0'的ASCII码的十进制值为48,则以下程序运行结
果是( )。
#include
void main(){
char ch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);
}
A) 67,D B) C,D C) C,68 D) 67,68 4. 下列语句中,符合C语言语法的赋值语句是( )。 A) a=7+b+c=a+7; B) a=7+b++=a+7;
C) a=7+b,b++,a+7; D) a=7=b,c=a+7;
5. 以下程序运行时,若从键盘输入5,则输出结果是( )。 #include
void main(){
int a;
scanf("%d",&a);
if(a++>5) printf("%d\n",a);
else printf("%d\n",a--);
}
A) 7 B) 4 C) 5 D) 6 6. 有以下程序:
#include
void main(){
1
int c;
while((c=getchar())!= '\n') {
switch(c-'2') {
case 0 :
case 1 : putchar(c+4);
case 2 : putchar(c+4); break;
case 3 : putchar(c+3);
default: putchar(c+2); break;
}
}
printf("\n");
}
当输入:247<回车>,程序的输出结果是( )。
A) 689 B) 6689 C) 66778 D) 66887
7. 以下程序运行后,a的值是( )。 #include
voidmain(){
int a,b;
for(a=1,b=1;a<=100;a++) {
if(b>=20) break;
if(b%3==1) { b+=3; continue; }
b-=5;
}
}
A) 101 B) 100 C) 8 D) 7
8. 以下程序段的运行结果是( )。 int x=3;
do{
printf("%3d, ", x-=2 );
}while(!(--x));
A) 1 B) 30 C) 死循环 D) 1, -2
9. 下列程序段中,非死循环的是( )。
A) int i=100;
while(1) {
i=i%100+1;
if(i>=100) break;
}
B) int k=0;
do{
++k;
}while(k>=0);
C) int s=10;
while(++s%2+s%2) s++;
D) for(;;)
2
10. 设已定义char s[ ]="\"Name\\Address\023\n";,则字符串所占的字节数是( )。
A) 19 B) 16 C) 18 D) 14
11. 以下程序段的运行结果是( )。
#include
void main(){
int i=4,j;
j=i;
pic(i+2*j-2,'*');
putchar('\n');
for(j-=2;j>=0;j--) {
pic(3-j, ' ');
pic(i+2*j, '*');
putchar('\n');
}
}
pic(int len,char c){
int k;
for(k=1;k<=len;k++) putchar(c);
}
A) *
***
*****
*******
B) **********
**********
**********
**********
C) ****
******
********
**********
D) **********
********
******
****
12. 设有下列语句,则( )是对a数组元素的不正确引用,其中0?i<10。
int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a; A) a[p-a] B) *(&a[i]) C) p[i] D) *(*(a+i))
13. 设有下列语句:
char str1[]="string",str2[8],*str3,*str4="string"; 则( )是对库函数strcpy的不正确调用。此函数用来复制字符串。
A) strcpy(str3,"HELLO3"); B) strcpy(str2,"HELLO2");
C) strcpy(str1,"HELLO1"); D) strcpy(str4,"HELLO4");
14. 以下程序的运行结果是( )。
3
#include
fun3(int x){
static int a=3;
a+=x;
return a;
}
void main(){
int k=2,m=1,n;
n=fun3(k);
n=fun3(m);
printf("%d\n",n);
}
A) 3 B) 4 C) 6 D) 9 15. 下程序的运行结果是( )。
#include
void ast (int x,int y,int *cp,int *dp){
*cp=x+y; *dp=x-y;
}
void main(){
int a=4,b=3,c,d;
ast(a,b,&c,&d);
printf("%d,%d\n",c,d);
}
A) 7,1 B) 1,7 C) 7,-1 D) c、d未赋值,编译出错
16. 以下程序段的运行结果是( )。 enum weekday{ aa,bb=2,cc,dd,ee }week=ee; printf("%d\n",week);
A) ee B) 5 C) 2 D) 4 17. 若定义如下结构,则能打印出字母M的语句是( )。
struct person{
char name[9];
int age;
};
struct person class[10]={"Wujun",20,
"Liudan",23,
"Maling",21,
"zhangming",22};
A) printf("%c\n",class[3].name); B) printf("%c\n",class[2].name[0]);
C) printf("%c\n",class[2].name[1]); D) printf("%c\n",class[3].name[1]);
18. 以下程序的输出结果是( )。
#include
void main(){
printf( "%d\n", fac(5) );
}
4
fac(int n){
int s;
if(n==1) return 1;
else return n*fac(n-1);
}
A) 120 B) 60 C) 6 D) 1 19. 以下程序中的循环执行了( )次。 #include
#define N 2
#define M N+1
#define NUM (M+1)*M/2
void main(){
int i,n=0;
for(i=0;i
void main(){
FILE *fp;
long int n;
fp=fopen("wj.txt","rb");
fseek(fp,0,SEEK_END);
n=ftell(fp);
fclose(fp);
printf("%ld",n);
}
A) 计算文件wj.txt的起始地址 B) 计算文件wj.txt的终止地址
C) 计算文件wj.txt的长度 D) 将文件指针定位到文件末尾
二、程序填空题(在每对“/**/”之间的空白处补充程序,以完成题目的要求)
1. 下面程序的功能是:以键盘输入两个正整数中的小数为下界、大数为上界,按由小到大
的次序输出该区间内除以3余数为1的数(含上下界端点)。例如:
输入:30,7
输出:7 10 13 16 19 22 25 28
请填空补充完成程序。
#include
void main(){
int /**/ /**/;
printf("Please input a,b :");
scanf("%d,%d",&a,&b);
if (a>b) {
s=a+b;
/**/ /**/;
5
b=s-b;
}
while(a<=b) {
if(a%3==1) printf(" %d ", a );
a+=/**/ /**/ ;
}
printf("\n");
}
2. 下面程序中my_pow(float x,int n)函数的功能是:根据参数x和n,利用循环语句
n计算并返回的值。例如: x
输入:3.5,3
输出:my_pow(3.500000,3)=42.875000
请填空补充完成程序。
#include
void main(){
float x;
int n;
double my_pow(float,int);
printf("Please input x,n :");
scanf("%f,%d",&x,&n);
printf("my_pow(%f,%d)=%lf\n",x,n,my_pow(x,n)); }
double my_pow(float x,int n){
int i;
double /**/ /**/;
if(n>0)
for( i=1;i<=n;i++) z=/**/ /**/;
else if(n<0) {
for(i=1;i<=-n;i++) z=z/x;
}
else z=1.0;
return (/**/ /**/);
}
四、改错题(修改程序中在每对“/**/”之间存在的错误)
1.下面程序的功能是:计算数组a中所有元素的平均值,依次输出与该平均值的差的绝对
值小于或等于2.5的所有元素。
#include
#include
#define N 22
void main(){
float arr[N]=
{12,13,13.8,14.2,13.6,11.7,9.3,8.6,7.5,8,9,10.7,12.3,15.2,16.1,15.6,14.9,13.2,11.7,10.6,9.4,6};
6
float aver,sum=0;
/**/ int i; /**/
while(i
#define N 12
void main(){
int a[N];
/**/ int i,j; /**/
printf("Enter %d numbers:",N);
for(i=0;ia[j]){
temp=a[j];
/**/ a[i]=a[j]; /**/
a[i]=temp;
}
printf("Sorted numbers :\n");
for(i=0;/**/ i<=N /**/;i++) printf("%d ",a[i]);
printf("\n");
}
五、编程题(25分,第一题10分,第二题15分)
1. 完成下面程序中的函数fun(),该函数的数学表达式是:
20.16(x,5.8)cos(2x)fun(x)= 2x,1.2,|sin(x)|
例如:fun(-2.7) = 0.017
#include
#include
double fun(double x){
/**/
/**/
7
}
void main(){
printf("fun(2.7) = %7.3lf\n", fun(2.7)); }
2. 完成下面程序中的函数fun(int a[N][N]),该函数实现的功能是:输入二维数组a表
示的对称矩阵的下三角元素值(包括对角线),根据下三角元素填充上三角元素。程序最后
按行列顺序,输出填充后的矩阵所有元素。例如:N为3时,
输入:1
-2 3
4 -5 6
输出:1 2 4
-2 3 -5
4 -5 6
#include
#define N 3
void fun(int a[N][N]){
/**/
/**/
}
void main(){
int b[N][N],i,j;
fun(b);
for(i=0;i