当前位置:首页 > (021)02-03秋试卷及答案
int a[100], b[100], n, i, j, t; fp=fopen(\ fscanf(fp, \
for(i=0; i fscanf(fp, \ fclose(fp); for(i=0; i for(j=0; j if(b[j] { t=a[j]; a[j]=a[j+1]; a[j+1]=t; t=b[j]; b[j]=b[j+1]; b[j+1]=t; } for(i=0; i printf(\ } 文件test.sat中内容为: 5 1 70 2 90 3 80 4 50 5 60 输出:? 四、程序填空(15分,每填空3分) (1)、以下函数(fsadd)计算两个分数相加,结构体fs描述一个分数,其成员fenzi与fenmu分别表示分数的分子与分母。试填空以完成fsadd函数。 struct fs /*分数*/ { int fenzi; /*分子*/ int fenmu; /*分母*/ }; void fsadd( (1) , struct fs *a, struct fs *b ) { r->fenzi = a->fenzi*b->fenmu+ (2) ; r->fenmu = a->fenmu*b->fenmu; } (2)、以下程序中,函数 create 建立一个单链表,它有10个结点,num 值依次取1到10;函数 list 输出该链表内容。 struct node { int num; struct node *next; }; struct node *create(void) { struct node *p, *q; 5 / 11 int n; q=NULL; for(n=1; n<=10; n++) { p=(struct node*) (3) ; p->num=n; (4) ; q=p; } return p; } void list(struct node *head) { struct node *p; for(p=head; (5) ; p=p->next ) printf(\ } main() { struct node *head; head=create(); list(head); } 五、编程题(15分,第1题5分,第2题10分) (1)、编写一个函数,给定参数 m 与 n,按以下公式返回函数结 ?m??if(m,n)??i?1?2m?n?(n?1)(n?1)果。 注意:以下(2.1)与(2.2)任选一题,编程时请注明是2.1或2.2 (2.1)编写一个程序,输入整数 n 和 n个整数,输出 n个整数中重复 2 次的数据。(n<=20) 如输入为:12 1 2 5 7 2 5 4 7 5 6 9 6 则输出为:2 7 6 (2.2)、假设已提供了2 个函数,函数说明如下: int getweek(int year, int month, int day); 6 / 11 int getdays(int year, int month); getweek返回指定年(year)、月(month)、日(day)的星期值,星期日为0,星期一为1,星期六为6。例如2002年1月2日为星期三,函数getweek(2002, 1, 2)的返回值为3。getdays返回指定年月的天数,如2002年1月为31天,getdays(2002, 1)返回31。试利用以上函数参照以下2002年1月的日历样本编写函数。 日 一 二 三 四 五 六 (第1周) 1 2 3 4 5 (第2周) 6 7 8 9 10 11 12 (第3周) 13 14 15 16 17 18 19 (第4周) 20 21 22 23 24 25 26 (第5周) 27 28 29 30 31 ① 编写一个函数(weeknum),返回指定年(year)、月(month)、日(day)在当月所在的周次。如2002年1月15日为1月份的第3周。 ② 编写一个函数(weekrange),能计算指定年(year)、月(month)、周次(week)的日期范围。如2002年1月份的第4周是从20日到26日,第1周从1日至5日,第5周从27日至31日。 注:星期日为一周的第一天,星期六为一周的最后一天。编程时,可不必考虑参数为无效值时的情况。 7 / 11 上海大学2002-2003年秋季学期试卷答题纸 课程名: 程序设计基础(C) 学分: 5 学号: 姓名: 学院: 题号 题分 得分 考生注意: 一 30 二 12 三 24 四 18 五 16 总分 100 1. 试卷和答题纸上的“学号、姓名、学院”都要填上; 2. 所有答题内容都写在答题纸上,交卷时将试卷和答题纸一起交上; 3. 不遵守上述者将不给予登记考试成绩。 小题号 第 一 题 答 栏 (填空题) 1 x=101,y=99,z=299 2 202.5 3 0000 0000 0011 0100 4 (a&&b)||(!a&&!b) 5 (x>=0)?(x+1):(x-1) 6 x=a||!b; 7 for(i=0; i<=n-4; i++) 8 SecondLiFirstWang scanf(\9 10 break语句, return语句 评阅人 小计: 得分 第 二 题 答 栏 (改错程序) 改错点 错误所在行 修 改 后 程 序 行 5 1 rst=1; 6 2 for(i=1; i<=n; i++) 8 3 if(*q<'a'||*q>'z') 13 4 return p; 19 5 puts(fword(buf)); 评阅人 小计: 8 / 11
共分享92篇相关文档