永发信息网

c语言,求输入一个小写数字输出大写一万以内的就可以 如输入 132 输出 一百三十二

答案:5  悬赏:80  手机版
解决时间 2021-03-30 05:15
  • 提问者网友:我没有何以琛的痴心不悔
  • 2021-03-30 02:19
c语言,求输入一个小写数字输出大写一万以内的就可以 如输入 132 输出 一百三十二
最佳答案
  • 五星知识达人网友:往事埋风中
  • 2021-03-30 02:56
#include 
#include 

int main() 
{
    char digit[10][3] = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
    char unit[4][3] = {"十", "百", "千", "万"};
    char minusculeStr[6];   //储存整数转换后的字符串
    int temp, strLength, i;

    int minuscule;
    printf("请输入一个整数(一万以内): ");
    scanf("%d", &minuscule);

    memset(minusculeStr, 0, 6);
    temp = minuscule;
    for (i = 0; temp; temp /= 10, i++) {
        minusculeStr[i] = temp % 10 + 48;   //转换整数每一位为对应字符存入字符数组
    }

    strLength = strlen(minusculeStr);
    for (i = strLength; i > 0; i--) //打印整数的大写
    if(minusculeStr[i - 1] != '0')
        printf("%s%s", digit[minusculeStr[i - 1] - 48], unit[i - 2]);
else if(minusculeStr[i - 2] == '0' || i == 1)
    ;        //Do nothing
      else
    printf("%s", digit[minusculeStr[i - 1] - 48]);     //优化输出格式,更接近书面语
    putchar('
');

    return 0;
}
全部回答
  • 1楼网友:舊物识亽
  • 2021-03-30 05:29
判断就行追答了追问有点乱,总出现错误追答代码太乱
  • 2楼网友:玩世
  • 2021-03-30 04:30
对这个数 分别 对 10000 1000 100 10 求余数,并且每次求得余数,并对原数消去最大位,一位一位去判断,然后分别写万 千 百 十 个
  • 3楼网友:蕴藏春秋
  • 2021-03-30 04:07

#include
 
char Unit[][4]={"","十","百","千","万"};
char Number[][4]={"零","一","二","三","四","五","六","七","八","九"};
 
int main()
{
 
 int input;
 int output;
 int i;
 int unit = 10000;
 scanf("%d",&input);

 
input = input >= 100000?99999:input; //保证输入小于10万
for(i = 4;;i--)
{
if( input < 10) //
{
printf("%s",Number[input]);
break;
}
else
{
output = input/unit;
input %= unit; // 将输入数据降一个数量级
unit /= 10;  //同上
if( output) // 如果输出的数为零则不输出
{
printf("%s%s",Number[output],Unit[i]);
}
}

 
}
return 0;
}
  • 4楼网友:千杯敬自由
  • 2021-03-30 03:51
首先确认最高位是什么用
while(N>=10)
{
N=N/10;
I++;
}
得到位数I
有了位数就可以把数字拆开并转换为大写
switch(I)
case 3:是百,
最高位是N/(10^I-1)这可以写个函数调用switch 然后根据最高位是什么替换为对应的汉字,然后用sprintf把汉字和百接到一起
第二位是N%(10^I-1)同上 然后用sprintf把汉字和十接到一起
第一位是N%10同上
最后把三个拼到一起就可以啦!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