給一個不多于5位的正整數?
不對的原因,主要是if條件語句應該是用“==”而不是“=”,這是判斷,不是賦值。其它的錯誤,scanf_s("%d",&a)改成scanf("%d",&a),printf用錯了,printf打印應該是一個占位符對應一個要輸出的內容,就是你代碼中%d對應一個輸出。
修改后的代碼:
#include<stdio.h>
int main()
{
int a, b, c, d, e, f, w;
printf("輸入一個不多于五位的整數:");
scanf("%d",&a);
//第一問,求出它是幾位數
b = 10000 - a;
c = 1000 - a;
d = 100 - a;
e = 10 - a;
f = 0 - a;
while (a < 0 || a > 99999)
printf("輸入錯誤,請重新輸入\n");
if (b < 0)
{
printf("a是五位數\n");
w = 5;
}else if (c < 0){
printf("a是四位數\n");
w = 4;
}else if (d < 0){
printf("a是三位數\n");
w = 3;
}else if (e < 0){
printf("a是兩位數\n");
w = 2;
}else if (f < 0){
printf("a是個位數\n");
w = 1;
}else
printf("輸入錯誤,請重新輸入\n");
//第二問,分別輸出每一位數字
if (w == 5)
printf("%d %d %d %d %d\n", a / 10000, a / 1000 % 10, a / 100 % 10, a / 10 % 10, a % 10);
if (w == 4)
printf("%d %d %d %d\n", a / 1000 % 10, a / 100 % 10, a / 10 % 10, a % 10);
if (w == 3)
printf("%d %d %d\n", a / 100 % 10, a / 10 % 10, a % 10);
if (w == 2)
printf("%d %d\n", a / 10 % 10, a % 10);
if (w == 1)
printf("%d\n", a % 10);
//第三問,按逆序輸出各位數字
if (w == 5)
printf("%d %d %d %d %d\n", a % 10, a / 10 % 10, a / 100 % 10, a / 1000 % 10, a / 10000);
if (w == 4)
printf("%d %d %d %d\n", a % 10, a / 10 % 10, a / 100 % 10, a / 1000 % 10);
if (w == 3)
printf("%d %d %d\n", a % 10, a / 10 % 10, a / 100 % 10);
if (w == 2)
printf("%d %d\n", a % 10, a / 10 % 10);
if (w == 1)
printf("%d\n", a % 10);
}
修正后的代碼執行如下: