2.1 【问题描述】
利用循环结构,编制程序显示出如下“图形”。
1
131
13531
1357531
135797531
【输入形式】打印图形的行数
【输出形式】打印图形
【样例输入】3
【样例输出】
1
131
13531
【样例说明】每行输出顶格,不需要中间的空格。
代码:
#include <iostream>
using namespace std;
int main()
{
int rows, i, j;
cin >> rows;
for (i = 1; i <= rows; i++)
{
for (j = 1; j <= (2 * i - 1); j++)
{
if (j <= i)
cout << 2 * j - 1;
else
cout << (2 * (2 * i - j) - 1);
}
cout << endl; //endl在最外for内
}
return 0;
}
另一种:
#include <iostream>
using namespace std;
int main()
{
int rows;
cin >> rows;
for(int i=1;i<=rows;i++)
{
for(int j=1;j<=i;j++) //内部两个并列for循环
cout << 2*j-1;
for(int j=i-1;j>=1;j--)
cout << 2*j-1;
cout << endl;
}
return 0;
}
2.2 问题描述
某商店出售四种商品: A商品每公斤2.75元;B商品每个12.5 元;C商品每米26.8 元;D商品每台512元,超过3台优惠10%,超过8台优惠15%。设计一个计算价格的程序,通过输入购买四种商品的数量,计算并显示每种商品应付金额以及总金额。
【输入形式】
输入每种商品的数量。
【输出形式】
输出每种商品的应付金额和总金额。
【样例输入】
1 2 3 2
【样例输出】
A:2.75
B:25
C:80.4
D:1024
total:1132.15
【样例说明】输出每种数据占一行。
#include <iostream>
using namespace std;
int main()
{
int a, b, c, d;
double sum1, sum2, sum3, sum4; //a_sum,b_sum
cin >> a >> b >> c >> d;
sum1 = a * 2.75;
sum2 = b * 12.5;
sum3 = c * 26.8;
if (d >= 0 && d <= 3)
sum4 = 512 * d;
else if (d > 3 && d <= 8)
sum4 = 512 * d * 0.9;
else
sum4 = 512 * d * 0.85;
cout << "A:" << sum1 << endl;
cout << "B:" << sum2 << endl;
cout << "C:" << sum3 << endl;
cout << "D:" << sum4 << endl;
cout << "total:" << (sum1 + sum2 + sum3 + sum4);
return 0;
}
2.3问题描述
求n以内被3除余1且个位数为6的所有整数(如16、46、…、286等)并显示在屏幕上。
【输入形式】
输入某个数
【输出形式】
输出所有结果,空格隔开
【样例输入】
300
【样例输出】
16 46 76 106 136 166 196 226 256 286
【样例说明】不要有多余字符。
#include <iostream>
using namespace std;
int main()
{
int n, i;
cin >> n;
for (i = 1; i < n; i++)
if (i % 3 == 1 && i %10 == 6)
cout << i << " ";
return 0;
}
2.4问题描述
编写一程序统计参赛选手的得分,计分标准为去掉一个最高分和一个最低分后,对剩余得分求平均值。要求首先从键盘输入评委的个数num,然后输入num个分数(分数为小于等于10的一个正实数),输出最终得分。
【输入形式】
输入评委个数和各自分数。
【输出形式】
输出得分。
【样例输入】
5
9.2 9.6 9.5 9.7 9.7
【样例输出】
9.6
【样例说明】只输出计算最终得分。
#include<iostream>
using namespace std;
int main()
{
int n; //n是评委个数
double min = 10, max = 0, sum = 0, num; // sum是总分,num是每一个分数
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> num; //输入一个num就循环一次,for循环控制循环n次;
if (min > num) min = num; //此方法选出最大值,最小值,注意谁是max,谁是min
if (max < num) max = num;
sum += num; //求和 //边输入边求和
}
cout << (sum - min - max) / (n - 2);
return 0;
}
2.5问题描述
设计一个程序,对于用户输入的任意正整数a(a≥1)和b(b≥2),求出满足≤a的最大整数n。
【输入形式】
两个数。
【输出形式】
一个数据。
【样例输入】
30 5
【样例输出】
2
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a, b, n=0, m;
cin >> a >> b;
while(n>=0)
{
if (pow(b, n) > a)
{
m = n - 1;
cout << m;
break;
} //整个if语句括起来!break应该是在if中
n++;
}
return 0;
}
另有
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int a,b,ans;
cin >> a >> b;
ans = log(a)/log(b); //两边取对数
cout << ans; //ans为整数
return 0;
}