093js.docx
《093js.docx》由会员分享,可在线阅读,更多相关《093js.docx(21页珍藏版)》请在冰豆网上搜索。
093js
(093)上海大学2009-2010年春季学期操作题(A)2010.6
课程名:
程序设计基础(C语言)课程号:
00863006学分:
5
上机操作题,4题,共70分
第1题(源程序文件E:
\answer\1-A-1.C)【16分】
上机要求:
下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:
\answer\1-A-1.C中。
程序功能:
从键盘上输入一行字符串,选择其中的大写字母,并输出。
如输入:
Hello,ThisIsAnEnglishSentence.
则输出:
HTIAES
再如输入:
ABC,abc,DEF,123.
ABCDEF
函数说明:
程序中函数str_select_up从字符串a中选择大写字母到字符串b中,同时返回字符串b。
函数中变量i用于遍历字符串a,变量k用于计数大写字母个数,同时用于b数组的下标。
主函数main从键盘上输入一行字符串,调用str_select_up函数取其中大写字母到字符串b,并输出字符串b。
2个函数各有2个错误,分布在不同代码行上。
带错误原程序:
#include
char*str_select_up(charb[],chara[])
{
inti,k=0;
for(i=0;a[i]!
=='\0';i++)
if(a[i]>='A'&&a[i]<='Z')
b[k++]=a[i];
b[k]='\0";
returnb;
}
main()
chara[100],b[100];
gets(a[100]);
str_select_up(b,a)
puts(b);
第2题(源程序文件E:
\answer\1-A-2.C)【18分】
按程序功能要求编写程序,并将程序代码保存到E:
\answer\1-A-2.C中。
编写程序,按示例实现以下功能:
(1)输出本题考试的学期号与题号,即“093,1-A-2”
(2)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。
(3)从键盘上输入3个整数。
(4)输出其中的最大值与最小值。
(5)输出其中大小居中的数值。
705090
093,1-A-2
D413-27(Odd),09123456,ZhangDaHai注:
本行请按考生实际情况输出
Max=90,Min=50
Midd=70
示例说明:
输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的27号计算机,机号为单(输出Odd),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的最大值为90,最小值为50,中间值为70。
-90-50-70
Max=-50,Min=-90
Midd=-70
输入三数可以为负数,最大值为-50,最小值为-90,中间值为-70。
第3题(源程序文件E:
\answer\1-A-3.C)【16分】
\answer\1-A-3.C中。
从键盘上输入n和n个整数(设n与每个整数均取值1至5),按示例格式输出n行数字图形,每行的数字及数字个数与输入数相对应。
编写程序可以使用或参考所提供的函数。
554321
则输出(□表示空格,↙表示回车):
1□2□3□4□5□↙
□□1□2□3□4□↙
□□□□1□2□3□↙
□□□□□□1□2□↙
□□□□□□□□1□↙
输入的第1个数为5,表示输出共5行,右对齐形状。
接着输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格,数值1之前有2*(5-5)=0个空格;以此类推。
3232
输入的第1个数为3,表示输出共3行。
接着输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,数值1之前有2*(5-2)=6个空格;以此类推。
下列代码提供2个函数,可供编写程序时调用或参考。
其中函数sca_0从键盘上输入n和n个整数至数组a,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。
函数代码:
函数代码
说明
intsca_n(inta[])
intn,i;
scanf("%d",&n);
for(i=0;iscanf("%d",&a[i]);returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:输入n和n个整数至数组先输入整数n再输入n个整数至数组a中返回输入的整数n 函数:输出图案中的一行,m个数字先输出2*(5-m)个空格循环5-m次,每次输出2个空格再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-A-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-A-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(1)查找数值为100的元素并输出其下标(如果有多个100则输出第1个100的下标),如果没有找到,则输出NotFound;(2)统计数值为0的元素个数并输出;(3)从大到小排序,并按每行4个数的格式输出;如输入:1020304050100607080100则输出:a[5]=100Count(0)=01001008070605040302010示例说明:输入10个整数,第1个100出现在下标5位置,数值0没有出现,排序后分3行输出,第1行与第2行各有4个数。如输入:100-5005060708090199则输出:NotFound(100)Count(0)=219990807060501000-50示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次。排序后分3行输出,第1行与第2行各有4个数。 (093)上海大学2009-2010年春季学期操作题(A)参考答案第1题(1-A-1.c)更正程序错误点#includechar*str_select_up(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='A'&&a[i]<='Z')b[k++]=a[i];b[k]='\0';/***/returnb;}main(){chara[100],b[100];gets(a);/***/str_select_up(b,a);/***/puts(b);} !后双等于改为1个等于 双引号改为单引号 去掉数组名后的中括号缺分号 第2题(1-A-2.c)#includemain(){inta,b,c,max,min,mid;printf("093,1-A-2\n");/*输出学期与题号*/printf("D413-27(Odd),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);if(a>=b&&a>=c)max=a;/*求最大值*/elseif(b>=a&&b>=c)max=b;elsemax=c;if(a<=b&&a<=c)min=a;/*求最小值*/elseif(b<=a&&b<=c)min=b;elsemin=c;mid=a+b+c-max-min;/*求中间值*/printf("Max=%d,Min=%d\n",max,min);printf("Midd=%d\n",mid);}第3题(1-A-3.c)/*方法1:使用函数*/#includeintsca_n(inta[]){intn,i;scanf("%d",&n);for(i=0;iscanf("%d",&a[i]);returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}main(){intn,i,a[10];n=sca_n(a);for(i=0;iprtline(a[i]);}/*方法2:不使用函数*/#includemain(){intn,i,j,a[10];scanf("%d",&n);for(i=0;iscanf("%d",&a[i]);for(i=0;i{for(j=1;j<=5-a[i];j++)printf("");for(j=1;j<=a[i];j++)printf("%d",j);printf("\n");}}第4题(1-A-4.c)/*方法1:使用函数*/#includevoidsca(inta[],intn){inti;for(i=0;iscanf("%d",&a[i]);}intfind(inta[],intn,intx){inti;for(i=0;iif(a[i]==x)returni;return-1;}intcount(inta[],intn,intx){intct=0,i;for(i=0;iif(a[i]==x)ct++;returnct;}voidsort_b(inta[],intn){inti,j,t;for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}}voidprt_m(inta[],intn,intm){inti;for(i=0;iif(i%m==m-1||i==n-1)printf("%d\n",a[i]);elseprintf("%d\t",a[i]);}main(){inta[10],k,ct;sca(a,10);k=find(a,10,100);if(k>0)printf("a[%d]=100\n",k);elseprintf("NotFound(100)\n");ct=count(a,10,0);printf("Count(0)=%d\n",ct);sort_b(a,10);prt_m(a,10,4);}/*方法2:不使用函数*/#include#defineN10main(){inta[N],i,j,t,ct;for(i=0;iscanf("%d",&a[i]);for(i=0;iif(a[i]==100)break;if(iprintf("a[%d]=100\n",i);elseprintf("NotFound(100)\n");ct=0;for(i=0;iif(a[i]==0)ct++;printf("Count(0)=%d\n",ct);for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
scanf("%d",&a[i]);
returnn;
voidprtline(intm)
inti;
for(i=1;i<=5-m;i++)
printf("");
for(i=1;i<=m;i++)
printf("%d",i);
printf("\n");
函数:
输入n和n个整数至数组
先输入整数n
再输入n个整数至数组a中
返回输入的整数n
输出图案中的一行,m个数字
先输出2*(5-m)个空格
循环5-m次,每次输出2个空格
再输出m个数字,数字之后带有空格
最后输出换行
第4题(源程序文件E:
\answer\1-A-4.C)【20分】
\answer\1-A-4.C中。
输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。
(1)查找数值为100的元素并输出其下标(如果有多个100则输出第1个100的下标),如果没有找到,则输出NotFound;
(2)统计数值为0的元素个数并输出;
(3)从大到小排序,并按每行4个数的格式输出;
1020304050100607080100
a[5]=100
Count(0)=0
1001008070
60504030
2010
输入10个整数,第1个100出现在下标5位置,数值0没有出现,排序后分3行输出,第1行与第2行各有4个数。
100-5005060708090199
NotFound(100)
Count(0)=2
199908070
6050100
0-50
输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次。
排序后分3行输出,第1行与第2行各有4个数。
(093)上海大学2009-2010年春季学期操作题(A)
参考答案
第1题(1-A-1.c)
更正程序
错误点
='\0';i++)/***/
b[k]='\0';/***/
gets(a);/***/
str_select_up(b,a);/***/
!
后双等于改为1个等于
双引号改为单引号
去掉数组名后的中括号
缺分号
第2题(1-A-2.c)
{inta,b,c,max,min,mid;
printf("093,1-A-2\n");/*输出学期与题号*/
printf("D413-27(Odd),09123456,ZhangDaHai\n");/*输出本人信息*/
scanf("%d%d%d",&a,&b,&c);
if(a>=b&&a>=c)max=a;/*求最大值*/
elseif(b>=a&&b>=c)max=b;
elsemax=c;
if(a<=b&&a<=c)min=a;/*求最小值*/
elseif(b<=a&&b<=c)min=b;
elsemin=c;
mid=a+b+c-max-min;/*求中间值*/
printf("Max=%d,Min=%d\n",max,min);
printf("Midd=%d\n",mid);
第3题(1-A-3.c)
/*方法1:
使用函数*/
{intn,i;
for(i=0;iscanf("%d",&a[i]);returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}main(){intn,i,a[10];n=sca_n(a);for(i=0;iprtline(a[i]);}/*方法2:不使用函数*/#includemain(){intn,i,j,a[10];scanf("%d",&n);for(i=0;iscanf("%d",&a[i]);for(i=0;i{for(j=1;j<=5-a[i];j++)printf("");for(j=1;j<=a[i];j++)printf("%d",j);printf("\n");}}第4题(1-A-4.c)/*方法1:使用函数*/#includevoidsca(inta[],intn){inti;for(i=0;iscanf("%d",&a[i]);}intfind(inta[],intn,intx){inti;for(i=0;iif(a[i]==x)returni;return-1;}intcount(inta[],intn,intx){intct=0,i;for(i=0;iif(a[i]==x)ct++;returnct;}voidsort_b(inta[],intn){inti,j,t;for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}}voidprt_m(inta[],intn,intm){inti;for(i=0;iif(i%m==m-1||i==n-1)printf("%d\n",a[i]);elseprintf("%d\t",a[i]);}main(){inta[10],k,ct;sca(a,10);k=find(a,10,100);if(k>0)printf("a[%d]=100\n",k);elseprintf("NotFound(100)\n");ct=count(a,10,0);printf("Count(0)=%d\n",ct);sort_b(a,10);prt_m(a,10,4);}/*方法2:不使用函数*/#include#defineN10main(){inta[N],i,j,t,ct;for(i=0;iscanf("%d",&a[i]);for(i=0;iif(a[i]==100)break;if(iprintf("a[%d]=100\n",i);elseprintf("NotFound(100)\n");ct=0;for(i=0;iif(a[i]==0)ct++;printf("Count(0)=%d\n",ct);for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
{inti;
{intn,i,a[10];
n=sca_n(a);
for(i=0;iprtline(a[i]);}/*方法2:不使用函数*/#includemain(){intn,i,j,a[10];scanf("%d",&n);for(i=0;iscanf("%d",&a[i]);for(i=0;i{for(j=1;j<=5-a[i];j++)printf("");for(j=1;j<=a[i];j++)printf("%d",j);printf("\n");}}第4题(1-A-4.c)/*方法1:使用函数*/#includevoidsca(inta[],intn){inti;for(i=0;iscanf("%d",&a[i]);}intfind(inta[],intn,intx){inti;for(i=0;iif(a[i]==x)returni;return-1;}intcount(inta[],intn,intx){intct=0,i;for(i=0;iif(a[i]==x)ct++;returnct;}voidsort_b(inta[],intn){inti,j,t;for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}}voidprt_m(inta[],intn,intm){inti;for(i=0;iif(i%m==m-1||i==n-1)printf("%d\n",a[i]);elseprintf("%d\t",a[i]);}main(){inta[10],k,ct;sca(a,10);k=find(a,10,100);if(k>0)printf("a[%d]=100\n",k);elseprintf("NotFound(100)\n");ct=count(a,10,0);printf("Count(0)=%d\n",ct);sort_b(a,10);prt_m(a,10,4);}/*方法2:不使用函数*/#include#defineN10main(){inta[N],i,j,t,ct;for(i=0;iscanf("%d",&a[i]);for(i=0;iif(a[i]==100)break;if(iprintf("a[%d]=100\n",i);elseprintf("NotFound(100)\n");ct=0;for(i=0;iif(a[i]==0)ct++;printf("Count(0)=%d\n",ct);for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
prtline(a[i]);
/*方法2:
不使用函数*/
{intn,i,j,a[10];
for(i=0;iscanf("%d",&a[i]);for(i=0;i{for(j=1;j<=5-a[i];j++)printf("");for(j=1;j<=a[i];j++)printf("%d",j);printf("\n");}}第4题(1-A-4.c)/*方法1:使用函数*/#includevoidsca(inta[],intn){inti;for(i=0;iscanf("%d",&a[i]);}intfind(inta[],intn,intx){inti;for(i=0;iif(a[i]==x)returni;return-1;}intcount(inta[],intn,intx){intct=0,i;for(i=0;iif(a[i]==x)ct++;returnct;}voidsort_b(inta[],intn){inti,j,t;for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}}voidprt_m(inta[],intn,intm){inti;for(i=0;iif(i%m==m-1||i==n-1)printf("%d\n",a[i]);elseprintf("%d\t",a[i]);}main(){inta[10],k,ct;sca(a,10);k=find(a,10,100);if(k>0)printf("a[%d]=100\n",k);elseprintf("NotFound(100)\n");ct=count(a,10,0);printf("Count(0)=%d\n",ct);sort_b(a,10);prt_m(a,10,4);}/*方法2:不使用函数*/#include#defineN10main(){inta[N],i,j,t,ct;for(i=0;iscanf("%d",&a[i]);for(i=0;iif(a[i]==100)break;if(iprintf("a[%d]=100\n",i);elseprintf("NotFound(100)\n");ct=0;for(i=0;iif(a[i]==0)ct++;printf("Count(0)=%d\n",ct);for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
for(i=0;i{for(j=1;j<=5-a[i];j++)printf("");for(j=1;j<=a[i];j++)printf("%d",j);printf("\n");}}第4题(1-A-4.c)/*方法1:使用函数*/#includevoidsca(inta[],intn){inti;for(i=0;iscanf("%d",&a[i]);}intfind(inta[],intn,intx){inti;for(i=0;iif(a[i]==x)returni;return-1;}intcount(inta[],intn,intx){intct=0,i;for(i=0;iif(a[i]==x)ct++;returnct;}voidsort_b(inta[],intn){inti,j,t;for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}}voidprt_m(inta[],intn,intm){inti;for(i=0;iif(i%m==m-1||i==n-1)printf("%d\n",a[i]);elseprintf("%d\t",a[i]);}main(){inta[10],k,ct;sca(a,10);k=find(a,10,100);if(k>0)printf("a[%d]=100\n",k);elseprintf("NotFound(100)\n");ct=count(a,10,0);printf("Count(0)=%d\n",ct);sort_b(a,10);prt_m(a,10,4);}/*方法2:不使用函数*/#include#defineN10main(){inta[N],i,j,t,ct;for(i=0;iscanf("%d",&a[i]);for(i=0;iif(a[i]==100)break;if(iprintf("a[%d]=100\n",i);elseprintf("NotFound(100)\n");ct=0;for(i=0;iif(a[i]==0)ct++;printf("Count(0)=%d\n",ct);for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
{for(j=1;j<=5-a[i];j++)
for(j=1;j<=a[i];j++)
printf("%d",j);
第4题(1-A-4.c)
voidsca(inta[],intn)
for(i=0;iscanf("%d",&a[i]);}intfind(inta[],intn,intx){inti;for(i=0;iif(a[i]==x)returni;return-1;}intcount(inta[],intn,intx){intct=0,i;for(i=0;iif(a[i]==x)ct++;returnct;}voidsort_b(inta[],intn){inti,j,t;for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}}voidprt_m(inta[],intn,intm){inti;for(i=0;iif(i%m==m-1||i==n-1)printf("%d\n",a[i]);elseprintf("%d\t",a[i]);}main(){inta[10],k,ct;sca(a,10);k=find(a,10,100);if(k>0)printf("a[%d]=100\n",k);elseprintf("NotFound(100)\n");ct=count(a,10,0);printf("Count(0)=%d\n",ct);sort_b(a,10);prt_m(a,10,4);}/*方法2:不使用函数*/#include#defineN10main(){inta[N],i,j,t,ct;for(i=0;iscanf("%d",&a[i]);for(i=0;iif(a[i]==100)break;if(iprintf("a[%d]=100\n",i);elseprintf("NotFound(100)\n");ct=0;for(i=0;iif(a[i]==0)ct++;printf("Count(0)=%d\n",ct);for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
intfind(inta[],intn,intx)
for(i=0;iif(a[i]==x)returni;return-1;}intcount(inta[],intn,intx){intct=0,i;for(i=0;iif(a[i]==x)ct++;returnct;}voidsort_b(inta[],intn){inti,j,t;for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}}voidprt_m(inta[],intn,intm){inti;for(i=0;iif(i%m==m-1||i==n-1)printf("%d\n",a[i]);elseprintf("%d\t",a[i]);}main(){inta[10],k,ct;sca(a,10);k=find(a,10,100);if(k>0)printf("a[%d]=100\n",k);elseprintf("NotFound(100)\n");ct=count(a,10,0);printf("Count(0)=%d\n",ct);sort_b(a,10);prt_m(a,10,4);}/*方法2:不使用函数*/#include#defineN10main(){inta[N],i,j,t,ct;for(i=0;iscanf("%d",&a[i]);for(i=0;iif(a[i]==100)break;if(iprintf("a[%d]=100\n",i);elseprintf("NotFound(100)\n");ct=0;for(i=0;iif(a[i]==0)ct++;printf("Count(0)=%d\n",ct);for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
if(a[i]==x)
returni;
return-1;
intcount(inta[],intn,intx)
{intct=0,i;
for(i=0;iif(a[i]==x)ct++;returnct;}voidsort_b(inta[],intn){inti,j,t;for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}}voidprt_m(inta[],intn,intm){inti;for(i=0;iif(i%m==m-1||i==n-1)printf("%d\n",a[i]);elseprintf("%d\t",a[i]);}main(){inta[10],k,ct;sca(a,10);k=find(a,10,100);if(k>0)printf("a[%d]=100\n",k);elseprintf("NotFound(100)\n");ct=count(a,10,0);printf("Count(0)=%d\n",ct);sort_b(a,10);prt_m(a,10,4);}/*方法2:不使用函数*/#include#defineN10main(){inta[N],i,j,t,ct;for(i=0;iscanf("%d",&a[i]);for(i=0;iif(a[i]==100)break;if(iprintf("a[%d]=100\n",i);elseprintf("NotFound(100)\n");ct=0;for(i=0;iif(a[i]==0)ct++;printf("Count(0)=%d\n",ct);for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
if(a[i]==x)ct++;
returnct;
voidsort_b(inta[],intn)
{inti,j,t;
for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}}voidprt_m(inta[],intn,intm){inti;for(i=0;iif(i%m==m-1||i==n-1)printf("%d\n",a[i]);elseprintf("%d\t",a[i]);}main(){inta[10],k,ct;sca(a,10);k=find(a,10,100);if(k>0)printf("a[%d]=100\n",k);elseprintf("NotFound(100)\n");ct=count(a,10,0);printf("Count(0)=%d\n",ct);sort_b(a,10);prt_m(a,10,4);}/*方法2:不使用函数*/#include#defineN10main(){inta[N],i,j,t,ct;for(i=0;iscanf("%d",&a[i]);for(i=0;iif(a[i]==100)break;if(iprintf("a[%d]=100\n",i);elseprintf("NotFound(100)\n");ct=0;for(i=0;iif(a[i]==0)ct++;printf("Count(0)=%d\n",ct);for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
for(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}}voidprt_m(inta[],intn,intm){inti;for(i=0;iif(i%m==m-1||i==n-1)printf("%d\n",a[i]);elseprintf("%d\t",a[i]);}main(){inta[10],k,ct;sca(a,10);k=find(a,10,100);if(k>0)printf("a[%d]=100\n",k);elseprintf("NotFound(100)\n");ct=count(a,10,0);printf("Count(0)=%d\n",ct);sort_b(a,10);prt_m(a,10,4);}/*方法2:不使用函数*/#include#defineN10main(){inta[N],i,j,t,ct;for(i=0;iscanf("%d",&a[i]);for(i=0;iif(a[i]==100)break;if(iprintf("a[%d]=100\n",i);elseprintf("NotFound(100)\n");ct=0;for(i=0;iif(a[i]==0)ct++;printf("Count(0)=%d\n",ct);for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
if(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}}voidprt_m(inta[],intn,intm){inti;for(i=0;iif(i%m==m-1||i==n-1)printf("%d\n",a[i]);elseprintf("%d\t",a[i]);}main(){inta[10],k,ct;sca(a,10);k=find(a,10,100);if(k>0)printf("a[%d]=100\n",k);elseprintf("NotFound(100)\n");ct=count(a,10,0);printf("Count(0)=%d\n",ct);sort_b(a,10);prt_m(a,10,4);}/*方法2:不使用函数*/#include#defineN10main(){inta[N],i,j,t,ct;for(i=0;iscanf("%d",&a[i]);for(i=0;iif(a[i]==100)break;if(iprintf("a[%d]=100\n",i);elseprintf("NotFound(100)\n");ct=0;for(i=0;iif(a[i]==0)ct++;printf("Count(0)=%d\n",ct);for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
voidprt_m(inta[],intn,intm)
for(i=0;iif(i%m==m-1||i==n-1)printf("%d\n",a[i]);elseprintf("%d\t",a[i]);}main(){inta[10],k,ct;sca(a,10);k=find(a,10,100);if(k>0)printf("a[%d]=100\n",k);elseprintf("NotFound(100)\n");ct=count(a,10,0);printf("Count(0)=%d\n",ct);sort_b(a,10);prt_m(a,10,4);}/*方法2:不使用函数*/#include#defineN10main(){inta[N],i,j,t,ct;for(i=0;iscanf("%d",&a[i]);for(i=0;iif(a[i]==100)break;if(iprintf("a[%d]=100\n",i);elseprintf("NotFound(100)\n");ct=0;for(i=0;iif(a[i]==0)ct++;printf("Count(0)=%d\n",ct);for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
if(i%m==m-1||i==n-1)
printf("%d\n",a[i]);
else
printf("%d\t",a[i]);
{inta[10],k,ct;
sca(a,10);
k=find(a,10,100);
if(k>0)
printf("a[%d]=100\n",k);
printf("NotFound(100)\n");
ct=count(a,10,0);
printf("Count(0)=%d\n",ct);
sort_b(a,10);
prt_m(a,10,4);
#defineN10
{inta[N],i,j,t,ct;
for(i=0;iscanf("%d",&a[i]);for(i=0;iif(a[i]==100)break;if(iprintf("a[%d]=100\n",i);elseprintf("NotFound(100)\n");ct=0;for(i=0;iif(a[i]==0)ct++;printf("Count(0)=%d\n",ct);for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
for(i=0;iif(a[i]==100)break;if(iprintf("a[%d]=100\n",i);elseprintf("NotFound(100)\n");ct=0;for(i=0;iif(a[i]==0)ct++;printf("Count(0)=%d\n",ct);for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
if(a[i]==100)
break;
if(iprintf("a[%d]=100\n",i);elseprintf("NotFound(100)\n");ct=0;for(i=0;iif(a[i]==0)ct++;printf("Count(0)=%d\n",ct);for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
printf("a[%d]=100\n",i);
ct=0;
for(i=0;iif(a[i]==0)ct++;printf("Count(0)=%d\n",ct);for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
if(a[i]==0)
ct++;
for(i=0;ifor(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
for(j=0;jif(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
if(a[j]{t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
for(i=0;i{printf("%d\t",a[i]);if(i%4==3||i==N-1)printf("\n");}} (093)上海大学2009-2010年春季学期操作题(B)2010.6课程名:程序设计基础(C语言)课程号:00863006学分:5上机操作题,4题,共70分第1题(源程序文件E:\answer\1-B-1.C)【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/***/”注释,将修改后的源程序保存到E:\answer\1-B-1.C中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入:Hello,Everybody.则输出:elloverybody再如输入:ABC,abc,DEF,123.则输出:abc函数说明:程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0',i++)if(a[i]>='a'&&a[i]<='z')b[k++]:=a[i];b[k]='\0';returnb;}main(){chara[100];gets(a[0]);str_select_low(b,a);puts(b);}第2题(源程序文件E:\answer\1-B-2.C)【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-2.C中。程序功能:编写程序,实现以下功能:(6)输出本题考试的学期号与题号,即“093,1-B-2”(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8)从键盘上输入3个整数。(9)输出3个数的累加和与平均值。(10)输出3个数中大于或等于60的个数。如输入:705091则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=211,Ave=70.3Pass=2示例说明:输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。再如输入:-91-50-70则输出:093,1-B-2D413-28(Even),09123456,ZhangDaHai注:本行请按考生实际情况输出Sum=-211,Ave=-70.3Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件E:\answer\1-B-3.C)【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-3.C中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函数。如输入:543210则输出(□表示空格,↙表示回车):1□2□3□4□5□↙□1□2□3□4□↙□□1□2□3□↙□□□1□2□↙□□□□1□↙示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入:2320则输出(□表示空格,↙表示回车):□□□1□2□↙□□1□2□3□↙□□□1□2□↙示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明intsca_0(inta[]){intn;for(n=0;1;n++){scanf("%d",&a[n]);if(a[n]==0)break;}returnn;}voidprtline(intm){inti;for(i=1;i<=5-m;i++)printf("");for(i=1;i<=m;i++)printf("%d",i);printf("\n");}函数:连续输入整数直至输入0先循环并计数输入的整数个数输入整数至数组a中如果输入0则结束输入返回输入的非0整数个数 函数:输出图案中的一行,m个数字先输出5-m个空格 再输出m个数字,数字之后带有空格最后输出换行第4题(源程序文件E:\answer\1-B-4.C)【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-B-4.C中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;(5)统计数值为100的元素个数并输出;(6)从小到大排序,并按每行5个数的格式输出;如输入:1020304050100607080100则输出:NotFound(0)Count(100)=21020304050607080100100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入:500-5005060708090199则输出:a[1]=0Count(100)=0-5000505060708090199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。 (093)上海大学2009-2010年春季学期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#includechar*str_select_low(charb[],chara[]){inti,k=0;for(i=0;a[i]!='\0';i++)/***/if(a[i]>='a'&&a[i]<='z')b[k++]=a[i];/***/b[k]='\0';returnb;}main(){chara[100],b[100];/***/gets(a);/***/str_select_low(b,a);puts(b);} for中的第2个分号误为逗号:=改为=,去掉=前的:号 charb[100];漏定义gets传递数组名 第2题(1-B-2.c)#includemain(){inta,b,c,sum,pass;floatave;printf("093,1-B-2\n");/*输出学期与题号*/printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/scanf("%d%d%d",&a,&b,&c);sum=a+b+c;/*计算累加和*/ave=sum/3.0;/*计算平均值*/printf("Sum=%d,Ave=%.1f\n",sum,ave);pass=
{printf("%d\t",a[i]);
if(i%4==3||i==N-1)
(093)上海大学2009-2010年春季学期操作题(B)2010.6
\answer\1-B-1.C)【16分】
\answer\1-B-1.C中。
从键盘上输入一行字符串,选择其中的小写字母,并输出。
Hello,Everybody.
elloverybody
abc
程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。
函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。
主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。
char*str_select_low(charb[],chara[])
='\0',i++)
if(a[i]>='a'&&a[i]<='z')
b[k++]:
=a[i];
b[k]='\0';
chara[100];
gets(a[0]);
str_select_low(b,a);
\answer\1-B-2.C)【18分】
\answer\1-B-2.C中。
编写程序,实现以下功能:
(6)输出本题考试的学期号与题号,即“093,1-B-2”
(7)输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。
(8)从键盘上输入3个整数。
(9)输出3个数的累加和与平均值。
(10)输出3个数中大于或等于60的个数。
705091
093,1-B-2
D413-28(Even),09123456,ZhangDaHai注:
Sum=211,Ave=70.3
Pass=2
输出共4行,第1行为本考题基本信息,应为“093,1-A-2”;第2行为考生本次考试的基本信息,请按实际情况输出,示例表示D413机房的28号计算机,机号为双(输出Even),学号为09123456,姓名拼音为ZhangDaHai(张大海);输入三数的累加和为211,平均值为70.3(输出一位小数),大于或等于60的数值有2个。
-91-50-70
Sum=-211,Ave=-70.3
Pass=0
输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。
\answer\1-B-3.C)【16分】
\answer\1-B-3.C中。
从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。
543210
□1□2□3□4□↙
□□1□2□3□↙
□□□1□2□↙
□□□□1□↙
输入5个数后输入0,表示输出共5行,居中对齐形状。
输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。
2320
输入3个数后输入0,表示输出共3行。
输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。
其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。
intsca_0(inta[])
intn;
for(n=0;1;n++)
scanf("%d",&a[n]);
if(a[n]==0)break;
连续输入整数直至输入0
先循环并计数输入的整数个数
输入整数至数组a中
如果输入0则结束输入
返回输入的非0整数个数
先输出5-m个空格
\answer\1-B-4.C)【20分】
\answer\1-B-4.C中。
(4)查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出NotFound;
(5)统计数值为100的元素个数并输出;
(6)从小到大排序,并按每行5个数的格式输出;
NotFound(0)
Count(100)=2
1020304050
607080100100
输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。
500-5005060708090199
a[1]=0
Count(100)=0
-50005050
60708090199
输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。
排序后分2行输出,每行输出5个数。
(093)上海大学2009-2010年春季学期操作题(B)
第1题(1-B-1.c)
b[k++]=a[i];/***/
chara[100],b[100];/***/
for中的第2个分号误为逗号
:
=改为=,去掉=前的:
号
charb[100];漏定义
gets传递数组名
第2题(1-B-2.c)
{inta,b,c,sum,pass;
floatave;
printf("093,1-B-2\n");/*输出学期与题号*/
printf("D413-28(Even),09123456,ZhangDaHai\n");/*输出本人信息*/
sum=a+b+c;/*计算累加和*/
ave=sum/3.0;/*计算平均值*/
printf("Sum=%d,Ave=%.1f\n",sum,ave);
pass=
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1