每日编程一小时(第三天)
一.问题描述。
二。设计思路
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 }
运行示例: