中国大学(慕课)哈工大C语言程序设计精髓练兵区第五周

这篇博客涵盖了哈工大C语言课程的多个编程练习,包括判断整数位数、奖金计算、程序修改与改错、猴子吃桃问题的扩展、密码输入检测等,旨在提升学员的C语言编程能力和问题解决技巧。

1.判断一个整型数据有几位v2.0

题目内容:
从键盘输入一个整型数据(int型),编写程序判断该整数共有几位,并输出包含各个数字的个数。例如,从键盘输入整数16644,该整数共有5位,其中有1个1,2个6,2个4。

程序运行结果示例1:
Please enter the number:12226↙12226: 5 bits1: 12: 36: 1
程序运行结果示例2:
Please enter the number:-12243↙-12243: 5 bits1: 12: 23: 14: 1
输入格式: “%d”
输出格式:
输入提示信息:“Please enter the number:\n”
判断该整数共有几位:"%d: %d bits\n"
包含数字0的个数:“0: %d\n”
包含数字1的个数:“1: %d\n”
包含数字2的个数:“2: %d\n”
包含数字3的个数:“3: %d\n”
包含数字4的个数:“4: %d\n”
包含数字5的个数:“5: %d\n”
包含数字6的个数:“6: %d\n”
包含数字7的个数:“7: %d\n”
包含数字8的个数:“8: %d\n”
包含数字9的个数:“9: %d\n”
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
   
   
    int i,number,x;
    int k = 0;
    int array[10] = {
   
   0};

    printf("Please enter the number:\n");
    scanf("%d",&number);
    x = fabs(number);  //这一步是给我们输入的数取绝对值
    while(x!=0)    //这里的while是计算number的位数
    {
   
   
        for(i=0;i<=9;i++)   //通过for循环来计算每位数字出现的次数
        {
   
   
            if(x%10==i){
   
   
                array[i]++;
            }
        }
        x/=10;  //把for计数完成的位数去掉
        k++;
    }
    printf("%d: %d bits\n",number,k);
    for(i=0;i<=9;i++)   //循环输出
    {
   
   
        if(array[i]!=0)
        {
   
   
            printf("包含数字%d的个数:",i);
            printf("%d: %d\n",i,array[i]);
        }
    }

    return 0;
}

此处要说明一点,最后因为图省事用了一个for循环来输出。这是不符合题目要求的 ,朋友们可自行更改为switch来输出答案。

ps:使用一个for循环也可以对数组进行初始化为 0 。而像上面一样将第一位赋值为 0 编译器也会自动帮你把其他的值也初始化为零。

2奖金计算

题目内容:
企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时,高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数?

程序运行结果示例1:
789↙
bonus=78
程序运行结果示例2:
789516↙
bonus=36342
输入格式: “%ld”
输出格式:“bonus=%ld\n”
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

#include<stdio.h>
  int main()
  {
   
   
    long x;
    double bonus=0;
    scanf("%ld",&x);
    if(x>1000000){
   
   
        bonus=bonus+(x-1000000)*0.01;
    }
    if(x>600000){
   
   
        x=x>1000000?1000000:x;
        bonus=bonus+(x-600000)*0.015;
    }
    if(x>400000){
   
   
        x=x>600000?600000:x;
        bonus=bonus+(x-400000)*0.03;
    }
    if(x>200000){
   
   
        x=x>400000?400000:x;
        bonus=bonus+(x-200000)*0.05;
    }
    if(x>100000){
   
   
        x=x>200000?200000:x;
        bonus=bonus+(x-100000)*0.075;
    }
    if(x>0){
   
   
        x=x>100000?100000:x;
        bonus=bonus+x*0.1;

    }
    printf
### 关于平台上的哈工大C语言程序设计精髓程结考试 对于想要获取有关平台上哈尔滨工业大学开设的《C语言程序设计程中的结考试信息或资源的需求,可以采取多种方式来准备和应对这类考核[^1]。 #### 利用官方渠道 访问该门程在网的具体页面,通常会发布最新的通知公告以及复习指南等内容。这些材料往往由授教师团队精心整理而成,能够帮助学生更好地理解知识点并做好考前准备工作。 #### 参加讨论交流 积极加入在线学习社内的互动环节,在论坛里与其他同学分享心得体验的同时也向他们请教疑惑之处。很多过来人都会在上面留下宝贵的经验贴或是模拟试题链接供后来者参考借鉴。 #### 查阅历史真题集锦 如果可能的话,尝试收集往届学员所经历过的期末测验题目样本。通过练习旧版试卷不仅有助于熟悉实际操作流程而且还能发现自己薄弱环节进而加以强化训练。 ```python # Python代码示例用于说明如何处理日期计算(虽然这里不是直接针对C语言) from datetime import date, timedelta def is_leap_year(year): """判断给定年份是否为闰年""" return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0) start_date = date(int(input("请输入出生年份: ")), 1, 1) end_date = date.today() total_days = (end_date - start_date).days + 1 heartbeats_per_minute = 75 * 60 * 24 # 将心率转换成每天的心跳次数 heartbeat_count = total_days * heartbeats_per_minute print(f"从{start_date.year}年至现在大约经历了 {int(heartbeat_count / (365*24*60)):,d}次心跳.") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值