c语言编程 高分 c语言编程,输出最高分和最低分,为什么出错了···

作者&投稿:弘堂 (若有异议请与网页底部的电邮联系)
 
 
 
可以这样写:

#include <stdio.h>

#define NumberOfSubjects  3
#define NumberOfStudents 10

#define PassingScore 40

typedef enum {
    false,
    true,
}
bool;

typedef enum {
    M,
    F,
}
Gender;

typedef enum {
    Literature,
    History,
    Programming,
}
SubjectIndex;

typedef struct {
    unsigned ID;
    char     *name;
    Gender   gender;
    unsigned scores[ NumberOfSubjects ];
}
Student;

Student students[ NumberOfStudents ] = {
    { 1000, "Haven",    F, {  62, 90, 50 } },
    { 1001, "Wendy",    F, {  68, 81, 25 } },
    { 1002, "Tedd",     M, {  69, 76, 58 } },
    { 1003, "Elyssa",   F, {  79, 83, 15 } },
    { 1004, "Halie",    F, { 100, 78, 43 } },
    { 1005, "Quinn",    F, {  55, 91, 41 } },
    { 1006, "Heidi",    F, {  87, 89, 26 } },
    { 1007, "Rebecca",  F, {  93, 75, 44 } },
    { 1008, "Pierce",   M, {  29, 32, 97 } },
    { 1009, "Makenna",  F, {  53, 40, 57 } },
};

void printHeader( ) {
    puts( "-------------------------------------------------------------------------------\n"
          "|      |          |          |                    Scores                      |\n"
          "|  ID  |   Name   |  Gender  |------------------------------------------------|\n"
          "|      |          |          | Literature | History | Programming | (Average) |\n"
          "-------------------------------------------------------------------------------" );
}

void printStudent( Student stu ) {
    unsigned lit = stu.scores[ Literature  ],
             his = stu.scores[ History     ],
             pro = stu.scores[ Programming ];
    float avg = ( float ) ( lit + his + pro ) / NumberOfSubjects;

    printf( "  %u    %-10s %3s %12u %11u %11u %13.2f\n",
        stu.ID, stu.name, stu.gender == M ? "M" : "F", lit, his, pro, avg );
}

Student topScorer( SubjectIndex sji ) {
    Student top = students[ 0 ];
    int i = 1;
    for ( ; i < NumberOfStudents; i++ )
        if ( students[ i ].scores[ sji ] > top.scores[ sji ] )
            top = students[ i ];
    return top;
}

bool failingAtLeastOneSubject( Student stu ) {
    int i = 0;
    for ( ; i < NumberOfSubjects; i++ )
        if ( stu.scores[ i ] < PassingScore )
            return true;
    return false;
}

void main( ) {
    int i;

    puts( "Format of displayed student data:\n" );
    printHeader( );

    puts( "\n>>> Top scorers of Literature, History and Programming (in that order):\n" );
    for ( i = 0; i < NumberOfSubjects; i++ )
        printStudent( topScorer( i ) );

    puts( "\n\n>>> Failing at least one subject:\n" );
    for ( i = 0; i < 10; i++ )
        if ( failingAtLeastOneSubject( students[ i ] ) )
            printStudent( students[ i ] );
}
 
 
 

/*用结构体就OK了~很简单,程序如下~(Dev C++)*/

#include<iostream>
#include<string>
using namespace std;

struct student
{
int id;
string name;
int sex;
//1是男,2是女,3是人妖,4是无性别的
int score[2];
}stu[9]=....//自己定义

int main()
{
int max=-1;
int scores;
int who;
int bjg[9];
int bjgtotal=-1;
int i;
for (i=0;i<=9;i++)
{
scores=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]
if (scores>max)
{
max=scores;
who=i;
}
if (stu[i].score[0]<60 || stu[i].score[1]<60 || stu[i].score[2]<60){
//60分算及格吧
bjgtotal=bjgtotal+1;
bjg[bjgtotal]=i;
}
}
show(who,"最高分");
for (i=0;i<=bjgtotal;i++)
{
show(i,"不及格");
}
system("pause");
}

void show(int whois,string words)
{
int i;
int pj;
cout<<words<<"的是"<<stu[whois].name<<",他/她/它的学号是"<<stu[whois].id<<",性别是"<<stu[whois].sex<<",三门成绩分别是";
for (i=0;i<=2;i++)
{
cout<<stu[whois].score[i]<<" ";
pj=pj+stu[whois].score[i];
}
pj=pj/3;
cout<<"平均分是"<<pj<<"。"<<endl;
}

/*OK了,如果你还可以枚举性别,这里就不祥写了,偶还要赶时间。。。*/

给我加分吧。程序已经测试过了!
llf18018为什么拷贝我的答案?太过分了吧?

#include <stdio.h>

#define SIZE 10

typedef struct {
int id;
char name[10];
int sex;
float score[3];
float av;
} STUDENT;

void input_stu (STUDENT stu[], int size);
int max_stu (STUDENT stu[], int size);
void show(STUDENT stu);
void not_pass (STUDENT stu[], int size);

main() {
STUDENT stu[SIZE];
int max;

input_stu (stu, SIZE);
max = max_stu (stu, SIZE);
printf ("\nmax student\n");
show(stu[max]);
not_pass (stu, SIZE);
getch();
return;
}

void not_pass (STUDENT stu[], int size) {
int i, j;
printf ("\nnot pass students\n");
for (i=0; i<SIZE; i++) {
for (j=0; j<3; j++) {
if (stu[i].score[j] < 60) {
show(stu[i]);
break;
}
}
}
}

