如何将编码从 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 <stdio.h>
。
【参考方案1】:
void main()
void main
在任何一种语言中都不是有效的,所以马上告诉你这不是最高质量的代码。
使用标准 int main()
,或 C++11 语法,如果您对此进行标准化,auto main() -> 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++ 程序中,只需使用类型更安全的cout
和cin
iostreams。通过运算符<<
输出。对于没有空格的名称,您可以使用运算符>>
输入,但我建议将其更改为行输入,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++ 特定的输入/输出流,请查看 <<
重载运算符。
【讨论】:
以上是关于如何将编码从 C 转换为 C++?的主要内容,如果未能解决你的问题,请参考以下文章