作业 3 应用分支与循环结构解决问题

1.输入一个整数 x,计算并输出下列分段函数  sign(x)  的值

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

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

    if (x<0){
        printf("y=sign(%d)=-1
",x);
    }
    else if (x=0){
        printf("y=sign(%d)=0
",x);
    }
    else {
        printf("y=sign(%d)=1
",x);
    }

    return 0;
}

2.输入一个正整数 n,再输入 n 个学生的成绩,计算平均成绩,并统计所有及格学生的人数。

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

    total = 0;
    count = 0;

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

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

3.输入 15 个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数

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

    return 0 ;
}

字符型变量在定义时用类型名char。

字符输入用getchar()。

设ch是字符型变量,函数getchar()的一般调用格式为:ch = getchar();

其功能是从键盘输入一个字符,并赋值给变量ch。

如要输入多个函数则采用循环结构。

4.循环输入多个年份 year,判断该年是否为闰年。判断闰年的条件是:能被  4  整除但不能被100  整除,或者能被  400  整除。输入-1退出程序执行

#include<stdio.h>
int main(void)
{
    int i,n,year;

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

    for(i=1;i<=n;i++){
    printf("Enter year:");
    scanf("%d",&year);

        if (year == -1){
        break;
    }
    else if ((year%4 == 0 && year%100!=0)||(year%400 == 0)){
        printf("该年为闰年。
");
    }
    else {
        printf("该年不为闰年。
");
    }
    }

    return 0;
}

这题第一次输入的时候  else if ((year%4 == 0 && year%100!=0)||(year%400 == 0)) 里面的%我都是用的/,但是运行发现输入的闰年输出都成了不是闰年。

后来百度后发现应该用%,是取余的符号。好吧涨知识了。

5.输入五级制成绩(A-E),输出相应的百分制成绩(0-100)区间,要求使用 switch语句。例如,输入 A,输出 90-100。五级制成绩对应的百分制成绩区间为:A(90-100)、B(80-89)、C(70-79)、D(60-69)和 E(0-59)。

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

    printf("Type in the word:");
    scanf("%c",&op);
    switch(op){
    case'A':
        printf("90-100
");
        break;
    case'B':
        printf("80-89
");
        break;
    case'C':
        printf("70-79
");
        break;
    case'D':
        printf("60-69
");
        break;
    case'E':
        printf("0-59
");
        break;
    }

    return 0;
}

6.查询水果的单价。有 4 种水果,苹果(apples)、梨(pears)、桔子(oranges)和葡萄(grapes),单价分别是 3.00 元/公斤,2.50 元/公斤,4.10 元/公斤和 10.20 元/公斤。在屏幕上显示以下菜单(编号和选项),用户可以连续查询水果的单价,当查询次数超过 5 次时,自动退出查询;不到 5 次时,用户可以选择退出。当用户输入编号 1~4,显示相应水果的单价(保留两位小数);输入 0,退出查询;输入其他编号,显示价格为 0。
[1] apples
[2] pears
[3] oranges
[4] grapes
[0] Exit

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

    for(i=1;i<=5;i++){
        printf("[1]apples
");
        printf("[2]pears
");
        printf("[3]oranges
");
        printf("[4]grapes
");
        printf("[0]exit
");

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

        if (choice == 0)
        break;
        switch(choice){
        case 1:price=3.00;break;
        case 2:price=2.50;break;
        case 3:price=4.10;break;
        case 4:price=10.20;break;
        default:price=0.00;break;
        }
        printf("price=%.2f
",price);
    }

    return 0;
}

以上代码基本都能在书上找到类似的例题,但是自己打的时候不够熟练,总是会忘记下一步是什么,并且常常会犯这样那样的错误,最后还要对照着书上的修改。

果然还是需要多练练呢。加油咯。

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