1. 程式人生 > >使用if語句時應注意的問題(初學者)

使用if語句時應注意的問題(初學者)

(1)在三種形式的if語句中,在if關鍵字之後均為表示式。該表示式通常是邏輯表示式或關係表示式,但也可以是其他表示式,如賦值表示式等,甚至也可以是一個變數。

例:if(a=5)語句;

       if(b)語句;

只要表示式的值為非零,即為“真”。

比較:

#include<stdio.h>

void main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    if (a=b)
    {
        printf("%d\n",a);
    }
}
#include<stdio.h>

void
main() { int a,b; scanf("%d%d",&a,&b); if (a==b) { printf("%d\n",a); } }

 注;若if後的a==5輸入成a=5,則輸出結果永遠為真。

如何避免:將a==5改為5==a(習慣上的改變,這只是一個例子)

(2)在if語句中,條件判斷表示式必須用括號括起來,在語句之後必須加分號。

(3)在if語句的三種形式中,所有的語句應為單個語句,如果想要在滿足條件時執行一組(多個語句),則必須把這一組語句用{}括起來組成一個複合語句。但要注意的是在}後不能再加;號。(建議單個語句也用{}括起來,方便以後插入新語句)

例:

#include<stdio.h>

void main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    if (a>b)
    {
        a++;
        b++;
    }
    else
    {
        a=0;
        b=10;
    }
    printf("%d,%d",a,b);
}

補例1:寫一個程式完成下列功能:

1、輸入一個分數score;

2、score<60      輸出E

3、60<=score<70             輸出D

4、70<=score<80     輸出C

5、80<=score<90             輸出B

6、90<=score      輸出A

#include<stdio.h>

void main()
{
    int score;
    printf("input a score\n");
    scanf("%d",&score);
    if(score<60)
    {
        printf("The score is E");
    }
    else if((score>60 || score==60)&&score<70)
    {
        printf("The score is D ");
    }
    else if((score>70 || score==70)&&score<80)
    {
        printf("The score is C");
    }
    else if((score>80 || score==80)&&score<90)
    { 
        printf("The score is B");
    }
    else if(score>90||score==90)
    {
        printf("The score is A");
    }
}

補例2:輸入3個數a,b,c,要求按由小到大的順序輸出。

提示:if  a>b  將a和b互換;

     if  a>c  將a和c互換;

     if  b>c  將b和c互換;

#include<stdio.h>

void main()
{
    int a,b,c,temp;
    printf("input three numbers\n");
    scanf("%d%d%d",&a,&b,&c);
    if(a>b)
    {
        temp=a;
        a=b;
        b=temp;
    }
    if(a>c)
    {
        temp=a;
        a=c;
        c=temp;
    }
    if(b>c)
    {
        temp=b;
        b=c;
        c=temp;
    }
    printf("%d %d %d \n",a,b,c);
}