2024年上海市高等学校计算机等级考试试卷。
二级 (c程序设计)
本试卷答卷时间为120分钟)
试题一(28分,每小题4分)
解答下列各小题,把解答写在答卷纸的对应栏内。
1) 试写出下列命题的c语言表达式。
当字符变量m取英文字母时表达式的值为真。
2) 执行下述语句后,a,b,m,n变量的值分别是什么?
int a=1, b=2, c=3, d=4, m=5, n=6;
a = m=a>b ) n =c>d ) a = b--;
3) 执行下列语句后的输出结果是什么?
char s[81]= a_string", t[81];
strcpy(t,s);
printf("%d;%d%s", sizeof(s), strlen(s), t+2);
4) 写出下列c语句的功能。
#include <>
do gets(s);
while (strcmp(s,"passwd"))
5) 执行下列程序后的输出结果是什么?
#define sqr(x) x*x
void main( )
int s=8, a=2, b=3;
s=sqr(a+b)*4;
printf(“s=%d”, s);
6) 设有定义 struct date, *p;
p = a[2];
printf("+p)= d", p));
printf("*p=%d", p
printf("*p++=d", p
printf("%d",a[0]);
试写出执行该程序段后的输出结果。
试题二(12分,每小题6分)
阅读下列程序, 把程序的输出结果写在答卷纸的对应栏内。
1)【程序2.1】
#include <>
void main( )
int k[ ]
int j, m1=32767, m2=0,n1, n2;
for (j=0; j<6; j++)
if (m1>k[j])
else if (m2
printf("m1=%d, n1=%d ",m1, n1);
printf("m2=%d, n2=%d ",m2, n2);
2)【程序2.2】
#include <>
void func(int *x,int y)
static k=3;
y=*x+y;
*x=y%k;
k++;printf("*x=%d,y=%d",*x,y);
void main()
int x=12,y=5;
func(&x,y);
printf("x1=%d,y1=%d",x,y);
func(&y,x);
printf("x2=%d,y2=%d",x,y);
试题三 (12分,每小题6分)
下列程序中都有三个错误,按题中的计算要求,纠正错误,并以“将#xx”行改为“yyyy”的形式进行解答,把解答写在答卷纸的对应栏内。**左边的#1、#2、…是附加的行号。
1) 用冒泡排序法求出由21个整数组成的数组的中间值,并输出所有大于中间值的偶数。
程序3.1】
##include <>
#1 void main()
#2) 用下面的方法可以计算y年m月d日是星期几(w):
w= [y-1 + y-1)/4 – y-1)/100 +(y-1)/400 + y_d(y, m, d)]%7
其中,符号 / 表示计算整数商,% 表示计算余数,y_d(y, m, d)表示y年m月d日是从同年元旦算起到该日的总天数。
程序3.2】
#1 int day_tab[ ]
#2 int y_d(int y, int m, int d)
#9 void main( )
试题四 (18分, 每小题9分)
按指定的要求编写程序段, 把解答写在答卷纸的对应栏内。
1)输入无符号整型范围内的整数,求出它的位数以及各位数字之和。
2)将长度为 n 的字符串 s 分成两个子串,前 m(任意值)个字符生成子串s1,后 n-m个字符生成子串s2。约定:当m≥n时,s1等于原串,s2为空串;当m≤0时,s1为空串,s2等于原串。
编写程序段时,可以使用库函数strcpy。
试题五(15分,每个空格3分)
阅读下列问题描述和相应的程序,把应填入其中 (n) 处的内容写在答卷纸的对应栏内。
问题描述】
本程序运行时,从键盘不断接收用户输入的字符串并进行处理,直到用户输入的字符串为“end”时终止。对用户输入的每个字符串的处理是:将字符串内的每一个十进制数字字符置换成下列**中右边所对应的一个字符串(所有其他字符不变),然后将转换的结果显示在屏幕上;并分别计算每个数字的置换次数。
例如,若用户输入的字符串为。
page112-line3,则程序5的输出是:
page(one) (one) (two)-line(three)
数字0到9的置换次数分别是 0 2 1 1 0 0 0 0 0 0
程序5】#include <>
void main()
char *table=
char str1[64],str2[255],*p;
int j,k,n,no[10];
for (;
str2[k] =5置字符串结束符于str2末尾 */
printf("%s",str2);
for(k=0;k<10;k++)printf("no[%d]=%d\t",k,no[k]);
试题六 (15分,每个空格3分)
c语言试卷c
a.p q c.p n1 10 若有说明语句 int a,b,c,d c 则能从键盘读入三个整数分别赋给变量a b c的语句是。a.scanf d d d a,b,d b.scanf d d d a,b,d c.scanf d d d a,b,dd.scanf d d d a,b,d 11 c语言标...
C语言试卷A
青海大学试卷 a卷 系别 班级学号姓名。考试课程 程序设计基础 c 考试日期 2009 年 12月17日。注 所有答案均写在答题卡上,答在试卷上不得分,考试结束后试卷和答题卡一并交回。一 填空题 每空1分,共16分 1 整型静态数组没有初始化,也没有赋值,此时数组元素的值均为 0 2 数组在内存中占...
C语言试卷
一 填空共5题 共计10分 第1题 2.0分 题号 339 赋值运算符的结合性是由 右 至 左 第2题 2.0分 题号 925 在c 语言结构化程序中,函数 是程序的基本组成单元 在c 语言的面向对象设计框架中,对象 是程序的基本组成单元。第3题 2.0分 题号 926 c 语言的参数传递机制包括传...