C语言练习2:多重循环,进制,数组运用,字符串

本文列出了 51nod 中几个比较有代表性的题目
2412 2089 2413 2414 2088 2091 2122 2145 2135 2118 2101 2119 2102 2112
1922 2121 2130 1956 2092 1911 1955 1959 1912 1915 2113 2114 2150 2153
2148 2149 1950
如需以上题目c语言代码可私信我获取

2122 分解质因数

题目:
请你帮小瓜将正整数n分解质因数,并从小到大输出所有的质因数(如果一个质因数出现多次,则输出多次)
在这里插入图片描述

解题:

#include <stdio.h>

int main(){
   
        int n;
        scanf("%d",&n);
        for (int i=2;i<=n;i++){
   
                while(n%i==0){
   
                        printf("%d\n",i);
                        n=n/i;
                }
        }
}

2145 打印月份

题目(有误):
给你一个年份 y 和一个月份 m,请你按照样例的格式打印出 y 年第 m 月的月历。例如当 y=2015,m=1 时,2015 年 1 月的月历打印效果就应该如下:

每一行为代表星期的字母,第一个字母的左边没有空格,两个字母之间有三个空格分隔。接下来的几行是第 m 月的日期,每一列的数都与本列的第一个字母左对齐,同一行的两个日期之间要有若干个空格分隔。

为了简化题目的难度,输入还会给出一个正整数 n(n<8),表示第 y 年的 1 月 1 日 是星期 n。例如 2015 1 4 的含义是要输出 2015 年 1 月的日历,2015 年 1 月 1 日是星期四

特别注意输入的n表示y年1月1日是星期n,而不是m月1日
在这里插入图片描述

解题:

int main(){
   
        int y,m,n;
        scanf("%d%d%d",&y,&m,&n);
        printf("S   M   T   W   T   F   S\n");
        int e=(y%4==0 && y%100!=0 || y%400==0)?29:28;
        int days[12]={
   31,e,31,30,31,30,31,31,30,31,30};
        for(int i=0;i<n;++i){
   
                printf("    ");
        }
        for(int i=1;i<=9;++i){
   
                printf("%d   ",i);
                if((n+i)%7==0){
   
                        printf("\n");
                }
        }
        for(int i=10;i<=days[m-1];++i){
   
                printf("%d  ",i);
                if((n+i)%7==0){
   
                        printf("\n");
                }
        }
        printf("\n");
}

2135 价钱统计

题目:
夏天到了,超市里摆满了各种各样的应季水果。现在知道:西瓜的价钱是每斤 1.2 元;桃子的价格是每斤 3.5 元;葡萄的价格是每斤 4.5 元;苹果的价钱是每斤 5 元。现在分别给出上述四种所购买的斤数(均不超过 20),请你编写程序帮助售货员阿姨计算并依次输出顾客购买四种水果需要的钱数及总钱数
在这里插入图片描述
在这里插入图片描述

解题:
计算机通过 %.1f 可以让浮点数保留 1 位小数输出,但保留的是精读为四舍六入五成双,我们需要改为四舍五入
例如:
9.8249=9.82(小于5,舍掉), 9.82671=9.83(大于5进位)
9.8350=9.84(奇数进位), 9.8351=9.84(奇数进位)
9.8250=9.82(偶数舍弃), 9.82501=9.82(偶数舍弃)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值