Ⅰ c语言 从键盘输入10位同学的数学成绩,保存在数组中,输出最高分、最低分、平均分
#include "stdio.h" // 这里问题不大,不过最好改为 #include<stdio.h>
main() //最好改为 void main() 现在是C99标准,请用 int main(void)
{
float a[10],Min,Max,j,Sum;
int i;
printf("请输入10位同学的数学成绩");
for(i=0;i<10;i++)
scanf("%f",&a[i]);
Sum=0;Max=0;Min=100; // Min=100过于有创意,请改为 Min=a[0] 最好Max=a[0]
for(i=0;i<10;i++)
{
Sum=Sum+a[i];
if (a[i]>Max)
Max=a[i];
if (a[i]<Min)
Min=a[i];
}
j=Sum/10;
printf("10位同学数学成绩最高的为%f,最低的为%f,平均值为%f",Max,Min,j);
}
Ⅱ 用c语言设计一个程序统计一个班的学生成绩
改好了,问题不大,我都写在注释里了:
#include<stdio.h>
#include<math.h>
#define N 35
#define COURSE 4
struct student
{
char num[10];/*如果把num当作字符串的话,不能用int,而是char数组。不然就用int num;*/
float score[4];
float sum;
float aver;
}
stu[N];
void main()
{
void Input(struct student stu[]);
void count(struct student stu[]);
void sort(struct student stu[]);
void find(struct student stu[]);
sqrt(1.0);/*不知你用什么编译器,如果TC的话,有个BUG。就是结构体里有float型的话,要加这句,不然会报错*/
Input(stu);
count(stu);
find(stu);
/*为什么你的程序里没有执行着几个函数咧?*/
}
void Input(struct student stu[])
{
int i,j;
printf("Enter No.and score as :score1 score2 score3 score4\n");
for (i=0;i<N;i++)
{
scanf("%s",stu[i].num);/*用%s输入字符串*/
for (j=0;j<COURSE;j++)
{
scanf("%f",&stu[i].score[j]);
}
}
}
void count(struct student stu[])
{
float sum,aver;
int i,j;
for(i=0;i<N;i++)
{
sum=0;
for(j=0;j<5;j++)
sum+=stu[i].score[j];
aver=sum/4;
stu[i].sum=sum;
stu[i].aver=aver;
}
}
void sort(struct student stu[])
{
int i,j,k;
struct student temp;
for(i=0;i<N;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(stu[k].sum<stu[j].sum)k=j;
if(k!=i)
{
temp=stu[i];
stu[i]=stu[k];
stu[k]=temp;
}
}
printf("number score1 score2 score3 score4 sum average \n");
for(i=0;i<N;i++)
printf("%-8s%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f\n",stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].aver);
/*输出学号也用%s*/
}
void find(struct student stu[])
{
int flag=0;
int i,j;
sort(stu) /*;//stu[];)*/
printf("the student of one score>=90 and 前五名:\n");
/*这两句调换一下位置,不然输出不太好*/
for(i=0;i<5;i++)
{
int sum=0;
for(j=0;j<4;j++)
if(stu[i].score[j]>=90 )sum++;
if(sum)
{
flag=1;
printf("%-8s%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f\n",stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].aver);
}
}
if(flag==0)
printf(" not exist!\n");
/*这个判断放在循环体之外,不然会输出好多" not exist!"*/
}
另外,注意:
1.个班的学生成绩最多35人。你的咋是固定35人捏?
2.第四点要求:根据用户要求输入课程号显示该门课程成绩在90以上且总分在前五的学生的 学号和各科成绩,平均分和总分
你似乎没有看清题意吧?是要用户输入课程号耶。
这些你自己应该知道怎么做吧?
Ⅲ C语言,学生成绩排序,用VC能输出正确的结果,但学校的编译器是g++,总提示无效内存引用,求助!!!!
for(a[i][c]<a[1][i]) c = i;
//首先说说 a[2][20];
1.scanf("%d",&n);//n最好先初始化一下,输入无效值“s”,n的值乱七八糟的。
2.若n的值超过20,数组是不是越界了,可以这样 n = n>20?20:n;
//其次说说if(a[i][c]<a[1][i]) c = i;
若a[1][0] < a[1][1] c = 1;
若a[1][0] < a[1][2] c = 2;
..........................;
若a[1][0] < a[1][arraysize] c = arraysize;
for(a[i][c]<a[1][i]) c = i;//不明白要做什么。
//最后可以定义一个结构体。
struct _student
{
int stu_no;
int stu_grade;
};
#define ARRAY_SIZE 20;
_student stu[ARRAY_SIZE];
信息:给每个结构体赋给学生成绩和序号,
排序:小量数据可以用冒泡排序法排序,
输出: 把结构体数据输出就完成这个功能了。
vc6.0的语法没有gcc严谨
建议同学遵守下变量的命名规则吧。
个人觉得,一个二维数组信息放序号跟成绩,这个真是很奇怪的事情。
代码我没有怎么看,看不懂莫怪。
上面是见到一些错误和给出的建议。希望对你有帮助。
Ⅳ c语言编程问题,求高手解答,还有几天就要交了,谢谢!题目是:对学生四门成绩分类排名(含总分)算法的设
以前写过一个类似的,今天修改了一下给你参考参考,应该能满足你的要求吧,支持一次运行重复选择排序关键字、重写数据、导出排序结果到文本文件等功能,不过算法可能不是很好,可以自己再修改修改,希望对你能有些帮助,另外请使用win-tc或者turboc等纯c语言编辑器编译,c++的编译器会不支持里面的一些c语言的函数,代码如下
/*请使用win-tc或turboc等纯c语言环境编译*/
/*devc++或vc++不能识别程序中所用的某些c语言的函数*/
#include<stdio.h>
#include<conio.h>
#include<time.h>
main()
{
inti,j,key,n,tem0,tem1,a[100][2];
charb[5][10]={"chinese","English","chemistry","physics","total"};/*名称数组*/
structstu/*定义结构体,包含学生姓名!成绩等星信息*/
{
charname[20];/*姓名*/
intcourse[5];/*储存成绩*/
};
structstunum[100];/*预先定义100人,看具体情况*/
time_ttimep;/*此处是为了获取当前时间*/
structtm*p;
textbackground(2);/*修改背景色*/
textcolor(15);/*修改文本颜色,使界面美观*/
Y:/*标记跳转位置*/
clrscr();/*清屏,使颜色设置生效*/
printf("Howmanystudents?");
scanf("%d",&n);/*n来记录总共的记录条数*/
printf("----------------------------------------------------------------------");/*打印一条分割线,使信息层次清晰*/
printf(" Inputtheinfomation ");
printf("example:Jerry85789281 ");
printf("----------------------------------------------------------------------");
printf("\n");/*此处为输入样例,姓名+四门成绩,中间空格隔开*/
for(i=0;i<n;i++)
{
scanf("%s%d%d%d%d",&num[i].name,&num[i].course[0],&num[i].course[1],&num[i].course[2],&num[i].course[3]);/*存储数据*/
num[i].course[4]=num[i].course[0]+num[i].course[1]+num[i].course[2]+num[i].course[3];
}
printf("---------------------------------------------------------------------- ");/*标记跳转位置*/
X:
printf("Whatdoyouwanttosortby? 1:chinese2:English3:chemistry4:physics5:total");/*选择排序关键字*/
scanf("%d",&key);
for(i=0;i<n;i++)
{
a[i][0]=num[i].course[key-1];/*引入中间二维数组a来实现排序,a[i][0]临时存储要排序的成绩,a[i][1]记录编号与之对应*/
a[i][1]=i;
}
for(i=0;i<n-1;i++)
{
for(j=n-1;j>=i;j--)
{
if(a[j][0]>a[j-1][0])/*最基本的冒泡法*/
{
tem0=a[j][0];tem1=a[j][1];
a[j][0]=a[j-1][0];a[j][1]=a[j-1][1];
a[j-1][0]=tem0;a[j-1][1]=tem1;
}
}
}
printf("----------------------------------------------------------------------");
printf(" Youchosetosortby%s: ",b[key-1]);/*打印结果*/
printf("----------------------------------------------------------------------");
printf("\n");
for(i=0;i<n;i++)
{
printf("%3d%5s%3d%3d%3d%3d%4d ",i+1,num[a[i][1]].name,num[a[i][1]].course[0],num[a[i][1]].course[1],num[a[i][1]].course[2],num[a[i][1]].course[3],num[a[i][1]].course[4]);
}
printf("---------------------------------------------------------------------- ");
Z:/*标记跳转位置*//*经过冒泡之后a[i][1]存入的就是排序后的顺序了*/
printf("Whatdowant'ttodonow? 1.Continue2.Clearandcontinue3.Export4.New5.Quit");
scanf("%d",&tem0);/*选择接下来要做什么1:继续选择其他关键字排序2:清屏之后继续排序3:导出当前数据到文本文件4:覆盖当前数据,输入一组新的数据5:退出*/
printf("---------------------------------------------------------------------- ");
if(tem0==1)gotoX;/*跳转到标记位置继续运行程序*/
if(tem0==2)
{clrscr();gotoX;}/*清屏之后跳转到标记位置继续运行程序*/
if(tem0==3)
{
FILE*fp=fopen("result.txt","a");/*以追加方式打开result.txt文件,如果不存在则创建*/
if(!fp)
{
printf(" createandopenfilefailed ");
getch();
return;
}
time(&timep);
p=localtime(&timep);
fprintf(fp,"---------------------------------------------------------------------- ");
fprintf(fp,"%d-%02d-%02d",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);/*向文件内写入当前系统时间,格式如同2011-01-0918:28:03*/
fprintf(fp,"%02d:%02d:%02d",p->tm_hour,p->tm_min,p->tm_sec);
fprintf(fp,"sortby%s: ",b[key-1]);/*向文件内写入当前排序数据*/
fprintf(fp," ");
for(i=0;i<n;i++)
{
fprintf(fp,"%3d%5s%3d%3d%3d%3d%4d ",i+1,num[a[i][1]].name,num[a[i][1]].course[0],num[a[i][1]].course[1],num[a[i][1]].course[2],num[a[i][1]].course[3],num[a[i][1]].course[4]);
}
fprintf(fp,"---------------------------------------------------------------------- ");
fprintf(fp," ");
fclose(fp);
printf(".TXTSuccessfully! ");
printf("---------------------------------------------------------------------- ");
gotoZ;
}
if(tem0==4)
{clrscr();gotoY;}/*清屏之后跳转到标记位置继续运行程序*/
}
Ⅳ c++问题:我们考试要用c++编译器做一个学生成绩管理系统 有学生学号 姓名 年龄 还有数学英语计
#include<stdio.h>
struct student
{
int stu_No;
char stu_Name[20];
int Math_score;
int English_score;
int Chinese_score;
float Average_score;
};
main()
{
int i,j,n=5,Math=0,English=0,Chinese=0;
double p,m,k,l,e,Math_average,Chinese_average,English_average;
struct student stu[5],t;
printf("Please Input Studen Information\n");
for(i=0;i<n;i++)
{
scanf("%d %s %d %d %d",&stu[i].stu_No,stu[i].stu_Name,&stu[i].Math_score,&stu[i].English_score,&stu[i].Chinese_score);
}
for(i=0;i<n;i++)
{
stu[i].Average_score=(stu[i].Math_score+stu[i].English_score+stu[i].Chinese_score)/3.0;
}
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(stu[j].Average_score<stu[j+1].Average_score)
{
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
for(i=0;i<n;i++)
printf("%d %s %d %d %d\n",stu[i].stu_No,stu[i].stu_Name,stu[i].Math_score,stu[i].English_score,stu[i].Chinese_score);
for(i=0;i<n;i++)
{ Math=Math+stu[i].Math_score;}
Math_average=Math/n;
printf("数学平均成绩=%lf\n",Math_average);
for(i=0;i<n;i++)
{ English=English+stu[i].English_score;}
English_average=English/n;
printf("英语平均成绩=%lf\n",English_average);
for(i=0;i<n;i++)
{ Chinese=Chinese+stu[i].Chinese_score;}
Chinese_average=Chinese/n;
printf("语文平均成绩=%lf\n",Chinese_average);
for(i=0,m=0.0,e=0.0,p=0.0,k=0.0,l=0.0;i<n;i++)
{
if(stu[i].Math_score<60) m++;
else if((stu[i].Math_score>=60)&&(stu[i].Math_score<70)) e++;
else if((stu[i].Math_score>=70)&&(stu[i].Math_score<80)) p++;
else if((stu[i].Math_score>=80)&&(stu[i].Math_score<90)) k++;
else l++;
}
printf("数学不及格不及格人数 %lf 比例 %lf\n",m,m/n);
printf("数学及格人数 %lf 比例 %lf\n",e,e/n);
printf("数学中等人数 %lf 比例 %lf\n",p,p/n);
printf("数学良好人数 %lf 比例 %lf\n",k,k/n);
printf("数学优秀人数 %lf 比例 %lf\n",l,l/n);
for(i=0,m=0.0,e=0.0,p=0.0,k=0.0,l=0.0;i<n;i++)
{
if(stu[i].English_score<60) m++;
else if((stu[i].English_score>=60)&&(stu[i].English_score<70)) e++;
else if((stu[i].English_score>=70)&&(stu[i].English_score<80)) p++;
else if((stu[i].English_score>=80)&&(stu[i].English_score<90)) k++;
else l++;
}
printf("英语不及格不及格人数 %lf 比例 %lf\n",m,m/n);
printf("英语及格人数 %lf 比例 %lf\n",e,e/n);
printf("英语中等人数 %lf 比例 %lf\n",p,p/n);
printf("英语良好人数 %lf 比例 %lf\n",k,k/n);
printf("英语优秀人数 %lf 比例 %lf\n",l,l/n);
for(i=0,m=0.0,e=0.0,p=0.0,k=0.0,l=0.0;i<n;i++)
{
if(stu[i].Chinese_score<60) m++;
else if((stu[i].Chinese_score>=60)&&(stu[i].Chinese_score<70)) e++;
else if((stu[i].Chinese_score>=70)&&(stu[i].Chinese_score<80)) p++;
else if((stu[i].Chinese_score>=80)&&(stu[i].Chinese_score<90)) k++;
else l++;
}
printf("语文不及格不及格人数 %lf 比例 %lf\n",m,m/n);
printf("语文及格人数 %lf 比例 %lf\n",e,e/n);
printf("语文中等人数 %lf 比例 %lf\n",p,p/n);
printf("语文良好人数 %lf 比例 %lf\n",k,k/n);
printf("语文优秀人数 %lf 比例 %lf\n",l,l/n);
}
最低分和最高自己做下把
Ⅵ c语言求解:有三个学生每个学生有四门课,从键盘输入学生的成绩统计每门课的最高分并输出最高分及学生号
#include "stdio.h"
struct student{
char Student_id[16];
subjects[4];
} ;
void main()
{
struct student students[3];
int i,j,max;
printf("请依次输入学号,及3门科目的成绩!\n);
for(i=0;i<3;i++)
{
printf("第%d个学生,学号:\n",i);
scanf("%s",students[i].student_id);
printf("输入成绩成绩\n:);
for(j=0;j<4;j++)
{
printf("第%d门课的成绩:",j);
scanf("%d",&students[i].subjects[j]);
printf("\n");
}
}
printf("现在统计每门课最高分!\n");
for(i=0;i<4;i++)
{
max = students[0].subjects[0];
for(j=1;j<3;j++)
{
if ( students[j].subjects[i]>max)
{
max = students[j].subjects[i]
break;
}
}
printf("第%d门课最高分的学生号为:%s\n",&i,students[j].student_id);
}
//随手写的可能有错误 ,可以去编译器上调试一下!
}
Ⅶ C++利用if和switch编写输出成绩等级的程序
#include<iostream>
usingnamespacestd;
voidmain()
{
ints;
cout<<"请输入考试成绩"<<endl;
cin>>s;
switch(s/10)
{
case10:
case9:cout<<"成绩为等级A"<<endl;break;
case8:cout<<"成绩为等级B"<<endl;break;
case7:cout<<"成绩为等级C"<<endl;break;
case6:cout<<"成绩为等级D"<<endl;break;
case5:
case4:
case3:
case2:
case1:cout<<"成绩为等级E"<<endl;break;
default:cout<<"输入有误"<<endl;break;
}
}