几道作业,给学生看一下,要考试了,要读懂代码,不要硬抄袭!
作业:
1. 编写完整的程序打印输出所有”水仙花数”,”水仙花数”即一个三位数,
其各位立方和等于其本身的数。
2.编写完整的程序:从键盘上输入全班同学的30个成绩,要求存放在数组的a[1]-a[30]中,请编程实现对此30个成绩实现由大到小的排序。
3.编写完整的程序:计算并显示全班同学某门课程考试成绩的平均分、最高分和最低分(设全班30个同学的成绩存放在数组s[0]-s[29]中)。请对计算平均分、最高分和最低分各自定义一个函数,用数组名作为函数的参数,用函数调用的方式进行编程。
第一题,代码如下:
/*
编写完整的程序打印输出所有"水仙花数",
"水仙花数"即一个三位数,
其各位立方和等于其本身的数。
*/
#include <stdio.h>
void main()
{
int i,j,k,n;
for(n=100; n<=999; n++)
{
i=n/100; // 百位
j=n%100/10; // 十位
k=n%10; // 个位
if(n == i*i*i + j*j*j + k*k*k)
{
printf("%d ",n);
}
}
printf("\n");
}
结果如下:
第二题,代码如下:
以五个人的成绩为例。
/*
编写完整的程序:从键盘上输入全班同学的30个成绩,
要求存放在数组的a[1]-a[30]中,请编程实现对此30
个成绩实现由大到小的排序。
*/
#include <stdio.h>
#define N 5
void main()
{
int i,j;
int t; // 中间变量
int score[N]={0}; // 加入成绩都是整数
printf("请输入%d位成绩:",N);
for(i=0; i<N; i++)
{
scanf("%d",&score[i]);
}
// 冒泡排序
for(i=1; i<N; i++)
{
for(j=0;j<N-i;j++)
{
if(score[j]>score[j+1])
{
t=score[j];
score[j]=score[j+1];
score[j+1]=t;
}
}
}
for(i=0; i<N; i++)
{
printf("%d ",score[i]);
}
printf("\n");
}
结果如下:
第三题,代码如下:
/*
编写完整的程序:计算并显示全班同学某门课程考
试成绩的平均分、最高分和最低分(设全班30个同
学的成绩存放在数组s[0]-s[29]中)。请对计算平
均分、最高分和最低分各自定义一个函数,用数组
名作为函数的参数,用函数调用的方式进行编程。
*/
#include <stdio.h>
#define N 5
void main()
{
float avg(int a[]);
int max(int a[]);
int min(int a[]);
int Max,Min,i;
float Avg;
int score[N]={0}; // 假使分数都为整数
printf("请输入%d个成绩值:",N);
for(i=0; i<N; i++)
{
scanf("%d",&score[i]);
}
Avg=avg(score);
Max=max(score);
Min=min(score);
printf("平均分:%0.2f\n",Avg);
printf("最大值:%d\n",Max);
printf("最小值:%d\n",Min);
}
// 平均值
float avg(int a[])
{
int i;
int sum=0;
for(i=0; i<N; i++)
{
sum = sum+a[i];
}
return (float)sum/N;
}
// 最大值
int max(int a[])
{
int i;
int Max;
Max = a[0];
for(i=0; i<N; i++)
{
if(Max<a[i])
{
Max=a[i];
}
}
return Max;
}
// 最小值
int min(int a[])
{
int i;
int Min;
Min = a[0];
for(i=0; i<N; i++)
{
if(Min>a[i])
{
Min=a[i];
}
}
return Min;
}
结果,如下:
同学们,可以参考,完全可以自己完成这样简单的代码。