如何将编码从 C 转换为 C++?

Posted

技术标签:

【中文标题】如何将编码从 C 转换为 C++?【英文标题】:How to convert coding to C++ from 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; 【参考方案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; 重载运算符。

【讨论】:

以上是关于如何将编码从 C 转换为 C++?的主要内容,如果未能解决你的问题,请参考以下文章

c++ 如何转换UTF8编码??

使用 MATLAB 编码器将 MATLAB 转换为 C++

如何通过目标c中的编码将pdf文件转换为图像

如何将m文件转换为c文件

如何使用 matlab 编码器将 matlab 函数“pchip”转换为 c 代码

c++字符编码转换