void strcpy(char *s,char *t) //s指向目标串,t指向源串 {
while(*t!=?\\0?) // while(*t) {
*s = *t; s++; t++; *s++ = *t++; }
While(*s++=*t++); }
复习要求:知道咯字符串函数的原型和源代码 7. 请将下列程序段的等价代码填写完整。 int i=0,s=0,a[10]; while (i<10) s+=a[i++]; 等价于 int i,s,a[10];
for (i=0,s=0; i<10; s+=a[i++] ); 注意:逗号表达式的使用
《程序设计基础及实验》课程期末考试试卷, 2009年1月15日 6 / 8
8. 下列程序段的输出是__________。
#define FB(a,b) (a*b+1) int k=3;
k= FB(k+1,k-1)-9; printf(\9. 假设有下列函数定义: void foo(int sum) { int j;
for (j = 0; j < 10; ++j) sum += (j + 1) * sum; }
在main函数中有如下代码段: int sum = 0; foo(sum); printf(“%d”, sum);
执行后,输出结果为_________。
10. 用 typedef 写出类型定义 ,使得个元素的整型指针数组类型。 int *p[10];
《程序设计基础及实验》课程期末考试试卷, 2009年1月15日 AIP表示含有10 7 / 8
typedef int *AIP[10]; 11. 下列程序段输出 _____。
char s[]=”abc\\0def\\0ghi”,*sp=s; printf(“%s”,sp+5);
12. 对于以下递归函数f,调用 f (3) 的返回值是_____。 f (int n)
{ return ((n>0) ? 2*f(n-1)+f(n-2) : -1); } 画出执行过程
13. 下列程序段执行后,z的值是 ____。 static struct {
int x, y[3];
} a[3] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}, *p=a+3; int z;
z=*((int *)(p-1)-1);
14. 下列程序段的输出结果是_____. char *a[]={“123”,”456”},**p=a+1; printf(“%s#%c#”,*p+1,**p-1);
试题三、程序阅读题(每小题5分,共30分)
1. 若输入 -6+15*3/5=<回车> , 以下程序的输出结果是
《程序设计基础及实验》课程期末考试试卷, 2009年1月15日 8 / 8
_______。 #include
int m=0, sum=0; char c, oldc='+'; do {
c=getchar();
if(c<='9'&&c>='0')
m=10*m+c - '0';
else {
if(oldc=='+')
sum += m;
else
sum -= m;
m=0;
oldc=c;
printf(\ }
《程序设计基础及实验》课程期末考试试卷, 2009年1月15日9 / 8
} while(c!='='); }
2. 运行下列程序的输出结果是__________。 #include
if( b<=1 ) return;
if(n>b){ fun(n/b, b);
printf(\
}else
printf(\} main() {
fun(13, 2); 1101 putchar(','); fun(33, 5); }
《程序设计基础及实验》课程期末考试试卷, 2009年1月15日 10 / 8