输入一个整数,输出每个数字对应的拼音

题目:
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:

0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu
输入格式:
输入在一行中给出一个整数,如:1234。

提示:整数包括负数、零和正数。

输出格式:
在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如
yi er san si。

输入样例:
-600
输出样例:
fu liu ling ling

谁能告诉我为啥下面第一个代码对了,第二个代码报错“格式错误”


#include<iostream>
#include<string.h>
#include<map>
using namespace std;
int main()
{ 
    char a[1000];
   
    fgets(a, 1000, stdin);
    int x = strlen(a);
    mapmymap{{'-',"fu"},{'0',"ling"},{'1',"yi"}, {'2',"er"}, {'3',"san"}, {'4',"si"}, {'5',"wu"}, {'6',"liu"}, {'7',"qi"}, {'8',"ba"}, {'9',"jiu"}, };
    cout<int i = 1; i < x-1; i++)
    {
        cout <<" "<< mymap[a[i]];
    }
     if(a[x-1]=='0')cout<<" ling";
     if(a[x-1]=='1')cout<<" yi";
     if(a[x-1]=='2')cout<<" er";
     if(a[x-1]=='3')cout<<" san";
   if(a[x-1]=='4')cout<<" si";
    if(a[x-1]=='5')cout<<" wu";
    if(a[x-1]=='6')cout<<" liu";
    if(a[x-1]=='7')cout<<" qi";
    if(a[x-1]=='8')cout<<" ba";
    if(a[x-1]=='9')cout<<" jiu";
    return 0;
}


```c++
#include
#include
#include
using namespace std;
int main()
{ 
    char a[1000];
   
    fgets(a, 1000, stdin);
    int x = strlen(a);
    map<char, string>mymap{{'-',"fu"},{'0',"ling"},{'1',"yi"}, {'2',"er"}, {'3',"san"}, {'4',"si"}, {'5',"wu"}, {'6',"liu"}, {'7',"qi"}, {'8',"ba"}, {'9',"jiu"}, };
    cout<0]];
    for (int i = 1; i < x; i++)
    {
        cout <<" "<< mymap[a[i]];
    }
   return 0;
}

```

啥格式错误,报错在哪,发出来看看

  • 看下这篇博客,也许你就懂了,链接:从键盘上输入3个正整数,判断这3个正整数是否可以构成一个三角形,进一步判断是等边(输出1)、等腰(输出2) 回文是指正读和反读都一样的数或字符,键盘上读取一个包含5位数字的长整数,并判断它是否是回文
  • 除此之外, 这篇博客: (C语言)写几个函数,1.输入10个职工的姓名和职工号2.按职工号由小到大顺序排序,姓名顺序也随之调整3.要求输入一个职工号,用折半查找找出该职工的姓名,从主函数输入要查找职工号,输出该职工姓名.中的 写几个函数,1.输入10个职工的姓名和职工号2.按职工号由小到大顺序排序,姓名顺序也随之调整3.要求输入一个职工号,用折半查找找出该职工的姓名,从主函数输入要查找职工号,输出该职工姓名. 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 也可以输入职工姓名查询 , 输出职工号
    https://blog.csdn.net/qq_41071068/article/details/90314040

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define N 10
    struct staff {//创建结构体变量
    	int id;//职工号
    	char name[1024];//姓名
    };
    void input(struct staff* p) {//输入职工的姓名和职工号
    	struct staff* q = p;
    	for (int i = 1; p < q + N; ++i, ++p) {
    		printf("请输入第%d个职工的职工号\n",i);
    		scanf("%d",&p->id);
    		printf("请输入该职工的姓名\n");
    		scanf("%s", p->name);//p->name本来就是指针,存放的就是地址,无需取地址
    		
    	}
    }
    void sort(struct staff* p) {//按职工号从大到小排序
    	char temp[1024];
    	struct staff* q = p;
    	for (; p < q + N; ++p) {
    		for (struct staff* qq= p + 1;qq < q + N; ++qq) {
    			if (p->id > qq->id) {
    				p->id = p->id ^ qq->id;//按位异或法
    				qq->id = p->id ^ qq->id;
    				p->id = p->id ^ qq->id;
    				strcpy(temp, p->name);
    				strcpy(p->name, qq->name);
    				strcpy(qq->name, temp);
    			}
    		}
    	}
    }
    struct staff* bisearch(int n, struct staff* p) {//查找是否有职工号为n的职工(二分查找)
    	int left = 0;
    	int right = N - 1;
    	int mid;
    	struct staff* Mp;
    	while (left <= right) {
    		mid = (left + right) / 2;
    		Mp = p + mid;
    		if (n == Mp->id) {
    			return Mp;//有则返回这个id所对应的指向结构体数组的指针Mp
    		}
    		else if (n > Mp->id) {
    			left = mid + 1;
    		}
    		else if (n < Mp->id) {
    			right = mid - 1;
    		}
    	}
    	return NULL;//无则返回空指针
    }
    void main() {
    	int n;
    	struct staff staff[N];//创建N个结构体变量
    	struct staff* p;//创建指向结构体
    	p = staff;//指向结构体数组的首元素
    	input(p);
    	system("cls");
    	sort(p);
    	//该段代码可以检测排序是否成功
    	for (; p < staff + N; ++p) {
    		printf("%d\t%s\n", p->id, p->name);
    	}
    	p = staff;
    	//
    	printf("请输入需要查询的员工号\n");
    	scanf("%d", &n);
    	struct staff* q = bisearch(n, p);
    	if (q != NULL) {
    		printf("职工号为%d的职工姓名为:%s\n", q->id, q->name);
    	}
    	else {
    		printf("没有职工号为%d的员工\n", n);
    	}
    	system("pause");
    }
    
    
    

    在这里插入图片描述