わかりました、これは私の宿題です。しかし、誰もが「理解してください」と言う前に、私はプログラムを機能させました。整数の完全な10文字で機能しない理由がわかりません。宿題は、ユーザーに整数を入力するように求めます。1 つのスイッチを使用して、数値を 1 つの整数語で出力します (26 は 2 6 になります)。私はそれを機能させることができます。私が抱えている問題は、出力される整数として 1-0 を入力すると、「1 2 3 4 5 6 7 8 0 0」になります。1-9 と入力すると、「1 2 3 4 5 6 7 9 9」と表示されます。1-8 と入力すると、問題なく動作します。ここで何が問題なのかわかりません。これが私のコーディングです。
#include <stdio.h>
int main(void)
{
int num, num2, integer, decimal_place, length, sum;
float multiplier, integer_length, avg;
printf("\nPlease enter an integer: ");
scanf("%d", &num);
printf("\n");
printf("\tYou have entered:\n\n\t");
if (num < 0)
{
printf("negative ");
num *= -1;
}
num2 = num;
length = 1;
sum = 0;
integer_length = 0;
// Get the length of the input
while (num2 > 9)
{
length++;
num2 /= 10;
}
for (integer = length; integer > 0; integer--)
{
multiplier = 10;
for (decimal_place = integer; decimal_place > 0; decimal_place--)
{
multiplier *= 0.1;
}
num2 = num * multiplier;
num2 %= 10;
switch(num2)
{
case 0:
printf("zero");
sum += 0;
break;
case 1:
printf("one");
sum += 1;
break;
case 2:
printf("two");
sum += 2;
break;
case 3:
printf("three");
sum += 3;
break;
case 4:
printf("four");
sum += 4;
break;
case 5:
printf("five");
sum += 5;
break;
case 6:
printf("six");
sum += 6;
break;
case 7:
printf("seven");
sum += 7;
break;
case 8:
printf("eight");
sum += 8;
break;
case 9:
printf("nine");
sum += 9;
break;
}
printf(" ");
}
while ( num > 0 )
{
num /= 10.00;
integer_length++;
}
avg = sum / integer_length;
printf("\n\nThe sum of the individual integers is: %d\n", sum);
printf("The average is: %.2f", avg);
printf("\n\n");
return 0;
}
どんな助けでも大歓迎です。