我没有在以下程序中获得所需的输出
#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。 谢谢你的帮助
答案 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);
}
也许还有更多问题,但这至少解决了其中一个问题。