各位老铁们,大家好,今天由我来为大家分享c语言程序代写,以及c语言程序,输入十名同学的五门课程成绩,完成以下操作;的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

本文目录

  1. c语言编写学生成绩处理
  2. c语言程序,输入十名同学的五门课程成绩,完成以下操作;
  3. C语言输出一个菱形图案(有程序)

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语言程序,输入十名同学的五门课程成绩,完成以下操作;的讲解希望对大家有所提升,有喜欢的朋友欢迎转发,小编先干为谢。

点赞(11)

猜你喜欢

相关推荐

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部