2006 年上海市高等学校计算机等级考试试卷 二级 (C 程序设计) (本 试 卷 答 卷 时 间 120 分 钟 ) 试题一(28 分,每小题4 分) 解 答 下 列 各 小 题 ,把 解 答 写 在 答 题 卷 的 对 应 栏 内 。 (1) 设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 (2) 简述break 和continue 语句在使用场合和功能方面的区别。 Break 结束本级循环 Continue 结束本次循环 ,进行下一次循环 (3) 执行下列程序后的输出结果是什么? void main(){ int a,b,c; a=b=1; c=a++,b++,++b; printf(“%d,%d,%d\n”,a,b,c); } (4) 执行下列语句后的输出结果是什么? #include char s1[]=”12345”,s2[]=”1234”; printf(“%d\n”,strlen(strcpy(s1,s2))); 即 s1[]=”1234” printf(“%s\n”,s1+2); (5) 写出数学计算式y=√(sin72°/|1+x|)的C 语言表达式。 y=sqrt(sin(72*3.14158/180)/abs(1+x)) (6) 写出宏定义 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); } (7) 用文字描述以下程序段所完成的功能: FILE*fr,*fw; fr=fopen(“a.txt”,”r”) /*以只读的方式打开文件 a.txt , 文件指针是fr*/ fw=fopen(“b.txt”,”w”) /*以只写的方式打开文件 b.txt , 文件指针是fw */ while (!feof(fr)) /*当指针 fr 没指到结束符时 */ fputc(fgetc(fr),fw); /*从指针 fr 处读入一个字符 写到指针 fw 所指处 */ fclose(fr); /* 关闭指针 fr 所指文件 */ fclose(fw); /* 关闭指针 fw 所指文件 */ 试题二(12 分,每小题6 分) 阅 读 下列程序,把程序输出的结果写在答题纸的对应栏内 (1)【程序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