void show(STUDENT stu) {
int j;
printf ("id: %d\n", stu.id);
printf ("name: %s\n", stu.name);
printf ("sex: %d\n", stu.sex);
for (j=0; j<3; j++)
printf ("score %d: %f\n", j, stu.score[j]);
printf ("avr: %f\n", stu.av);
return;
}

int max_stu (STUDENT stu[], int size) {
int i, max=0;
for (i=0; i<size; i++)
if (stu[max].av < stu[i].av)
max = i;
return max;
}

void input_stu (STUDENT stu[], int size) {
int i, j;
float max;
printf ("\ninput the student info\n");
for (i=0; i<size; i++) {
printf ("\nid: ");
scanf ("%d", &stu[i].id);
printf ("name: ");
scanf ("%s", stu[i].name);
printf ("sex: ");
scanf ("%d", &stu[i].sex);
max = 0;
for (j=0; j<3; j++) {
printf ("score %d: ", j);
scanf ("%f", &stu[i].score[j]);
max += stu[i].score[j];
}
stu[i].av = max / 3;
}
return;
}

ok有了标准答案告一下
#include <stdio.h>

#define SIZE 10

typedef struct {
int id;
char name[10];
int sex;
float score[3];
float av;
} STUDENT;

void input_stu (STUDENT stu[], int size);
int max_stu (STUDENT stu[], int size);
void show(STUDENT stu);
void not_pass (STUDENT stu[], int size);

main() {
STUDENT stu[SIZE];
int max;

input_stu (stu, SIZE);
max = max_stu (stu, SIZE);
printf ("\nmax student\n");
show(stu[max]);
not_pass (stu, SIZE);
getch();
return;
}

void not_pass (STUDENT stu[], int size) {
int i, j;
printf ("\nnot pass students\n");
for (i=0; i<SIZE; i++) {
for (j=0; j<3; j++) {
if (stu[i].score[j] < 60) {
show(stu[i]);
break;
}
}
}
}

void show(STUDENT stu) {
int j;
printf ("id: %d\n", stu.id);
printf ("name: %s\n", stu.name);
printf ("sex: %d\n", stu.sex);
for (j=0; j<3; j++)
printf ("score %d: %f\n", j, stu.score[j]);
printf ("avr: %f\n", stu.av);
return;
}

int max_stu (STUDENT stu[], int size) {
int i, max=0;
for (i=0; i<size; i++)
if (stu[max].av < stu[i].av)
max = i;
return max;
}

void input_stu (STUDENT stu[], int size) {
int i, j;
float max;
printf ("\ninput the student info\n");
for (i=0; i<size; i++) {
printf ("\nid: ");
scanf ("%d", &stu[i].id);
printf ("name: ");
scanf ("%s", stu[i].name);
printf ("sex: ");
scanf ("%d", &stu[i].sex);
max = 0;
for (j=0; j<3; j++) {
printf ("score %d: ", j);
scanf ("%f", &stu[i].score[j]);
max += stu[i].score[j];
}
stu[i].av = max / 3;
}
return;
}

我觉得用结构体比较简单
一个学生是一个结构体变量,他的学号,姓名,性别等信息是结构体的成员
这样启不是简单
用不着数组
要用的话,也有结构体数组

C语言编程 题目:输入30个学生成绩,求最高分,最低分和平均分(用数组存放数据)~

#include
intmain()
{
intmax,min,score;
doubleavg=0;
scanf("%d",&score);
max=min=score;
avg+=score;
for(inti=0;i<29;i++)
{
scanf("%d",&score);
if(score>max)max=score;
if(score<min)min=score;
avg+=score;
}
avg=avg/30;
printf("最高分max=%d,最低分min=%d,平均分avg=%lf
",max,min,avg);
return0;
}

文件输入/输出
在C语言中,输入和输出是经由标准库中的一组函数来实现的。在ANSI C中,这些函数被定义在头文件;中。
标准输入/输出
有三个标准输入/输出是标准I/O库预先定义的:
stdin标准输入
stdout标准输出
stderr输入输出错误
以上内容参考:百度百科-c语言

#include
void main()
{
int a,Grade,max=0,min=100;
printf("请输入8个同学的成绩=
");
for(i=201201;i<201209;i++) //不知道你是什么C环境,如果是16位的整数,这个i值超出表达范围
{
scanf("%d",&a) //不可能把所在成绩全部保存在一个变量中
}
scanf(“%f”,&Grade) //Grade的变量类型是整数,
{
if (max<a[i]) //数组a不存在,怎么能访问a[i]
max=a[i];
if (min>a[i])
min=a[i];
}
printf("最高分同学的学号i=%d和成绩max%f
",i,max);
printf("最低分同学的学号i=%d和成绩min%f
",i,min);
}#include
void main()
{
int i,a[8],Grade,max=0,min=100;
printf("请输入8个同学的成绩=
");
for(i=0;i<8;i++)
scanf("%d",&a[i])
max=a[i]; //这时候,i的值是8了,有a[8]这个元素吗?
max=min=a[0]; //改成下面这样吧,这样max和min的初值都是第一个元素了
for(i=0;i<8;i++)
{
if (max<a[i])
max=a[i];
if (min>a[i])
min=a[i];
}
printf("最高分同学的学号i=%d和成绩max%f
",i,max);
printf("最低分同学的学号i=%d和成绩min%f
",i,min);
}