求C语言编程代码
发布网友
发布时间:2022-04-22 17:31
我来回答
共1个回答
热心网友
时间:2023-11-14 03:55
在实现基本要求的前提下,拓展了可以从键盘输入的功能,以下为各题代码,望采纳。
第一题:
#include <stdlib.h>
#include <stdio.h>
float score[10] = {60,61,62,63,64,65,66,67,68,69};
//从键盘获取分数
float get_score_from_stdin(float *m_score,int num)
{
int i = 0;
for(i = 0;i<num;i++)
{
printf("请输入第 %d 个学生成绩:", i);
scanf("%f",&m_score[i]);
}
return 0;
}
// 求平均数
float get_average_score(float *m_score,int num)
{
float sum = 0;
int i = 0;
for(i = 0;i<num;i++)
{
sum += m_score[i];
}
float f_num = (float)(num*1.0);
return sum/f_num;
}
// 求最大数
float get_max_score(float *m_score,int num)
{
float max_score = 0.0;
max_score = m_score[0];
int i = 0;
for(i = 1;i<num;i++)
{
if(max_score<m_score[i])
{
max_score = m_score[i];
}
}
return max_score;
}
// 求最小数
float get_min_score(float *m_score,int num)
{
float min_score = 0.0;
min_score = m_score[0];
int i = 0;
for(i = 1;i<num;i++)
{
if(m_score[i] < min_score)
{
min_score = m_score[i];
}
}
return min_score;
}
int main()
{
char flag = 'N';
printf("请问你想从键盘获取10个成绩吗?(Y/N):");
scanf("%c",&flag);
int score_num = sizeof(score)/sizeof(score[0]);
if(flag == 'Y' || flag == 'y')
{
get_score_from_stdin(score,score_num);
}
printf("平均数:%f,最高分:%f\n,最低分:%f \n",\
get_average_score(score,score_num),
get_max_score(score,score_num) ,\
get_min_score(score,score_num));
return 0;
}
第二题:
#include <stdio.h>
#include <stdlib.h>
/*如果想显示更多行,最好是分配多一些,单纯这个程序就算溢出也不会显露问题*/
int binomial_ary[10][10]={0};
int main()
{
int rowNum = 10;//显示总行数
char flag = 'N';
printf("请问你想从键盘输入显示多少行?默认10行(Y/N):");
scanf("%c",&flag);
if(flag == 'Y' || flag == 'y')
{
printf("请输入要显示多少行:");
scanf("%d",&rowNum);
}
int rowNo = 0;//行号
int columnNo = rowNo ; //列号
for(rowNo = 0; rowNo < rowNum ; rowNo ++)
{
for(columnNo = 0; columnNo < rowNo + 1 ; columnNo ++)//每一行从0开始,一直计算到列数等于行数
{
if(columnNo == 0 || columnNo == rowNo)//列数为0或者列数等于行数(最后一列),为1
{
binomial_ary[rowNo][columnNo] = 1;
}
else
{
/*每一行除了头尾两个数,每个列号的数值都等于前一行的前一列号的数值加当前列号的数值*/
binomial_ary[rowNo][columnNo] = binomial_ary[rowNo-1][columnNo-1] + binomial_ary[rowNo-1][columnNo];
}
printf("%d ",binomial_ary[rowNo][columnNo] );
}
printf("\n");//换行的时候打印一个换行符
}
return 0;
}
第三题:
#include <stdlib.h>
#include <stdio.h>
#define MATRIC_NUM 3
float matri_ary[MATRIC_NUM][MATRIC_NUM] = {{1,2,3},{4,5,6},{7,8,9}};
int main()
{
float maxNum[MATRIC_NUM]={0};//存储每一行的最大数
float maxNumSum = 0;//每一行最大数的加和
int i=0,j=0;
for(i=0;i<MATRIC_NUM;i++)
{
maxNum[i] = matri_ary[i][0];//最大值先附初值,每一行的的第一个数
for(j=1;j<=i;j++)
{
/*每一行获取最大值*/
if(maxNum[i] < matri_ary[i][j])
{
maxNum[i] = matri_ary[i][j];
}
}
printf("矩阵的第 %d 行 最大值为 %f \n",i+1,maxNum[i]);
maxNumSum += maxNum[i];
}
printf("每一行最大值加和为:%lf\n",maxNumSum);
return 0;
}