sinon_blink 2021-01-01 20:01 采纳率: 100%
浏览 52
已采纳

C语言小白求助!!为什么输出是乱码?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 10

struct student
{
    char Name[10];
	char ID[10];
    int Math;
	int English;
	int Chinese;
}stu[50];
void Input()
{
    printf("请输入学生信息\n");
    printf("\t\t姓名	学号    Math    English		Chinese\n");
    for(int i=0;i<SIZE;i++)
    {
        printf("\t\t");
        scanf("%s%s%d%d%d",stu[i].Name,stu[i].ID,&stu[i].Math,&stu[i].English,&stu[i].Chinese);
    }
}
void save()
{
    FILE *fp;
    int i;
    if((fp=fopen("student.dat","wb"))==NULL)
    {
        printf("cannot open file\n");
        return;
    }
    for(i=0;i<SIZE;i++)
        if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
            printf("file write error\n");
        fclose(fp);
}

int main()
{
    Input();
    save();
    return 0;
}




#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct student
{
    char Name[10];
	char ID[10];
    int Math;
	int English;
	int Chinese;
}stu[50];
void Chinese_sort(struct student *p,int n);
void Math_sort(struct student *p,int n);
void English_sort(struct student *p,int n);
void Chinese_sort(struct student *p,int n)
{
      int i,j;
      struct student temp;
      for(i=0;i<n-1;i++)
          for(j=0;j<n-1-i;j++){
              if((p+j)->Chinese>(p+j+1)->Chinese){
                  temp=*(p+j);
                  *(p+j)=*(p+j+1);
                  *(p+j+1)=temp;
              }
          }
 }
 void English_sort(struct student *p,int n)
{
      int i,j;
      struct student temp;
      for(i=0;i<n-1;i++)
          for(j=0;j<n-1-i;j++){
              if((p+j)->English>(p+j+1)->English){
                  temp=*(p+j);
                  *(p+j)=*(p+j+1);
                  *(p+j+1)=temp;
              }
          }
 }
 void Math_sort(struct student *p,int n)
{
      int i,j;
      struct student temp;
      for(i=0;i<n-1;i++)
          for(j=0;j<n-1-i;j++){
              if((p+j)->Math>(p+j+1)->Math){
                  temp=*(p+j);
                  *(p+j)=*(p+j+1);
                  *(p+j+1)=temp;
              }
          }
 }
int main()
{
    struct student stu[50],*p;
    p=stu;
    int n=10;
    printf("语文排序如下:\n\n");
    Chinese_sort(p,n);
    for(int i=0;i<10;i++)
		 {
         printf("\t\t姓名\t学号\t成绩\n");
         printf("\t\t%s\t%s\t%d\n",stu[i].Name,stu[i].ID,stu[i].Chinese);
         }
    printf("数学排序如下:\n\n");
    Math_sort(p,n);
    for(int i=0;i<10;i++)
		 {
         printf("\t\t姓名\t学号\t成绩\n");
         printf("\t\t%s\t%s\t%d\n",stu[i].Name,stu[i].ID,stu[i].Math);
         }
    printf("英语排序如下:\n\n");
    English_sort(p,n);
    for(int i=0;i<10;i++)
		 {
         printf("\t\t姓名\t学号\t成绩\n");
         printf("\t\t%s\t%s\t%d\n",stu[i].Name,stu[i].ID,stu[i].English);
         }
    return 0;
}

  • 写回答

2条回答

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥20 51单片机实训实验报告
      • ¥15 C# 循环读写数据中途突然变慢
      • ¥15 用Java实现双端队列
      • ¥150 ID3决策树实现分类
      • ¥15 multisim10安装后,找不到NI License Manager的程序来安装许可证
      • ¥15 C++银行卡系统 Help!
      • ¥15 R语言数据分析的相关问题
      • ¥15 模型导入SP后贴图纹理只有一个,拆了四张UV的,怎么解决?
      • ¥15 检索带order by 非常慢
      • ¥20 python 爬虫 token 加密方式