本文列出了 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(偶数舍弃)