所以我有一個作業,我必須將整數轉換為羅馬數字。我使用的代碼是這樣的:
#include <stdio.h>
int main(){
int N, i, a, num;
(1<=N<=3000);
scanf("%d", &N);
for(i=0; i<N; i ){
scanf("%d", &num);
while (num != 0){
if (num>=1000){
printf("M\n");
num -= 1000;
}
else if (num>=900){
printf("CM\n");
num -= 900;
}
else if (num>=500){
printf("D\n");
num -= 500;
}
else if (num>=400){
printf("CD\n");
num -= 400;
}
else if (num>=100){
printf("C\n");
num -= 100;
}
else if (num>=90){
printf("XC\n");
num -= 90;
}
else if (num>=50){
printf("L\n");
num -= 50;
}
else if (num>=40){
printf("XL\n");
num -= 40;
}
else if (num>=10){
printf ("X\n");
num -= 10;
}
else if (num>=9){
printf ("IX\n");
num -= 9;
}
else if (num>=5){
printf ("V\n");
num -= 5;
}
else if (num>=4){
printf ("IV\n");
num -= 4;
}
else if (num>=1){
printf ("I\n");
num -= 1;
}
}
**printf("\n");**
}
return 0;
}
但代碼的結果是這樣的: 結果
我知道我可以洗掉 \n 以修復間距,但我們需要輸入在新行中,所以如果我洗掉 \n,我將輸入的數字將在羅馬數字旁邊在它下面。例如,像這樣:沒有 \n 的結果
我想要它做的是將羅馬數字排成一行,但我終生無法找到一種方法來做到這一點。
已解決:在 while 回圈后添加“printf(\n)”
uj5u.com熱心網友回復:
您可以洗掉\n所有的,然后在回圈printf之后添加一個。printf("\n")while
uj5u.com熱心網友回復:
當然,如果它有效:
#include <stdio.h>
int main(void)
{
int N, i, num;
scanf("%d", &N);
for(i=0; i<N; i )
{
scanf("%d", &num);
while (num != 0)
{
if (num>=1000)
{
printf("M");
num -= 1000;
}
else if (num>=900)
{
printf("CM");
num -= 900;
}
else if (num>=500)
{
printf("D");
num -= 500;
}
else if (num>=400)
{
printf("CD");
num -= 400;
}
else if (num>=100)
{
printf("C");
num -= 100;
}
else if (num>=90)
{
printf("XC");
num -= 90;
}
else if (num>=50)
{
printf("L");
num -= 50;
}
else if (num>=40)
{
printf("XL");
num -= 40;
}
else if (num>=10)
{
printf ("X");
num -= 10;
}
else if (num>=9)
{
printf ("IX");
num -= 9;
}
else if (num>=5)
{
printf ("V\n");
num -= 5;
}
else if (num>=4)
{
printf ("IV");
num -= 4;
}
else if (num>=1)
{
printf ("I");
num -= 1;
}
}
printf ("\n");
}
return 0;
}
uj5u.com熱心網友回復:
來自 OP 評論:I love coding。
偉大的。但編碼不是復制/粘貼。努力超越基礎:
#include <stdio.h>
int main() {
struct { int v; char *s; } rnc[] = {
{ 1000, "M" },
{ 900, "CM" },
{ 500, "D" },
{ 400, "CD" },
{ 100, "C" },
{ 90, "XC" },
{ 50, "L" },
{ 40, "XL" },
{ 10, "X" },
{ 9, "IX" },
{ 5, "V" },
{ 4, "IV" },
{ 1, "I" },
};
int nums[] = { 1492, 1950, 1997, 1998, 1999, 2022, 0, };
for( int i, n = 0, num; (num = nums[n]) != 0; n ) {
printf( "M - ", num );
char str[ 32 ] = { 0 };
for( ; num > 0; num -= rnc[i].v ) {
for( i = 0; num < rnc[i].v; i )
;
strcat( str, rnc[i].s );
}
puts( str );
}
return 0;
}
1492 - MCDXCII
1950 - MCML
1997 - MCMXCVII
1998 - MCMXCVIII
1999 - MCMXCIX
2022 - MMXXII
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/512709.html
標籤:C
下一篇:使用指標計算字串的算術平均值
