c++新手上路
来源:互联网 发布:羡慕别人知乎 编辑:程序博客网 时间:2024/06/01 07:32
C++
(看到问题先试着做做看,再参考别人,望有收获)
8-3倒序输出(ReverseOrder)
程序说明:这个程序是输入4个无符号整数,然后倒序显示输出结果如输入1234,则输出4321。
实现方法1:
// number1/1000 这个是千位数// (number1/100)%10 这个是百位数// (number1/10)%10 这个是十位数// number1%10 这个是个位数
实现方法2:
如果不是输出一个整体的数,而是出现效果,可以使用这个数的求余(%10)得到最后一个数,这个数/10去掉最后一个数,如此循环和输出就可以得到效果,可以通过do while或者for实现。
进阶:如果输入一个未知长短的数字,求倒序输出。
(要注意数字类型长短的问题)
实现方法:先求出这个数的个数。
然后循环个数的次数倒序输出结果。
作用:可以作用于一下对称图案输出
#include <iostream>#include <math.h>using namespace std;int main() { int number1; //输入的数字 int number2; //返回的数字 cout<<"输入一个4位数,让它倒序输出:"<<endl; cin>>number1; //以下是number1位置上数字的表达方法 //number1%10 这个是个位数 //(number1/10)%10 这个是十位数 //(number1/100)%10 这个是百位数 //number1/1000 这个是千位数 //也可以用%10得到最右边的数字,然后在/10去掉一位数字。 number2 = (number1%10)*1000+(number1/10)%10*100+(number1/100)%10*10+number1/1000; cout<<number2<<endl; //实现打印倒序输出(do{}while();) int number3; //输入的值 cout<<"输入一个4位数,让它倒序输出:"<<endl; cin>>number3; do{ cout<<number3%10; //求出最右边的数字 number3 = number3/10; //却掉最右边的数字 }while(number3>0); //实现打印倒序输出(for()) cout<<" "<<endl; cout<<"以下是通过for循环实现方法"<<endl; int number4; cout<<"输入一个4位数,让它倒序输出:"<<endl; cin>>number4; for(int i=0;i<=3;i++) { cout<<number4%10; number4 = number4/10; } cout<<" "<<endl; //以下是实现未知数倒序打印输出和整体输出的实现方法 long number5; //输入的值 long temp; //储存number5求出数字位数 long number6=0; //用来储存输出的数 int numberCount =0; //字符长度 cout<<"请输入随意长度数字:"<<endl; cin>>number5; temp =number5; while(temp!=0) //求出这个数的长度 { temp =temp/10; numberCount++; } cout<<"这个数是"<<numberCount<<"位。"<<endl; cout<<"这个数的倒序输出是"<<endl; for(int i=1;i<=numberCount;i++) { cout<<number5%10; number6+=(number5%10)*pow(10,numberCount-i); number5 =number5/10; } cout<<" "<<endl; cout<<"这个数的倒序输出是"<<number6<<endl; return 0;}
8-4最小值(MinNumber)
程序说明:输入要输入数字的数目,分别输入值,得到最小值。
实现方法:确定要输入多少个,创建数组,遍历输出数组,输出最小值
进阶1:如果输入个数是单数,就输出大小在中间的值,如果输入个数是双数,就输出中间的两个值。
实现方法:先判断个数是单数还是双数,单数就进行遍历找出中间的值,双数就遍历找出中的两个的值,进行多个遍历进行数组的排列,再调出中间的数。
进阶2:输入未知数量的数字,进行排列,输出分别满足条件的值和该值为排序之前的序号(未实现)。
#include <iostream>using namespace std;int main() { int numberCountOne; //输入数字的个数 cout<<"请输入您要多少个数字"<<endl; cin>>numberCountOne; cout<<"请开始输入:"<<endl; int numberOne[numberCountOne];//数组来储存 int min; //储存最小数 for(int i=0;i<numberCountOne;i++) { cout<<"第"<<i+1<<"个数是:"; cin>>numberOne[i]; } cout<<" "<<endl; cout<<"您输入的数是:"; for(int i =0;i<numberCountOne;i++) { cout<<numberOne[i]<<" "; min = numberOne[0]; if(numberOne[i]<numberOne[0]) { min = numberOne[i]; } } cout<<"这些数中最小的数是:"<<min<<endl; /* 进阶:寻找中间的值,如果输入个数是单数,就输出大小在中间的 值,如果输入个数是双数,就输出中的两个值。 */ int numberCountTwo; cout<<"请输入您需要输入的数字个数:"; cin>>numberCountTwo; int number[numberCountTwo]; if(numberCountTwo%2) //如果是单数 { cout<<"您输入的是单数:"<<numberCountTwo<<endl; for(int i=0;i<numberCountTwo;i++) { cout<<"请输入第"<<i+1<<"的值:"; cin>>number[i]; } cout<<"现在进行数组排列。"<<endl; int temp; //用来交换数字 for(int i=0;i<numberCountTwo-1;i++) { for(int j=0;j<numberCountTwo-1-i;j++) { if(number[j]>number[j+1]) { temp =number[j+1]; number[j+1]=number[j]; number[j] =temp; } } } for(int i=0;i<numberCountTwo;i++) { cout<<number[i]<<" "; } cout<<" "<<endl; cout<<"现在帮你找出大小排序在中间的值。"<<endl; cout<<"中间的值是"<<number[numberCountTwo/2]<<endl; } else { cout<<"您输入的是双数:"<<numberCountTwo<<endl; for(int i=0;i<numberCountTwo;i++) { cout<<"请输入第"<<i+1<<"的值:"; cin>>number[i]; } cout<<"现在进行数组排列。"<<endl; int temp; //用来交换数字 for(int i=0;i<numberCountTwo-1;i++) { for(int j=0;j<numberCountTwo-1-i;j++) { if(number[j]>number[j+1]) { temp =number[j+1]; number[j+1]=number[j]; number[j] =temp; } } } for(int i=0;i<numberCountTwo;i++) { cout<<number[i]<<" "; } cout<<" "<<endl; cout<<"现在帮你找出大小排序在中间的两个值。"<<endl; cout<<"中间的两个数分别是"<<number[numberCountTwo/2-1] <<"和"<<number[numberCountTwo/2]<<endl; } //实现输入一些数字,位数不知 return 0;}
之后再进行优化和方法的调用
8-5有序分数(OrderlyScoresAdd)
程序说明:有一个分数序列2/1、3/2、5/3、8/5…求其前n项之和。
实现方法:找出规律,使用循环进行求出每个位置上的数,再求和。
进阶:多个规律结合起来,中间数的变化,比如top=top+down,down=top-down。
其他规律:分母分别为2,4,6,8,10,12,分子分别为2,3,4,5,6,7,求它们的和
#include <iostream>using namespace std;int main() { double downNumber =1; //分母 double topNumber =2; //分子 int numberCount; //输入要求的个数 double Number =0; //储存由分子和分母组成的数字 double sumNumber =0; //数的和 cout<<"这是有规律的分数,数序列2/1、3/2、5/3、8/5"<<endl; cout<<"开头是2/1,请输入要计算第几位的和:"; cin>>numberCount; for(int i=1;i<=numberCount;i++) { Number =topNumber/downNumber; sumNumber+=Number; topNumber =topNumber+downNumber; downNumber = topNumber -downNumber; } cout<<"输出的结果为:"<<sumNumber<<endl; /* 以下为其他的规律 分母分别为2,4,6,8,10,12 分子分别为2,3,4,5,6,7 求第n个数的和 */ cout<<"这是有规律的分数,数序列2/2、4/3、6/4、10/5"<<endl; cout<<"开头是2/2,请输入要计算第几位的和:"; float topNumberOne =2; //分子 float downNumberOne =2; //分母 float numberOne=0; //组成的数 float sumNumber1 =0; //和 int n1; //个数 cout<<"开头是2/2,请输入要计算多少个数字:"; cin>>n1; for(int i=1;i<=n1;i++) { numberOne =topNumberOne/downNumberOne; sumNumber1+=numberOne; topNumberOne = 2*(i+1); downNumberOne = 2+i; } cout<<"输出的结果为:"<<sumNumber1<<endl; return 0;}
8-6多重数字的和(MultipleNumbers)
程序说明:求a+aa+aaa+aaaa+ ……+aaaa…aaa(n个)的和
实现方法:可以通过求出每个位置上的a的值,对应的位数就是该位置的数字位数,比如第3个数字的位数为3。
(总结,pow()函数要使用#“math.h”,是浮点运算,要使用浮点类型,不然会有误差)
Printf()函数要使用 “stdio.h”
进阶:求阶乘的值
#include <iostream>#include <stdio.h>#include <math.h>using namespace std;int main() { int n=0; //多少个这样的数 int a=0; //选择什么样的数字 long sum=0;//数字群的和 cout<<"请输入您需要什么样的数字:"; cin>>a; cout<<"请输入您需要多少个这样的数字相加:"; cin>>n; double number[n]; double temp=0; for(int i=0;i<n;i++) { for(int j=0;j<=i;j++) { temp+=a*pow(10,j); } number[i] =temp; cout<<number[i]<<endl; temp =0; } for(int i =0;i<n;i++) { sum+=number[i]; } cout<<sum<<endl; //以下是求阶乘的和 int number1; int sum1=1; //结果储存 cout<<"请问你要求数字多少的阶乘:"; cin>>number1; cout<<"这个数的阶乘结果是:"<<endl; for(int i =1;i<=number1;i++) { sum1*=i; } cout<<sum1<<endl; return 0;}
8-7猜数字(Guess the number)
程序说明:猜幻数游戏。由系统随机给出一个数字(即幻数),游戏者去猜,如果猜对,则打印成功提示;否则,打印出错提示,并提示游戏者悬着下一步动作,最多可以猜5次
实现方法:先随机一个数字,开始猜,猜大了就提示大了,猜小了就提示小了,猜对了就提示对了,最多可以猜5次,猜5次就提示,不能再猜了。
#include <iostream>#include <stdlib.h>#include <stdio.h>#include <time.h>#define random(x)(rand()%x)using namespace std;int main() { int number; //用来装随机的数字 int GuessNumber;//用来装玩家猜的数字 int n; //要猜的次数 int guessCount = 0; //记录猜的次数 srand((int)time(0)); number =random(100); cout<<"请输入要猜的次数:"; cin>>n; cout<<"数字已经生成,请开始竞猜:"; for(int i =1;i<=n;i++) { cin>>GuessNumber; if(GuessNumber>number) { cout<<"大了,需要猜小点。"<<endl; } else if(GuessNumber<number) { cout<<"小了,需要猜大点。"<<endl; } else { cout<<"恭喜你!猜对了。"<<endl; break; } if(i<n) { cout<<"你已经猜了"<<guessCount<<"次了,请把握机会!"<<endl; } else { cout<<"你已经猜了"<<n<<"次了,很可惜!"<<endl; } guessCount++; cout<<"请继续:"; } cout<<"这个数字是:"<<number<<endl; cout<<"一共猜了:"<<guessCount<<"次。"<<endl; return 0;}
8-8制作生日卡(BirthdayCard)
程序说明:能够编写生日卡片的程序,使其能够输入和显示日期。
#include <iostream>using namespace std;struct Birthday //成员类型{ char name[8];//名字 类型判断为string char[] int month; //月份 int month int day; //天数 int day};int main() { Birthday birthday; cout<<"请输入名字:"; cin>>birthday.name; cout<<"请输入生日的月份:"; cin>>birthday.month; cout<<"请输入生日所在月份的天数:"; cin>>birthday.day; cout<<" "<<endl; cout<<"成员:"<<birthday.name<<","<<birthday.month<<"月"<<birthday.day<<"日,生日!"<<endl; return 0;}
- 新手上路--C语言学习
- 新手上路(clips与c#)
- 新手上路之c指针理解 笔记
- 新手上路
- 新手上路
- 新手上路
- 新手上路
- 新手上路
- 新手上路
- 新手上路
- 新手上路
- 新手上路
- 新手上路
- 新手上路
- 新手上路
- 新手上路
- 新手上路
- 新手上路
- 三、Linux--进程
- 30 Useful Linux Commands for System Administrators(这些命令均可以在centos服务器上运行)
- 数据结构——根据中序遍历与先序遍历构建二叉树
- 【数据结构与算法】Project 1: Linear List // 测试心得
- 背个小包遍地跑----01背包问题(C++)
- c++新手上路
- jQuery 居中弹出 iframe 插件编写
- 四、Linux--管道
- Oracle12c(PDB中) ORA-01017: invalid username/password; logon denied
- Oracle,day2,基础
- SVN 被锁定解决办法!!!
- 实现在eclipse中编译ns-3的详细步骤
- 开发自定义View
- Unreal Engine 4 C++ UMG自定义控件