第二章 基本编程语句
不完全整理,只用于作者自己的查漏补缺!
2.1 说明语句 Declarative Statements
1、变量:C++内部数据类型定义而产生
对象:先由程序员定义类,然后再据此创建(定义)实体而产生的
本质没有差别,都是占据空间的数据描述体。
2、说明语句分为定义语句和声明语句。
定义不但声明了名称,还给名称分配了存储空间,使之成为一个能存放数据的实体。
大多数情况下,代表数据的名称使用定义语句,只有在复杂的程序结构中为了说明一个名称可以在各处共享,而又要避免多处定义所造成的空间冲突,才使用声明。
2.1.2 函数声明和定义 Function Declaration & Definition
#include<iostream>
using namespace std;
//----------------------
void sphere();
//----------------------
int main(){
sphere();
}//----------------------
void sphere(){
double radius;
cout<<"please input radius: ";
cin>>radius;
if(radius<0) return;
cout<<"the result is"<<radius*radius*3.14*4<<"n";
}
函数使用前要先声明。
2.2 条件语句 Conditional Statements
1、条件不能写成0<x<50,而要写成0<x&&x<50
2、switch括号中的表达式只能是整形、字符型或枚举型
switch (ch){
case'-': b=-b;
case'+': a=a+b; break;
case'1':
case'2':
case'3':a=1; break;
default: a=0;
}
3、
for(int i=1;i=1;++i){ cout<<char('A'+i-1); } //或者 for (char ch='A';ch<'A'+n;++ch){ cout<<ch; }
2.5.2 流状态Stream States
与<<连用的设置方式,要包含头文件iomanip
setw(int)
setfill(char)
setprecision(int)
//输出M的倒三角
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
for(int n=1;n<=10;++n)
cout<<setfill(' ')<<setw(n)<<" "<<setfill('M')<<setw(21-2*n)<<"M"<<endl;
}
//==============
//或者用string类型定义重复n次字符的字串
for (int n=1;n<=10;++n)
cout<<string(n,' ')+string(21-2*n,'M')+"n";
2.5.3 文件流 File Streams
//复制文件
//============
#include<fstream>
using namespace std;
int main(){
ifstream in("a.in");
ofstream out("a.out");
for(string str;getline(in,str); )
out<<str<<endl;
}
使用筛法判断素数
2.7 再做循环设计
//级数逼近 Progressing Approximation
//======================
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main(){
double sum=0,item=1;
for(int i=1;abs(item)>1e-6;++n){
item*=(-1.0)*(2*n-3)/(2*n-1);
sum+=item;
}
cout<<"Pi = "<<setiosflags(ios::fixed)<<setprecision(6)<<sum*4<<endl;
}
2.9 练习
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main(){
int param=0;
cin>>param;
double sum=1+param,item=param;
for (int n=2;abs(item)>1e-8;n++){
item *= (-1.0) * param /n;
sum+=item;
}
cout<<setiosflags(ios::fixed)<<setprecision(8)<<sum<<endl;
}
#include <iostream>
using namespace std;
int main(){
int param; int sum=0,item=1;
for (int i=1;i<=12;i++){
item*=i;
sum+=item;
}
cout<<sum;
}
3、编程求所有“水仙花数(narcissus number)”。所谓“水仙花数”是指一个三位数,其各个数字立方和等于该数本身。例如,153是水仙花数,因为153=1^3+5^3+3^3。
#include <iostream>
#include<cmath>
using namespace std;
int main(){
int num,sum;
for(int i=1;i<=9;i++){
for (int j=0;j<=9;j++){
for(int k=0;k<=9;k++){
num=i*100+j*10+k;
sum=pow(i,3)+pow(j,3)+pow(k,3);
if(num==sum){
cout<<sum<<endl;
}
}
}
}
}
4、编程求1000之内的所有“完数”。所谓“完数”是指一个数恰好等于它的包括1在内的所有不同因子之和。例如,6是完数,因为6=1+2+3。
#include <iostream>
#include<cmath>
using namespace std;
int main(){
cout<<1<<endl;
int sum;
for(int num=4;num<1000;num++){
sum=1;
if(float(int(sqrt(num)))==sqrt(num)){
sum+=int(sqrt(num));
}
for (int i=2;i<sqrt(num);i++){
if(num%i==0){
sum+=i;
sum+=(num/i);
}
}
if(sum==num){
cout<<num<<endl;
}
}
}
#include <iostream>
#include<cmath>
using namespace std;
int main(){
int num,flag;
for(int i=1;i<=9;i++){
for(int j=0;j<=9;j++){
flag=1;
num=i*100+j*10+i;
for(int k=2;k<=int(sqrt(num));k++){
if(num%k==0){
flag=0;
}
}
if(flag) cout<<num<<endl;
}
}
}
#include <iostream>
#include<cmath>
using namespace std;
int main(){
int peaches=1;
for (int i=0;i<9;i++){
peaches+=1;
peaches*=2;
}
cout<<peaches;
}
#include <iostream>
using namespace std;
int main(){
int num_star=0;
int num_space=0;
for (int i=1;i<=19;i++){
if(i*2-1>19){
num_star=(19-i)*2+1;
num_space=i-9;
}else{
num_star=i*2-1;
num_space=11-i;
}
for (int j=0;j<num_space;j++){
cout<<" ";
}
for (int j=0;j<num_star;j++){
cout<<"%";
}
for (int j=0;j<num_space;j++){
cout<<" ";
}
cout<<"n";
}
}
#include <iostream>
#include<iomanip>
using namespace std;
int main(){
for(int i=1;i<=10;i++){
cout<<setfill(' ')<<setw(11-i)<<" "
<<setfill('#')<<setw(i)<<"#"<<setfill(' ')<<setw(4)<<" "
<<setfill('$')<<setw(i)<<"$"<<endl;
}
}
原文链接: https://www.cnblogs.com/Amanda-zxy/p/15783372.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/184773
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!