logo资料库

上海市计算机二级C语言复习资料__整理版.pdf )

第1页 / 共146页
第2页 / 共146页
第3页 / 共146页
第4页 / 共146页
第5页 / 共146页
第6页 / 共146页
第7页 / 共146页
第8页 / 共146页
资料共146页,剩余部分请下载后查看
上海市高等学校计算机等级考试二级(C 程序设计) 03 年上海市高等学校计算机等级考试试卷 二级 (C 程序设计) (本试卷答卷时间为 120 分钟) 试题一(28 分,每小题 4 分) 解答下列各小题,把正确的解答写在答卷纸的对应栏内。 (1) 设有变量说明: int a=5,b=4,c=3,r1,r2; 请写出执行下列语句后 r1 和 r2 的值。 r1=a>b>c; r2=a>b&&b>c; r1=0 r2=1 (2) 试写出下列算式的 C 语言表达式。 a x | 1 sin 3 log − 75 ° y 2 | exp(ln(a)/3)*sin(75.0/180*3.14)/fabs(x-ln(y)/ln(2)) (3) 执行下列语句后,i,j,k 的值是多少? for (i=k=0,j=6; i void main() { int *a[10],b,c; a[0]=&b; *a[0]=5; c=(*a[0])++; printf(“%d %d\n”,b,c); } b=6 c=5 (5) 设有如下程序: #include void main() { int clock; float f; char cpu[20]; scanf(“%4d%f%s”,&clock,&f,cpu); printf(“%d %.0f %s\n”,clock,f,cpu); } 假设输入数据流为 200015.0 P4 is GOOD!,请写出执行该程序后的输出结果。 2000 15 P4
上海市高等学校计算机等级考试二级(C 程序设计) (6) 下列程序的输出结果是什么? #include main() { int c1=0,c2=0,c3=0,c4=0; char *p=”12395632123378”; while (*p) { switch (*p) { case ‘1’ : c1++; break; case ‘2’ : c2++; case ‘3’ : c3++; break; default : c4++; } p++; } printf(“c1=%d c2=%d c3=%d c4=%d\n”,c1,c2,c3,c4); } c1=2 c2=3 c3=7 c4=5 7 执行下列程序后,s 的值为多少? #define sq(X) X*X void main() { int s=15, a=2, b=1; printf(“s=%d\n”,s=sq(a+b)/sq(a+b)); } s=7 试题二(12 分,每小题 6 分) 阅读下列程序,把程序的输出结果写在答卷纸的对应栏内。 (1)【程序 2.1】 #define N 6 void main() { int i,j,a[N]; for ( i=1; i 1; j--) a[j]+=a[j-1]; for ( j=1; j<=i; j++) printf(“%4d”,a[j]); printf(“\n”); } }
上海市高等学校计算机等级考试二级(C 程序设计) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 (2)【程序 2.2】 #include void fun(char *s) { while (*s) { *s= (*s-‘0’+3)%10+’0’; ++s; } } void main() { char a[]=”314762985”; int i; fun(a+3); for ( i=0; i<3; ++i) printf(“%c\n”,a[3*i+1]); } 1 9 1 试题三(12 分,每小题 6 分) 改错。下列程序中都有三个错误,按原来程序的要求,纠正错误,并以“将#XX 行改为 YYYY”的形式进行解答,代码左边的“#01”、“#02”、…是附加的行号。 (1) 程序 3.1 功能是输入一个字符串,并将其中的字符’a’用字符串”shu”替代后输出。如输 入为”123abcaHello”,则输出为”123shubcshuHello”。 【程序 3.1】 #01 #include #02 void main() #03 { int i; char line[81]; #04 scanf(“%s”,&line); #05 for (i=0; line[i]!=’\n’; i++) #06 if (line[i]==’a’) #07 printf(“shu”); #08 else #09 printf(“%s”,line[i]); #10 } 将第 #04 行改为: scanf(“%s”,line); 将第 #05 行改为: for (i=0; line[i]!=’\0’;i++) 将第 #09 行改为: printf(“%c”,line[i]);
上海市高等学校计算机等级考试二级(C 程序设计) (2) 程序 3.2 实现对输入的长度小于 100 的英文字母(空格表示结束)进行头尾相接,围成 一个环,输出按顺时针方向出现的相邻两个递增字母及其个数(如下图中的 HI,IJ, ST,总共出现 3 次)。 H I T J T A S T V W 【程序 3.2】 #01 #include #02 void main() #03 { char s[100]; #04 int k,len,no; #05 scanf(“%s”,s); #06 len=strlen(s); #07 s[len]=s[0]; #08 s[len++]=’\0’; #09 for ( k=0; k
上海市高等学校计算机等级考试二级(C 程序设计) main() { int i=2,m; scanf("%d",&m); while (i<=m) if (!(m%i)) { printf("%3d",i); m/=i; } else i++; printf("\n"); } (2) 设有一维数组说明 char T[5],存放’A’,’B’,’C’,’D’,’E’五个字母,请编写一个 程序段,按以下格式输出结果。 ABCDE BCDEA CDEAB DEABC EABCD #include #include void fun(char a[],int n) { char k,j,b[20]; for (k=0; k
上海市高等学校计算机等级考试二级(C 程序设计) 试题五(15 分,每空 3 分) 阅读下列问题描述和相应的 C 程序,把应填入其中 (n) 处的内容写 在答卷纸的对应栏内。 【问题描述】 程序 5 不断地从键盘输入字符,直到输入 EOF(Control+Z)为止。对于输入的小写字符, 先转换为相应的大写字符,其它字符不变,然后逐个输出到文件 text.txt 中,行结束符回车 (’\n’)也作为一个字符对待,最后统计文件中的字符个数和行数。 【程序 5】 #include main() { FILE *fp; char c,str[256]; int i=0, no=0, line=0; if ((fp=fopen(“text.txt”, (1) ))==NULL) { printf(“Can’t open this file.\n”); exit(0); } printf(“Please input a string.\n”); while ((c=getchar())!=EOF) { if (c>=’a’&&c<=’z’) (2) fputc( (3) ,fp); } fclose(fp); if (( fp=fopen(“text.txt”,”r”))==NULL) { printf(“Can’t open this file.\n”); exit(0); } while (!feof(fp)) { c= (4) ; no++; if ( (5) ) line++; } printf(“line=%d charcter_no=%d\n”,line,no); fclose(fp); } (1) “w” (2) c=c-32 或 c=c-‘a’+’A’ (3) c (4) fgetc(fp) (5) c==’\n’
上海市高等学校计算机等级考试二级(C 程序设计) 试题六(15 分,每空 3 分) 阅读下列问题描述和相应的 C 程序,把应填入其中 (n) 处的内容写 在答卷纸的对应栏内。 【问题描述】 已知 X 和 Y 是两个整型数组,而且 X 中的数据按从小到大的顺序排列,Y 中的数据按从大 到小的顺序排列。程序 6 将 X 和 Y 中数归并,并按从小到大的顺序保存到整型数组 Z 中, 然后输出数组 Z 中的各个元素。例如,X 数组为{1,12,23,37},Y 数组为{123,78,36, 3},归并后生成的新数组 Z 为{1,3,12,23,36,37,78,123}。 【程序 6】 void sorted(int up[], int down[], int merged[], int n) { int i,j,k,m; i=k=0; j=n-1; while ( (1) ) if (up[i]<=down[j]) { (2) ; i++; k++; } else { merged[k]= (3) ; j--; k++; } if (i==n&&j>=0) for ( ; j>=0; j--) merged[k++]= (4) ; if (j==0&&i
上海市高等学校计算机等级考试二级(C 程序设计) (1) i=0 (2) merged[k]=up[i] (3) down[j] (4) down[j] 2004 年上海市高等学校计算机等级考试试卷 二级(C 程序设计) (本试卷答卷时间为 120 分钟) 试题一(28 分),每小题 4 分) 解答下列各小题,把正确的解答写在答卷纸的对应栏内。 (1) 假设对 n(n>0)个学生按下列方法进行分班:每班 k(k>0)个学生,最后一个 班若不足 k 人也单独编成一个班,试用 C 语言中的条件表达式表示所编 班级个数。 n%k>0?n/k+1:n/k (2) 设有变量定义: struct rec { int x; int y; }s[ ] = {{4,28},{9,36}},*p = s; 99 计算表达式(p->y/p->x*s[1].x+s[1].y)的值。 (3) 写出下列程序的输出结果。 #include void main(){ char s[]=”2473”,c,i; for(i=0;c=s[i];i++){ switch(c-‘0’){ case 2: case 3: putchar(c+4);continue; case 4: putchar(c+4);break; case 5: putchar(c+3); default: putchar(c+2); } putchar(‘\n’); }
分享到:
收藏