专业编程基础技术教程

网站首页 > 基础教程 正文

C++学习:循环练习题(一) c++循环结构例题解析

ccvgpt 2024-11-11 11:21:39 基础教程 10 ℃

第一阶段的内容:

输入、输出、变量

C++学习:循环练习题(一) c++循环结构例题解析

关键点:printf的使用、数据类型int double char bool

分支选择结构

关键点:if/if else/if else if /选择嵌套/switch case/break/逻辑运算符

循环结构

关键点:while/do while/for/break continue/循环的嵌套

例题:质数判断

题目描述:输入一个正整数,判断是否是素数。

输入描述:输入一个正整数

输出描述:如果是素数输出prime 如果不是输出not prime。

样例输入:97 样例输出:prime

样例输入:10 样例输出:not prime

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n = 0;//输入的数
cin >> n;//输入一个数
for(int i=2;i<=sqrt(n);i++){//2到前一个数
if(n%i==0){//整除了
cout << "not prime" << endl;
}
}
cout << "prime" << endl;
return 0;
}

例题:范围质数

题目描述:一行两个正整数,分别代表n和m,输出n和m之间的所有质数,数字用空格隔开。

输入描述:输入两个正整数

输出描述:空格隔开的一列数。

样例输入:2 10 样例输出:2 3 5 7

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n = 0,m = 0;//输入的数
cin >> n >> m;//输入数
bool isPrim;
for(int j=n;j<=m;j++){
isPrim = true;
for(int i=2;i<=sqrt(j);i++){//2到前一个数
if(j%i==0){//整除了
isPrim = false;
break;
}
}
if(isPrim){
cout << j << " ";
}
}
cout << endl;
return 0;
}

例题: Peter的烟 P1150

题目描述:Peter有n根烟,他每吸完一根烟就把烟蒂保存起来k(k>1)个烟蒂可以换一个新的烟,那么Peter 最终能吸到多少根烟呢?

输入描述:每组测试数据一行包括两个整数 n,k。

输出描述:对于每组测试数据,输出一行包括一个整数表示最终烟的根数。

样例输入:4 3 样例输出:5

样例输入:10 3 样例输出:14

第一个思路:

//烟 兑换比例 烟总数 烟蒂
int n = 0, k = 0,b = 0,a = 0;
cin >> n >> k;
while(n!=0){//只要有烟抽 那我就一直抽
n--;//抽一根
b++;//总数加一根 计数
a++;//烟蒂多一个
if(a == k){//只要兑换比例够了
a-=k;//兑换走
n++;//加根烟
}
}
cout << b << endl;

第二个思路:

#include <iostream>
using namespace std;
int main()
{
int n = 0, k = 0;//多少根烟 多少烟蒂换烟
cin >> n >> k;
int y = 0,yd = 0;//烟和烟蒂
do{
y += n;//全抽完
yd += n;//多少根烟蒂
n = yd/k;//兑换的烟
yd = yd%k;//剩下的烟蒂
}while(n>0);
cout << y << endl;
return 0;
}

一个有问题的思路:

//输入的烟 兑换比例 兑换的烟
int n = 0,k = 0,s = 0;
cin >> n >> k;
s = n/k;//兑换完了所有的烟蒂
if(n%k+s>=k){
cout << n + s + 1 << endl;
}else{
cout << n + s << endl;
}

Tags:

最近发表
标签列表