【问题标题】:How to convert coding to C++ from C?如何将编码从 C 转换为 C++?
【发布时间】:2015-02-22 10:38:59
【问题描述】:

void main(){

   char name [50];
   int id;
   int year;
   float salary;
   float bonus;

     printf(" PLEASE ENTER YOUR NAME : ");
     scanf("%c",&name);
     printf("\n");

     printf(" PLEASE ENTER YOUR ID: ");
     scanf("%d",&id);
     printf("\n");

     printf(" ENTER AMOUNT OF YEARS YOU HAVE WORKED: ");
     scanf("%d",&year);
     printf("\n");

    printf(" ENTER YOUR MONTHLY SALARY: ");
    scanf("%f",&salary);
    printf("\n");


    if(year<5)
    bonus=1000;

    else if((year>5)&&(year<10))
    bonus=0.02*(salary)+1000;

    else if (year >10){
    bonus=0.03*(salary)+1000;
    }
    printf("YOUR BONUS IS:",bonus);

    printf("/n");
    printf("/n");
    printf("/n");


    printf("***CSC COMPANY ***\n");
    printf("NAME : ",name);
    printf("ID : ",id);
    printf("YEARS OF SERVICES: ",year);
    printf("MONTHLY SALARY (RM): ",salary);
    printf("BONUS(RM): ",bonus);

    getch();
    }

这是我收到的编码,我真的需要帮助将其转换为 C++。请帮帮我。即使我知道该程序相对简单和基本,我在将程序从 C 转换为 C++ 方面也很差劲。因此,如果有人可以帮助我,将不胜感激。另外,如果有人能告诉我如何获得任何适用于 Windows 8.1 的 C 和 C++ 程序,那也太棒了。

【问题讨论】:

  • void main() 更改为int main(),删除getch()#include &lt;stdio.h&gt;

标签: c++ c


【解决方案1】:
void main(){

void main 在任何一种语言中都不是有效的,所以马上告诉你这不是最高质量的代码。

使用标准 int main(),或 C++11 语法,如果您对此进行标准化,auto main() -&gt; int


char name [50];

在 C++ 中,使用 std::string 表示窄文本字符串变量。


float salary;
float bonus;

默认使用double 而不是float。例如3.14 的类型是double,而不是float。使用float 是一种节省内存的方法,并且在某些情况下可以提高速度,但会减少有效数字的数量(并且可能降低速度,因为与double 之间的转换) .

float 对使用 C 语言的初学者很有用,因为 scanf 和一个简单的 %f 需要 float。当使用 C++ 等流时,在 C++ 中没有这样的原因。


 printf(" PLEASE ENTER YOUR NAME : ");
 scanf("%c",&name)

这里的scanf 调用是一个错误。

在这样的 C++ 程序中,只需使用类型更安全的coutcin iostreams。通过运算符&lt;&lt; 输出。对于没有空格的名称,您可以使用运算符&gt;&gt; 输入,但我建议将其更改为行输入,getline


getch();

在程序结束时停止并不能解决任何问题:这只是一个问题。所以删除它。

要查看所有输出,请从命令解释器运行程序,或者例如在 Visual Studio 中通过 Ctrl+F5 运行它,或者在调试器中在 main 的最后一个右大括号上放置一个断点。

【讨论】:

    【解决方案2】:

    在您的 C 代码中有一个错误:要获取输入名称,您必须使用 scanf("%s",&name) 而不是 %c。 要将代码转换为 C++,您只需要使用 cin & cout。尽管在 c++ 中允许使用 scanf 和 printf。我使用字符串而不是 char 数组....这里是示例代码:

    #include <bits/stdc++.h>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<conio.h>
    
    using namespace std;
    
    int main()
    {
       string name;
       int id;
       int year;
       float salary;
       float bonus;
    
       cout<<" PLEASE ENTER YOUR NAME : ";
       cin>>name;
       cout<<endl;
       cout<<" PLEASE ENTER YOUR ID: ";
       cin>>id;
       cout<<"\n";
    
     cout<<" ENTER AMOUNT OF YEARS YOU HAVE WORKED: ";
     cin>>year;
     cout<<"\n";
    
      cout<<" ENTER YOUR MONTHLY SALARY: ";
      cin>>salary;
      cout<<"\n";
    
      if(year<5)
      bonus=1000;
    
      else if((year>5)&&(year<10))
      bonus=0.02*(salary)+1000;
    
      else if (year >10){
      bonus=0.03*(salary)+1000;
     }
     cout<<"YOUR BONUS IS:"<<bonus;
    
     cout<<"/n";
     cout<<"/n";
     cout<<"/n";
    
    
    cout<<"***CSC COMPANY ***\n";
    cout<<"NAME : "<<name;
    cout<<"ID : "<<id;
    cout<<"YEARS OF SERVICES: "<<year;
    cout<<"MONTHLY SALARY (RM): "<<salary;
    cout<<"BONUS(RM): "<<bonus;
    
     getch();
    

    }

    【讨论】:

      【解决方案3】:

      你从哪里得到这个 C 代码?

      它包含许多错误,并为工作时间恰好为 5 年或 10 年的人调用未定义的行为。依靠这个程序产生的答案来写奖金支票是相当冒险的!

      修复 C 版本后,将其转换为 C++ 很简单:只需使用 C++ 编译器进行编译即可。我需要使用 C++ 将其转换为完整的 Windows 交互式应用程序,你来错地方了。如果您只想使用 C++ 特定的输入/输出流,请查看 &lt;&lt; 重载运算符。

      【讨论】:

        猜你喜欢
        • 2019-09-29
        • 2020-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-28
        • 1970-01-01
        • 1970-01-01
        • 2011-12-07
        相关资源
        最近更新 更多