Res - 2009夏学期C语言上机练习参考答案汇总 下载本文

夏学期C程序设计上机练习参考答案

int i, index, n, t; int repeat, ri; int a[10]; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ for(i = 0; i < n; i++) scanf(\ */ a[index]=a[0]; a[0]=t; index=0; for(i = 1; i < n; i++){ } t=a[index]; /* 最大值与最后一个数if(a[i]>a[index]) index=i; index=0; for(i = 1; i < n; i++){ } t=a[index]; /* 最小值与第1个数交换 if(a[i]

3 (n=3) 1 2 3

5 (n=5) 5 4 3 2 1 输出

After sorted: 7 6 5 1 After sorted: 3 2 1 After sorted: 5 4 3 2 1 #include int main(void) { int i, index, k, n, temp; int repeat, ri; int a[10]; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ for(i = 0; i < n; i++) scanf(\ for(k=0;ka[index]) index=i; 交换 */ a[index]=a[n-1]; a[n-1]=t; temp=a[index]; a[index]=a[k]; a[k]=temp; printf(\ for(i = 0; i < n; i++) printf(\ printf(\ } }

70016 选择法排序

输入一个正整数 repeat (0

输入一个正整数 n (1

3 (repeat=3) 4 (n=4)

printf(\ for(i = 0; i < n; i++) printf(\ printf(\ } }

70017 在数组中查找指定的元素

输入一个正整数 repeat (0

输入一个正整数 n (1

5

夏学期C程序设计上机练习参考答案

相同的元素,如果找到,输出 x 在数组 a 中对应元素的最小下标,如果没有找到,输出相应信息。 输入输出示例:括号内为说明 输入: 2 6

1 3 5 7 9 5 5 4 1 3 5 7 2 输出: 5: a[2] 2: not found #include int main(void) { int flag, i, n, x; int repeat, ri; int a[10]; scanf(\ for(ri = 1; ri <= repeat; ri++){ flag=0; /* 若标志不重新初始化的

(x=2)

(x=5) (n=4)

(repeat=2) (n=6)

输入2个正整数 m 和 n (1<=m<=6, 1<=n<=6),然后输入矩阵 a(m 行 n 列)中的元素,分别求出各行元素之和,并输出。

输出使用语句:printf(\%d is %d\\n\i, sum); 输入输出示例:括号内为说明 输入: 3 2 6 3 1 -8 3 12 输出:

sum of row 0 is 9 sum of row 1 is -7 sum of row 2 is 15 #include int main(void) { int i, j, m, n, sum; int a[6][6];

(m=3,n=2)

scanf(\ for(i = 0; i < m; i++) for(j = 0; j < n; j++) scanf(\ flag = 1; break; }

70022 矩阵运算

程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat (0

读入 1 个正整数 n(1≤n≤6), 再读入 n 阶方阵 a , 计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。 输入输出示例:括号内为说明 输入:

1 (repeat=1)

for(i = 0; i < m; i++){ } sum=0; for(j = 0; j < n; j++) sum+=a[i][j]; 化,就会一影响下一轮循环的计算 */ scanf(\ for(i = 0; i < n; i++) scanf(\ scanf(\ for (i = 0; i < n; i++) { } if(x==a[i]) { } printf(\ if(flag != 0) printf( \ else printf( \ } }

70021 求矩阵各行元素之和

6

夏学期C程序设计上机练习参考答案

4 (n=4) 2 3 4 1 5 6 1 1 7 1 8 1 1 1 1 1

sum = 35 (2+3+4+5+6+7+8=35) #include \int main(void) { int i, j, n, sum; int repeat, ri; int a[6][6]; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ for(i = 0; i < n; i++) for(j = 0; j < n; j++) scanf(\ sum=0; for(i = 0; i < n; i++){ for(j = 0; j < n; j++) } sum+=a[i][j]; 提示:将乘数、被乘数和乘积放入一个二维数组中,再输出该数组。

输入输出示例:括号内为说明 输入:

1 (repeat=1) 3 (n=3) 输出:

* 1 2 3 1 1 2 2 4 3 3 6 9

/* 根据输出要求 将乘数存于a[0][j] 被乘数存于a[i][0]; 结果放在a[i][j], i,j不为0*/ #include \int main(void) { int i, j, n; int a[10][10]; int repeat, ri; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ for(j = 0; j <= n; j++) a[0][j]=j; /* 乘数 */ for(i = 1; i < n-1; i++) sum-=a[i][n-i-1]; /* 减去副对角线的元素 */ 行 */ 列 */ for(j =0; j

两次,补回一次 */ printf(\ } }

70023 九九乘法表

程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat (0

输入一个正整数 n(0

7

夏学期C程序设计上机练习参考答案

70024 判断上三角矩阵

输入一个正整数 repeat (0

输入1 个正整数 n (1≤n≤6)和 n 阶方阵 a 中的元素,如果 a 是上三角矩阵, 输出\否则, 输出\。上三角矩阵指主对角线以下的元素都为0的矩阵, 主对角线为从矩阵的左上角至右下角的连线。 输入输出示例:括号内为说明 输入:

2 (repeat=2) 3 1 2 3 0 4 5 0 0 6 2 1 0 -8 2 输出: YES NO

#include \#include \int main(void) { int flag, i, j, n; int a[6][6]; int repeat, ri; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ for(i = 0; i < n; i++) for(j = 0; j < n; j++) scanf(\ flag=1; for(i = 0; i < n; i++){ for(j = 0; j < i; j++){ if(a[i][j]!=0){ flag=0; break; /* (n=2) (n=3)

} if(flag != 0) printf(\ else printf(\ } }

70025 算算看,这是第几天?

输入一个正整数 repeat (0

输入日期(年、月、日),输出它是该年的第几天。 要求定义与调用函数 day_of_year(year, month, day),计算并返回year(年)、month(月)和day(日)对应的是该年的第几天,函数形参year、month和day的类型是int,函数类型也是int。

输入输出示例:括号内为说明 输入:

2 (repeat=2) 1981 3 1 (1981年3月1日) 2000 3 1 (2000年3月1日) 输出:

days of year: 60 (1981年3月1日是该年的第60天)

days of year: 61 (2000年3月1日是该年的第61天)

#include \int main(void) { int day, day_year, month, year; int repeat, ri; int day_of_year(int year, int month, int day); scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ day_year=day_of_year(year,month,day); printf(\ } } int day_of_year(int year, int month, int day) { int k,leap; int a[2][31]={ 只要一个数值不满足就可以否定 */ } if (!flag) break; } 8