注册 登录
编程论坛 数据结构与算法

求大家帮我看看这个程序哪里出问题了,只能输入几个。。

编程的未来 发布于 2013-06-07 14:22, 548 次点击
求大家帮我看看这个程序哪里出问题了,只能输入几个。。
#include <stdio.h>
#define SIZE 5

struct student //定义结构体
{
    int ID; //学号
    char name[20]; //姓名
    int math_marks; //数学成绩
    int computer_marks; //计算机成绩
    int english_marks; //英语成绩
    int average;
};
void ShellSort(struct student a[],int N)//希尔排序
{
    struct student t;
     int i,j,gap;
     for (gap=N/2;gap>0;gap=gap/2)
      {
         for(i=gap;i<=N;i++)
//           for(i=gap+1;i<=N;i++)
        {              
             j=i-gap;
              while(j>=0)
              {
                if(a[j].average>a[j+gap].average)
                {
                 t=a[j];
                 a[j]=a[j+gap];
                 a[j+gap]=t;
                 j=j-gap;
                }
                 else break;
               }
        }
        }
}
int main()
{
    struct student a[SIZE];
  
 // int a[] = {45,65,11,21,36,7,98,100,73,61};
  
   int i;
   for(i=0;i<SIZE;i++)//输入学生信息
    {
        printf("请输入第%d个学生的学号",i+1);
        scanf("%d",&a[i].ID);
        printf("请输入第%d个学生的姓名",i+1);
        scanf("%s",&a[i].name);
        printf("请输入第%d个学生的数学成绩",i+1);
        scanf("%d",&a[i].math_marks);
        printf("请输入第%d个学生的计算机成绩",i+1);
        scanf("%d",a[i].computer_marks);
        printf("请输入第%d个学生的英语成绩",i+1);
        scanf("%d",&a[i].english_marks);
        printf("请输入第%d个学生的平均分",i+1);
        scanf("%d",&a[i].average);
        
    }
  ShellSort(a,SIZE);
  for(i=0;i<SIZE;i++)
  {
     printf("%d,%s,%d,%d,%d,%d",a[i].ID,a[i].name,a[i].math_marks,a[i].computer_marks,a[i].english_marks,a[i].average);
  }
   return 0;           
}
                                       
1 回复
#2
Susake2013-06-09 02:55
程序代码:
#include <stdio.h>

 #define SIZE 4

 struct student //定义结构体
{
     int ID; //学号
    char name[20]; //姓名
    int math_marks; //数学成绩
    int computer_marks; //计算机成绩
    int english_marks; //英语成绩
    int average;

 };

 void ShellSort(struct student a[],int N)//希尔排序
{
     struct student t;
      int i,j,gap;
      for (gap=N/2;gap>0;gap=gap/2)
       {
          for(i=gap;i<=N;i++)

 //           for(i=gap+1;i<=N;i++)
         {
              j=i-gap;
               while(j>=0)
               {
                 if(a[j].average>a[j+gap].average)
                 {
                  t=a[j];
                  a[j]=a[j+gap];
                  a[j+gap]=t;
                  j=j-gap;
                 }
                  else break;
                }
         }
         }

 }

 int main()

 {
     struct student a[SIZE];

 // int a[] = {45,65,11,21,36,7,98,100,73,61};
    int i;
    for(i=0;i<SIZE;i++)//输入学生信息
    {
         printf("请输入第%d个学生的学号",i+1);
         scanf("%d",&a[i].ID);
         printf("请输入第%d个学生的姓名",i+1);
         scanf("%s",&a[i].name);
         printf("请输入第%d个学生的数学成绩",i+1);
         scanf("%d",&a[i].math_marks);
         printf("请输入第%d个学生的计算机成绩",i+1);
         scanf("%d",&a[i].computer_marks);
         printf("请输入第%d个学生的英语成绩",i+1);
         scanf("%d",&a[i].english_marks);
         printf("请输入第%d个学生的平均分",i+1);
         scanf("%d",&a[i].average);
     }
   ShellSort(a,SIZE);
   for(i=0;i<SIZE;i++)
   {
      printf("%d,%s,%d,%d,%d,%d",a[i].ID,a[i].name,a[i].math_marks,a[i].computer_marks,a[i].english_marks,a[i].average);
   }
    return 0;

 }
输入少了&
1