您现在的位置 > 首页>知识问答 >

【结案】为什么C++代码用vs2017跑不起来

点击图片查看下一页
查看原图
更新:06-25     编辑:     来源:    


  • 数据结构的,一个学期了才发现原来是被2017坑了,代码怎么调试都编译不了
    同学2010一点问题没有
    泥潭的超能力者有没有办法解决
    图是2010运行正常的代码整个复制以后的结果
    [img]%5Bimg%5D[/img][/img]
    代码来了

      //shiyan2xianxingbiaodelianshicunchu.cpp:定义控制台应用程序的入口点。
      #include "stdafx.h"
      #include
      #include
      #include
      #include
      using namespace std;
      #define OK 1
      #define ERROR 0
      #define OVERFLOW -2
      typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。
      typedef int ElemType; //ElemType 为可定义的数据类型,此设为int类型

      struct Book {
              string id;//ISBN
              string name;//书名
              double price;//定价
      };
      typedef struct LNode {
              Book data; //结点的数据域
              struct LNode *next; //结点的指针域
      } LNode, *LinkList; //LinkList为指向结构体LNode的指针类型

      string head_1, head_2, head_3;
      int length;

      Status InitList_L(LinkList &L) { //算法2.6 单链表的初始化
              //构造一个空的单链表L
              L = new LNode; //生成新结点作为头结点,用头指针L指向头结点
              L->next = NULL; //头结点的指针域置空
              return OK;
      }

      Status GetElem_L(LinkList L, int i, Book &e) { //算法2.7 单链表的取值
              //在带头结点的单链表L中查找第i个元素
              //用e返回L中第i个数据元素的值
              int j;
              LinkList p;
              p = L->next;
              j = 1; //初始化,p指向第一个结点,j为计数器
              while (j < i && p) { //顺链域向后扫描,直到p指向第i个元素或p为空
                      p = p->next; //p指向下一个结点
                      ++j; //计数器j相应加1
              }
              if (!p || j > i)
                      return ERROR; //i值不合法i>n或i<=0
              e = p->data; //取第i个结点的数据域
              return OK;
      } //GetElem_L

      LNode *LocateElem_L(LinkList L, int e) { //算法2.8 按值查找
              //在带头结点的单链表L中查找值为e的元素
              LinkList p;
              p = L->next;
              while (p && p->data.price != e)//顺链域向后扫描,直到p为空或p所指结点的数据域等于e
                      p = p->next; //p指向下一个结点
              return p; //查找成功返回值为e的结点地址p,查找失败p为NULL
      } //LocateElem_L

      Status ListInsert_L(LinkList &L, int i, Book &e) { //算法2.9 单链表的插入
              //在带头结点的单链表L中第i个位置插入值为e的新结点
              int j;
              LinkList p, s;
              p = L;
              j = 0;
              while (p && j < i - 1) {
                      p = p->next;
                      ++j;
              }//查找第i?1个结点,p指向该结点
              if (!p || j > i - 1)
                      return ERROR; //i>n+1或者i<1
              s = new LNode; //生成新结点*s                        
              s->data = e; //将结点*s的数据域置为e
              s->next = p->next; //将结点*s的指针域指向结点ai
              p->next = s; //将结点*p的指针域指向结点*s
              ++length;
              return OK;
      } //ListInsert_L

      Status ListDelete_L(LinkList &L, int i) { //算法2.9 单链表的删除
              //在带头结点的单链表L中,删除第i个位置        
              LinkList p, q;
              int j;
              p = L;
              j = 0;
              while ((p->next) && (j        {
                      p = p->next;
                      ++j;
              }
              if (!(p->next) || (j > i - 1))
                      return ERROR; //当i>n或i<1时,删除位置不合理
              q = p->next; //临时保存被删结点的地址以备释放
              p->next = q->next; //改变删除结点前驱结点的指针域
              delete q; //释放删除结点的空间
              --length;
              return OK;
      } //ListDelete_L

      void CreateList_H(LinkList &L, int n) { //算法2.11 前插法创建单链表
              //逆位序输入n个元素的值,建立到头结点的单链表L
              LinkList p;
              L = new LNode;
              L->next = NULL; //先建立一个带头结点的空链表
              length = 0;
              fstream file;
              file.open("book.txt");
              if (!file) {
                      cout << "未找到相关文件,无法打开!" << endl;
                      exit(ERROR);
              }
              file >> head_1 >> head_2 >> head_3;
              while (!file.eof()) {
                      p = new LNode; //生成新结点*p
                      file >> p->data.id >> p->data.name >> p->data.price; //输入元素值赋给新结点*p的数据域
                      p->next = L->next;
                      L->next = p; //将新结点*p插入到头结点之后
                      length++;//同时对链表长度进行统计
              }
              file.close();
      } //CreateList_F

      void CreateList_R(LinkList &L, int n) { //算法2.12 后插法创建单链表
              //正位序输入n个元素的值,建立带表头结点的单链表L
              LinkList p, r;
              L = new LNode;
              L->next = NULL; //先建立一个带头结点的空链表
              r = L; //尾指针r指向头结点
              length = 0;
              fstream file; //打开文件进行读写操作
              file.open("book.txt");
              if (!file) {
                      cout << "未找到相关文件,无法打开!" << endl;
                      exit(ERROR);
              }
              file >> head_1 >> head_2 >> head_3;
              while (!file.eof()) { //将文件中的信息运用后插法插入到链表中
                      p = new LNode;//生成新结点
                      file >> p->data.id >> p->data.name >> p->data.price;//输入元素值赋给新结点*p的数据域
                      p->next = NULL;
                      r->next = p;//将新结点*p插入尾结点*r之后                 
                      r = p;//r指向新的尾结点*p
                      length++; //同时对链表长度进行统计
              }
              file.close();
      } //CreateList_L

      int main() {
              int a, n, choose;
              int i=0,j,k;
              double price,ave,sum=0,max=0;
              Book e;
              string name;
              LinkList L, p,s;
              cout << "1. 建立\n";
              cout << "2. 输入\n";
              cout << "3. 取值\n";
              cout << "4. 查找\n";
              cout << "5. 插入\n";
              cout << "6. 删除\n";
              cout << "7. 输出\n";
              cout << "8. 图书信息表价格降序排列\n";
              cout << "9. 图书信息表的修改\n";
              cout << "10. 顺序表的逆序存储\n";
              cout << "11. 图书信息表的最贵图书的查找\n";
              cout << "12. 图书信息表的最爱图书的查找\n";
              cout << "13. 图书信息表的最佳位置图书的查找\n";
              cout << "14. 图书信息表的新图书的插入\n";
              cout << "15. 图书信息表的图书的出库\n";
              cout << "16. 图书信息表的图书去重\n";
              cout << "0. 退出\n\n";

              choose = -1;
              while (choose != 0) {
                      cout << "请选择:";
                      cin >> choose;
                      switch (choose) {
                      case 1: //建立一个单链表
                              if (InitList_L(L))
                                      cout << "成功建立链表!\n\n";
                              break;
                      case 2: //使用后插法创建单链表
                              CreateList_R(L, length);
                              cout << "输入 book.txt 信息完毕\n\n";
                              break;
                      case 3: //单链表的按序号取值
                              cout << "请输入一个位置用来取值:";
                              cin >> a;
                              if (GetElem_L(L, a, e)) {
                                      cout << "查找成功\n";
                                      cout << "第" << a << "本图书的信息是:\n";
                                      cout << left << setw(15) << e.id << "\t" << left << setw(50)
                                                      << e.name << "\t" << left << setw(5) << e.price << endl
                                                      << endl;
                              } else
                                      cout << "查找失败\n\n";
                              break;
                      case 4: //单链表的按值查找
                              cout << "请输入所要查找价格:";
                              cin >> price;
                              if (LocateElem_L(L, price) != NULL) {
                                      cout << "查找成功\n";
                                      cout << "该价格对应的书名为:" << LocateElem_L(L, price)->data.name
                                                      << endl << endl;
                              } else
                                      cout << "查找失败! 定价" << price << " 没有找到\n\n";
                              break;
                      case 5: //单链表的插入
                              cout << "请输入插入的位置和书的信息,包括:编号 书名 价格(用空格隔开):";
                              cin >> a;
                              cin >> e.id >> e.name >> e.price;
                              if (ListInsert_L(L, a, e))
                                      cout << "插入成功.\n\n";
                              else
                                      cout << "插入失败!\n\n";
                              break;
                      case 6: //单链表的删除
                              cout << "请输入所要删除的书籍的位置:";
                              cin >> a;
                              if (ListDelete_L(L, a))
                                      cout << "删除成功!\n\n";
                              else
                                      cout << "删除失败!\n\n";
                              break;
                      case 7: //单链表的输出
                              cout << "当前图书系统信息(链表)读出:\n";
                              p = L->next;
                              while(p) {i++;p=p->next;}
                              cout<                        p = L->next;
                              while (p) {
                                      cout << left << setw(15) << p->data.id << "\t" << left << setw(
                                                      50) << p->data.name << "\t" << left << setw(5)
                                                      << p->data.price << endl;
                                      p = p->next;
                              }
                              cout << endl;
                              break;
                 /* case 8: //图书信息表价格降序排列
                               cout << "图书信息表价格降序排列\n";
                              p = L->next;
                              while (p) {
                                      cout << left << setw(15) << p->data.id << "\t" << left << setw(
                                                      50) << p->data.name << "\t" << left << setw(5)
                                                      << p->data.price << endl;
                                      p = p->next;
                              }
                              cout << endl;
                              break;*/
                      case 9: //图书信息表的修改
                               cout << "图书信息表的修改\n";
                              p = L->next;
                              while(p)
                              {sum=sum+p->data.price;
                              i++;
                              p=p->next;
                              }
                              ave=sum/i;
                              cout<< fixed<next;
                              while (p) {
                                      if(p->data.price>=ave)
                                              p->data.price=1.1*p->data.price;
                                      else p->data.price=1.2*p->data.price;
                                      cout << left << setw(15) << p->data.id << "\t" << left << setw(
                                                      50) << p->data.name << "\t" << left << setw(5)
                                                      << fixed<data.price << endl;
                                      p = p->next;
                              }
                              cout << endl;
                              break;
                      /*case 10: //顺序表的逆序存储
                               cout << "顺序表的逆序存储\n";
                              p = L->next;
                              j=length/2;
                              while (p) {
                                      for(i=0;i                                {
                                      }
                                      cout << left << setw(15) << p->data.id << "\t" << left << setw(
                                                      50) << p->data.name << "\t" << left << setw(5)
                                                      << p->data.price << endl;
                                      p = p->next;
                              }
                              cout << endl;
                              break;*/
                      case 11: //图书信息表的最贵图书的查找
                               cout << "图书信息表的最贵图书的查找\n";
                              p = L->next;
                              while(p)
                              {max=p->data.price>max?p->data.price:max;
                               p = p->next;}
                              p = L->next;
                              i=0;
                              while(p)
                              {if(p->data.price==max) i++;
                              p = p->next;}
                              cout<                        p = L->next;
                              while (p) {
                                      if(p->data.price==max)
                                      cout << left << setw(15) << p->data.id << "\t" << left << setw(
                                                      50) << p->data.name << "\t" << left << setw(5)
                                                      << fixed<data.price << endl;
                                      p = p->next;
                              }
                              cout << endl;
                              break;
                      case 12: //图书信息表的最爱图书的查找
                               cout << "图书信息表的最爱图书的查找\n";
                              p = L->next;
                              cin>>n;
                              for(k=0;k            {
                                      cin>>name;
                                      j=0;
                              while(p)
                                      {if(name==p->data.name)
                                      j++;
                                  p = p->next;}
                                      if(j!=0) cout<                        if(j==0)
                                      cout<<"抱歉,没有你的最爱!"<                        p = L->next;
                              while(p){
                                      if(name==p->data.name)
                                      cout << left << setw(15) << p->data.id << "\t" << left << setw(
                                                      50) << p->data.name << "\t" << left << setw(5)
                                                      << fixed<data.price << endl;
                                      p = p->next;}
                              }
                              cout << endl;
                              break;
                      case 13: //图书信息表的最佳位置图书的查找
                               cout << "图书信息表的最佳位置图书的查找\n";
                               cin>>n;
                               i=0;
                              p = L->next;
                              if(n==0||n>length)
                                              cout<<"抱歉,最佳位置上的书不存在!"<                                else cout<<"成功!"<                                while(p)
                                      {
                                              i++;
                                      if(i==n)
                                        cout << left << setw(15) << p->data.id << "\t" << left << setw(
                                                      50) << p->data.name << "\t" << left << setw(5)
                                                      << fixed<data.price << endl;
                                      p = p->next;}
                              cout << endl;
                              break;
                      case 14: //图书信息表的新图书的插入
                               cout << "图书信息表的新图书的插入\n";
                              p = L->next;
                              cin >> a;
                              cin >> e.id >> e.name >> e.price;
                              if (ListInsert_L(L, a, e))
                                      cout << "插入成功.\n\n";
                              else
                                      cout << "抱歉,入库位置非法!\n";
                              p = L->next;
                              while (p) {
                                      cout << left << setw(15) << p->data.id << "\t" << left << setw(
                                                      50) << p->data.name << "\t" << left << setw(5)
                                                      << fixed<data.price << endl;
                                      p = p->next;
                              }
                              cout << endl;
                              break;
                      case 15: // 图书信息表的图书的出库;
                               cout << "图书信息表的图书的出库\n";
                              p = L->next;
                              while (p) {
                                      cout << left << setw(15) << p->data.id << "\t" << left << setw(
                                                      50) << p->data.name << "\t" << left << setw(5)
                                                      << fixed<data.price << endl;
                                      p = p->next;
                              }
                              cout << endl;
                              break;
                      case 16: //图书信息表的图书去重
                               cout << "图书信息表的图书去重\n";
                              p = L->next;
                              while (p) {
                                      cout << left << setw(15) << p->data.id << "\t" << left << setw(
                                                      50) << p->data.name << "\t" << left << setw(5)
                                                      << fixed<data.price << endl;
                                      p = p->next;
                              }
                              cout << endl;
                              break;
                      }
              }
              return 0;
      }
    复制代码



    网友评论:
    你直接粘贴复制的代码 ?
    就放个错误输出鬼知道你写了什么
    代码是CSDN拷的吧


    代码都没有胡jb猜一个: 你用了大量中文全角标点.
    另外你这问题你自己用脑想一下, 这能是VS2017的问题?

    csdn 的博客里面故意放错误代码的毛病是什么时候开始的鬼风气?
    文本后缀锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷
    看这输出,代码里面一堆字符编码不对变乱码了吧。

    不是,我特地要了同学运行正常的作业

    —— 来自 samsung SM-G9300, Android 8.0.0上的 v2.0.4
    你不把代码贴出来谁知道你哪儿错了

    —— 来自 vivo NEX S, Android 8.1.0上的 v2.0.4-play
    提问 0 分……
    GB2132和utf-8的锅?
    说起来都快9102年了什么学校数据结构还用vs的, 难道提交的是vs的solution么
    我们这都是gcc+makefile, 改的时候直接make一下看能不能跑

    怎么要的,不会是QQ上帖代码给你吧
    你是只复制了代码自己建的工程还是直接把工程复制过来打开的啊

    vs2017和2010还真是差的有点巨大
    安装要求的操作系统都不是一代的

    但我也不知道这会不会影响c++代码

    要交的实验报告整个

    都快9102年了还有人把VS立在gcc的对立面

    http://blogs.msdn.microsoft.com ... with-visual-studio/

    你应该要工程文件,CPP文件,实验报告DOC不能直接拿来编译

    低版本的工程文件可以升级成高版本的

    你白内障只看到个gcc?
    DOC里的代码有控制符,有全角符号,肯定无法编译

    http://docs.microsoft.com/en-us ... roject?view=vs-2017
    瞬间编译过了,就只有一个warning,虽然用的是mingw
    难道不是代码页不对?vc++能不打中文还是别打中文了

    都说你白内障了还杠你

相关推荐

精彩图集

一品图片网部分图片资源收集于互联网,如果侵犯了您的版权请来信告知,我们会及时处理和回复,邮件地址:
© 2021 一品图片网 版权所有 苏ICP备150288886号 | sitemap | 图片大全