功能查询

时间:2014-09-27 08:53:06

标签: c function

我没有在以下程序中获得所需的输出

#include <stdio.h>
#include <stdlib.h>
int roman(int,int,char);
int main()
{
    int yr;
    printf("Please enter a year: ");
    scanf("%d",&yr);
    yr =  roman(yr,1000,'m');  
    yr =  roman(yr,900,'cm');
    yr =  roman(yr,500,'d');
    yr =  roman(yr,400,'cd');
    yr =  roman(yr,100,'c');
    yr =  roman(yr,90,'xc');
    yr =  roman(yr,50,'l');
    yr =  roman(yr,40,'xl');
    yr =  roman(yr,10,'x');
    yr =  roman(yr,9,'ix');
    yr =  roman(yr,5,'v');
    yr =  roman(yr,4,'iv');
    yr =  roman(yr,1,'i');
    return 0;
}
int roman(int yr,int k, char m)
{
    int j,i;
    j = yr/k;
    for(i=1;i<=j;i++)
        printf("%c",m);
    return (yr-k*j);
}

示例输出:

请输入年份:144 CLV

请输入年份:9 X


为什么会发生这种情况,我希望144是cxliv而9是ix。 谢谢你的帮助

1 个答案:

答案 0 :(得分:2)

正如我的评论中所述,char只能存储一个字符。例如,您无法将cm作为单个字符传递给roman()。相反,您应该将指向字符串的指针传递给roman()并相应地修改printf()

int roman(int, int, char*);
int main()
{
    [...]
    yr = roman(yr, 1000, "m");
    yr = roman(yr, 900, "cm");
    [...]
}
int roman(int yr, int k, char* m)
{
    int j,i;
    j = yr/k;
    for(i=1; i<=j; i++)
        printf("%s", m);
    return (yr-k*j);
}

也许还有更多问题,但这至少解决了其中一个问题。