1、093js(093)上海大学2009-2010年春季学期操作题(A) 2010.6课程名: 程序设计基础(C语言) 课程号: 00863006 学分: 5 上机操作题,4题,共70分第1题(源程序文件 E:answer1-A-1.C )【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/*/”注释,将修改后的源程序保存到 E:answer1-A-1.C 中。程序功能:从键盘上输入一行字符串,选择其中的大写字母,并输出。如输入: Hello, This Is An English Sentence.则输出: HTIAES
2、再如输入: 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( char b, char a ) int i, k = 0; for ( i=0; ai!=0; i+ ) if
3、( ai=A & ai=Z ) bk+ = ai; bk = 0; return b;main() char a100, b100; gets( a100 ); str_select_up( b, a ) puts( b );第2题(源程序文件 E:answer1-A-2.C )【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到 E:answer1-A-2.C 中。程序功能:编写程序,按示例实现以下功能:(1) 输出本题考试的学期号与题号,即“093,1-A-2”(2) 输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。
4、(3) 从键盘上输入3个整数。(4) 输出其中的最大值与最小值。(5) 输出其中大小居中的数值。如输入: 70 50 90则输出: 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。再如
5、输入: -90 -50 -70则输出: 093,1-A-2 D413-27(Odd),09123456,ZhangDaHai 注:本行请按考生实际情况输出 Max=-50, Min=-90 Midd=-70示例说明:输入三数可以为负数,最大值为-50,最小值为-90,中间值为-70。第3题(源程序文件 E:answer1-A-3.C )【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到 E:answer1-A-3.C 中。程序功能:从键盘上输入n和n个整数(设n与每个整数均取值1至5),按示例格式输出n行数字图形,每行的数字及数字个数与输入数相对应。编写程序可以使用或参考所提供的函
6、数。如输入: 5 5 4 3 2 1则输出(表示空格,表示回车): 示例说明:输入的第1个数为5,表示输出共5行,右对齐形状。接着输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格,数值1之前有2*(5-5)=0个空格;以此类推。再如输入: 3 2 3 2则输出(表示空格,表示回车): 示例说明:输入的第1个数为3,表示输出共3行。接着输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,数值1之前有2*(5-2)=6个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上输入n和n个整数至数组
7、a,并返回整数n;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明int sca_n(int a) int n, i; scanf(%d,&n); for (i=0;in;i+) scanf(%d,&ai); return n;void prtline( int m ) int i; 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
8、函数:输出图案中的一行,m个数字 先输出2*(5-m)个空格 循环5-m次,每次输出2个空格 再输出m个数字,数字之后带有空格 最后输出换行第4题(源程序文件 E:answer1-A-4.C )【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到 E:answer1-A-4.C 中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(1) 查找数值为100的元素并输出其下标(如果有多个100则输出第1个100的下标),如果没有找到,则输出Not Found;(2) 统计数值为0的元素个数并输出;(3) 从大到小排序,并按每行4个数的格式输出;如输入: 10
9、 20 30 40 50 100 60 70 80 100则输出: a5=100Count(0)=0 100 100 80 7060 50 40 3020 10示例说明:输入10个整数,第1个100出现在下标5位置,数值0没有出现,排序后分3行输出,第1行与第2行各有4个数。如输入: 10 0 -50 0 50 60 70 80 90 199则输出: Not Found(100) Count(0)=2 199 90 80 70 60 50 10 0 0 -50示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次。排序后分3行输出,第1行与第2行各有4个数。(0
10、93)上海大学2009-2010年春季学期操作题(A)参考答案第1题(1-A-1.c)更正程序错误点#include char *str_select_up( char b, char a ) int i, k = 0; for ( i=0; ai!=0; i+ ) /*/ if ( ai=A & ai=Z ) bk+ = ai; bk = 0; /*/ return b;main() char a100, b100; gets( a ); /*/ str_select_up( b, a ); /*/ puts( b );!后双等于改为1个等于双引号改为单引号去掉数组名后的中括号缺分号第2题(
11、1-A-2.c)#include main() int a,b,c,max,min,mid; printf(093,1-A-2n ); /* 输出学期与题号 */ printf(D413-27(Odd),09123456,ZhangDaHain); /* 输出本人信息 */ scanf(%d%d%d, &a,&b,&c); if (a=b & a=c) max=a; /* 求最大值 */ else if (b=a & b=c) max=b; else max=c; if (a=b & a=c) min=a; /* 求最小值 */ else if (b=a & b=c) min=b; else
12、min=c; mid=a+b+c-max-min; /* 求中间值 */ printf(Max=%d,Min=%dn,max,min); printf(Midd=%dn,mid);第3题(1-A-3.c)/* 方法1:使用函数 */#include int sca_n(int a) int n, i; scanf(%d,&n); for (i=0;in;i+) scanf(%d,&ai); return n;void prtline( int m ) int i; for ( i=1; i=5-m; i+ ) printf( ); for ( i=1; i=m; i+ ) printf( %d
13、 , i ); printf( n );main() int n,i,a10; n=sca_n(a); for (i=0;in;i+) prtline(ai);/* 方法2:不使用函数 */#include main() int n,i,j,a10; scanf(%d,&n); for (i=0;in;i+) scanf(%d,&ai); for (i=0;in;i+) for ( j=1; j=5-ai; j+ ) printf( ); for ( j=1; j=ai; j+ ) printf( %d , j ); printf( n ); 第4题(1-A-4.c)/* 方法1:使用函数 *
14、/#include void sca(int a,int n) int i; for (i=0;in;i+) scanf(%d,&ai);int find(int a,int n,int x) int i; for (i=0;in;i+) if (ai=x) return i; return -1;int count(int a,int n,int x) int ct=0, i; for (i=0;in;i+) if (ai=x) ct+; return ct;void sort_b(int a,int n) int i, j, t; for (i=0;in-1;i+) for (j=0;jn
15、-1-i;j+) if (ajaj+1) t=aj; aj=aj+1; aj+1=t; void prt_m(int a,int n,int m) int i; for (i=0;i0) printf(a%d=100n,k); else printf(Not Found(100)n); ct=count(a,10,0); printf(Count(0)=%dn,ct); sort_b(a,10); prt_m(a,10,4);/* 方法2:不使用函数 */#include #define N 10main() int aN,i,j,t,ct; for (i=0;iN;i+) scanf(%d,
16、&ai); for (i=0;iN;i+) if (ai=100) break; if (iN) printf(a%d=100n,i); else printf(Not Found(100)n); ct=0; for (i=0;iN;i+) if (ai=0) ct+; printf(Count(0)=%dn,ct); for (i=0;iN-1;i+) for (j=0;jN-1-i;j+) if (ajaj+1) t=aj; aj=aj+1; aj+1=t; for (i=0;iN;i+) printf(%dt,ai); if (i%4=3|i=N-1) printf(n); (093)上
17、海大学2009-2010年春季学期操作题(B) 2010.6课程名: 程序设计基础(C语言) 课程号: 00863006 学分: 5 上机操作题,4题,共70分第1题(源程序文件 E:answer1-B-1.C )【16分】上机要求:下列程序包含4个错误(2个函数各2行有错误),请输入该程序的代码,找出并更正程序错误,在修改行代码后增加“/*/”注释,将修改后的源程序保存到 E:answer1-B-1.C 中。程序功能:从键盘上输入一行字符串,选择其中的小写字母,并输出。如输入: Hello, Everybody.则输出: elloverybody再如输入: ABC, abc, DEF, 12
18、3.则输出: abc函数说明: 程序中函数str_select_low从字符串a中选择小写字母到字符串b中,同时返回字符串b。函数中变量i用于遍历字符串a,变量k用于计数小写字母个数,同时用于b数组的下标。主函数main从键盘上输入一行字符串,调用str_select_low函数取其中小写字母到字符串b,并输出字符串b。2个函数各有2个错误,分布在不同代码行上。带错误原程序:#include char *str_select_low( char b, char a ) int i, k = 0; for ( i=0; ai!=0, i+ ) if ( ai=a & ai=z ) bk+ :=
19、ai; bk = 0; return b;main() char a100;gets( a0 ); str_select_low( b, a ); puts( b );第2题(源程序文件 E:answer1-B-2.C )【18分】上机要求:按程序功能要求编写程序,并将程序代码保存到 E:answer1-B-2.C 中。程序功能:编写程序,实现以下功能:(6) 输出本题考试的学期号与题号,即“093,1-B-2”(7) 输出考生的基本信息,包括实际考试机房、机号、机号的单双(机号单输出Odd,机号双输出Even)、学号、姓名拼音。(8) 从键盘上输入3个整数。(9) 输出3个数的累加和与平均值
20、。(10) 输出3个数中大于或等于60的个数。如输入: 70 50 91则输出: 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个。再如输入:
21、 -91 -50 -70则输出: 093,1-B-2 D413-28(Even),09123456,ZhangDaHai 注:本行请按考生实际情况输出 Sum=-211, Ave=-70.3 Pass=0示例说明:输入三数的累加和为-211,平均值为-70.3(输出一位小数),大于或等于60的数值为0个。第3题(源程序文件 E:answer1-B-3.C )【16分】上机要求:按程序功能要求编写程序,并将程序代码保存到 E:answer1-B-3.C 中。程序功能:从键盘上连续输入整数直至输入0时终止(设输入的非0整数取值1至5),按示例格式输出数字图形,每行的数字及数字个数与输入数相对应。编
22、写程序可以使用或参考所提供的函数。如输入: 5 4 3 2 1 0则输出(表示空格,表示回车): 示例说明:输入5个数后输入0,表示输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个数(取值1至5),数字之间含有1个空格;以此类推。再如输入: 2 3 2 0则输出(表示空格,表示回车): 示例说明:输入3个数后输入0,表示输出共3行。输入的第1个数为2,则输出的第1行有2个数(取值1至2),数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。函数说明:下列代码提供2个函数,可供编写程序时调用或参考。其中函数sca_0从键盘上连续输入整数直至输入0时终止,并返回整数n
23、;函数prtline可以输出图案中的某一行,参数m表示输出该行的m个数(取值1至m)。函数代码:函数代码说明int sca_0(int a) int n; for (n=0;1;n+) scanf(%d,&an); if (an=0) break; return n;void prtline( int m ) int i; for ( i=1; i=5-m; i+ ) printf( ); for ( i=1; i=m; i+ ) printf( %d , i ); printf( n );函数:连续输入整数直至输入0 先循环并计数输入的整数个数 输入整数至数组a中 如果输入0则结束输入 返回
24、输入的非0整数个数函数:输出图案中的一行,m个数字 先输出5-m个空格 再输出m个数字,数字之后带有空格 最后输出换行第4题(源程序文件 E:answer1-B-4.C )【20分】上机要求:按程序功能要求编写程序,并将程序代码保存到 E:answer1-B-4.C 中。程序功能:输入10个整数(存贮在一维数组a中),按示例格式计算并输出以下结果。(4) 查找数值为0的元素并输出其下标(如果有多个0则输出第1个0的下标),如果没有找到,则输出Not Found;(5) 统计数值为100的元素个数并输出;(6) 从小到大排序,并按每行5个数的格式输出;如输入: 10 20 30 40 50 10
25、0 60 70 80 100则输出: Not Found(0)Count(100)=2 10 20 30 40 50 60 70 80 100 100示例说明:输入10个整数,0没有出现,100出现2次,排序后分2行输出,每行输出5个数。如输入: 50 0 -50 0 50 60 70 80 90 199则输出: a1=0 Count(100)=0 -50 0 0 50 50 60 70 80 90 199示例说明:输入10个整数(可以有负数或超过100的数),其中100没有出现,0出现2次,第1次出现在下标1位置。排序后分2行输出,每行输出5个数。(093)上海大学2009-2010年春季学
26、期操作题(B)参考答案第1题(1-B-1.c)更正程序错误点#include char *str_select_low( char b, char a ) int i, k = 0; for ( i=0; ai!=0; i+ ) /*/ if ( ai=a & ai=z ) bk+ = ai; /*/ bk = 0; return b;main() char a100, b100; /*/ gets( a ); /*/ str_select_low( b, a ); puts( b );for中的第2个分号误为逗号:=改为=,去掉=前的:号char b100;漏定义gets传递数组名第2题(1-B-2.c)#include main() int a,b,c,sum,pass; float ave; printf(093,1-B-2n ); /* 输出学期与题号 */ printf(D413-28(Even),09123456,ZhangDaHain); /* 输出本人信息 */ scanf(%d%d%d, &a,&b,&c); sum=a+b+c; /* 计算累加和 */ ave=sum/3.0; /* 计算平均值 */ printf(Sum=%d,Ave=%.1fn,sum,ave); pass =
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1