2006 年上海市高等学校计算机等级考试试卷 二级 ( C 程序设计) (本试卷答卷时间为 120分钟) 试题一(28 分,每小题4 分) 解答下列各小题,把解答写在答卷纸的对应栏内。 ⑴ 设 a, b, c 为整型并且a=3, b=5, c=7;写出下面表达式的值。 (注:对每小题求值时a=3, b=5, c=7 保持不变) ① c>b>a ② c%=a-b%1 ③ b/=c-b%4 ④ ++a==--b ⑵ 简述break 和 continue 语句在使用场合和功能方面的区别。 ⑶ 执行下列程序后的输出结果是什么? void main() { int a, b, c; a=b=1; c=a++,b++,++b; printf("%d,%d,%d\n",a,b,c); } ⑷ 执行下列语句后的输出结果是什么? # include char s1[]="12345", s2[]="1234"; printf("%d\n",strlen(strcpy(s1,s2))); printf("%s\n",s1+s2); ⑸ 写出数学计算式|1|72sinxy的 C 语言表达式。 ⑹ 写出宏定义s(x,y)的含义,执行下列程序后的输出结果是什么? #define s(x,y) x=x+y,y=x-y,x=x-y void main() { int a=12, b=9; s(a,b); printf("a=%d\tb=%d\n",a,b); } ⑺ 用文字描述以下程序段所完成的功能: FILE *fr, fw; fr=fopen("a.txt", "r") fw=fopen("b.txt","w"); while(!feof(fr)) fputc(fgetc(fr),fw); fclose(fr); fclose(fw); 试题二(12 分,每小题6 分) 阅读下列程序,把程序的输出结果写在答卷纸的对应栏内。 ⑴ 【程序2.1】 #define N sizeof(a)/sizeof(a[0]) void main() { int a[6]={ 10, 20, 30, 40},i,*p=a,*p1=&a[5]; p1=p1-4; *p1++=15; *p1=*(++p)*2; for(i=3; i