7-16 一元多項式求導(20 分)(有關while(scanf("%d",&n)!=EOF))
阿新 • • 發佈:2018-01-27
margin 常數 解題思路 return 做的 gin 遇到 bsp title
7-16 一元多項式求導(20 分)
設計函數求一元多項式的導數。
輸入格式:
以指數遞降方式輸入多項式非零項系數和指數(絕對值均為不超過1000的整數)。數字間以空格分隔。
輸出格式:
以與輸入相同的格式輸出導數多項式非零項的系數和指數。數字間以空格分隔,但結尾不能有多余空格。
輸入樣例:
3 4 -5 2 6 1 -2 0
輸出樣例:
12 3 -10 1 6 0
解題思路:1.一開始還以為這道題蠻簡單的,刷刷刷就寫了個用數組做的,然後有一個測試點運行超時
2.然後就換了一邊輸入一邊輸出,但是還是有個測試點:“無常數項的一般情況 ”通不過,然後在網上找了別人的代碼
我發現他們都有寫一句 while(scanf("%d",&n)!=EOF) 這丫什麽鬼,然後又去網上找了
scanf的返回值由後面的參數決定
scanf("%d%d", &a, &b);
如果a和b都被成功讀入,那麽scanf的返回值就是2
如果只有a被成功讀入,返回值為1
如果a和b都未被成功讀入,返回值為0
如果遇到錯誤或遇到end of file,返回值為EOF
這句話主要解決
“測試輸入包含若幹測試實例。當N為0時,輸入結束,該實例不被處理。”
好吧,其實還是有一些不懂,暫且先記著吧
1 #include<stdio.h> 2 #include<stdlib.h> 3 4 int main() 5 { 6 int xi,zi; //系數,指數 7 int flag=0; 8 while(scanf("%d %d",&xi,&zi)!=EOF){ 9 if( zi ){ 10 if( flag ) 11 printf(" "); //如果不是第一個數就先輸出一個空格 12 else 13 flag =1; 14 printf("%d %d",xi*zi,zi-1); 15 } 16 else break; 17 } 18 if( flag==0 ){ 19 printf("0 0"); 20 } 21 return 0; 22 }
7-16 一元多項式求導(20 分)(有關while(scanf("%d",&n)!=EOF))