如何處理測驗案例,如果我輸入數字10000 而我得到的結果是1,而不是00001。 如何處理這種情況?
#include <stdio.h>/span>
int main() {
int n, rev = 0, remainder;
printf("輸入一個整數:")。
scanf("%d", &n);
while (n != 0) {
remainder = n % 10;
rev = rev * 10 remainder。
n /= 10;
}
printf("reversed number = %d", rev) 。
return 0。
uj5u.com熱心網友回復:
記錄你的數字的位數,然后用格式化的長度來列印這個數字:
int numDigits = 0;
while (n != 0) {
...
numDigits ;
然后:
printf("Reversed number = %.*d"/span>, numDigits, rev)。
uj5u.com熱心網友回復:
使用%n指定器來計算輸入的數字數量。注意第一個%n前的空格,以跳過任何空白。此外,如果輸入的不是范圍內的整數,這將會失敗。
然后使用數字來填充輸出%0*d的前導零。
用輸入的10000和00001進行嘗試。
#include <stdio.h>
int main ( void) {
int n, rev = 0, remainder;
int start = 0;
int stop = 0;
printf ( "輸入一個整數:")。
scanf ( " %n%d%n", &start, &n, &stop) 。
int digits = stop - start;
while ( n != 0 || digits) {
--數字。
remainder = n % 10;
rev = rev * 10 remainder。
n /= 10;
}
printf ( "reversed number = %0*d", stop - start, rev) 。
return 0;
}
outout:
輸入一個整數。00002。
倒數=20000
輸入一個整數。3000 輸入一個整數。
倒數=0003
uj5u.com熱心網友回復:
將輸入作為字串讀取并反轉,如果你使用windows,你有string.h方便的strrev():
char n[20] 。
printf("輸入一個整數:")。
scanf("s"/span>, n)。
printf ("%s"/span>, strrev(n))。
否則,你必須自己制作,這里有一個很好的使用雙向XOR的方法:
char *strrev(char *str)
{
char *substr_lh, *substr_rh;
if (! str ||! *str)
return str;
for (substr_lh = str, substr_rh = str strlen(str) - 1;
substr_rh > substr_lh;
substr_lh, --substr_rh)
{
*substr_lh ^= *substr_rh;
*substr_rh ^= *substr_lh;
*substr_lh ^= *substr_rh;
}
return str;
}
你可以為非數字字符添加驗證,我認為這是微不足道的。
uj5u.com熱心網友回復:
一般來說,反轉的數字不能裝入其型別的物件中。
最好使用型別unsigned int而不是型別int。否則你會得到一個意外的結果。
你所需要的只是在一個欄位中輸出反轉的數字,其寬度等于輸入的數字的位數,如果需要的話,以零為前綴。
這里有一個演示程式。
#include <stdio.h>
int main(void)
{
const unsigned int Base = 10;
unsigned int n = 0;
printf( "輸入一個整數:" ) 。
scanf( "%u", &n ) 。
unsigned int rev = 0;
int count = 0;
do; do
{
rev = rev * Base n % Base。
count;
} while ( n /= Base ) 。
printf( "reversed number = %0*u", count, rev ) 。
return 0。
}
程式輸出可能看起來像這樣
輸入一個整數。10000
倒數=00001。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/309960.html
標籤:
上一篇:HATEOAS鏈接最佳實踐
