上海大学(091)机卷A试题及参考答案

(091)上海大学 2009-2010 年秋季学期上机卷(A) 2009.11
课程名: 程序设计基础(C 语言) 课程号: 00863006 学分: 5 上机操作题,3 题,共 30 分 第 1 题(10 分,源程序文件 E:\answer\1-A-1.C ) 上机要求:下列程序包含 3 个语法错误,请输入该程序的代码,找出并更正程序错误, 在修改行代码后增加“/***/”注释,将修改后的源程序保存到 E:\answer\1-A-1.C 中。 程序功能:从键盘上输入 n(设 0<n<10)和 n 个整数(设每个整数大于或等于 2) ,按 每行 3 个数的格式输出 n 个整数中的素数。 如输入: 7 8 19 91 17 71 61 41 则输出: 19 17 71 61 41 示例说明:输入行中的第一个 7 对应 n,表示紧接着应输入 7 个整数,而后 7 个整数中 有 5 个素数,按第一行 3 个,第二行 2 个的方式输出。 参考程序: 带错误原程序 修改后的程序 错误说明 #include <stdio.h> #include <stdio.h> main() main() { { int n,i,j,x,ct=0 int n,i,j,x,ct=0; /***/ ①变量定义 scanf( "%d", &n ); scanf( "%d", &n ); 语句缺分号 for ( i=0; i<n; i++ ) for ( i=0; i<n; i++ ) { { scanf( "%d", &x ); scanf( "%d", &x ); for ( j=2; j<x; j++ ) for ( j=2; j<x; j++ ) ②缺少=号, if ( x%j = 0 ) if ( x%j == 0 ) /***/ =改为== break; break; if ( j==x ) if ( j==x ) { { printf( "%d\t, x ); printf( "%d\t", x ); /***/ ③ 缺 少 右 双 引号, 未配对 ct++; ct++; if ( ct%3 == 0 ) if ( ct%3 == 0 ) printf( "\n" ); printf( "\n" ); } } } } } }

第 2 题(10 分,源程序文件 E:\answer\1-A-2.C ) 上机要求:按程序功能要求编写程序,并将程序代码保存到 E:\answer\1-A-2.C 中。 程序功能:从键盘上输入 n(设 0<n<10) ,输出对应的平行四边形(n 行,每行 2*n-1 个#号) ,如示例所示。 如输入: 5 则输出(□表示空格,↙表示回车) :
(091 上机卷 A) 1/3

#########↙ □#########↙ □□#########↙ □□□#########↙ □□□□#########↙ 示例说明:输出共 5 行(n 行) ,每行包含#号 9 列(2*n-1 列) 。 参考程序 #include <stdio.h> main() { int n,i,j; scanf( "%d", &n ); for ( i=0; i<n; i++ ) { for ( j=0; j<i; j++ ) printf( " " ); for ( j=0; j<2*n-1; j++ ) printf( "#" ); printf( "\n" ); } }

第 3 题(10 分,源程序文件 E:\answer\1-A-3.C ) 上机要求:按程序功能要求编写程序,并将程序代码保存到 E:\answer\1-A-3.C 中。 程序功能:输入 10 个整数(存贮在一维数组 a 中) ,按示例格式计算并输出以下结果。 (1)输出最小值及其所在下标(输入的第一个整数对应下标 0) ; (2)计算并输出平均值(浮点数,输出时保留 1 位小数) ; (3)输出 10 个整数中小于平均值并且最接近平均值的数; (4)按从大到小的顺序排序并输出这 10 个整数。 如输入: 62 67 52 57 92 97 72 77 82 87 则输出: Min=a[2]=52 Average=74.5 X=72 Sort: 97 92 87 82 77 72 67 62 57 52 示例说明:输入 10 个整数放在 a 数组中,最小值 52 对应的下标为 2,平均值为 74.5, 小于平均值且最接近平均值的数为 72。 参考程序 #include <stdio.h> main() { /* (1) */
(091 上机卷 A) 2/3

int a[10],i,j,t,mink,k; float ave; for ( i=0; i<10; i++ ) scanf( "%d", &a[i] ); /* (2) */ mink = 0; for ( i=1; i<10; i++ ) if ( a[mink] > a[i] ) mink = i; printf( "Min=a[%d]=%d\n", mink, a[mink] ); /* (3) */ ave = 0; for ( i=0; i<10; i++ ) ave += a[i]; ave /= 10; printf( "Average=%4.1f\n", ave ); /* (4) */ k = 0; for ( i=1; i<10; i++ ) if ( a[i] < ave ) if ( a[k]>=ave || ave-a[k]>ave-a[i] ) k = i; printf( "X=%d\n", a[k] ); /* (5) */ for ( i=0; i<9; i++ ) for ( j=0; j<9-i; j++ ) if ( a[j] < a[j+1] ) { t = a[j]; a[j] = a[j+1]; a[j+1] = t; } printf( "Sort: " ); for ( i=0; i<10; i++ ) printf( "%d ", a[i] ); printf( "\n" ); }

(091 上机卷 A)

3/3


相关文档

上海大学(092)机卷A试题及参考答案
上海大学机械原理A卷和答案
08上海大学机械原理A卷和答案
上海大学(091)机卷B试题及参考答案
上海大学(092)机卷B试题及参考答案
上海大学06-07(秋)高数B1试题及解答(A卷)
08上海大学机械原理A卷和答案.pdf
2009-2010上海大学高等数学A(二)试卷
上海大学2007~2010概率论与数理统计 A 试卷 3.3元
上海大学管理学院2010-2011秋管理学试题A卷及答案
电脑版