每日编程一小时(第三天)

一.问题描述。

 二。设计思路

1.输入一个数

2.根据个数规律得到小于所输入的值的最大的能绘制沙漏型的数

3.根据个数得到行数

4.创建两层循环用于控制递减的行,外层控制行数,里层控制每行的打印

5.创建两层循环控制递增的行

 

 

 

 

 代码实现:

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int a, b = 1, c = 0;
 6     char d;
 7     cin >> a>>d;
 8     while (1)//获取b;注意此b会比实际值大1
 9     {
10         c = 2*b*b-1;
11         if (c>a)
12         {
13             break;
14         }
15         b += 1;
16     }
17     b--;//减去1
18     c = 2 * b * b - 1;
19     for (int i = 0; i < b; i++)//控制行数(前三行)
20     {
21         for (int j = 0; j < i; j++)//打印空格
22             cout << " ";
23         for (int k = 1; k < 2 * (b - i); k++)//
24         {
25             cout << d;
26         }
27         cout << endl;
28     }
29     for (int i=1; i < b ; i++)//后三行
30     {
31         for (int k = 0; k < b - i - 1; k++)//打印空格
32             cout << " ";
33         for (int j = 0; j <2*i+1 ; j++)
34         {
35             cout << d;
36         }
37         cout << endl;
38     }
39     cout<< a-c<<endl;
40     return 0;
41 }

运行实例:

 

  

 一.问题描述

 二.设计思路

1.创建一个足够长的字符数组

2.创建一个有10个元素且每个元素都是0的整型数组

3.输入一个字符串(就是数)

4.每个数位上的数都-'0'后再b的相应元素上+1

5.输出b数组中不为0的元素

 代码示例:(这里要注意的点就是能够输入的值要足够多)

#include<iostream>
using namespace std;
int main()
{
    char a[1001];
    int c ,n = 0;
    int b[10] = { 0 };
    cin >> a;
    while (a[n] != '\0')//统计数
    {
        c = a[n] - '0';
        b[c]++;
        n++;
    }
    for (int i = 0; i < 10; i++)//输出
    {
        if (b[i] != 0)//个数为0的不输出
            cout << i << ":" << b[i]<<endl;
    }
    return 0;
}

运行实例:

 

 

 

 

 代码示例:(非常简单的一题)

1 #include<iostream>
2 using namespace std;
3 int main()
4 {
5     int a;
6     cin>>a;
7     cout<<"Celsius = "<<5*(a-32)/9<<endl;
8 }

运行示例:

 

posted @ 2023-04-12 20:32  伐木工熊大  阅读(7)  评论(0编辑  收藏  举报