《(062)上海大学2006-2007年冬季学期试卷.doc》由会员分享,可在线阅读,更多相关《(062)上海大学2006-2007年冬季学期试卷.doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、(062)上海大学2006-2007年冬季学期试卷 2007.1课程名:程序设计根底(C) 课程号:00863006 学分:5 应试人声明: 我保证遵守?上海大学学生手册?中的?上海大学考场规那么?,如有考试违纪、作弊行为,愿意接受?上海大学学生考试违纪、作弊行为界定及处分规定?的纪律处分。学号: 姓名: 学院/教师: 题号一二三四卷面上机总分题分21368127723100得分考生须知:1. 试卷和答题纸上的“学号、姓名、学院、教师都要填上;2. 所有答题内容都写在答卷纸上,交卷时将试卷和答卷纸一起交上;3. 不遵守上述要求者考试成绩将为零分。4. 本卷考试的得分为卷面分,电脑上机考试另行安
2、排的得分为上机分,考试成绩为卷面分与上机分之和。一、根底题(21分,第1小题3分,其它每题2分)1定义int x=51,y=26,z; 写出z=(x+ / 2=-y)?10:20;执行后 各变量的值。2定义int b=7;float a=5.2,c=6.3;计算表达式b*(int)(a+c)/2与(float)b/(int)a的值。3设a=b=5,分别判断表达式4a6和+b=6是真还是假。4. 写出判断表达式:x不比y小,x至少比y大6。5. 分别写出表达式:正整数n的十进制个位数和十位数。6. 将十进制62转换为二进制和十六进制。7计算62&0x27和620x27的值,结果用16进制表示。8
3、定义int i=0;写出while(i+9) printf(“%d, i);的执行结果。9定义int a=11,22,33,44,55,66,77,*p=&a2,*q=a+5;写出printf(“%d,%d,q-p,*q-*p);的运行结果。10定义FILE *fp, 写出以写方式翻开二进制文件test.dat的语句。二、阅读程序(36分,每题4分)仔细阅读以下程序,将各程序的运行结果写在答卷纸上。1程序#include main()int i,j;for (i=1;i=4;i+)for (j=1;j=i;j+)printf( ,i,-j);printf(n);输出:?2程序#include
4、void printstar(int m,int n)int i;for (i=1;i=m;i+)putchar( );for (i=1;i=n;i+)putchar(*);printf(n);main()intn,i;scanf(%d,&n);for (i=1;i=n;i+)printstar(2*i+1,2*n-1);输入:4输出:?3程序#include void prt(int a,int n,int x,int y)int ct1,ct2,i,j;for (i=0;in;i+)ct1=ct2=0;for (j=0;ji;j+)if (ai=aj)ct1+;for (j=i+1;jn;
5、j+)if (ai=aj)ct2+;if (ct1=x & ct2=y)printf(%6d,ai);printf(n);main()int a10=11,25,18,19,18,25,18,12,12,11;prt(a,10,0,1);输出:?4程序#include int g=1000;void func(int x)static int s=100;g+=(s+)+(+x);printf(g=%dts=%dn,g,s);main() int i,a=10; for (i=0;i2;i+) func(a); a+=(g+); printf(g=%dta=%dn,g,a); 输出:?5程序#
6、include #include char *tsl(int n,char *p)if (n2)*p=0;elsetsl(n/2,p);switch (n%2)case 0: strcat(p,);case 1: strcat(p,$);return p;main()char a81;puts(tsl(18,a);输出:?6程序#include main()int a=10,11,12,13,14,*p,n;p=&a0;n=*(p+);printf(AAA: %dn,n);n+=*(+p);printf(BBB: %dn,n);n+=(*(p+=2)+;printf(CCC: %dn,n);n
7、-=(*(-p)-;n-=*(-p-1);printf(DDD: %dn,n);输出:?7程序#include char *getnextword(char *str,char *word)char *p;for (p=str;*p= ;p+) ;for (;*p!= & *p!=0;p+)*(word+)=*p;*word = 0;return p;main()char str81,ws2081,*p;int n=0,i;gets(str);for (p=str;*p!=0;)p=getnextword(p,wsn);if (wsn0!=0)n+;for (i=n-1;i=0;i-)puts
8、(wsi);输入:Apple, banana, and grape.输出:?8程序#include struct point double x,y,z; ;void prt(struct point ps,int n)int i;for (i=0;in;i+)lfn,psi.x,psi.y);void sca(struct point ps,int n)double x,y;int i;for (i=0;in;i+)scanf(%lf%lf,&x,&y);psi.x=x;psi.y=y;void setlen(struct point ps,int n)int i;for (i=0;in;i+
9、)psi.z = psi.x + psi.y;void srt(struct point ps,int n)struct point t;int i,j,k;for (i=0;in-1;i+)k=i;for (j=i+1;jpsj.z)k=j;if (k!=i)t=psk;psk=psi;psi=t;#define N 4main()struct point psN;sca(ps,N);setlen(ps,N);srt(ps,N);prt(ps,N);输入:1 20 2 40 3 10 4 30输出:?9程序#include #include main()FILE *fp;int *a,n,s
10、um,max,min,i;float avg;fp=fopen(062.txt,r);fscanf(fp,%d,&n);a=(int *)malloc(n*sizeof(int);for (i=0;in;i+)fscanf(fp,%d,a+i);fclose(fp);sum=0;max=min=a0;for (i=0;in;i+)sum+=ai;if (maxai) min=ai;avg=(float)sum/n;printf(sum=%dnavg=%nmax=%dnmin=%dn,sum,avg,max,min);设文件与内存操作总是成功的,并设文件062.txt的内容为:6 3 4 5 8
11、 7 6输出:?三、改错程序(8分,每错误点2分)以下程序各有两个错误两个错误分别是在不同的行上,并只在有注解行号所标注的行上,按原来程序的要求,纠正错误,并将错误所在行号以及错误行完整的正确内容写在答卷纸的对应栏内。1以下程序输出100以内的完数正好等于因子之和的数,如28为完数,28有因子1、2、4、7、14且正好为这些因子的和。#include main()int n,s,i;/*1*/for (n=1;n=100;n+)/*2*/*3*/s=0;/*4*/for (i=1;in;i+)/*5*/if (n%i=0)/*6*/s + i;/*7*/if (n=s)/*8*/printf(
12、n);/*9*/ /*程序输出6和28这两个完数*/2函数getdig从字符串a中取出所有数字字符构成一个新的字符串b,并返回新字符串。#include char *getdig(char a,char b)int i,j;/*1*/j=0;/*2*/for (i=0;ai!=0;i+)/*3*/if (ai=0 & ai=9)/*4*/bj+=ai;/*5*/bj=/0;/*6*/return b;main()char a81;puts(getdig(“Abc1.23,4E#-5 +6/7=”,a);/* 那么输出:123456789 */四、程序填空(12分,每填空2分)阅读以下问题描述和
13、相应的C程序,把应填入其中 (n) 处的内容写在答卷纸的对应栏内。1以下程序将4至100的所有偶数分解为两个素数之和。#include int isprime(int n)/*判断素数函数,假设是返回1,否那么返回0 */int i;for (i=2;in;i+)if ( (1) )return 0;return 1;main()int n,i;for (n=4;n100; (2) )for (i=2;inext)/*遍历head2所有结点*/if (head1=NULL)break;p=head1;if (p-num=r-num)head1= (4) ;free(p);else for (
14、; (5) ; p=p-next)q=p-next;if (q-num=r-num)p-next= (6) ;free(q);break;return head1;(062)上海大学2006-2007年冬季学期答卷 2007.1课程名:程序设计根底(C) 课程号:00863006 学分:5 应试人声明: 我保证遵守?上海大学学生手册?中的?上海大学考场规那么?,如有考试违纪、作弊行为,愿意接受?上海大学学生考试违纪、作弊行为界定及处分规定?的纪律处分。学号: 姓名: 学院/教师: 题号一二三四卷面上机总分题分21368127723100得分考生须知:1. 试卷和答题纸上的“学号、姓名、学院、教
15、师都要填上;2. 所有答题内容都写在答卷纸上,交卷时将试卷和答卷纸一起交上;3. 不遵守上述要求者考试成绩将为零分。4. 本卷考试的得分为卷面分,电脑上机考试另行安排的得分为上机分,考试成绩为卷面分与上机分之和。小题第 一 题 答 栏 根底题 21%第1小题3分,其它每题2分1x=52y=25z=102前式:38后式:3前式:真后式:真4前式:x=y后式:x-y=65前式:n%10后式:n/10%10 或n%100/106二进制:111110十六进制:0x3E7前式:0x26后式:0x19812345678993,3310fp=fopen(,wb);小计:小题第 二 题 答 栏 阅读程序 36
16、%4分/格1 2 * * * *3 11 25 124g=1111 s=101g=1112 a=1121g=2335 s=102g=2336 a=34565$6AAA: 10BBB: 22CCC: 36DDD: 127grape.andbanana,Apple,89sum=33max=8min=3小计:第 三 题 答 栏 改错程序 8%改错点行号修 改 后 程 序 行2分/格1. (1)6s+=i; 或 s=s+i;1. (2)8printf(%d ,n);2. (3)3if (ai=0 & ainext或 head1-next2. (5)p-next!=NULL2. (6)q-next小计: