C语言课下作业(第三次「if else」)

这篇博客包含多个C语言编程实践任务,包括输入整数判断奇偶性、找出三个整数中的最大值、计算不同折扣的商品价格、实现猜数游戏以及根据输入的年份和月份确定天数。通过这些实例,读者可以提升C语言编程能力并理解基本的逻辑判断和数学运算。
摘要由CSDN通过智能技术生成
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void houseworkOne();

int main(void)
{
#if 0
    /**
     * 任务一:
     * 编程实现任意输入一个整数,判断是奇数还是偶数
     */ 
    int i;
    printf("请输入任意一个整数:");scanf("%d", &i);
    if((i % 2) == 0){
        putchar('\n');
        printf("您输入的数为偶数");
    }else{
        putchar('\n');
        printf("您输入的数为奇数");
    }

    /**
     * 任务二:
     * 编程实现求任意输入的三个整数的最大数
     */ 

    //方法一
    int m,n,o;
    printf("请输入第一个整数:");scanf("%d", &m);
    printf("请输入第二个整数:");scanf("%d", &n);
    printf("请输入第三个整数:");scanf("%d", &o);
    if(m >= n && m >= o){
        putchar('\n');
        printf("m为最大值");
    }else if(n >= o){
        putchar('\n');
        printf("n为最大值");
    }else{
        putchar('\n');
        printf("o为最大值");
    }

    //方法二
    int n1, n2, n3, max;
    printf("请输入n1: "); scanf("%d", &n1);
    printf("请输入n2: "); scanf("%d", &n2);
    printf("请输入n3: "); scanf("%d", &n3);
    max = n1;
    printf("最大值为%d", (n2 > max) ? max = n2 : (n3 > max) ? n3 : 1);

    /**
     * 任务三:
     * 1. 自行车每辆350元,网球拍每辆270元
     * 2. 周一到周五网球拍 九五折 销售
     *    周六,周日自行车按 九折, 网球拍按 八五折销售
     * 3. 根据输入的星期数,计算自行车和网球拍的实际销售金额
     */
#define CAR 350.0  //自行车的金额
#define BALL 270.0 //网球拍的金额

    int today;
    printf("输入星期数【请输入1-7的整数]:");scanf("%d", &today);
    if(today >= 1 && today <= 5){
        printf("当前网球拍的价格:%.2f -- 当前自行车的价格:%.2f", (BALL * 0.95), CAR);
        putchar('\n');
    }else if(today == 6 || today == 7){
        printf("当前网球拍的价格:%.2f -- 当前自行车的价格:%.2f", (BALL * 0.90), (CAR * 0.85));
        putchar('\n');
    }else{
        printf("输入不符合规范,请重新输入1-7的整数");
        putchar('\n');
    }
   
    /**
     * 任务四:猜数游戏
     * 1. 随机产生6位正整数
     * 2. 对应位置数字全猜对获得一等奖
     *    猜对5个或4个获得二等奖
     *    猜对3个或2个获得三等奖
     *    猜对1个获得鼓励奖
     */
#define MAXSIZE 6

    int k,j,r,c,nc;  //r代表随机数,q代表输入的数字
    int a[MAXSIZE], b[MAXSIZE];
    srand((unsigned)time(NULL)); /*设定当前时间为随机种子*/
    r=rand()%900000+100000;   /*随机产生一个6位正整数*/
    b[0] = r / 100000;b[1] = r / 10000 % 10;b[2] = r /1000 % 100;b[3] = r / 100 % 1000;b[4] =r / 10 % 10000;b[5] = r / 1 % 100000; /*把随机生成的数放到6个数分别放到数组中*/
    
    printf("请输入一个6位正整数:");
    j = 0;
    nc = 0; //nc代表输入的数与随机数有多少个相同
    while((c = getchar()) != EOF){
        if(c >= '0' && c <= '9'){
            a[j] = c;
            if(a[j] == b[j]){
                ++nc;
            }
            ++j;
            if(j == 6){
                printf("相同的数有%d位", nc);
            }
        }else{
            putchar('\n');
            printf("请输入六位正整数");
            putchar('\n');
        } 
    }

    /**
     * 任务五:编程实现输入年份和月份,输出该年份和月份的天数
     */

     int year, month;
     printf("请输入年份和月份");
     scanf("%d,%d", &year, &month);

     if(year > 999 && month <= 12 && month >= 1){
         if((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
         {
             printf("该年是闰年!");
             if(month == 2)
                printf("该月有28天");
             else if(month != 4 || month != 6 || month != 9 || month != 11)
                printf("该月有30天");
             else
                printf("该月有30天");
         }else{ //这种管2行以上的就要打{}
             printf("不是闰年!"); //你这个地方错的原因是因为一个括号域的问题
             if(month == 2)
                printf("该月有29天");//像这种一个if管一行的就不用打{}
             else if(month != 4 || month != 6 || month != 9 || month != 11)
                printf("该月有30天");
             else
                printf("该月有31天");
         }
     }else{
         printf("输入错误!\n");
     }

#endif

    int no, retry;
    do
    {
        printf("请选择你要执行的任务[按回车结束]:");
        scanf("%d", &no);
        switch (no)
        {
        case 1:
            houseworkOne();
            break;
        default:
            break;
        }
        //选择是否再次运行
        printf("是否继续选择任务执行[yes --> 0], [no --> 9]");
        scanf("%d", &retry);
    } while (retry == 0);
}

void houseworkOne(){
    int no, nc;
    
    nc = 0;
    do{
        printf("请输入一个正整数:");scanf("%d", &no);
        if(no <= 0){
            puts("\a请不要输入非正整数");
        }
    }while(no <= 0);

    printf("%d的位数有:", no);
    while(no > 0){
        no /= 10;
        ++nc;
    }
    printf("%d位.", nc);
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值