7.8---函数入口、求pi、裴波那契、素数、密码、水仙花
来源:互联网 发布:nc数据库 编辑:程序博客网 时间:2024/05/01 12:30
c语言函数四大体:返回值类型,函数名,参数列表,函数体。缺一不可。
main函数没特权,都是有规律的。不一定非得是程序入口。
1. 任何函数都可以作为程序入口
/*11在已给出的程序中允许添加代码的地方添加任意代码,完成向屏幕输出打印“Hello World!”的功能,未允许添加代码的地方(如main函数内部)不允许修改*/#include <stdio.h>#include <stdlib.h>int hello ( void ) //自定义函数{ //此处可以添加代码#pragma comment ( linker ,"/ENTRY:hello" ) //加了%,是一个预处理命令,在代码进行编译之前已经执行过了,所以写在程序任何地方都是一样的 //功能:把指示传给链接器,入口是hello函数。 //对于一个程序而言,先要对每一个部分进行编译,然后链接。 puts ( "Hello World!" );//这个函数输出可以自动换行; system ("pause");//暂停 return 0;}int main ( void )//习惯作为程序入口的main函数 { //常规的 输出写在这里,但是不允许 puts ( "in main now!" );//不显示 说明这个函数没有实现 system ("pause");//暂停 return 0;//退出 //这样写是有原因的额。规范化程序。表明函数的一般性。主函数规范:返回0告诉操作系统,正常退出。 //c是规律的公式,利用规律解题。求知和质疑。}
//2. 用公式求近似pi的值:π/4 = 1-1/3+1/5-1/7…,直到最后一项绝对值小于exp(-7)
#include <iostream>#include <iomanip>#include <cmath>#include <stdlib.h>//using namespace std;int main (){ int s=1; double n=1,t=1,pi=0; while (fabs(t)>1e-7) { pi=pi+t; n=n+2; s=-s;//采用-1方法进行符号转换 t=s/n; } pi=pi*4; cout<<"pi=" <<setiosflags(ios::fixed)<<setprecision(6)<<pi<<endl; system ("pause");// return 0;}
include [ iomanip ]
#include <iomanip> // io 流控制头文件, 主要是一些操纵用法如setw(int n),setprecision(int n) ,setbase(int n),setfill(char c)的.
▲setw(n)用法: 通俗地讲就是预设宽度
cout<<setw(5)<<255<<endl; //结果是: (空格)(空格)255 //如果你要输出的字符宽度超出了setw(n)的n值,就按输出字符的宽度输出。 cout<<setw(4)<<12.3456<<endl; //输出12.3456
▲setfill(char c) 用法 : 就是在预设宽度中如果已存在没用完的宽度大小,则用设置的字符c填充
cout<<setfill('@')<<setw(5)<<255<<endl;//结果是:@@255
▲setbase(int n) : 将数字转换为 n 进制.
cout<<setbase(8)<<setw(5)<<255<<endl; cout<<setbase(10)<<setw(5)<<255<<endl; cout<<setbase(16)<<255<<endl; // 结果是: //(空格)(空格)377 //(空格)(空格) 255 //(空格)(空格) ff
▲setprecision用法
使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。
如果setprecision(n)与setiosflags(iOS::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。
如果与setiosnags(ios::scientific)合用, 可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。
cout<<"pi=" <<setiosflags(ios::fixed)<<setprecision(6)<<pi<<endl;//输出3.141592
3. 裴波那契数列前四十个数字
//求裴波那契数列前四十个数#include <iostream>#include <iomanip>#include <stdlib.h>//using namespace std;int main (){ long f1,f2; int i ; f1 = f2 = 1; for (i=1 ;i<= 20;i++) { cout << setw(12)<<f1<<setw(12)<<f2;//设备输出字段控制为12,每次输出两个数 if (i%2==0) cout<<endl;?//每输出完****四个数*****时换行,使得每行输出四个数。 f1=f1+f2; f2=f2+f1; } system ("pause");// return 0;}
错误1:有多个重载函数 “sqrt” 实例与参数列表匹配 。
定义的m是Int型,而sqrt()中m应为double或浮点型,所以改为sqrt(m*1.0)即可。
错误2:{}不对应。
4. 找出100-200之间的全部素数m
算法:m不能被2-sqrt(m)之间所有数整除,则为素数。
//找出100-200之间的全部素数#include <iostream>#include <cmath>//函数运算#include <iomanip>//io数据流的一些基本操作#include <stdlib.h>//暂停using namespace std;int main (){ int m,k,i,n=0; bool prime ;//定义布尔型变量 for (m=101;m<= 200;m=m+2)//判断m是否为素数,增量为2 { prime =true;//bool的取值为true或false k=int (sqrt(m*1.0)) ;//用k代表sqrt(m)的整数部分 定义的m是Int型,而sqrt()中m应为double或浮点型,所以改为sqrt(m*1.0)即可。 //检查m是否能被2-sqrt(m)的数整除 for (i=2;i<=k;i++) if (m%i==0) { prime=false; break;//能被2 整除的话,跳出循环,进行下一个。 //break好处:发现不是素数后立马跳出,提前结束循环 } if (prime)//是素数 { cout<<setw(5)<<m; n=n+1;//n累计素数的个数 } if(n%10==0) cout<<endl;//输出10个后换行 } cout<<endl; system ("pause");// return 0;}
5.翻译密码
问题:只转换大小写的字母(相应的ascii码加4),不转换非字母。
思路:原来字符为c,转换可用c=c+4实现。
while ((c=getchar())!=’\n’)//
功能:判断字符串中是否有回车符,括号输入错误,运算级别问题颠倒导致程序运行不对。
c=getchar()!=’\n’
((c=getchar()!=’\n’))
while ((c=getchar()!=’\n’))
逻辑判断!=优先级高于赋值语句,所以先进行逻辑判断得到bool型的0或1,赋值给char型的c,然后进行判断是0不执行了,是1直接输出对应的ascii码——笑脸。
思考:不同类型间字符或者数可以进行相互转化,赋值或者强制转换。如:sqrt(int a*1.0);double a=b;int a=b;char a=bool b
//译密码#include <iostream>#include <stdlib.h>using namespace std;int main (){char c;//while ((c=getchar()!='\n'))//严重输入有问题while ((c=getchar())!='\n')//{ if ((c>='a'&&c<='z')||(c>='A'&&c<='Z'))//判断是否为英文字符 { //进行加密操作 c=c+4; if (c>'Z'&&c<='Z'+4||c>'z') //判断是否加密操作后超出范围,必须有c<='Z'+4,因为大写字母对应的ascii码都小于小写字母,否则会误操作。 c=c-26; } cout << c;}cout<<endl;system ("pause");return 0;}
6.水花数的输出
各位数字立方之和等于其本身
关键在于各位数字的获取
//输出所有的水仙花数#include <iostream> #include<stdlib.h>using namespace std; int main () {int i,j,k,n; cout<<"narcissus numbers are:"<<endl; for (n=100;n<1000;n++) {i=n/100; j=n/10-i*10; k=n%10; //关键就在于各位数字的获取 if (n == i*i*i + j*j*j + k*k*k) cout<<n<<" "; } cout<<endl; system ("pause"); return 0; }
- 7.8---函数入口、求pi、裴波那契、素数、密码、水仙花
- python 斐波那契数列,查找素数,水仙花数字
- 使用函数求PI
- 求100以内的素数 水仙花数
- 调用函数求水仙花数
- 线性筛法求素数+欧拉函数+矩阵快速幂+快速求第n个斐波那契数
- 一个求最大公约数的函数、一个求Fibonacci(斐波那契)数列函数
- 用函数求素数
- UVA10236 斐波那契素数
- zoj3707 斐波那契素数
- 写一个函数求PI的值
- 求PI
- 求PI
- 求素数(函数自定义)
- 实现一个函数求第n个斐波那契数。
- 斐波那契数列,e常数,pi/4学习笔记
- 数学问题(1):杨辉三角、水仙花数、打印斐波那契数列
- javaScript实现回文数、水仙花数判断和输出斐波那契数列
- 安卓activity生命周期
- django中使用日志
- Android学习笔记(二)——两个ListView联动
- Python包安装:PYHDF安装
- mysql存储引擎
- 7.8---函数入口、求pi、裴波那契、素数、密码、水仙花
- Python:你需要知道的七七八八(基础篇)
- 实验楼 Linux 学习笔记
- centos 7下面装samba
- Linux 常用命令
- Java基础之重写(覆写)与重载区别
- Codeforces Round #394 (Div. 2) C. Dasha and Password —— 枚举
- centos7 firewall 防火墙 命令
- Android-自定义UI-设置画布的大小