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

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条回答 默认 最新

  • 八云黧 2021-01-02 21:27
    关注

    结构体数组指针p里面并没有实质数据

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果