您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 总结/报告 > c语言09-10秋试题及答案
(091试卷)1/16(091)上海大学2009-2010年秋季学期试卷2009.11课程名:程序设计基础(C语言)课程号:00863006学分:5应试人声明:我保证遵守《上海大学学生手册》中的《上海大学考场规则》,如有考试违纪、作弊行为,愿意接受《上海大学学生考试违纪、作弊行为界定及处分规定》的纪律处分。学号:姓名:学院/教师:题号一二三四卷面上机总分题分151027187030100得分考生须知:1.试卷和答题纸上的”学号、姓名、学院、教师”都要填上;2.所有答题内容都写在答卷纸上,交卷时将试卷和答卷纸一起交上;3.不遵守上述要求者考试成绩将为零分。4.本卷考试的得分为卷面分,电脑上机考试(另行安排)的得分为上机分,考试成绩为卷面分与上机分之和。一、单项选择题(15分,每小题1分)1.以下对C程序的描述中正确的是(____)A)C程序总是从第一个定义的函数开始执行。B)C程序总是从最后一个定义的函数开始执行。C)C程序总是从main()函数开始执行。D)C程序中的main()函数必须放在程序的开始部分。2.以下四项中哪个是不合法的常量(____)A)'xab'B)x1fC)0x1234D)2.1e33.以下四项中哪个是不合法的用户标识符(____)A)tempB)my_programC)year2009D)int4.在C语言中,表示结束当前循环的语句是(____)A)return语句B)break语句C)continue语句D)end语句(091试卷)2/165.以下4个变量定义中,定义p为指针数组的是(____)A)int*p[10];B)int(*p)();C)int**p;D)int(*p)[10];6.以下四项中哪个是合法的函数说明语句(____)A)doublefunc(inta,intb);B)doublefunc(inta,b);C)doublefunc(a,intb);D)doublefunc(a,b);7.设有定义charc;且c表示一个小写字母,结果为对应大写字母的表达式是(____)A)c-a+AB)c-'a'+'A'C)c-A+aD)c-'A'+'a'8.设有定义inta;判断a是一个偶数的表达式是(____)A)a==2*nB)a/2==0C)a%2D)a%2==09.设有定义inta;charc;执行输入语句scanf(%d%c,&a,&c);若要求a和c得到的值为10和'Y',正确的输入方式是(____)A)10,YB)10YC)10.YD)10:Y10.在位运算中,操作数每右移一位,其结果相当于(____)A)操作数乘以2B)操作数乘以4C)操作数除以2D)操作数除以411.设有定义:inta[10]={6,7,8,9,10};正确解释是(____)A)将5个初值依次赋给a[1]至a[5]B)将5个初值依次赋给a[0]至a[4]C)将5个初值依次赋给a[6]至a[10]D)将5个初值依次赋给a[5]至a[9]12.设有定义:inti,a[10];以下能正确输入a数组各元的语句是(____)A)i=10;scanf(%d,&a[i]);B)for(i=0;i=9;i++)scanf(%d,a+i);C)for(i=0;i10;i++)scanf(%d,a[i]);(091试卷)3/16D)for(i=0;i10;i++)scanf(%d,&a);13.设整数n的值为十进制-5,以16位二进制存贮该数时,其编码是(____)A)0000000000000101B)1000000000000101C)1111111111111010D)111111111111101114.设有定义char*p[]={Shanghai,Beijing,Honkong};则结果为'j'字符的表达式是(____)A)p[3][1]B)*(p[1]+3)C)*(p[3]+1)D)*p[1]+315.以下文件函数中,用于将数据写到文件的函数是(____)A)freadB)fgetsC)fwriteD)fscanf二、基础填空题(10分,每小题2分)1.设有定义:intn=123;floatx=95.123;写出语句printf(%d,%05d,%4.1f,%1.2f,n,n,x,x);的运行结果。2.设有定义:floatx=91.19;写出表达式(int)x和(int)(10*x+0.5)/10.0的运算结果。3.设n为正整数,写出得到n的十进制个位数和十位数的表达式。4.设有命题:b介于a,c之间且a,b,c互不相等,写出对应的逻辑表达式。5.设已建立链表如下图所示,p指针指向链表中的某个结点,写出取得该结点data分量的表达式。headdata…………p三、阅读程序(27分,每小题3分)仔细阅读下列程序,将各程序的运行结果写在答卷纸上。(1)程序,□表示空格#includestdio.h(091试卷)4/16main(){inti,j;for(i=1;i=3;i++){for(j=0;j3-i;j++)putchar('□');for(j=0;ji;j++)printf(%-2d,i);printf(\n);}}输出:?(2)程序#includestdio.hmain(){charcmd;do{cmd=getchar();switch(cmd){case'A':puts(AddStudent);break;case'D':puts(DelStudent);break;case'Q':puts(Quit);}}while(cmd!='Q');}输入:ADQ输出:?(3)程序#includestdio.hmain(){intm,n,s=0,i;(091试卷)5/16scanf(%d%d,&m,&n);for(i=m;i=n;i++){if(in)printf(%d+,i);elseprintf(%d=,i);s+=i;}printf(%d\n,s);}输入:710输出:?(4)程序#includestdio.hchargrade(floatscore){if(score=90)return'A';elseif(score=80)return'B';elseif(score=70)return'C';elseif(score=60)return'D';elsereturn'E';}main(){floatsc;chargr;inti;for(i=0;i6;i++){scanf(%f,&sc);gr=grade(sc);putchar(gr);}}输入:5060708090100输出:?(091试卷)6/16(5)程序#includestdio.h#defineN10main(){inta[N],i;floatave=0,pass=0,fine=0;for(i=0;iN;i++)scanf(%d,&a[i]);for(i=0;iN;i++){ave+=a[i];if(a[i]=60)pass++;if(a[i]=90)fine++;}ave/=N;pass=pass/N*100;fine=fine/N*100;printf(Ave=%4.1f\nPass=%2.0f%%\nFine=%2.0f%%\n,ave,pass,fine);}输入:556065707580859095100输出:?(6)程序#includestdio.hvoidshift(inta[],intn,ints,intb[]){inti;for(i=0;in;i++)b[i]=a[(i+s)%n];}main(){inta[6],b[6],i;(091试卷)7/16for(i=0;i6;i++)scanf(%d,&a[i]);shift(a,6,3,b);for(i=0;i6;i++)printf(%d,b[i]);}输入:112233445566输出:?(7)程序#includestdio.hintmax(inta[],intn){intx,i;x=a[0];for(i=1;in;i++)if(xa[i])x=a[i];returnx;}main(){intm[6][5],i,j,x;for(i=0;i6;i++)for(j=0;j5;j++)scanf(%d,&m[i][j]);for(i=0;i6;i++){x=max(m[i],5);printf(%d,x);}}输入:1119181516282021222431333537366060666660(091试卷)8/1655545352514041424344输出:?(8)程序#includestdio.hvoidgetupper(char*p,char*q){for(;*p!='\0';p++)if(*p='A'&&*p='Z')*(q++)=*p;*q='\0';}intissym(char*p){char*q;for(q=p;*q!='\0';q++);for(q--;pq;p++,q--)if(*p!=*q)return0;return1;}main(){chara[80],b[80];gets(a);puts(a);getupper(a,b);puts(b);if(issym(b))printf(Yes\n);elseprintf(No\n);}输入:abcA123B#$%C+-=B([{A}])输出:?(091试卷)9/16(9)程序#includestdio.hstructstudent/*学生信息*/{intnum;/*学号*/charname[20];/*姓名*/intscore;/*成绩*/intno;};voidsca_stu(structstudentstu[],intn){inti;for(i=0;in;i++)scanf(%d%s%d,&stu[i].num,stu[i].name,&stu[i].score);}voidprt_stu(structstudentstu[],intn){inti;for(i=0;in;i++)printf(%d:%d%s%d\n,stu[i].no,stu[i].num,stu[i].name,stu[i].score);}voidsort_stu(structstudentstu[],intn){inti,j;structstudentt;for(i=0;in-1;i++)for(j=0;jn-1-i;j++)if(stu[j].scorestu[j+1].score){t=stu[j];stu[j]=stu[j+1];stu[j+1]=t;}stu[0].no=1;for(i=1;in;i++)(091试卷)10/16if(stu[i].score==stu[i-1].score)stu[i].no=stu[i-1].no;elsestu[i].no=i+1;}main(){structstudentstu[10];intn;scanf(%d,&n);sca_stu(stu,n);sort_stu(stu,n);prt_stu(stu,n);}输入:31001Zhao881002Qian771003Sun99输出:?四、程序填空(18分,每填空2分)阅读下列问题描述和相应的C程序,把应填入其中(n)处的内容写在答卷纸的对应栏内。(1)以下程序从键盘上输入整数m和n,输出m到n之间(包括m和n)的所有“完数”,完数是指:所有因子之和等于本身的整数,如28=1+2+4+7+14,因此28是一个完数。如输入:128则输出:628#includestdio.hmain(){intm,n,i,j,s;scanf(%d%d,&m,&n);for(i=m;(1);i++){(091试卷)11/16s=0;for(j=1;ji;(2))if(i%j==0)s+=j;if((3))printf(%d,i);}}(2)以下程序从键
本文标题:c语言09-10秋试题及答案
链接地址:https://www.777doc.com/doc-2907769 .html