1. 程式人生 > >C語言的迴圈輸入

C語言的迴圈輸入

例題:電梯在城市的高層建築中廣泛應用。輸入電梯停靠樓層的列表,以0結束輸入,計算電梯到達最後樓層需要花費的時間。列表中的數字表示電梯將在哪一層停靠,電梯按照列表順序依次停靠。假設電梯每上行一層需要花6秒時間,每下行一層需要花費4秒時間,電梯每停一次需要5秒。

方法一:

#include<stdio.h> 
int main(void)
{
int i,number,n=0,tm;
int *p,ft[100];

printf("Please input floors(Ends with 0):\n");

scanf("%d",&number);

//輸入樓層列表,以0結束。
while(number != 0)
{
ft[n]=number;
n++;

scanf("%d",&number);//迴圈輸入

}
tm=0;
p=ft;
for(i=0;i<n-1;i++)
{
if(*p<*(p+1))
tm=tm+(*(p+1)-*p)*6+5;
else
tm=tm+(*p-*(p+1))*4+5;
p++;
}
printf("The time is%d\n",tm);
return 0;
}

此種方法在開始先給迴圈輸入的變數一個初值,用來滿足下面開始的迴圈輸入。


方法二:

#include<stdio.h> 
int main(void)
{
int i,number,n=0,tm;
int *p,ft[100];

printf("Please input floors(Ends with 0):\n");


while(1)//使用死迴圈輸入
{
scanf("%d",&number);
if(number==0)
break;
ft[n]=number;
n++;
}
tm=0;
p=ft;
for(i=0;i<n-1;i++)
{
if(*p<*(p+1))
tm=tm+(*(p+1)-*p)*6+5;
else
tm=tm+(*p-*(p+1))*4+5;
p++;
}
printf("The time is%d\n",tm);
return 0;
}

此種方法先是進入死迴圈,開始輸入,當輸入滿足題目所需條件時,可以退出迴圈。但是必須要在每次讀入下一個值之前先判斷是否滿足退出條件,否則會多讀入一個值。


這是正確的結果,當判斷語句放到最後時,結果便會出錯,下面是出錯程式碼和結果。



這個結果是把0當作一層樓給讀入了,然後把2層到0層的時間計入,導致錯誤。

相關推薦

C語言輸入一個整數,求它的原碼,反碼,補碼值

