C語言程式設計第五次作業——迴圈結構(1)

來源:互聯網
上載者:User

標籤:==   img   程式設計   內容   count   代碼   統計學   學習總結   統計   

(一)改錯題

輸出華氏攝氏溫度轉換表:輸入兩個整數lower和upper,輸出一張華氏攝氏溫度轉換表,華氏溫度的取值範圍是{lower,upper},每次增加2℉。計算公式如下:
c = 5×(f-32)/9
其中,c表示攝氏溫度,f表示華氏溫度。
輸入輸出範例1:
  Enter lower:32
  Enter upper:35
  fahr celsius
  32 0.0
  34 1.1
輸入輸出範例2:
  Enter lower:40
  Enter upper:30
  fahr celsius
來源程式(有錯誤的程式)

    #include <stdio.h>    int main(void)    {            int fahr , lower, upper;  /* fahr表示華氏度 */        double celsius;        /* celsius表示攝氏度 */             printf("Enter lower:");        scanf("%d",&lower);        printf("Enter upper:");        scanf("%d",&upper);        printf("fahr  celsius\n");             /* 顯示表頭 */        /* 溫度轉換 */        for (fahr = lower , fahr <= upper, fahr ++) ;            celsius = 5 /9 * (fahr - 32.0);             printf("%3.0f %6.1f\n", fahr, celsius);            return 0;     }

對來源程式進行編譯,採用每次修改第一個錯誤並重新編譯的方法,記錄每個錯誤的錯誤資訊、分析錯誤原因並給出正確的語句。

錯誤一

for後邊不加逗號

改正方法:將逗號刪去

錯誤二

for後小括弧的語句應用分號隔開

改正方法 將括弧裡的逗號改成分號

錯誤三

for後邊的語句體沒有加括弧

改正方法:將for後的語句體用花括弧括起來

錯誤四

 

fahr為整形變數 應用%d  celsius應為一位小數

改正方法:printf("%d %.1f\n", fahr, celsius);

錯誤五 

每次迴圈只加1

改正方法:

錯誤六

 

 計算公式錯誤

改正方法:

(二)學習總結

1.有如下程式:

#include <stdio.h>int main(){        int i,num,odd,even;    odd = 0;    even = 0;        for(i = 1; i <= 10;i++)    {        scanf("%d",&num);        if(num % 2 == 0)        {            even++;        }        else        {            odd++;        }           }       printf("%d %d",even,odd);   return 0; }

詳細描述程式的執行過程,即說明程式的每一步是執行的哪條代碼,執行順序如何。迴圈需描述前兩次迴圈和最後一次迴圈的詳細執行過程。最後說明程式實現的功能是什麼。

執行步驟:
1.定義整型變數
2.給odd和even賦初始值0
3.執行for語句
(1)執行i=1;
(2)輸入num
(3)執行if語句,若為真,則執行even++;若為假,則執行odd++
(4)進行for迴圈,當i=2時,執行(2)(3)
(5)再進行for迴圈,直到i=11時,不符合for迴圈的條件,輸出even和odd的值
程式實驗的功能:
輸入十個整數,判斷十個整數中有幾個偶數,幾個奇數

2.遞增運算子
(1)運行下面程式,結果是什嗎?遞增運算子在單獨使用時,首碼和尾碼形式有區別嗎?

#include <stdio.h>int main(){        int i,j;    i = 2;    j = 2;    i++;    ++j;    printf("i = %d\n",i);    printf("j = %d\n",j);       return 0; }

遞增運算子在單獨使用時,i++是先執行其他語句再加1;++j是先加1再執行其他語句

(2)運行下面的程式,結果是什嗎?兩條輸出語句的執行過程是怎樣的?說明什麼問題?這兩條輸出語句執行完後,i和j的值分別是多少?

#include <stdio.h>int main(){        int i,j;    i = 2;    j = 2;      printf("%d\n",i++);    printf("%d\n",++j);         return 0; }

運行結果:

