各位老铁们,大家好,今天由我来为大家分享c语言程序代写,以及c语言程序,输入十名同学的五门课程成绩,完成以下操作;的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
.jpg)
本文目录
c语言编写学生成绩处理
//给你个示例,仅供参考
#include<stdio.h>
#include<stdlib.h>
#defineNO_LEN11
#defineNAME_LEN9
#defineSTUDENT_NUM5
#defineTOP_THREE3
typedefstructstudent
{
charno[NO_LEN];
charname[NAME_LEN];
floata;
floatb;
floatc;
floatavg;
}ST;//st[STUDENT_NUM];
intget_student_info(ST*st,intlen);
voiddisplay(constST*st,intlen);
voidcalculate_average(ST*st,intlen);
voidsort(ST*st,intlen);
intmain(intargc,char*argv[])
{
STst[STUDENT_NUM];
get_student_info(st,STUDENT_NUM);
calculate_average(st,STUDENT_NUM);
sort(st,STUDENT_NUM);
display(st,STUDENT_NUM);
display(st,TOP_THREE);
return0;
}
/*从键盘输入STUDENT_NUM个学生的信息*/
intget_student_info(ST*st,intlen)
{
inti=0,ret=0;
if(0==st||0>=len||STUDENT_NUM<len)
{
printf("parametererror\n");
returnret=1;
}
for(;i<len;++i)
{
printf("输入第%d个学号、姓名、三门课成绩:",i+1);
scanf("%10s%8s%f%f%f",st[i].no,st[i].name,&st[i].a,&st[i].b,&st[i].c);
}
returnret;
}
/*显示前len个学生的信息*/
voiddisplay(constST*st,intlen)
{
inti=0;
if(0==st||0>=len||STUDENT_NUM<len)
{
printf("parametererror\n");
return;
}
printf("==================================\n");
for(;i<len;++i)
{
printf("%s%s%.1f%.1f%.1f%.1f\n",
st[i].no,st[i].name,st[i].a,st[i].b,st[i].c,st[i].avg);
}
}
/*计算每个学生的平均成绩*/
voidcalculate_average(ST*st,intlen)
{
inti=0;
if(0==st||0>=len||STUDENT_NUM<len)
{
printf("parametererror\n");
return;
}
for(;i!=len;++i)
{
st[i].avg=(st[i].a+st[i].b+st[i].c)/3.0;
}
}
/*冒泡排序降序排列*/
voidsort(ST*st,intlen)
{
inti=0,j=0;
STtmp;
if(0==st||0>=len||STUDENT_NUM<len)
{
printf("parametererror\n");
return;
}
for(;i<len-1;++i)
{
for(j=0;j<len-1-i;++j)
{
if(st[j].avg<st[j+1].avg)
{
tmp=st[j];
st[j]=st[j+1];
st[j+1]=tmp;
}
}
}
}
c语言程序,输入十名同学的五门课程成绩,完成以下操作;
平均方差没做,其他用最土的方法,没有涉及到结构体。有一点注释,附几张图的效果。
然后附上一下代码:
#include<stdio.h>
#include<stdlib.h>
main(){
charname[10][30]; //学生姓名
floatnumber[10][5],sum[10],average[10]; //学生成绩,单个学生总分,单个学生平均分
inti,j;
printf("【录入10位学生的5门课程】\n");
for(i=0;i<10;i++){
printf("请输入第%d位学生姓名:\n",i+1);
scanf("%s",&name[i]); //录入姓名
for(j=0;j<5;j++){
printf("第%d门课成绩:\n",j+1,i,j);
scanf("%f",&number[i][j]); //录入5门课成绩
sum[i]+=number[i][j]; //5门总分
}
//1.计算每个学生平均分
average[i]=sum[i]/5;
printf("%s五科总分为%.2f平均分为:%.2f\n\n",name[i],sum[i],average[i]);
}
/*
*2.计算全体每门课平均分
*3.找出50个分数中最高的分数所对应的学生和课程
*4.计算平均分方差(不会)
*5.每个学生平均分按大小排列
*/
//2.计算每门课平均分
printf("\n【每门课平均分】\n");
floatan_average[5]; //定义5门课所需要用到的数组
for(i=0;i<5;i++){ //初始化5个数组
an_average[i]=0.00;
}
for(i=0;i<10;i++){
for(j=0;j<5;j++){
an_average[j]+=number[i][j]; //10个学生,5门课全部轮一遍
}
}
for(i=0;i<5;i++){ //输出5门科目的平均分
printf("\n第%d门平均分:%.2f",i+1,an_average[i]/10);
}
//3.找出50个分数中最高的分数所对应的学生和课程
printf("\n\n【50个分数分别为】\n");
floattotal[50]; //50个分数集合
intidentifier[50];//姓名所对应的下标集合
intsubject[50]; //课程下标集合
intcounter=0; //计数器
for(i=0;i<10;i++){
for(j=0;j<5;j++){
total[counter]=number[i][j]; //将所有科目所有分数全部集合在1个数组
identifier[counter]=i; //i指代的为name对应下标的姓名
subject[counter]=j+1; //j指代第几门课
counter++;
}
}
for(i=0;i<50;i++){
printf("%d姓名:%s",i,name[identifier[i]]);
printf("课程:第%d门",subject[i]);
printf("分数:%.2f\n",total[i]);
}
printf("\n\n【50个分数中最高分数】\n");
floatfirst=0.00;
intname_temp; //记录下标
intsubject_temp; //记录下标
for(i=0;i<50;i++){
if(first<total[i]){ //相邻比较
first=total[i];
name_temp=identifier[i];
subject_temp=subject[i];
}
}
printf("\n姓名:%s课程:第%d门分数:%.2f\n",name[name_temp],subject_temp,first); //输出最高分
//4.计算平均分方差(不会)
//5.每个学生平均分按大小排列
printf("\n\n【每个学生的平均分按大小排列】\n");
floatflag;
for(i=0;i<10-1;i++){ //冒泡升序法
for(j=0;j<10-i-1;j++){
if(average[j]>average[j+1]){
flag=average[j+1];
average[j+1]=average[j];
average[j]=flag;
}
}
}
for(i=9;i>-1;i--){
printf("%.2f\n",average[i]);
}
}
C语言输出一个菱形图案(有程序)
菱形,就是如下所示的图形,总行数与总列数相等:
写一个程序,根据用户输入的总行数,打印出菱形。
这个题目主要是找出规律,考察读者的逻辑思维。
你可以从第一行开始,遍历所有的列,也可以从第一列开始,遍历所有的行。
下面的程序从第一行开始,遍历所有的列。
设菱形的总行数为line,总列数为column,当前行为i,当前列为j。上半部分与下半部分的规律不一样,应该分开讨论。
我们着眼于星号(*),思考什么条件下输出星号,总结出如下的规律。
1)对于上半部分(包括中间一行),当前行与当前列满足如下关系输出星号:
j>=(column+1)/2-(i-1)(column+1)/2-(i-1)为第i行最左边的星号
j<=(column+1)/2+(i-1)(column+1)/2+(i-1)为第i行最右边的星号
2)对于下半部分,当前行与当前列满足如下关系输出星号:
j>=(column+1)/2-(line-i)(column+1)/2-(line-i)为第i行最左边的星号
j<=(column+1)/2+(line-i)(column+1)/2+(line-i)为第i行最右边的星号
不满足上述条件,则输出空格。
于是写出如下的代码:纯文本复制
#include<stdio.h>#include<stdlib.h>intmain(){intline;//菱形总行数intcolumn;//菱形总列数inti;//当前行intj;//当前列printf("请输入菱形的行数(奇数):");scanf("%d",&line);if(line%2==0){//判断是否是奇数printf("必须输入奇数!\n");exit(1);}column=line;//总行数和总列数相同for(i=1;i<=line;i++){//遍历所有行if(i<(line+1)/2+1){//上半部分(包括中间一行)for(j=1;j<=column;j++){//遍历上半部分的所有列if((column+1)/2-(i-1)<=j&&j<=(column+1)/2+(i-1)){printf("*");}else{printf("");}}}else{//下半部分for(j=1;j<=column;j++){//遍历下半部分的所有列if((column+1)/2-(line-i)<=j&&j<=(column+1)/2+(line-i)){printf("*");}else{printf("");}}}printf("\n");}return0;}
这次小编对c语言程序代写,c语言程序,输入十名同学的五门课程成绩,完成以下操作;的讲解希望对大家有所提升,有喜欢的朋友欢迎转发,小编先干为谢。
发表评论 取消回复