注册 登录
编程论坛 C语言论坛

请求大佬帮忙看看错的原因

温柔 发布于 2019-11-12 16:27, 2212 次点击
不懂错的原因,大佬帮忙看看,就一点
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
5 回复
#2
c小白23332019-11-12 20:50
程序发全一点
#3
forever742019-11-12 21:06
你的脚发紫多半是因为你的袜子掉色。
#4
温柔2019-11-12 22:35
回复 2楼 c小白2333
题目:把n的每一位加起来,用汉语拼音输出sum的每一位
#include <stdio.h>

void num(int num);

int main()
{
    int n;
    scanf("%d",&n);
    int i;
    int mask = 1;
    int a=n;
    int sum = 0;
    while (a>0)
    {
        sum+=a%10;
        a /= 10 ;
    }
    a =sum;
    while (a>9)
    {
        a /= 10;
        mask *= 10;
    }
    mask *=10;
    while(mask>0)
    {
        num = sum/mask;
        sum %= mask;
        mask/=10;
        num(num);
        printf(" ");
        if(mask == 0)
            printf("%b");
    }
    return 0;
}
void num(int num)
{
    switch (num)
    {
    case 0 : printf("ling");break;
    case 1 : printf("yi");break;
    case 2 : printf("er");break;
    case 3 : printf("san");break;
    case 4 : printf("si");break;
    case 5 : printf("wu");break;
    case 6 : printf("liu");break;
    case 7 : printf("qi");break;
    case 8 : printf("ba");break;
    case 9 : printf("jiu");break;
    }
}
#5
rjsp2019-11-13 09:09
把n的每一位加起来
题目中有说 n 的取值范围吗?

程序代码:
#include <stdio.h>

int main( void )
{
    unsigned n;
    scanf( "%u", &n );

    unsigned sum = 0;
    for( unsigned t=n; t; t/=10 )
        sum += t%10;

    unsigned mask = 1;
    for( unsigned t=sum; t>=10; t/=10 )
        mask *= 10;

    const char* map[] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" };
    for( unsigned t=mask; t; t/=10 )
    {
        unsigned index = sum/t%10;
        printf( "%s%c", map[index], " \n"[t==1] );
    }

    return 0;
}



[此贴子已经被作者于2019-11-13 10:41编辑过]

#6
纯蓝之刃2019-11-13 19:54
首先函数名和变量名不要一样,其次变量num没有定义。
然后printf("%b");如果你想打印%b,需要写成printf("%%b");
1