第三章例题、心得及问题。

例题3-1:

#include<stdio.h>
int main(void)
{
    int mynumber=44;
    int yournumber;


    printf("Input your number:");
    scanf("%d",&yournumber);
    if(yournumber==mynumber)
        printf("Ok!you are right!
");
    else
        if(yournumber>mynumber)
            printf("Sorry!your number is bigger than my number!
");
        else
            printf("Sorry!your number is smaller than my number!
");
        
        return 0;
}


运行结果1:

运行结果2:

例题3-2:

#include<stdio.h>
int main(void)
{
    int number;

    printf("Enter a number:");
    scanf("%d",&number);
    if(number%2==0){
        printf("The number is even.
");
    }
    else{
        printf("The number is odd.
");
    }

    return 0;
}

运行结果1:

运行结果2:

例题3-3:

#include<stdio.h>
int main(void)
{
    int count,i,n;
    double grade,total;

    printf("Enter n:");
    scanf("%d",&n);
    total=0;
    count=0;
    for(i=1;i<=n;i++){
        printf("Enter grade #%d:",i);
        scanf("%lf",&grade);
        total=total+grade;
        if(grade<60){
            count++;
        }
    }
    printf("Grade average=%.2f
",total/n);
    printf("Number of failures=%d
",count);
    return 0;
}

例题3-4:

#include<stdio.h>
int main(void)
{
    double x,y;

    printf("Enter x:");
    scanf("%lf",&x);
    if(x<0){
        y=0;
    }
    else if(x<=15){
        y=4*x/3;
    }
    else{
        y=2.5*x-10.5;
    }
    printf("f(%.2f)=%.2f
",x,y);

    return 0;
}

运行结果1:

运行结果2:

运行结果3:

例题3-5:

#include<stdio.h>
int main(void)
{
    double value1,value2;
    char op;
    printf("Type in an expression:");
    scanf("%lf%c%lf",&value1,&op,&value2);

    if(op =='+')
        printf("=%.2f
",value1+value2);
    else if(op =='-')
        printf("=%.2f
",value1-value2);
    else if(op =='*')
        printf("=%.2f
",value1*value2);
    else if(op =='/')
        printf("=%.2f
",value1/value2);
    else
        printf("Unknown operator
");

    return 0;
}

例题3-7:

#include<stdio.h>
int main(void)
{
    int digit,letter,other;
    char ch;
    int i;
    digit=letter=other=0;
    printf("Enter 10 characters:");
    for(i=1;i<=10;i++){
        ch =getchar();
        if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
            letter++;
        else if (ch>='0'&&ch<='9')
            digit++;
        else
            other++;
    }
    printf("letter=%d,digit=%d,other=%d
",letter,digit,other);

        return 0;
}

例题3-8:

#include<stdio.h>
int main(void)
{
    int choice,i;
    double price;

    for(i=1;i<=5;i++){
        printf("[1]Select crisps 
");
        printf("[2]Select popcorn 
");
        printf("[3]Select chocolate 
");
        printf("[4]Select cola 
");
        printf("[0]exit 
");

        printf("Enter choice:");
        scanf("%d",&choice);

        if(choice ==0)
            break;
        switch(choice){
        case 1:price=3.0;break;
        case 2:price=2.5;break;
        case 3:price=4.0;break;
            case 4:price=3.5;break;
            default:price=0.0;break;
        }
        printf("price=%0.1f
",price);
    }
    printf("Thanks 
");

    return 0;
}

例题3-9:

#include<stdio.h>
int main(void)
{
    double value1,value2;
    char op;

    printf("Type in an expression:");
    scanf("%lf%c%lf",&value1,&op,&value2);
    switch(op){
    case'+':
        printf("=%.2f
",value1+value2);
            break;
    case'-':
        printf("=%.2f
",value1-value2);
            break;
    case'*':
        printf("=%.2f
",value1*value2);
            break;
    case'/':
        printf("=%.2f
",value1/value2);
            break;
    default:
            printf("Unknown operator
");
            break;
    }
    return 0;
}

例题3-10:

#include<stdio.h>
int main(void)
{
    int blank,digit,other;
    char ch;
    int i;
    blank=digit=other=0;
    printf("Enter 10 characters:");
    for(i=1;i<=10;i++){
        ch=getchar();
        switch(ch){
        case' ':
        case'
':
            blank++;
            break;
        case'0':case'1':case'2':case'3':case'4':
        case'5':case'6':case'7':case'8':case'9':
                digit++;
                break;
            default:
                other ++;
                break;
        }
    }
    printf("blank=%d,digit=%d,other=%d
",blank,digit,other);

    return 0;
}

例题3-11:

#include<stdio.h>
int main(void)
{
    double value1,value2;
    char op;

    printf("Type in an expression:");
    scanf("%lf%c%lf",&value1,&op,&value2);
    if(op =='+')
        printf("=%.2f
",value1+value2);
    else if(op =='-')
        printf("=%.2f
",value1-value2);
    else if(op =='*')
        printf("=%.2f
",value1*value2);
    else if(op =='/')
        if(value2!=0)
        printf("=%.2f
",value1/value2);
        else
            printf("Divisor can not be 0!
");
        else
            printf("Unknown operator!
");

        return 0;
}

运行结果1:

运行结果2:

终于打完第三章了!!第三章在打的时候不像一二章那样轻松了,除了经常打错词导致不能运行之外,有时候是能运行了,但是运行结果却跟书上的结果不一样……

比如在打3-1的时候,运行出来不管打什么数字都是显示OK!you are right!。检查了几遍以后发现if(yournumber==mynumber)的中间竟然有两个等号T T。改过来后运行结果就变正常了。好吧我不知道为什么要打两个等号- -。求解答!~

当然之后就再也没犯过这个错了~~

还有一些比如说把2打成a的错误就不具体说了。只是觉得很神奇的有些地方打错竟然能够运行,只是运行结果常常是不一样的。

还有个问题就是在3-10中,第一次打完以后发现不能运行,但是检查很多遍都没发现有打错的地方。研究了一下下面的错误提示发现    case' ': 两个单引号之间有个空格。后来加了空格后果然能运行了……有点小郁闷,可能是粗心的问题吧,但是我不懂为什么有些地方多了少了空格和回车没影响,像在这里少个空格竟然就不能运行了……-。-

后面接下来的任务还是有点小艰巨啊- -。加油咯。

以上。

原文地址:https://www.cnblogs.com/danson-daisy/p/3353546.html