有一个程序求高手帮忙修改一下,小弟实在分数紧张。解决后必加分感谢
#include <stdio.h>
#include <string.h>
#define MAX_NUM (100)
#define MAX_LEN (4)
enum
{
I, V, X, L, C, N
};
char *roam1[] = {"", "i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix" };
char *roam10[] = {"", "x", "xx", "xxx", "xl", "l", "lx", "lxx", "lxxx", "xc", "c" };
int total[N];
unsigned int inputs[MAX_NUM];
int nums = 0;
int input()
{
printf("Input:\n");
while (1)
{
scanf("%u", &inputs[nums]);
if (inputs[nums] == 0)
{
return 0;
}
else if (inputs[nums] <= 100)
{
nums++;
}
}
return 0;
}
int count(int n)
{
char sz_roam[32];
int i, j;
memset(total, 0, sizeof(total));
for (i = 1; i <= inputs[n]; i++)
{
sprintf(sz_roam, "%s%s", roam10[i / 10], roam1[i % 10]);
for (j = 0; sz_roam[j]; j++)
{
switch (sz_roam[j])
{
case 'i':
total[I]++;
break;
case 'v':
total[V]++;
break;
case 'x':
total[X]++;
break;
case 'l':
total[L]++;
break;
case 'c':
total[C]++;
break;
}
}
}
return 0;
}
int output()
{
int n;
printf("\nOutput:\n");
for (n = 0; n < nums; n++)
{
count(n);
printf("%u: %d i, %d v, %d x, %d l, %d c\n", inputs[n], total[I], total[V], total[X], total[L], total[C]);
}
return 0;
}
int main()
{
input();
output();
getchar();
return 0;
}
这个程序在运行时没有错误但是就是不能输出所要的结果,
这道题大致就是吧所出入的数字改换成罗马字符,在统计相应罗马字符个数
比如输入1就是‘i’,2就是‘i’‘ii’,5就是从‘i’‘ii’到‘iv’‘v’十就是自‘i’到‘x’,50是‘l’100是‘c’
统计出现的‘i v x c 的个数然后输出。