執行過程:
1.執行整型定義
2.執行i=2,j=2;
3.輸出i的值
4.執行i++;
5.執行++j,將j的值加1
6.輸出j
說明的問題:
i++是賦值,再加1;++j是先加1,再去賦值
兩條輸出語句執行完後,i和j的值都是3

3.有些迴圈語句後面有{},有些沒有,有些語句有縮排,運行下面的四個小程式,運行結果有什麼不同?迴圈體的認定與縮格形式是否有關?與{}是否有關?那麼,應該如何正確判斷一個迴圈語句中的迴圈體?下面的程式中,哪幾種格式是正確的縮排格式。
(1)

#include <stdio.h>int main(){        int i;    for(i = 1;i <= 5;i++)        printf("*");    printf("\n");       return 0; }

運行結果:

(2)

#include <stdio.h>int main(){        int i;    for(i = 1;i <= 5;i++)        printf("*");        printf("\n");       return 0; }

運行結果:

(3)

#include <stdio.h>int main(){        int i;    for(i = 1;i <= 5;i++)    {        printf("*");        printf("\n");    }    return 0; }

運行結果:

(4)

#include <stdio.h>int main(){        int i;    for(i = 1;i <= 5;i++)    {        printf("*");    }     printf("\n");    return 0; }

運行結果:

(1)(2)的運行結果相同,所以迴圈體的認定與縮格形式無關;(3)(4)的運行結果不同,(3)(4)程式中{}裡的內容也不一樣,而迴圈結構執行的是{}中的內容,所以迴圈體的認定與{}有關。
如果一個迴圈語句後面加了{},那麼這個語句迴圈體為{}裡面的內容,如果迴圈語句後面沒有加{},那麼迴圈體語句為迴圈語句後的第一條語句。
(1)(3)(4)是正確的

(2)是錯誤的

7-2 統計學生平均成績與及格人數(10 分)

 

#include<stdio.h>
int main()
{
int n,x=0,i;
double a[10001],sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%lf",&a[i]);
if(a[i]>=60) x++;
sum+=a[i];
}
if(n==0) printf("average = 0.0\n");
else printf("average = %.1f\n",sum/n);
printf("count = %d\n",x);
return 0;
}

7-4 到底是不是太胖了(15 分)

#include<stdio.h>
#include<math.h>
struct student{
int sg,tz;
double bz;
}stu[20];
int main(){
int num,i;
double c;
scanf("%d",&num);
for(i=0;i<num;i++){
scanf("%d %d",&stu[i].sg,&stu[i].tz);
stu[i].bz=0;
}
for(i=0;i<num;i++){
stu[i].bz=(stu[i].sg-100)*0.9;
c=stu[i].bz-(double)stu[i].tz/2.0;
if(stu[i].bz*0.1>fabs(c)){
printf("You are wan mei!\n");
}
if(c>0&&stu[i].bz*0.1<=fabs(c)){
printf("You are tai shou le!\n");
}
if(c<0&&stu[i].bz*0.1<=fabs(c)){
printf("You are tai pang le!\n");
}
}
return 0;
}

7-6 統計學產生績(10 分)

#include<stdio.h>
int main(void)
{
int N;
int i,x;
int a=0,b=0,c=0,d=0,e=0;
while(scanf("%d",&N)!=EOF){

for(i=0;i<N;i++){
scanf("%d",&x);

if(x>=90){
a++;
}else if(x>=80){
b++;
}else if(x>=70){
c++;
}else if(x>=60){
d++;
}else{
e++;
}
}
printf("%d %d %d %d %d\n",a,b,c,d,e);

}
return 0;
}

7-8 找出最小值(10 分)

 

 

#include<stdio.h>
int main(void)
{
int n,i,l,min;
scanf("%d",&n);
scanf("%d",&l);
min=l;
for(i=1;i<n;i++){
scanf("%d",&l);
if(min>l)
min=l;
}
printf("min = %d",min);
return 0;
}

 

 

C語言程式設計第五次作業——迴圈結構(1)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.