C语言编写,高手进,我已经琢磨了一下午了一晚上了,要吐血了

Python023

C语言编写,高手进,我已经琢磨了一下午了一晚上了,要吐血了,第1张

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#define N 50

#define M 3

char name[N][11]

char *p

double score[N][M+1]

void sortbytotal(int n)

{ int i,j,k

double temp=score[0][0]

for(i=0i<ni++)

{ for(j=0j<nj++)

if(score[i][0]<score[j][0])

{for(k=0k<=Mk++)

{ temp=score[i][k]

score[j][k]=score[i][k]

score[j][k]=temp}

p = (char *)malloc(strlen(name[i])+1)

//加上上面这句

strcpy(p,name[i]) //这里你没给p分配内存

strcpy(name[i],name[j])

strcpy(name[j],p)

}

}

}

void display(int n)

{ int i,k

printf("name,maths,English,C,total:\n")

for(i=0i<ni++)

{ printf("%10s\n",name[i])

for(k=1k<=Mk++)

printf("%.1lf",score[i][k])

printf("%.2lf",score[i][0])}

}

void input(int n)

{ int i,k

for(i=0i<ni++)

{ printf("input DI(%d)Ge student's name:",i+1)

scanf("%s",&name[i])

printf("input the score of <%s>:\n",name[i])

for(k=1k<=Mk++) // 这个循环不对

{ scanf("%lf",&score[i][k])

score[i][0]=0 //你每次都清0,前面的白加了

score[i][0]+=score[i][k]}

}

改为:

score[i][0]=0 //加之前清0

for(k=1k<=Mk++)

{ scanf("%lf",&score[i][k])

score[i][0]+=score[i][k]}

}

调整了一下格式,你的代码应该没有什么问题的

#include <stdio.h>

#include<math.h>

int main (void)

{

int count,i,n

float total,grade   //题目已强调输入肯定在整型范围内

count=0

scanf ("%d",&n)

if(n<0)  //关于if的使用,如果分支较多,建议干脆一种情况一个if

//不然,几个else if 或者else就把自己给绕晕了

{

printf ("Invalid Value!")

}

if(n>0)

{

for (i=1i<=ni++)

{

scanf ("%f",&grade)

total+=grade

if (grade>=60)//

{

count++

}

}

printf ("average = %.1f\n",total/n)

printf ("count = %d",count)

}

if (n==0)

{

printf ("average = 0.0\n")

printf ("count = 0")

}

return 0

}