学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
轻松建立自己的群组,招兵买马   
 15 12
发新话题
打印

【求助啊】刚学数组,练练手,却...

回复 6# 的帖子

clrscr()——大概清屏用吧

TOP

char xingming[20][N]={"0"};/    *定义一个字符型二维数组,xingming[0][N]是学号,xingming[1][N]~xingming[19][N]代表姓名*/,        人数不定的啊!
printf(" 请输入学生总数:\n");  这句输不出来!
天生孤独的思考~~~~~~~~~

TOP

回复 12# 的帖子

人数不是在50人以下么?N就是50,所以正合题意啊。

如果你的中文输不出来,可能是编译器的问题吧?我的WIN-TC运行正常。

TOP

1~19是姓名字符,考虑到也许会用拼音拼写姓名,所以用了19的这个范围。如果是中文,因为最多是5个字,所以定义11就够了。

TOP

修改了的程序

#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#define N 50
main()
{ int grade[N][4],i,a,j,k,temp,sum;
char name[N][10],t[10];
  printf("请输入学生数:\n");/*输入学生数*/
  scanf("%d",&k);
   for(i=0;i<k;i++)                         /*输入学生成绩*/
    {      printf("请输入第%d个学生姓名:",i+1);
     gets(name[i]);
       printf("\n");
     for(j=0;j<3;j++)
     { printf("请输入第%3d科成绩\n",j+1);
       scanf("%d",&grade[i][j]);
      }grade[i][3]=grade[i][0]+grade[i][1]+grade[i][2];  /*对学生成绩求和,保存在后面喃!*/
    }
  //sum=0;
  //for(i=0;i<k;i++)                     
    //{
     // for(j=0;j<4;j++)
     // sum+=grade[i][j];
   // }
   
  for(i=0;i<k-2;i++) /*排序,交换成绩,名字*/
  for(j=i+1;j<k-1;j++)
      if(grade[i][3]<grade[j][3])
    { temp=grade[i][3];
     grade[i][3]=grade[j][3];
     grade[j][3]=temp;
   strcpy(t, name[i]);
   strcpy(name[i],name[j]);
   strcpy(name[j],t);
     }
  // printf("%d",grade[i][j]);

   for(i=0;i<k;i++)
printf("\nNO:%d,mame:%s sum=%d",i+1,name[i],grade[i][3]);
system("pause");
}

TOP

 15 12
发新话题