m0_67563591 2022-06-03 13:31 采纳率: 100%
浏览 588
已结题

dev c++ 输出出现乱码

运行后出现乱码,当把系统函数system("cls")去掉后可以正常输出,不出现乱码。
网上的一些解决乱码的方法尝试了几种,但如仍未解决。
希望可以解决,输出不出现乱码。


```c++
c++
#include<iostream>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
using namespace std;

void CheckFile();/*检测该程序所用文件是否存在*/
int FirstMenu();/*输出主菜单*/
int SecondMenu(int i);
/*根据主菜单下用户的选择显示相应的菜单,
用i表示用户的选择*/
void Write();/*录入学生成绩*/
void Search();/*查询学生成绩*/
/*用于记录学生的信息,包括学号*/

typedef struct Student
{
    char sNumber[9];
    char sName[20];
    char sSex[3];
    int iGrade[4];
} Stu;

int main()
{
    int flag=0;  
   
    while(flag!=3)/*当flag=3是表示用户选择了退出*/
    {
        system("cls");
        flag=SecondMenu(FirstMenu());
    }
}

int FirstMenu()
{
    int i; /*记录用户的选择情况*/
    /*输出主菜单*/
    cout << "*****************************************************" << endl;
    cout << "*                                                   *" << endl;
    cout << "*            1    录入学生成绩                      *" << endl;
    cout << "*            2    查询学生成绩                      *" << endl;
    cout << "*            3    退出                              *" << endl;
    cout << "*****************************************************" << endl;
    cout << "请您选择(输入数字):";
    cin >> i;    
    return i;
}

int SecondMenu(int i)
{
    system("cls");
    switch(i)
    {
       case 1:
           {
               Write();
               break;
           }
       case 2:
           {
               Search();
               break;
           }
       case 3:
           {
               cout << "程序已经退出!" << endl;
               break;
           }
    }
    return i;
 
}

void Write()
{
    FILE *fp;
    Stu s,*p;
    char s1;
    char s2='n';   /*临时地记录用户的输入*/
    p=&s;
    if((fp=fopen("学生信息.dat","ab"))==NULL)
    {
        if((fp=fopen("学生信息.dat","wb"))==NULL)
        {
            cout << "打开文件时出错!" << endl;
            exit(1);
        }
    }
    do
    {
        cout << "请输入学生的信息:" << endl;
        cout << "学号:";
        cin >> s.sNumber;
        cout << "姓名:";
        cin >> s.sName;
        cout << "性别:";
        cin >> s.sSex;
        cout << "请输入成绩,要求输入非负整数:" << endl;
        cout << "数学:";
        cin >> s.iGrade[0];
        cout << "英语:";
        cin >> s.iGrade[1];
        cout << "计算机:";
        cin >> s.iGrade[2];
        cout << "体育:";
        cin >> s.iGrade[3];
        cout << "是否确定?(输入:y/n)" << endl;
        cin >> s1;
        if(s1=='y')
        {
            fwrite(p,sizeof(Stu),1,fp);
            system("cls");
            cout << "录入成功,是否继续录入?(输入:y/n)" << endl;
            cin >> s2;
            system("cls");
        }
    }while(s2=='y');
    fclose(fp);
}

void Search()
{
    FILE *fp;
    Stu s,*p;
    char sNumber1[9];/*记录用户输入的学号*/
    int option;/*记录用户的选择*/
    p=&s;
    cout << "请输入学号:";
    cin >> sNumber1;
    if((fp=fopen("学生信息.dat","rb"))==NULL)
    {
        cout << "打开文件时出错!";
        exit(1);
    }
    else
    {
        int k;
        do
        {
            fread(p,sizeof(Stu),1,fp);            
        }while(strcmp(p->sNumber,sNumber1)!=0&&feof(fp)==0);
        /*当文件指针到达文件末尾时feof(fp)的值不为零*/
        if(strcmp(p->sNumber,sNumber1)!=0)
        {
            cout << "无此学生信息!" << endl;
            cout << "按任意键确定。";
            getch();
            return;
        }
        cout << endl;
        cout << endl;
                /*显示菜单*/
        cout << "++++++++++++++++++++++" << endl;
        cout << "+  1  输出数学成绩   +" << endl;
        cout << "+  2  输出英语成绩   +" << endl;
        cout << "+  3  输出计算机成绩 +" << endl;
        cout << "+  4  输出体育成绩   +" << endl;
        cout << "+  5  输出所有成绩   +" << endl;
        cout << "++++++++++++++++++++++" << endl;
        cout << "请选择:";
        cin >> option;
        cout << endl;
        cout << "学号" << '\t' << "姓名" << '\t' << "性别" << endl;
        cout << p->sNumber << '\t' << p->sName << '\t' << p->sSex << endl;        
                /*根据用户的选择,调用相应的功能*/
        switch(option)
        {
          case 1:
              {
                  cout << "数学" << endl << p->iGrade[0] << endl;
                  break;
              }
          case 2:
              {
                  cout << "英语" << endl << p->iGrade[1] << endl;
                  break;
              }
          case 3:
              {
                  cout << "计算机" << endl << p->iGrade[2] << endl;
                  break;
              }
          case 4:
              {
                  cout << "体育" << endl << p->iGrade[3] << endl;                  
                  break;
              }
          case 5:
              {
                  cout << "数学" << '\t' << "英语" << '\t' << "计算机" << '\t' << "体育" << '\t' << endl;
                  for(k=0;k<4;k++)
                      cout << p->iGrade[k] << '\t';
                  cout << endl;
              }
        }
        cout << "按任意键确定:";
        getch();
    }
}




```

img

  • 写回答

1条回答 默认 最新

  • qddpjfw1 2022-06-03 20:38
    关注

    没有问题呀
    file:///C:/Users/86139/Desktop/QQ%E5%9B%BE%E7%89%8720220603203910.png
    这个是图片网址
    看见编译器上面的一行小字了么,你的D盘是U盘吧,可能是U盘中病毒了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月14日
  • 已采纳回答 6月6日
  • 专家修改了标签 6月4日
  • 修改了问题 6月3日
  • 展开全部