#include <stdio.h>
#define MAX_ONE 10 //homeworkone数组的个数
#define PRO 8 //homeworktwo评委的个数
void homeworkOne(); //任意输入10个整数存贮在数组x中,并统计输出正数和负数的个数
void homeworkTwo(); //评分程序,8个评委,满分10分,去掉一个最高,去掉一个最低分,其余6个数平均分,保留两位
void homeworkThree(); //编程实现任意输入10个整数,将这10个数升序排列输出,并且奇数在前,偶数在后
void homeworkFour(); //编程实现把下列矩阵一行和第二行换位置存放并输入
void homeworkFive(); //编程实现求任意3*3矩阵的两条对角线之和
int main(void)
{
int no, retry;
do
{
printf("请选择你要执行的任务[输入1-5 按回车结束]:");
scanf("%d", &no);
switch (no)
{
case 1:
homeworkOne();
break;
case 2:
homeworkTwo();
break;
case 3:
homeworkThree();
break;
case 4:
homeworkFour();
break;
case 5:
homeworkFive();
break;
default:
printf("请输入1-5选择任务");
break;
}
//选择是否再次运行
printf("是否继续选择任务执行[yes --> 0], [no --> 9]");
scanf("%d", &retry);
} while (retry == 0);
}
void homeworkOne()
{
int i, j;
int c, z, zero; //c统计负数个数,z统计正数个数,zero为0的个数
int x[MAX_ONE];
puts("请输入10个整数。");
for (i = 0; i < MAX_ONE; i++)
{
printf("请输入%d个数:", i + 1);
scanf("%d", &x[i]);
}
c = z = zero = 0;
for (j = 0; j < MAX_ONE; j++)
{
if (x[j] > 0)
c++;
else if (x[j] < 0)
z++;
else
zero++;
}
printf("正数:%d, 负数:%d, 0的个数%d", c, z, zero);
putchar('\n');
}
void homeworkTwo()
{
int i, j;
double max, min; //记录数组中的最大值与最小值
double sum, avg;
; //sun记录所有数组的和,avg记录所有数组的平均值
double a[PRO]; //存储8个评委的分数
puts("8个评委的打分。");
for (i = 0; i < PRO; i++)
{
do
{
printf("第%d个评委打分:", i + 1);
scanf("%lf", &a[i]);
if (a[i] < 0 && a[i] <= 10)
printf("\a注意评委打分为【0-10】分。");
} while (a[i] > 0 && a[i] <= 10);
}
max = min = a[0];
for (j = 0; j < PRO; j++)
{
if (a[j] > max)
max = a[j];
if (a[j] < min)
min = a[j];
}
sum = avg = 0;
for (j = 0; j < PRO; j++)
sum += a[j];
putchar('\n');
printf("去掉一个最高分%.2f,去掉一个最低分%.2f, 最后总分为%.2f", max, min, (sum - max - min) / (PRO - 2));
putchar('\n');
}
void homeworkThree()
{
int i, j;
int m, n; //存放奇偶数的中间变量
int temp; //用于升序的中间变量
int a[MAX_ONE], b[MAX_ONE / 2], c[MAX_ONE / 2];
puts("请输入10个整数。");
for (i = 0; i < MAX_ONE; i++)
{
printf("请输入%d个数:", i + 1);
scanf("%d", &a[i]);
}
for (i = 0; i < MAX_ONE - 1; i++)
{ //用快速排序法排序
for (j = i + 1; j < MAX_ONE; j++)
if (a[i] > a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
//把排序好的奇偶数分别分给b,c数组
m = 0;
n = 0;
for (i = 0; i < MAX_ONE; i++)
{
if (a[i] % 2 == 0)
{
b[m] = a[i]; //偶数
m++;
}
else
{
c[n] = a[i]; //奇数
n++;
}
}
for (i = 0; i < MAX_ONE; i++)
{
a[i] = c[i];
if (i >= 5)
{
a[i] = b[i - 5];
}
}
puts("正序。");
putchar('{');
for (i = 0; i < MAX_ONE; i++)
{
printf("%d ", a[i]);
}
putchar('}');
}
void homeworkFour()
{
int i, j;
int a[2][3], b[2][3];
puts("请在数组中输入6个数。");
for (i = 0; i < 2; i++){
for( j = 0; j < 3; j++)
{
printf("请输入第%d行%d列的个数:", i + 1, j + 1);
scanf("%d", &a[i][j]);
}
}
puts("换行前。");
for (i = 0; i < 2; i++){
for( j = 0; j < 3; j++)
printf("%3d", a[i][j]);
putchar('\n');
}
for (i = 0; i < 2; i++){
for( j = 0; j < 3; j++)
if(i == 1)
b[i][j] = a[i-1][j];
else
b[i][j] = a[i+1][j];
}
puts("换行后。");
for (i = 0; i < 2; i++){
for( j = 0; j < 3; j++)
printf("%3d", b[i][j]);
putchar('\n');
}
}
void homeworkFive()
{
int i, j;
int a[3][3];
int temp;
puts("请在数组中输入9个数。");
for (i = 0; i < 3; i++){
for( j = 0; j < 3; j++)
{
printf("请输入第%d行%d列的个数:", i + 1, j + 1);
scanf("%d", &a[i][j]);
}
}
puts("输入的值。");
for (i = 0; i < 3; i++){
for( j = 0; j < 3; j++)
printf("%3d", a[i][j]);
putchar('\n');
}
puts("对角线之和。");
temp = 0;
for (i = 0; i < 3; i++){
for( j = 0; j < 3; j++)
if(i == j || i + j == 2)
{
temp += a[i][j];
printf(" %d ", a[i][j]);
}
}
printf("=%d", temp+a[1][1]);
}
c语言课下作业(第六次「数组」)
最新推荐文章于 2024-08-19 22:34:21 发布