1. 程式人生 > >7-16 一元多項式求導(20 分)(有關while(scanf("%d",&n)!=EOF))

7-16 一元多項式求導(20 分)(有關while(scanf("%d",&n)!=EOF))

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))