首页 > 为什么到了第三部分就输出乱码

为什么到了第三部分就输出乱码

c#include <stdio.h>
#include <string.h>
#define N 3      //课程门数 
#define M 3      //学生人数 

main()
{
    int i, j, choice, person, course;
    int sum[10], score[M][10];
    float ave[M];
    char no[M][10], name[M][10], subject[N][20], temp[10];

    for (;;)
    {
        printf("选项:\n");
        printf("1、输入数据\n");
        printf("2、输出成绩(在输入成绩前不能选择该选项)\n");
        printf("3、查找(在输入成绩前不能选择该选项)\n");
        printf("4、排序(在输入成绩前不能选择该选项)\n");
        printf("0、退出\n");
        printf("\n您的选择是:");

        scanf("%d", &choice);

        switch (choice)
        {
        case 1:
            do
            {
                printf("请输入学生数[<=%d]:", M);
                scanf("%d", &person);
            } while (person<0 || person>M);

            do
            {
                printf("请输入课程数[<=%d]: ", N);
                scanf("%d", &course);
            } while (course<0 || course>N);

            for (j = 0; j < course; j++)
            {
                printf("请输入第%d门课程名称:", j + 1);
                scanf("%s", subject[j]);
            }

            for (i = 0; i < person; i++)
            {
                sum[i] = 0;
                printf("\n请输入第%d名学生的学号:", i + 1);
                fflush(stdin);     //清空缓冲区里的字符 
                scanf("%s", no[i]);
                printf("\n请输入第%d名学生的姓名:", i + 1);
                fflush(stdin);
                scanf("%s", name[i]);

                printf("\n\n请输入%-s号学生成绩:\n", no[i]);
                ave[i] = 0;
                sum[i] = 0;

                for (j = 0; j < course; j++)
                {
                    printf("\n请输入%s的%s成绩:", no[i], subject[j]);
                    scanf("%d", &score[i][j]);
                    sum[i] = sum[i] + score[i][j];

                }
                ave[i] = 1.0*sum[i] / course;
            } break;
        case 2:
            printf("\n\nNo   ");
            for (i = 0; i < course; i++)
                printf("%10s ", subject[i]);
            printf("     Average");

            printf("\n----------------------------------------------------\n");

            for (i = 0; i < person; i++)
            {
                printf("%-10s  ", no[i]);
                for (j = 0; j < course; j++)
                    printf("%3d       ", score[i][j]);
                printf("   %-6.1f\n", ave[i]);
            }
        case 3:
            printf("请输入要查找的学生学号:");
            scanf("%s", &temp);
            for (i = 0; i < person; i++)
            {
                if (strcmp(no[i], temp) == 0)
                {
                    printf("查找结果如下\n\n");

                    printf("No   ");
                    for (i = 0; i < course; i++)
                        printf("%10s ", subject[i]);
                    printf("     Average");

                    printf("\n----------------------------------------------------\n");
                    printf("%-10s", no[i]);
                    for (j = 0; j < course; j++)
                        printf("%3d       ", score[i][j]);
                    printf("   %-6.1f\n", ave[i]);
                }
            }
            break;
        case 4:break;
       }
    }
}

printf("请输入要查找的学生学号:");
scanf("%s", temp); //这里不需要取地址,数组本身就是地址
for (i = 0; i < person; i++)
{
if (strcmp(no[i], temp) == 0)
{
printf("查找结果如下\n\n");

                    printf("No   ");
                    int k;    //这里
                    for (k = 0; k < course; k++)
                        printf("%10s ", subject[k]);
                    printf("     Average");

                    printf("\n----------------------------------------------------\n");
                    printf("%-10s", no[i]);
                    for (j = 0; j < course; j++)
                        printf("%3d       ", score[i][j]);
                    printf("   %-6.1f\n", ave[i]);
                }
            }
            break;

include <stdio.h>

include <string.h>

define N 3 //课程门数

define M 3 //学生人数

main()
{
int i,j,choice,person,course,s;
int sum[10],score[M][10];
float ave[M];
char no[M][10],name[M][10],subject[N][20],temp[10];

for(;;)
{
    printf("选项:\n");
    printf("1、输入数据\n");
    printf("2、输出成绩(在输入成绩前不能选择该选项)\n");
    printf("3、查找(在输入成绩前不能选择该选项)\n");
    printf("4、排序(在输入成绩前不能选择该选项)\n"); 
    printf("0、退出\n");
    printf("\n您的选择是:"); 

    scanf("%d",&choice);

switch(choice)
    {
        case 1:
          do 
             {
               printf("请输入学生数[<=%d]:",M);
               scanf("%d",&person);
             }  while(person<0||person>M);

          do 
             {
               printf("请输入课程数[<=%d]: ",N);
               scanf("%d",&course);
             }  while(course<0||course>N);

          for(j=0;j<course;j++)
             {
               printf("请输入第%d门课程名称:",j+1);
               scanf("%s",subject[j]); 
             }

          for(i=0;i<person;i++)
           {
              sum[i]=0;
              printf("\n请输入第%d名学生的学号:",i+1);
              fflush(stdin);     //清空缓冲区里的字符 
              scanf("%s",no[i]);
              printf("\n请输入第%d名学生的姓名:",i+1);
              fflush(stdin);
              scanf("%s",name[i]);

              printf("\n\n请输入%-s号学生成绩:\n",no[i]);
              ave[i]=0;
              sum[i]=0;

              for(j=0;j<course;j++)
               {
                 printf("\n请输入%s的%s成绩:",no[i],subject[j]);
                 scanf("%d",&score[i][j]);
                 sum[i]=sum[i]+score[i][j];

               }
                 ave[i]=1.0*sum[i]/course;
           } break;




        case 2:
          printf("\n\nNo   ");
          for(i=0;i<course;i++)
           printf("%10s ",subject[i]);
          printf("     Sum");
           printf("       Average");

           printf("\n----------------------------------------------------\n");

           for(i=0;i<person;i++)
           {
             printf("%-10s  ",no[i]);
             for(j=0;j<course;j++)
             printf("%3d       ",score[i][j]);
             printf("%3d        ",sum[i]);
             printf("   %-6.1f\n",ave[i]);  
           } 
        case 3:
           printf("请输入要查找的学生学号:");
           scanf("%s",temp) ;
           for(i=0;i<person;i++)
           {
            if(strcmp(no[i],temp)==0)
            {
            printf("查找结果如下\n\n");
            printf("No ");
             for(j=0;j<course;j++)
             {
             printf("%10s ",subject[j]);
             }
             printf("       Sum");
             printf("        Average");

            printf("\n----------------------------------------------------\n");
            printf("%-10s",no[i]);
            for(j=0;j<course;j++)
             printf("%3d       ",score[i][j]);
             printf("%3d       ",sum[i]);
             printf("   %-6.1f\n",ave[i]);  
            }





        }

        break;
        case 4:break;

    } 
}

}

【热门文章】
【热门文章】