有人知道問題在哪嗎(runtime error)

uj5u.com熱心網友回復:
僅供參考:#include <stdio.h>
int main(void)
{
char buf[11], *p = buf;
scanf("%10s", buf);
while(*p) printf("%c ", *p++);
printf("\n");
return 0;
}
uj5u.com熱心網友回復:
你的第10行的if條件 除非輸入的數字為個位數 否則都進不去吧 例子中的654321 不可能走到n=i這兒 你如果是想檢查輸出數字的長度 最起碼要加一個b = b/10吧以下代碼供參考
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
long a;
while (scanf("%ld", &a) != EOF)
{
int b[10] = {0};
int i = 0;
while (a > 0)
{
b[i++] = a % 10; //將分割后資料保存到陣列
a /= 10;
}
for (int i = 9; i >= 0; i--)
{
int flag = 0; //因為陣列初始化為0了,此flag時為了判斷何時是資料的開頭 因為資料開始前和資料中間都可能有0
if (b[i])
flag = 1;
if (flag) //當flag為1,說明已經是資料了 即使當前值為0
printf("%d ", b[i]);
}
}
}
uj5u.com熱心網友回復:
int i;char s[11];
fgets(s,11,stdin);
for (i=0;i<10;i++) {
if ('\n'==s[i] || 0==s[i]) break;
printf("%c ",s[i]);
}
uj5u.com熱心網友回復:
int main(int argc, char* argv[]){
long a[10],b,i;
while(scanf("%d",&b)!=EOF)
{
i=0;
while(b!=0)
{
a[i++] = b%10;
b /= 10;
}
for(i=i-1;i>=0;i--)
printf("%2d",a[i]);
printf("\n");
}
system("pause");
return 0;
}
uj5u.com熱心網友回復:
我解決了 是十位數超過21億uj5u.com熱心網友回復:
你這有點過于復雜化了,代碼要盡量簡潔,不然以后找作業不好找的,這里既然你已經獲得了這個數那直接一個個除下來就好了,正序的話陣列回圈輸出一下,回圈除取余放入陣列,同時變數進行計數,回圈結束后另起一個回圈倒序輸出,然后判斷最后一個不輸出空格uj5u.com熱心網友回復:
這是個代碼是直接用之前做一個判斷多少位數的題的代碼改的 沒有簡化轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/228619.html
標籤:C語言
上一篇:C++通訊錄管理系統課設
下一篇:C++呼叫python求解答
