C++ C++;:如何将普通话(字符串)分配给用户使用数组输入的数字&;运营商问题

C++ C++;:如何将普通话(字符串)分配给用户使用数组输入的数字&;运营商问题,c++,arrays,operators,C++,Arrays,Operators,这是我的代码(底部的问题描述): intx=0; int y=0; int z=0; 常数大小=11; const char*普通话[普通话大小]={“灵”、“一”、“二”、“三”、“色”、“五”、“六”、“七”、“八”、“九”、“十”}; cout x; 如果(!cin)返回1; 库蒂; 如果(!cin)返回1; cout>z; 如果(!cin)返回1; 对于(;y,如果正确理解您使用普通话的计数方式,此代码将正确计数到99。我在这里使用的是std::map,我认为它比您的方法更合适,更具c+

这是我的代码(底部的问题描述):

intx=0;
int y=0;
int z=0;
常数大小=11;
const char*普通话[普通话大小]={“灵”、“一”、“二”、“三”、“色”、“五”、“六”、“七”、“八”、“九”、“十”};
cout x;
如果(!cin)返回1;
库蒂;
如果(!cin)返回1;
cout>z;
如果(!cin)返回1;

对于(;y,如果正确理解您使用普通话的计数方式,此代码将正确计数到99。我在这里使用的是std::map,我认为它比您的方法更合适,更具c++风格

#include <map>
#include <iostream>
#include <string>

int main () {

  std::map<int,std::string> mandarin_numbers;
  mandarin_numbers[0] = "ling";
  mandarin_numbers[1] = "yi";
  mandarin_numbers[2] = "er";
  mandarin_numbers[3] = "san";
  mandarin_numbers[4] = "se";
  mandarin_numbers[5] = "wu";
  mandarin_numbers[6] = "liu";
  mandarin_numbers[7] = "qi";
  mandarin_numbers[8] = "ba";
  mandarin_numbers[9] = "jiu";
  mandarin_numbers[10] = "shi";

  // in c++11 you could more simply: std::map<unsigned int,std::string,> mandarin_numbers {{0,"ling"}, etc..};

  std::cout << "Please enter a number that you want to count up to in Mandarin." << std::endl;
  int x = 0;
  std::cin >> x;
  std::cout << "Please enter what number to start with:" << std::endl;
  int y = 0;
  std::cin >> y;
  std::cout << "What step size do you want to use?" << std::endl;
  int z = 0;
  std::cin >> z;

  for ( ;y<=x; y=y+z) {
    int tens = y / 10;
    int ones = y % 10;
    std::cout << mandarin_numbers[tens] << " " << mandarin_numbers[10] << " "
          << mandarin_numbers[ones] << std::endl;
  }

  return 0;
}
#包括
#包括
#包括
int main(){
std::地图编号;
普通话数字[0]=“玲”;
国语字母[1]=“一”;
国语字母[2]=“er”;
国语字母[3]=“san”;
普通话数字[4]=“se”;
国语字母[5]=“吴”;
国语数字[6]=“刘”;
国语数字[7]=“齐”;
国语字母[8]=“ba”;
国语字母[9]=“jiu”;
普通话数字[10]=“是”;
//在c++11中,您可以更简单地使用:std::映射汉语数字{{{0,“ling”},等等..};
std::cout x;
std::cout y;
std::coutz;

对于(;y有很多问题。我给你的建议是使用调试器(或打印到控制台),观察
tens
one
的值。y不同,但比较x,例如如果(x<11).你确定吗?我应该在if语句中键入什么来确保输出是我想要的?如果你想从1开始,以2为步长数到10,你的程序将输出以下内容:1 yi 3 san 5 wu 7 qi 9 jiu我们不会输出任何超过bc的内容下一个数字超过10。字典:0-ling 1-yi 2-er 3-san 4-se 5-wu 6-刘7-齐8-巴9-九10-史要数到10以上的数字,请使用以下规则:对于数字11到19,它是“史”,然后是上面的数字:11-史一12-史二13-史三对于数字20到99,它是第一个数字,然后是“史”,然后是第二个数字(0除外):33-三世散52-五世二80-巴世索里我还在学习如何使用这个网站,但是你程序的输出是不正确的。它确实帮助我更多地理解了数组。上面的评论是方向和输出应该如何be@Alexis你可以在我的程序的基础上,使用
中文数字[N]
,N是要编码的数字。因此,您可以将
if
(或者
swich
)块放在look中,然后从那里前进。
#include <map>
#include <iostream>
#include <string>

int main () {

  std::map<int,std::string> mandarin_numbers;
  mandarin_numbers[0] = "ling";
  mandarin_numbers[1] = "yi";
  mandarin_numbers[2] = "er";
  mandarin_numbers[3] = "san";
  mandarin_numbers[4] = "se";
  mandarin_numbers[5] = "wu";
  mandarin_numbers[6] = "liu";
  mandarin_numbers[7] = "qi";
  mandarin_numbers[8] = "ba";
  mandarin_numbers[9] = "jiu";
  mandarin_numbers[10] = "shi";

  // in c++11 you could more simply: std::map<unsigned int,std::string,> mandarin_numbers {{0,"ling"}, etc..};

  std::cout << "Please enter a number that you want to count up to in Mandarin." << std::endl;
  int x = 0;
  std::cin >> x;
  std::cout << "Please enter what number to start with:" << std::endl;
  int y = 0;
  std::cin >> y;
  std::cout << "What step size do you want to use?" << std::endl;
  int z = 0;
  std::cin >> z;

  for ( ;y<=x; y=y+z) {
    int tens = y / 10;
    int ones = y % 10;
    std::cout << mandarin_numbers[tens] << " " << mandarin_numbers[10] << " "
          << mandarin_numbers[ones] << std::endl;
  }

  return 0;
}