学院领导 审批并签名
A / B卷 广州大学 学年第 学期考试卷
课程 高级语言程序设计 考试形式(开/闭卷,考试/查)
学院 系 专业 班级 学号 姓名 题次 一 二 三 四 五 六 七 八 九 十 总分 评卷人 分数 评分
10 一、
15 40 35 填空题(每空1分,共10分)
1.C源程序的基本单位是( 函数 )。
2.一个C源程序中至少应包含一个( main()函数 )。
3.若a和b均是int型变量,且a和b的初值均为5,则计算表达式 a+=b++ 后,a的值为( 10 ),b的值为( 6 )。
4.若a、b和c均是int型变量,则计算表达式 a=(b=4)+(c=2)后, b值为( 4 ),c值为( 2 )。
5.表达式 8.2-2/3 的计算结果是( 8 )。
6.在C语言中,整数可用三种数制表示,它们分别是( 十进制 )、( 八进制 )和( 十六进制 )。
二、程序计算题(每小题5分,共15分)
1. 以下程序的输出结果是 779 。 # define f(a) printf(“%d”,a) main()
{ int i,b[]={1,2,3,5,7,9,11,13,15},*p=5+b; for(i=3;i;i--) switch(i) { case 1:
case 2: f(*p++); break;
1
case 3: f(*(--p)); } }
2.下列程序的运行结果是 total=114 。 main()
{ int arr_sum(int arr[],int n);
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p,total;
int (*pt)( int arr[],int n); pt=arr_sum; p=a[0];
total=(*pt)(p,12);
printf(“total=%d\\n”,total); }
arr_sum(int arr[],int n) { int i,sum=0; for(i=0;i3.以下有一程序,输出结果是:( 1040 2,0
3,0 main()
{ int x=2,y,z; x*=3+2;
printf(“%d\\n”,x); x*=y=z=4;
printf(“%d\\n”,x); x=y=1; z=x++-1;
printf(“%d,%d\\n”,x,z); z+=-x+++(++y);
printf(“%d,%d\\n”,x,z);
2
)。
}
三、 程序填空题(每空4分,共40分)
1. 输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其他字符不变。请填空。 main() { char ch;
scanf(“%c”,&ch); if( ‘A’<=ch && ch<=’Z’ ) ch=ch+32; else if(ch>=’a’&&ch<=’z’) ch=ch-32 ; }
2. 下面程序的功能是打印100以内个位数为6且能被3整除的所有数。请填空。 #include main() { int i,j;for(i=0; i*10+6<100 ;i++) { j=i*10+6; if( j%3!=0 ) continue; printf(“%d”,j); } }
3、计算圆周率的近似值的公式是:4*(1 - 1/3 + 1/5 -1/7 +........),精度要求为0.00001.请填空使程序正确运行。(6分) #include main() { int s;float pi,item,n; item=1; pi=0; n=1; s=1;
while ( fabs(item)>1e-5 ) { pi=pi+item; s=-s; item= s*1/(n+2) ; n= n+2;
3
}
pi= 4*pi ; printf(\"pi=%f\}
4.以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。如“a”变为“f”,“w”变成“b”。请填空。 #include “studio.h” main() { char c;
c=getchar();
if(c<=’a’&&c<=’u’) c+=5 ; else if(c>=’v’&&c<=’z’) c= ‘a’+ c-‘v’ ; putchar(c); }
5. 鸡兔共有30只,脚共有90只,下面的程序段是计算鸡兔各有多少只,请填空。
for(x=1;x<=29;x++) { y=30-x; if( x*2+y*4 == 90 ) printf(“%d,%d\\n”,x,y); }
四.编程(第1小题20分,第2小题15分,共35分)
1. 编写一个函数atoi,其作用是将一个整数字符串转换成整数(说明:字符串不能进行四则运算,而整数能进行四则运算)。 int atoi(char *str) {
int n,k,i,l; n=0; k=1;
for (l=0; '0'<=str[l] && str[l]<='9';l++);
for (i=l-1; '0'<=str[i] && str[i]<='9' && i>=0 ;i--) {
n += (str[i]-'0')*k;
4
}
}
k *= 10;
return n;
2.利用结构类型编写一个程序,计算一名同学5门功课的平均分,并打印。 struct core { float
score[5];
};
void main() { int i; float f;
struct core student; for (i=0;i<5;i++) { scanf(\"%f\ student.score[i]=f; }
printf(\"\\n\"); for (i=0;i<5;i++)
printf(\"\\n%f\}
5