21.11.27

目录

1、求1000以内的所有完数。所谓完数,是指一个数恰好等于它的所有因子之和。例如,因为6=1+2+3,所以6为完数。

2、有1、2、3、4 ,四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 

3、求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时 共有5个数相加),相加数的个数及a的值由键盘控制。

4、输出九九表

5、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?(只考虑十万以内的数)

6、求输入的十个整数中正整数的个数及其和与平均值。

7、将输入的小写字母转换成大写字母,直至输入非小写字母字  

        符结束程序。

8、译密码

9.oj.2(循环)桔子数量

10.oj.3(循环)最高的分数

11.oj.4(循环)有多少位是7?

12.oj.5(循环)均值

13.oj.6(循环)画矩形

14.金币

15.oj.8(循环)含k个3的数


1、求1000以内的所有完数。所谓完数,是指一个数恰好等于它的所有因子之和。例如,因为6=1+2+3,所以6为完数。

#include<iostream>
using namespace std;
int main()
{
    int sum;
    for (int i = 1;i <= 1e3; i++) {
        sum = 0;
        for (int j = 1; j < i; j++) {
            if (!(i % j))
                sum += j;
        }
        if (!(i-sum))
            cout << i << endl;
    }
    return 0;
}

2、有1、2、3、4 ,四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 

#include<iostream>
using namespace std;
int main()
{
    for (int i = 1; i <= 4; i++) {
        for (int j = 1; j <= 4; j++) {
            for (int k = 1; k <= 4; k++) {
                bool a = i != j,
                     b = i != k,
                     c = k != j;
                if (a && b && c)
                    cout << i * 100 + j * 10 + k << endl;
            }
        }
   }
    return 0;
}

3、求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时 共有5个数相加),相加数的个数及a的值由键盘控制。

#include<iostream>
using namespace std;
int main()
{
    int n, a, z=0, sum = 0;
    cin >> n >> a;
    for (int i = 1; i <= n; i++) {
        z = z * 10 + a;
        sum += z;
    }
    cout << sum << endl;
    return 0;
}

4、输出九九表

循环嵌套

#include<iostream>
using namespace std;
int main()
{
    for (int i = 1; i <= 9; i++) {
        for (int j = 1; j <= i; j++) {             // !!! j <= i
            cout << i * j << '\t';
            if (!(i - j))
                cout << endl;
        }
    }
    return 0;
}

5、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?(只考虑十万以内的数)

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    for (int i = 0; i <= 1e5; i++) {
        bool a = (int)sqrt(i + 100) * (int)sqrt(i + 100) == i + 100;  //double sqrt(double)
        bool b = (int)sqrt(i + 268) * (int)sqrt(i + 268) == i + 268;  // 左值 == 右值
        if (a && b)
            cout << i << endl;
    }
    return 0;
}

6、求输入的十个整数中正整数的个数及其和与平均值。

#include<iostream>
using namespace std;
int main()
{
    int sum=0, n;
    for (int i = 1; i <= 10; i++) {
        cin >> n;
        sum += n;
    }
    double aver = sum / 10.0;
    cout << aver << endl;
    return 0;
}

7、将输入的小写字母转换成大写字母,直至输入非小写字母字  

        符结束程序。

??????????????????????????????????????????????????????????????????????

#include<iostream>
using namespace std;
int main()
{
    char ch;
    while (1) {
        cin.get(ch);
        if (ch >= 'a' && ch <= 'z') {
            ch = ch  - 'a' + 'A';
            cout << ch << endl;
        }
        else
            break;
    }
    return 0;
}

8、译密码

例如:    Hello,world!

译成密码:Lipps,asvph!

#include<iostream>
using namespace std;
int main()
{
    char c;
    while ((c = getchar()) != '\n') {
        if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
            c += 4;
            if (c > 'Z' && c <= 'Z' + 4 || c > 'z')
                c -= 26;
        }
        cout << c;
    }
    return 0;
}

9.oj.2(循环)桔子数量

妈妈给五岁的小明买了一兜桔子,小明最多只会从1数到x,x不超过10,每数到x,他就从头开始数,发现最后剩余y个,小明这样数了三遍,还是搞不清有多少桔子,你能帮他数清楚最少有多少桔子吗?

输入

输入参数为6个整数,分别为三遍里每次数到的数量x和剩余的数量y。

输出

输出为一个整数,为最少的桔子数量。

样例输入

2 1 3 2 5 4

样例输出

29

