1.首先你的返回值沒有確定,只是一個 return
創新互聯服務項目包括陽城網站建設、陽城網站制作、陽城網頁制作以及陽城網絡營銷策劃等。多年來,我們專注于互聯網行業,利用自身積累的技術優勢、行業經驗、深度合作伙伴關系等,向廣大中小型企業、政府機構等提供互聯網行業的解決方案,陽城網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到陽城省份的部分城市,未來相信會繼續擴大服務區域并繼續獲得客戶的支持與信任!
2.在下面代碼中
for(i=100;i1000;i++)
{
cmcc(i); //無論這句返回的是什么都會執行下一句。
printf("%d ",i);
}
試試下面這段修改后的看看
#includestdio.h
int cmcc(int x)
{
int a,b,c;
a=x/100;
b=x/10%10;
c=x%10;
if(x==a*a*a+b*b*b+c*c*c)
return 1;
return 0;
}
main()
{
int i;
for(i=100;i1000;i++)
{
if(cmcc(i))
printf("%d ",i);
}
}
因為前面輸入數字時,最后總要按下回車鍵,這就輸入了一個回車符,而后面的getchar()會讀取這個字符,而不等待從鍵盤輸入(因為緩沖區不為空),修改如下:
#include stdio.h
#include stdlib.h
int main()
{
int data[7000]={1,1,0},num,digit=1,i,j,k;
FILE *fp;
char fname[50];
printf("\t階乘計算器\n\t請輸入:");
scanf("%d",num);
for(i=1;i=num;i++)
{
if(i%20==0)
{
printf("\n\t當前計算到%10d 的階乘!!!........\n",i);
}
for(j=1;j=digit;j++)
{
data[j]*=i;
}
for(j=1;j=digit;j++)
{
if(data[j]9)
{
for(k=1;k=digit;k++)
{
if(data[digit]9)
{
digit++;
}
data[k+1]+=data[k]/10;
data[k]%=10;
}
}
}
}
printf("\n\n\n\t%d!=\n",num);
for(j=digit;j0;j--)
{
printf("%d",data[j]);
}
printf("\n\n\t%d!共有%d位......\n\n\n",num,digit);
printf("是否保存文件?(y\\n)");
fflush(stdin);/************注意這里,刷新緩沖區,避免前面輸入數字時遺留的回車符影響這里的讀取******/
if(tolower(getchar())=='y')
{
printf("請輸入文件名:");
gets(fname);
if((fp=fopen(fname,"w"))==NULL)
{
printf("打開文件%s失敗",fname);
exit(0);
}
fprintf(fp,"\t%d!=\n",num);
for(j=digit;j0;j--)
{
fprintf(fp,"%d",data[j]);
}
fprintf(fp,"\n%d!有%d位......\n\n\n",num,digit);
fclose(fp);
}
return 0;
}
這是因為getchar前面有一個scanf("%lf",a);
你輸入完a的值后,是否會
輸入回車
這個回車就是一個字符啊,這個字符就被getchar當做你輸入的字符了,所以看起來像沒有執行,其實是執行了。
可以在getchar()前使用
fflush(stdin);
刷新標準輸入緩沖區,把輸入緩沖區里的東西丟棄
這樣就可以輸入字符了。
如果用返回的溫度值作為實參,這個函數就不執行了,如果我隨便輸入個整數就可以執行,怎么回事??
說明還是參數的問題。再仔細看看參數的傳遞是否正確。包括類型。
還有傳遞的時候是否是真實數據,還是數據已經被釋放。
自己調試著看看吧。