補碼 while src info idt IV com scan -- 1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 int m,n,a[10],i=0,y[

c語言標準輸入和scanf的關系

我們 scanf etc 鍵盤輸入 div while image 標準輸入 這樣的 int a scanf("%d",&a);  什麽意思,是從鍵盤讀取一個數字存放到a中。錯,scanf和所有從鍵盤獲取輸入數據的函數都不是直接從鍵盤獲取數據的,而是從“標準輸

C語言實現輸入一個數,輸出這個數的立方根

#include<stdio.h> int main() { double x,x1,x2,w; scanf("%lf",&x); x1=x; x2=(2.0*x1+x/(x1*x1))/3.0; w=(x2-x1)/x1; if(w&

C語言實現輸入一個數,輸出這個數的sin值

#include<stdio.h> double shang(double x,int n) { int i; double k=1; for(i=0;i<n;i++) { k=k*x; } return k; } int

C語言輸入n,a,求Sn=a+aa+aaa+···+a···

C語言:輸入n,a,求Sn=a+aa+aaa+···+a···a #include<stdio.h> int main() { int n, a, Sn = 0, t = 0; printf("請輸入n:"); scanf("%d",&n);

C語言實驗——輸入數字星期,輸出英文(switch語句)

#include<stdio.h> int main() { int n; scanf("%d",&n); switch(n) { case 1: printf(“Monday”); break; case 2: printf(“Tuesday”); break; c

C語言--迴圈佇列實現

#include <stdio.h> #include <malloc.h> #include <stdlib.h> /* 迴圈佇列 */ typedef struct Queue { int *p_base; int front; int rear; }

c語言統計輸入字串有多少不同的字母

int main() { char cString[100]; int i,j,count; gets(cString); count=0; if(cString[0]=='\0'){ printf("請輸入字元"); printf

總結:C語言字串輸入的三種方式(scanf("%c",array); scanf("%s",str); gets(array);)

1、以scanf("%c",&array);的格式輸入字串; 由於%c是輸入一個字元,若需要輸入字串時我們可以建立陣列或指標配合迴圈(while,do{}while,for)來達到目的。如下例利用do{}while及陣列來輸入字串,並重新輸出,以字元#為結束標誌: #includ

C語言迴圈及定義子函式技巧

最近在網上看到一段程式碼,感覺很有收穫,他簡化了函式宣告的過程,並且使程式實現部分可迴圈,不用每次都退出重新進 #include<stdio.h> int main() { int ctu=0; do { double Legendre(int,float); int n;float x; pr

C語言輸入一個整數N,求N以內的素數之和

【C語言】輸入一個整數N,求N以內的素數之和   /* ============================================================================ Name

C語言例項—輸入兩個正整數m和n,求其最大公約數和最小公倍數(gcc 編譯)。

1.輾轉相除法 輾轉相除法是古希臘求兩個正整數的最大公約數的,也叫歐幾里德演算法,其方法是用較大的數除以較小的數,上面較小的除數和得出的餘數構成新的一對數,繼續做上面的除法,直到出現能夠整除的兩個數,其中較小的數(即除數)就是最大公約數。以求288和123的最大公約數為例,操作如下: 288÷1

C語言 習題 輸入n個數,輸出不重複的數及它們的和

難住本小白的一道c語言題目,搞了兩天才出來,不多比比,直接上題 題目:輸入n個整數,輸出不重複整數及它們的和。 //講真,當時那道題,讀了兩遍愣是沒懂······ 此題筆者認為有兩個難點, 1.“如何輸入n個整數”,當按下回車鍵時結束輸入,其中n是不定的,(不能要求先輸入n的值,那樣難度直接

1119-C語言實驗——輸入數字星期,輸出英文(switch語句)-JAVA

C語言實驗——輸入數字星期,輸出英文(switch語句) Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 從鍵盤上輸

c語言實現輸入成績,輸出評分

方法一: #include <stdio.h> int main() { int a; printf("請輸入成績\n"); scanf("%d",&a); if(a>100||a<0) { printf("輸入錯誤

C語言迴圈語句工程用法

-迴圈語句分析  迴圈語句的基本工作方式                  - 通過條件表示式判斷是否執行迴圈體   &nb

C語言輸入abc三個整數,並從大到小排序輸出和“找出三個數中最大的數”的中間變數的用法的區別

共同點:都是中間變數,都可以重複拿來做中轉站使用 不同點:排序的題目中,中間變數只是做中轉站作兩個變數交換值用來,並不是要用來儲存最終要輸出的值              而找出最大數或者最小數的題目中,中間變數不但做交換用的中轉站,還要儲存程式最終要輸出的值     

c語言實現輸入一個數,輸出這個數的sin的值

#include<stdio.h> double shang(double x,int n) { int i; double k=1; for(i=0;i<n;i++) { k=k*x;

C語言迴圈

小白第一次寫,經驗不足大神勿噴。 迴圈語句有while… do…while… for… do{執行語句}while(判斷條件):do…while的特點是先執行迴圈,再判斷是否符合條件,若滿足條件則繼續迴圈,直到不滿足條件或碰到break。 while(判斷

joseph約瑟死亡遊戲-C語言迴圈連結串列的實現

先來看看程式執行的效果  這個 死亡遊戲的大致規則就是:以上面的程式為例,先選7個人出來,再給七個人進行編號,選編號為六個人出來,然後順時針(逆時針)每個人開始報數,從1開始,一直數到20,數到20的那個人出局,然後繼續迴圈,直到最後一個人出局 typedef