#include<iostream>
using namespace std;
int main()
{
    int x1,x2,x3,y1,y2,y3;
    int i = 0;
    cin >> x1 >> y1 >> x2>> y2>>x3>>y3;
    while(1) {
        i++;
        bool a = i % x1 == y1,            //认真审题
             b = i % x2 == y2,
             c = i % x3 == y3;
             
        if (a&&b&&c)
            break;
    }
    cout << i << endl;
    return 0;
}

10.oj.3(循环)最高的分数

输入两行,第一行为整数n(1 <= n < 100),表示参加这次考试的人数.第二行是这n个学生的成绩,相邻两个数之间用单个空格隔开。所有成绩均为0到100之间的整数。

样例输入

5

85 78 90 99 60

样例输出

99

#include<iostream>
using namespace std;
int main()
{
    int n,max=0;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        int a;
        cin >> a;
        if (a > max)
            max = a;
    }
    cout << max << endl;
    return 0;
}

11.oj.4(循环)有多少位是7?

从键盘读入一个4位数的整数,求该数中有多少位是7。

输入

一个4位数的整数。

输出

该整数中7的个数。

样例输入

4757

样例输出

2

#include<iostream>
using namespace std;
int main()
{
    int n,sum=0;
    cin >> n;
    for (int i = 1; i <= 4; i++) {
        if (n % 10 == 7)           //联想,总结          
            sum++;
        n /= 10;
    }
    cout << sum << endl;
    return 0;
}

12.oj.5(循环)均值

给出一组样本数据,计算其均值。

输入

输入有两行,第一行包含一个整数n(n小于100),代表样本容量;第二行包含n个绝对值不超过1000的浮点数,代表各个样本数据。

输出

输出一行,包含一个浮点数,表示均值,精确到小数点后4位。

#include<iostream>
#include <iomanip>
using namespace std;
int main()
{
    int n;
    double aver, sum=0;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        double a;
        cin >> a;
        sum += a;
    }
    aver = sum / n;
    cout << setiosflags(ios::fixed) << setprecision(4)<< aver << endl;
    return 0;
}

olol  #include <iomanip>

        cout << setiosflags(ios::fixed) << setprecision(x)

13.oj.6(循环)画矩形

输入一行,包括四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行不多于10行,宽不少于5列不多于10列);第三个参数是一个字符,表示用来画图的矩形符号;第四个参数为1或0,0代表空心,1代表实心。

样例输入

7 7 @ 0

样例输出

@@@@@@@
@     @
@     @
@     @
@     @
@     @
@@@@@@@
#include<iostream>
using namespace std;
int main()
{
	int n, m,x;
	char a;
	cin >> n >> m >> a>>x
		;
	if (x) {
		for (int i = 1; i <= m * n; i++) {
			cout << a;
			if (!(i % m))
				cout << endl;
		}
	}
	else {
		for (int i = 1; i <= m * n; i++) {
			if (i <= m || i % m == 0 || i % m == 1 || i>=(n*m-m))
				cout << a;
			else
				cout << ' ';
			if (!(i%m))
				cout << endl;
		}
	}
    return 0;
}

olol 分步,慢慢来,把一个大问题分解成小问题。

14.金币

国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币(N为任意正整数)。

你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。

输入

一个整数(范围1到10000),表示天数。

输出

骑士获得的金币数。

样例输入

6

样例输出

14

#include<iostream>
using namespace std;
int main() {
	int k, sum = 0,day=0;
	cin >> k;
	for (int i = 1;; i++) {
		for (int j = 1; j <= i; j++) {
			sum += i;
			day++;
			if (!(day - k)) {
				cout << sum << endl;
				return 0;
			}
		}
	}
}

15.oj.8(循环)含k个3的数

输入两个正整数 m 和 k,其中1 < m < 100000,1 < k < 5 ,判断 m 能否被19整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO。

例如,输入:
43833 3
满足条件,输出YES。

如果输入:
39331 3
尽管有3个3,但不能被19整除,也不满足条件,应输出NO。

#include<iostream>
using namespace std;
int main()
{
    int m, k,i=0;
    cin >> m >> k;
    int ol = m;                              //存储原先的值
    while(!(m==0)) {
        if (m % 10 == 3)
            i++;
        m /= 10;
    }
    if (!(ol % 19) && k == i)               //用原先的值判断
        cout << "YES" << endl;
    else
        cout << "NO" << endl;
    return 0;
}

olol 检查代码 查看变量值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值