在C ++中更改变量的值?

时间:2014-02-26 02:47:09

标签: c++ variables for-loop

我希望你能帮助我。 问题是我不知道如何改变变量的值,例如,我有一个 “char”变量,然后我想将其更改为“int”或“float” 这是代码

#include<iostream>
#include<cstdlib>
using namespace std;

main()
{
{
cout<<" El valor de las calificaciones es A=10,B=9,C=8,D=7,E=6,F=5,G=4,H=3,I=2,J=1 "             <<endl;}
char calificaciones[4];
int resultado,A=10,B=9,C=8,D=7,E=6,F=5,G=4,H=3,I=2,J=1, i, promedio;
for(i=1;i<4;i++)

{

    cout<<"Ingrese calificacion con letra "<<i;
    cin>>calificaciones[i];


}
promedio=(calificaciones[1]+calificaciones[2]+calificaciones[3])/3;
cout<<"El promedio de sus tres calificaciones es "<<promedio<<endl;
system("pause");

}

该程序应该要求用户输入三个分数,分数以字母显示,如您所见,A = 10,B = 9等,一旦用户输入三个字母,程序将进入将它们分成三个,但由于变量“calificaciones”首先是一个字符串,我如何进行操作我想要这样做,或者是什么命令我可以用来让程序理解用户输入三个字母和一个字母他们会做什么操作? 希望你能帮帮我,谢谢。

2 个答案:

答案 0 :(得分:1)

在C ++,Java等强类型语言中更改变量的数据类型是不可能的。您需要定义一个具有所需类型的新变量。像Python和PHP这样的弱类型语言(通常)是无类型的,可以让你随心所欲地混合和匹配数据类型,但在C ++中是不可能的。从技术上讲,您可以使用void pointers指向任何类型的对象,但它们不允许您更改现有变量的类型。 Here是关于强弱打字的更多信息。

如果您可以创建新变量,则可以使用转换函数或手动转换数据类型(如果可能)。例如,不可能将字符串“Hello world”转换为int,但是可以将类似“42”的字符串更改为int。 cstdlib / stdlib.h标头提供atof()atoi()等功能,可以进行基本转换(确保使用myString.c_str()将任何C ++字符串转换为字符数组通过他们)。 stringstream也是一个非常强大的工具,可以轻松地将任何东西转换为字符串,以及其他用途。

我不太确定你想做什么,但你可以使用字符的ASCII值来转换它们。例如,字母A的ASCII值为65,B为66,C为67,依此类推。由于字符本身存储为数字,因此您可以在不使用特殊转换函数的情况下转换它们。您可以简单地将一个char分配给int:

char ch = 'A';
int x = ch;           // this is an implicit conversion
cout << x << endl;    // this prints '65'

该字符为整数cast。你也可以明确地转换它:

char ch = 'A';
cout << ch << endl;        // this prints 'A'
cout << (int) ch << endl;  // this prints '65' because of the explicit conversion

它也可以反过来:

int x = 65;
char ch = x;
cout << ch << endl;   // this prints 'A'

答案 1 :(得分:1)

如果您的原始问题是,如何更改datatype,抱歉这是不可能的。

虽然,您尝试实现的目标可以通过std::map

完成

创建成绩地图。

 std::map<char,int> myGrades;
 myGrades.insert ( std::pair<char,int>('A',10) );
 myGrades.insert ( std::pair<char,int>('B',9) );
 myGrades.insert ( std::pair<char,int>('C',8) );
 myGrades.insert ( std::pair<char,int>('D',7) );

读取输入:(这是相同的。只有更改是索引从0开始)

for(i=0;i<3;i++)
{
    cout<<"Ingrese calificacion con letra "<<i;
    cin>>calificaciones[i];
}

从地图中获取实际整数。

int total_grades =  ( myGrades.find(calificaciones[0])->second + 
                      myGrades.find(calificaciones[1])->second + 
                      myGrades.find(calificaciones[2])->second);
promedio=total_grades /3.0;  //<-- NOtice 3.0 to avoid int/int