总8页第1页一、选择题(1)以下选项中,能用作用户标识符的是____A)classB)forC)_2013D)2013_(2)设有定义:inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是____A)scanf(%d,pa);B)scanf(%d,a);C)scanf(%d,&pa);D)scanf(%d,*pa);(3)若有定义语句:inta=7;,则表达式:(a++)/2的值是____A)0B)3C)4D)5(4)以下叙述中错误的是____A)用户定义的函数中可以没有return语句B)用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值C)用户定义的函数中若没有return语句,则应当定义函数为void类型D)函数的return语句中可以没有表达式(5)以下选项中是正确的整型常量的是____A)1234B)’1234’C)1,234D)”1234”(6)设有以下定义:#defined2inta=0;doubleb=1.25;charc=’A’;则下面语句中错误的是____A)a++;B)b++;C)c++;D)d++;(7)若i和k都是int类型变量,有以下for语句for(i=0,k=-1;k=1;k++)printf(*****\n);下面关于语句执行情况的叙述中正确的是____A)循环体执行两次B)循环体执行一次C)循环体一次也不执行D)构成无限循环上海交通大学试卷班级号_______________________学号______________姓名课程名称C语言程序设计成绩总8页第2页(8)有以下程序(说明:字母A的ASCII码值是65):#includestdio.hvoidfun(char*s){while(*s){if(*s%2)printf(%c,*s);s++;}}main(){chara[]=BYTE;fun(a);printf(\n);}程序运行后的输出结果是____A)BYB)BTC)YTD)YE(9)设有如下函数定义:intfun(intk){if(k1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是____A)2B)3C)4D)5(10)有以下程序:#includestdio.h#defineS(x)4*(x)*x+1main(){intk=5,j=2;printf(%d\n,S(k+j));}程序运行后的输出结果是____A)197B)143C)33D)28题号得分批阅人(流水阅卷教师签名处)我承诺,我将严格遵守考试纪律。承诺人:总8页第3页二、给出下列程序的输出结果:(1)[程序]#includestdio.hintfun(){staticintx=1;x*=2;returnx;}main(){inti,s=1;for(i=1;i=3;i++)s*=fun();printf(%d\n,s);}输出结果_____________64___________(2)[程序]#includestdio.hintf(intx,inty){return((y-x)*x);}voidmain(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(%d\n,d);}输出结果______________9__________(3)[程序]#includestdio.hvoidf(inty,int*x){y=y+*x;*x=*x+y;}voidmain(){intx=2,y=4;f(y,&x);printf(x=%d,y=%d\n,x,y);}输出结果____________2,4____________无返回值?X=8,y=4(4)[程序]#defineLETTER1#includestdio.hvoidmain(){charstr[20]=CLanguage,c;inti=0;总8页第4页while((c=str[i])!='\0'){i++;#ifdefLETTER这个表示如果声明了LETTER,就执行下面三行语句if(c='a'&&c'z')c=c+1;elseif(c=='z')c=c-25;#elseif(c='B'&&c='Z')c=c-1;elseif(c=='A')c=c+25;#endifprintf(%c,c);}}输出结果________BGbohvbhfCLbohvbhf(5)[程序]#includestdio.hclassst{public:intx,y;}data[2]={1,10,2,20};voidmain(){st*p=data;printf(%d,,p-y);printf(%d\n,(++p)-x);}输出结果_______1020_________________102(6)[程序]#includestdio.h#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;iN;i++)b[i]=a[i][i];它没有返回值,只是在赋值}voidmain(){intx[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;fun(x,y);for(i=0;iN;i++)printf(%d,,y[i]);printf(\n);}输出结果____________1,0,7,0___________看清楚!有逗号总8页第5页三、阅读以下程序,在__处填入适当的字句:(1)[程序说明]函数swap实现两个变量值的互换。[程序]voidswap(int*m,int*n){inttemp;temp=A;B;*n=C;}voidmain(){intx,y;scanf(“%d,%d”,&x,&y);swap(D);printf(%d,%d”,x,y);}(A)*m(B)*m=*n(C)temp(D)*x,*y&x,&y这儿要传地址,数组名就是地址,就不用加&了(2)[程序说明]以下程序实现将读入一个字符串反序输出。[程序]#includeiostream.h#includestring.h#defineLENGTH80voidreverse(chars[]){charc;inti,j;j=strlen(s)-1;for(i=0;A;i++){c=s[i];B;C;D;}}voidmain(void){charstr[LENGTH+1];coutInputastring:;cinstr;reverse(E);coutThestringisreversed:strendl;}(A)ij(B)s[i]=s[j]总8页第6页(C)s[j]=c(D)j--(E)str(3)[程序说明]下面程序是计算1-3+5-7+……-99+101的值[程序]voidmain(){inti,m,t=1,s=0;for(i=1;i=101;A){B;s=s+m;C;}printf(%d\n,D);}(A)i=i+2(B)m=m*i*t(C)t=-t(D)s四、编程题N个学生的C语言课程成绩用float型数组存储。编写程序计算所有成绩介于区间[a,b](a≤xb)的学生个数和平均成绩。要求:(1)主函数完成a,b的输入,数组元素输入以及计算结果的输出。(2)计算功能用子函数完成。总8页第7页上海交通大学试卷(草稿纸)(2012至2013学年第2学期)班级号_______________________学号______________姓名课程名称C语言程序设计成绩总8页第8页题号得分批阅人(流水阅卷教师签名处)我承诺,我将严格遵守考试纪律。承诺人: