13C++循环结构-for循环(3)

news/2024/12/27 20:28:03/文章来源:https://www.cnblogs.com/citStudy/p/18466959

一、回文数

问题:“地满红花红满地,天连碧水碧连天”是一副回文联,用回文形式写成的对联,既可以顺读,也可以倒读,意思不变。在数学中也存在这样特征的一类数,称为回文数。设n是一任意自然数,将n各个数位上的数字反向排列所得自然数m,若m等于n,则n为回文数。例如,1234321是回文数,1234567不是回文数。

试编一程序,判断一个自然数是不是回文数。

如何将自然数n各个数位上的数字反向排列,组成新的自然数m?如输入的数n为123时,可先将m的初值设为0。第1次,先运用整除求余运算将n个位上的数字分离出来,即123%10得到3,再用m*10+3组成的新数赋值给m,然后将n的值缩小10倍;第2次,重复上面的步骤后,m为32,n为1;第3次,重复上面的步骤后,m为321,n为0。由于此时n的值为0,新数m构造完成,如图所示。

因为输入的自然数其位数是不确定的,因此每次分离数位时,循环次数也是不确定的。for语句使用很灵活,不仅可以用于循环次数已经确定的情况,而且也可以用于循环次数不确定而循环结束条件确定的情况。
流程图:

#include <iostream>    
using namespace std;
int main()
{int num,n,m;cin>>num;m=0;n=num;for(;n>0;){m=m*10+n%10;n=n/10;}if(m==num) cout<<"是回文数"<<endl;else cout<<"不是回文数"<<endl;return 0;
}

可以把for语句在形式上稍作修改,程序如下:
for(n=num; n>0; n=n/10)m=m*10+n%10;

练习:

(1)下列文件扩展名为声音文件格式的是( )。

   A.doc      B.wav      C.exe      D.txt

(2)阅读程序写结果

#include <iostream>
using namespace std;
int main()
{int i,bai,ge, ans=0;for(i=100;i<=130;i++){bai=i/100;ge=i%10;if(bai==ge)ans++;}cout << ans << endl;return 0;
}

i,bai,ge,ans的输出:________________
(3)完善程序。
输入一个数,判断是不是完全数。完全数是指此数所有的真因子(即除了自身以外的约数)之和等于自己。如6=1+2+3,就是完全数。

#include <iostream>
using namespace std;
int main()
{int n, i, sum=0;cout<<"n=";cin>>n;for(i=1;i<n;i++)if(n%i==0) ______________;if(_______)cout<"是完全数";elsccout<"不是完全数";return 0;
}

二、斐波那契数列及长整型 long

斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,··,这个数列从第3个数开始,每个数都等于前面两个数的和。这个数列与大自然中植物的关系极为密切,几乎所有花朵的花瓣数都来自这个数列中的一项数字,同时在植物的叶、枝、茎等排列中也存在斐波那契数列。
试编一程序,输出斐波那契数列中的前10项。
斐波那契数列的前两项为1,从第3项开始,每一项的值是前面两项的和。可以先把第1项al和第2项a2赋值为1;求第3项a3时,只要把al+a2的和赋值给a3并输出即可,再把a2赋值给al,a3赋值给a2,为求下一项做准备;然后依次重复执行求第3项的步骤,求出前10项。流程图如:

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{long i,a1,a2,a3;a2=a1=1;cout<<setw(5)<<a1;cout<<setw(5)<<a2; for(i=3;i<=10;i++){a3=a1+a2;cout<<setw(5)<<a3;a1=a2;a2=a3;} return 0;
}

注:
在Dev-C+、Visual C++中,长整型 long的取值范围和整型int的取值范围是一样的,即-2147483648~2147483647,不要把长整型long当成超长整型long long的缩写。其实,C+并没有统一规定各类数据的精度、数值范围和在内存中所占的字节数,由各种C++编译系统根据自己的情况做出安排。C++只是规定int型数据所占的字节数不大于long型,long型数据所占的字节数不大于long long 型。

练习:

(1)如果开始时计算机处于小写输入状态,现在尼克反复CapsLock、字母键A、字母键S的顺序按键,在屏幕上输出的第符是字母()。

    A.A         B.S         C.a          D.s

(2)阅读程序写结果。

#include<iostream>
using namespace std;
int main()
{int a, b, i;cin>>a;b=l;for(i=l;i<a;i++){b*=i;if(b%3==0)b/=3;if(b%5==0)b/=5;}cout <<b<<endl;return 0;}

输入:8
a,b,i的输出:____________________
(3)完善程序。
一个有规律的数列,其前6项分别是1,3,7,15,31,63。规律如图37.2所示,编程输出这个数列的前30项。

#include<iostream>
using namespace std;
int main()
{long long a, n;n=2;a=l;for(int i=l; i<=30;i++){cout<<a<<endl;_____________;—————————————;}return 0;
}

三、逻辑判断与推理

问题:A、B、C、D四人中有一个人是小偷,已知四个人中有一个人说了假话,请根据四个人的供词来判断谁是小偷。
A:我不是小偷。
B:C是小偷。
C:D是小偷。
D:我不是小偷。
假设你是警察,请编个程序来判断一下,谁是小偷。
可以用1、2、3、4这四个数字分别作为A、B、C、D这四个人的编号。用变量i代表小偷,则四人所说的话可以分别用以下的逻辑式来表示:

A:我不是小偷,即i!=1。
B:C是小偷,即i==3。
C:D是小偷,即i==4。
D:我不是小偷,即i!=4。

如果说了真话,它的逻辑值就是“真”(true,值为1),说了假话它的逻辑值就是为“假”(false,值为0)。其中有一人说了假话,就是三个人说了真话,所以应该是:
(i!=1)+(i==3)+(i==4)+(i!=4)==3
i值由1到4枚举就可以得到结果。流程图如图:

#include <iostream>      
using namespace std;   
int main()
{ int i;char xiaotou;for(i=1;i<=4;i++)if((i!=1)+(i==3)+(i==4)+(i!=4)==3){xiaotou=64+i;cout<<"小偷是:"<<xiaotou;break;}return 0; 
}

运行结果:
小偷是:c
可以应用枚举和逻辑表达式解决一些逻辑判断和逻辑推理问题,实现初级的人工智能。让计算机像人一样学习、思考,让计算机听懂人的语言,让计算机自动进行程序设计等都是人工智能研究的内容。人工智能、基因工程和纳米技术被称为21世纪三大尖端技术。

练习:

(1)计算机如果缺少( ),将无法正常启动。

    A.内存         B.鼠标          C.U盘          D.摄像头

(2)阅读程序写结果。

#include <iostream>
using namespace std;
int main()
{int i,n;char ans;cin>>n;ans='0';for(i=l; i<n; i++)if((1%3=0)+(1%5=0)+(%2=0)==2)ans++;cout << ans << endl;return 0:
}

输入:15
i,n,ans的输出:______________
(3)完善程序。
一天,校长到机器人教室检查,看见一只仿生机器人——猴子,做得十分可爱,便问是谁做的,狐狸老师等人想和校长开个玩笑,于是狐狸老师说:“是尼克做的。”尼克说:“不是我做的。”格莱尔说:“不是我做的。”如果他们中有两个人说了假话,一人说了真话,请你判断是谁做的。

#include <iostream>
using namespace std;
int main()
{______________;for(i=1;i<=3;i++)if((i==2)+(i!=2)+(____)==1)break;switch(i){case l: cout <"狐狸老师做的 "<endl; break;case 2: cout <<"尼克做的 "<<endl; break;case 3: cout <<"格莱尔做的 "<<endl; break;}return 0;
}

四、for语句的应用

可以使用rand()%(9-1+1)+1随机产生一个一位数。我们设定0为加法,1为减法,使用rand()%2随机产生加减运算符。当是减法运算且x小于y时,可以交换x和y的值,也可以用y-x,以确保被减数大于减数。
试编一个“口算大师”程序,随机出10道一位数加减法的算术题,每完成一题后判断对错,每题10分,满分100分,全部完成后输出成绩。
流程图如:

#include <iostream>  
#include <ctime>  
#include <cstdlib>  
using namespace std;  
int main()  
{  srand(time(0));int x,y,symbol,ans;int n,temp,sum=0;   for(int i=0; i<10; i++)  {  x=rand()%9+1;  y=rand()%9+1;  symbol=rand()%2;  if(x<y&&symbol==1) {     temp=x;  x=y;  y=temp;  }  switch(symbol)  {  case 0:  ans=x+y;  cout<<x<<'+'<<y<<'=';  break;  case 1:  ans=x-y;  cout<<x<< '-'<<y<<'=';  break;  }  cin>>n;  if(n==ans) {sum+=10; cout<<"    对! "<<endl;   	 }else  cout<<"    错! "<<endl;  }  cout<<"得分:"<<sum<<endl;  return 0;  
}  

练习:

(1)目前个人计算机的( )市场占有率最靠前的厂商包括Intel、AMD等公司。

   A.显示器      B.CPU      C.内存      D.鼠标

2.阅读程序写结果。

#include <iostream>
using namespace std;
int main()
{int i, x, y, n, ans=0;for(i=50;i<=60;i++){x=i%10;y=i/10;n=x*l0+y;if(i+n<100)ans++;}cout <<ans <<endl;return 0;
}

(3)完善程序
利用随机函数,编一个与计算机玩剪刀、石头、布游戏的程序,同时统计出计算机赢的局数和你赢的局数。

#include <iostream>
#include<ctime>
#include <cstdlib>
using namespace std;
int main()
{const int MAX=10;srand(time(0));int m, n, countm, countn;countm=countn=0;for(int i=0; i<MAX; i++){______________;cout<<"请你出招"<<endl;cout<"1.剪刀2.石头3.布"<<endl;cin>>n;if(n<llln>3)cout<<"请输入1~3,此局无效!"<endl;else{switch(m-n){case-2:case 1: cout <"计算机赢 !"<<endl; countm++; break;case_____:cout <"平局!"<endl; break;default: cout <"你赢!"<endl; countn++; break;}}cout<<"计算机赢:"<<__________<<endl;cout<<"你赢: "<< countn <endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/860018.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年了,你还不会配置Jetson Orin NX嘛?

2025年了,你还不会配置Jetson Orin NX嘛?我的设备为:Jetson Orin NX 16G + JetPack6.1+达妙科技载板 帅气的Jetson Orin NX拿到手了,都2025年了你还不会配置嘛???让我一篇文章带你不糟蹋这一美丽的艺术品!Cuda、CuDNN、TensorRT配置首先我们拿出一块刚刚烧录完的…

uml上机实验 4

一 实验目的  理解顺序图、协作图、活动图、状态机图的概念及其在系统分析设计中的作用;  了解和掌握软件工程中用例逻辑时序的分析方法;  掌握两种交互图(顺序图和协作图)的差别;  掌握描述一个操作执行过程中所完成工作(动作)的方法;  掌握描述对象内部工作…

uml上级实验 5

一 实验目的  了解系统物理体系结构模型和表示方法;  了解部署图的概念及其在系统设计中的作用;  掌握使用Rational Rose绘制部署图的方法; 二 实验环境及实验准备  所需硬件环境为微机;  所需软件环境为Rational Rose、Miscrosoft Word等;  熟悉Rational Ros…

JAVA-Day 03:数据类型

数据类型 Java的数据类型分为两大类,分别是基本类型(primitive type)和引用类型(reference type)。 基本数据类型(Primitive Type)分为数值类型和boolean(布尔)类型 数值类型整数类型byte型占1个字节范围:-128~127 如图所示:short型占2个字节范围:-32768~32767 如图所示:int…

[攻防世界]不确定,再看看

[攻防世界]不确定,再看看[攻防世界]不确定,再看看 题目 做题做累了吧,给你准备了一道钢琴曲,要仔细听哦!我藏得很深。 hint1:信息隐藏一般要求载体需要有一定的冗余度,而base64编码刚好就有这个特点。 解题 下载得到音频文件 放入Audacity,并无收获解锁新工具Deepsound…

2.3结构伪类选择器

2.3结构 伪类选择器

python爱心代码大全

python爱心代码 详细分析这段代码实现了一个用Python的Tkinter库绘制跳动爱心的程序,其中包括了一个弹窗来询问是否做一个人的女朋友,如果同意则会显示跳动的爱心,如果拒绝则会重新询问。(无法解决,只能同意哦~) 下面对代码进行详细分析: 1.导入必要的库首先,导入了一…

C#使用Tesseract C++ API过程记录

Tesseract Tesseract 是一个开源的光学字符识别(OCR)引擎,最初由 Hewlett-Packard(惠普)实验室开发,后来由 Google 收购并继续维护和开源贡献。Tesseract 可以识别多种语言的文字,广泛应用于将图片或扫描文档中的文本内容转换成可编辑的文本格式。随着深度学习技术的发展…

[攻防世界]信号不好先挂了

[攻防世界]信号不好先挂了[攻防世界]信号不好先挂了 分析 又是图片隐写我也先挂了…… 解题save bin 保存后的zip还需要修复一下才能解压缩……怎么里面又是这张图片 Misc隐写术 - Scr1pt? - 博客园两张一样图片还可在stegslove合成图片 用BlindWaterMark这个工具一直报错(麻…

10. 组合框控件

一、组合框控件组合框控件主要以列表形式为用户提供选择的项目,用户可以从中选择项。PySide6 中常用的列表类控件主要有 QComboBox(下拉组合框控件)、QFontComBox(字体组合框控件)。我们可以在终端中使用 pip 安装 pyside6 模块。 pip install pyside6二、下拉组合框控件下…

git review错误: is not registered in your account, and you lack forge committer permission

肉眼看上去,远端的邮箱和自己输入的邮箱是一致的 罪魁祸首是 git commit --amend 里面的邮箱带了中文引号,导致本地和远端邮箱名称不一致 从git review 命令报错email address那一行的奇怪字符可以看出端倪如上图所示,引号不是标准的linux字符