当前位置:首页 > (021)02-03秋试卷及答案
上海大学2002-2003年秋季学期试卷 2002.11
一、基础题(30分,每小题3分)
1.已知 x=y=z=100,求语句z+=(x++)+(--y) 执行后各变量的值。 2.已知x=200,计算表达式 (float)5/2+(x++) 的值。 3.试写出表达式 (0x1234&0xFF) 的16位二进制结果。
4.请写出逻辑表达式:a与b同时为真,或者a与b同时为假。 5.请写出表达式:若x大于等于0结果为x+1,否则结果为x-1。 6.已知有程序段如下(x为整数): x=0; if(a) x=1; else if(b); else x=1;
请问上述程序段与以下那句赋值语句等价:
x=a&&b; 或x=a||!b; 或x=a&&!b; 或x=(a!=0);
7.已知有语句格式如 for(i=0; i<=?; i++),如果要求循环次数为n-3
次,请以上述格式写出 for语句。
8.已知有定义 char*names[]={\;请写出语句 printf(\;的运行结果。
9.已知有职工结构体数组 struct {int num; char name[20];}per[100]; 请使用scanf函数写出:输入下标为 i 的职工的num和name的语句。
10. 结束当前循环或 switch 语句的语句是什么语句,结束当前函数并返回的语句是什么语句。
二、改错程序(10分,每错误点2分)
1.函数 jchen计算n!的值,该函数有两个错误,指出错误所在行号,并写出正确结果。 #1 long jchen(int n) #2 {
#3 long rst; #4 int i; #5 rst=0;
#6 for(i=1; i 1 / 11 #9 } 2.以下程序输入一行字符,输出该行的第一个单词(仅由小写字母组成),函数 fword 的参数line为输入字符串,返回的指针指向第一个单词首字母,如果 fword 中找不到单词,返回指向'\\0'的指针(本程序有三个错误)。 #include #1 char *fword(char *line) #2 { #3 char *p, *q; #4 for(p=line; *p!='\\0'; p++) #5 if(*p>='a'&&*p<='z') #6 break; #7 for(q=p; *q!='\\0'; q++) #8 if(*q>='a'&&*q<='z') #9 { #10 *q='\\0'; #11 break; #12 } #13 return *p; #14 } #15 main() #16 { #17 char buf[80]; #18 gets(buf); #19 puts(fword(buf[80])); #20 } 三、阅读程序(30分,每小题5分) 仔细阅读下列程序,写出各程序的运行结果。 (1)程序1 #include { int m, n; scanf(\ printf(\ if(m%2==0) printf(\ 2 / 11 else printf(\ if(n%2==0) printf(\ else printf(\ } 输入:8 9 输出: ? (2)程序2 #include for(i=0; i<4; i++) { for(j=0; j 输出:?(要求:空格必须注清楚) (3)程序3 #include for(i=0; a[i]!=0; i++) { printf(\ sum+=a[i]; } return sum; } main() { int x[]={10, 20, 30, 0, 40, 50}; printf(\ } 输出:? (4)程序4 3 / 11 #include static int z=1; y+=x; z+=x; ga++; printf(\, z); } main() { func(1); func(2); func(3); printf(\ } 输出:? (5)程序5 #include { printf(\ if(a[0]==1) return a[1]+run(a+2); else if(a[0]==2) return –a[1]+run(a+2); else return 0; } main() { int a[]={1, 100, 2, 30, 1, 50, 0, 0}; printf(\ } 输出:? (6)程序6 #include { FILE *fp; 4 / 11
共分享92篇相关文档