文章最后更新时间:2023年05月15日已超过936天没有更新。
第6次作业(5月4日)
1. 津津的储蓄计划
1.津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。
为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。
例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。
津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。
现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。
输入包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。
输出包括一行,这一行只包含一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。
(说明:此题程序由纳雍县的王老师提供 )
#include<bits/stdc++.h>
int main()
{
int me = 0, mom = 0, spend, i;
for (i = 1; i <= 12; i++)
{
me = me+300;
scanf("%d", &spend);
me = me-spend;
if (me < 0)//出现钱不够用的
{
me = -i; //出现钱不够用的月数
break;//结束
}
mom = mom + me / 100 * 100; //几个整百数
me = me % 100; //存整百后的剩余钱
}
if (me < 0)
printf("%d", me);//输出不够用的月数
else
printf("%g", me + mom * 1.2);//输出增加的20%还要加上剩余钱
return 0;
}2. 求平均年龄
2.班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。
输入第一行有一个整数n(1<= n <= 100),表示学生的人数。其后n行每行有1个整数,表示每个学生的年龄,取值为15到25。
输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int n, suishu, zonghe = 0;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> suishu;
zonghe += suishu;
}
double pingjun = (double) zonghe / n;
cout << fixed << setprecision(2) << pingjun << endl;
return 0;
}3. 最高的分数
3.孙老师讲授的《计算概论》这门课期中考试刚刚结束,他想知道考试中取得的最高分数。因为人数比较多,他觉得这件事情交给计算机来做比较方便。你能帮孙老师解决这个问题吗?
输入两行,第一行为整数n(1 <= n < 100),表示参加这次考试的人数.第二行是这n个学生的成绩,相邻两个数之间用单个空格隔开。所有成绩均为0到100之间的整数。
输出一个整数,即最高的成绩。
#include <iostream>
using namespace std;
int main() {
int n, zuida = 0;
cin >> n;
for (int i = 0; i < n; i++) {
int chengji;
cin >> chengji;
if (chengji > zuida) {
zuida = chengji;
}
}
cout << zuida << endl;
return 0;
}4. 奇数求和
4.计算非负整数 m 到 n(包括m 和 n )之间的所有奇数的和,其中,m 不大于 n,且n 不大于300。例如 m=3, n=12, 其和则为:3+5+7+9+11=35。
输入两个数 m 和 n,两个数以一个空格分开,其中 0 <= m <= n <= 300 。
输出一行,包含一个整数,表示m 到 n(包括m 和 n )之间的所有奇数的和。
#include <iostream>
using namespace std;
int main() {
int m, n;
cin >> m >> n;
int zonghe = 0;
for (int i = m; i <= n; i++) {
if (i % 2 == 1) {
zonghe += i;
}
}
cout << zonghe << endl;
return 0;
}5. 整数的个数
5.给定k(1 < k < 100)个正整数,其中每个数都是大于等于1,小于等于10的数。写程序计算给定的k个正整数中,1,5和10出现的次数。
输入有两行:第一行包含一个正整数k,第二行包含k个正整数,每两个正整数用一个空格分开。
输出有三行,第一行为1出现的次数,,第二行为5出现的次数,第三行为10出现的次数。
#include <iostream>
using namespace std;
int main() {
int k;
cin >> k;
int shu1 = 0, shu5 = 0, shu10 = 0;
for (int i = 0; i < k; i++) {
int geshu;
cin >> geshu;
if (geshu == 1) {
shu1++;
} else if (geshu == 5) {
shu5++;
} else if (geshu == 10) {
shu10++;
}
}
cout << shu1 << endl;
cout << shu5 << endl;
cout << shu10 << endl;
return 0;
}第6次作业(5月5日)
1. 角谷猜想
所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。
程序要求输入一个整数,将经过处理得到1的过程输出来。
输入一个正整数N(N <= 2,000,000)
从输入整数到1的步骤,每一步为一行,每一步中描述计算过程。最后一行输出"End"。如果输入为1,直接输出"End"。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
while (n != 1) {
cout << n;
if (n % 2 == 1) { // 奇数情况
cout << "*3+1=";
n = n * 3 + 1;
} else { // 偶数情况
cout << "/2=";
n = n / 2;
}
cout << n << endl;
}
cout << "End" << endl;
return 0;
}2. 分离整数的各个数位
给定一个整数,要求从个位开始分离出它的每一位数字。输入一个整数,整数在1到100000000之间。输出从个位开始按照从低位到高位的顺序依次输出每一位数字。数字之间以一个空格分开。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
while (n > 0) {
cout << n % 10 << " ";
n /= 10;
}
return 0;
}3.求两个数的最大公约数
对于求两个正整数m,n的最大公约数可以用do-while实现。
输入两个整数,输出最大公约数
#include <iostream>
using namespace std;
int main() {
int m, n;
cin >> m >> n;
int remainder; // 存储余数
do {
remainder = m % n;
m = n;
n = remainder;
} while (remainder != 0);
cout << m << endl;
return 0;
}第8次作业(5月8日)
1. 字符图形2-星号倒直角
请打印n行的星号倒直角三角形。
输入一个整数n(n<10)。
输出输出如下方图所示n行的星号倒直角三角形。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = n; i > 0; i--) {
for (int j = 1; j <= i; j++) {
cout << "*";
}
cout << endl;
}
return 0;
}2. 求1!+2!+...+N!
N!=1∗2∗...∗N。例5!=1∗2∗3∗4∗5=120。
编程求1!+2!+3!+...+N!。
输入一行,只有一个整数n(1≤n≤10)
输出一行,1个整数
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int sum = 0;
int jiecheng = 1;
for (int i = 1; i <= n; i++) {
jiecheng *= i;
sum += jiecheng;
}
cout << sum << endl;
return 0;
}3. 求100~999中的水仙花数
若三位数ABC=ABC=A³+B³+C³,则称ABC为水仙花数。例如153,1³+5³+3³ =1+125+27=153,则153是水仙花数。
输出按从小到大输出所有水仙花数,每个数占6个字符宽度。
#include <bits/stdc++.h>
using namespace std;
int main(){
for (int i = 100; i <= 999; i++){
int a = i / 100; // 获取百位数
int b = (i / 10) % 10; // 获取十位数
int c = i %10; // 获取个位数
if (i == a*a*a + b*b*b + c*c*c){
cout << setw(6) << i;
}
}
return 0;
}



还没有评论,来说两句吧...