c++基础
1.从键盘读入变量的值
2.如何保留小数
3.拆位运算
4.分值判断
5.循序排列
6.while和for循环
7.循环嵌套
8.穷举
9.数组
10.sqrt函数
11.自定义函数
12.递归求解
13.字符串
14.二位数组
1.从键盘上读入变量的值
记忆方法:
1. in c语言的in是cin ,箭头向右
例:cin>>a;
2. out c语言的out是cout,箭头向左
例:cout<<a;
1.1 求长方形的周长和面积
输入两个数 x x x 和 y y y ,计算他的周长和面积
样例输入:
10 20
样例输出:
60
200
#include <iostream>
using namespace std;
int main()
{
int x,y;
cin>>x>>y;
//周长=(长+宽)*2
cout<<(x+y)*2<<endl;
//面积=长*宽
cout<<x*y;
return 0;
}
1.2 分零食
二年级二班出去野餐了,老师给大家拿了 m m m 个零食,这时班里加上老师一共有 n n n 人,每个人能分到多少,还剩下多少?
样例输出:
100
样例输出:
3 10
#include <iostream>
using namespace std;
int main()
{
int m,n;
cin>>m>>n;
//计算每人有多少个零食
cout<<m/n<<endl;
//计算剩下多少个零食
cout<<m%n;
return 0;
}
2.如何保留小数
浮点型:float(单精度),double(双精度)
整数类型不会保留小数!!!
乘除的时候要吧变量变成小数
例:
double a,b;
cin>>a>>b;
int p=a*1.0/b;
保留小数方法
//要加头文件
#include <iomanip>
//下面的代码才是保留小数的方法
cout<<fixed<<setprecision()<< ;
//在括号里填上你想保留小数点多少位
2.1温度转换
输入一个 c c c 表示摄氏度,请你吧摄氏度转换成华氏度并保留两位小数
公式:华氏度=9 / 5 * 摄氏度 +32
样例输入:
15
样例输出:
59.00
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
//定义摄氏度c和华氏度f
double c,f;
//输入摄氏度的值
cin>>c;
//转换为华氏度的值
f=9.0/5*c+32;
cout<<fixed<<setprecision(2)<<f;
return 0;
}
3.拆位运算
a%10可以把最后一位
3.1后两位数之和
样例输入:
12
样例输出:
3
#include <iostream>
using namespace std;
int main()
{
//定义n,个位和十位
int n,g,s;
cin>>n;
g=n%10;
//把n的个位剪掉
n=n/10;
s=n%10;
cout<<g+s;
return 0;
}
3.2后三位数的和
样例输入:
123
样例输出:
6
#include <iostream>
using namespace std;
int main()
{
//定义n,个位和十位
int n,g,s,b;
cin>>n;
g=n%10;
//把n的个位剪掉
n=n/10;
s=n%10;
//把n的十位剪掉
n/=10; //n/=10 和 n=n/10; 一样
b=n%10;
cout<<g+s+b;
return 0;
}
4.分值判断
分值结构:
//双分支
if(条件表达式)
//if里填条件表达式
//例:if(a>b)
{
}
else
{
}
//多分支
if(条件表达式)
{
}
else if(条件表达式)
{
}
......
条件表达式:
| 关系判断 | 举例 | 含义 |
|---|---|---|
| > | n>10 | 是否大于 |
| >= | n>=10 | 是否大于或等于 |
| == | n==10 | 是否相等(不是赋值) |
| < | n<10 | 是否小于 |
| <= | n<=10 | 是否小于或等于 |
| != | n!=10 | 是否不等于 |
4.1 买冷饮
小明小卖铺去买饮料,老板说:“买10个以上(包括10个)2元/瓶,买10个以下2.2元/瓶”,输入一个n表示小明购买饮料的数量,帮小明算一下小明要花多少钱
样例输入:
10
样例输出:
20
#include <iostream>
using namespace std;
int main()
{
int n;
double ans;
cin>>n;
if(n>=10)
{
//如果个数大于等于10,每瓶2元
ans=n*2;
cout<<ans;
}
else
{
//如果个数小于10,每瓶2.2元
ans=n*2.2;
cout<<ans;
}
return 0;
}
5.顺序排列
顺序排序把顺序不一定数变成从最小 ( m i n ) (min) (min) 的数到最大 ( m a x ) (max) (max) 的数
例:
样例输入:
2 5 4 3 1
样例输出:
1 2 3 4 5
每次和上一次最大的作比较,这种方法叫“打擂台”
//哈哈新的头文件来了
#include <cmath>
//math是数学的英文 c语言的数学库是cmath
| cmath头文件 | 应用 |
|---|---|
| abs() | 绝对值 -555 —555 a=abs(a) |
| swap() | 交换值 a=2 b=3 swap(a,b) a=3 b=2 |
| max() | 最大值 max(a,b) |
| min() | 最小值 min(a,b) |
5.1 3个数从小到大排序
方法一:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
if(a>b)
{
swap(a,b);
}
if(b>c)
{
swap(b,c);
}
if(a>b)
{
swap(a,b);
}
cout<<a<<" "<<b<<" "<<c;
return 0;
}
方法二:
#include <iostream>
using namespace std;
int main()
{
int a,b,c,x;
cin>>a>>b>>c;
if(a>b)
{
x=a;
a=b;
b=x;
}
if(b>c)
{
x=b;
b=c;
c=x;
}
if(a>b)
{
x=a;
a=b;
b=x;
}
cout<<a<<" "<<b<<" "<<c;
return 0;
}
6.while和for循环
假如要输出1~1000的每个数!
//我们总不能这样吧!
cout<<1<<endl;
cout<<2<<endl;
cout<<3<<endl;
cout<<4<<endl;
......
输出1000次
我们要明智
方法一(while循环):
int i=1;
while(i<=1000)
{
cout<<i<<endl;
i++; //i=i+1; , i++; 和 i+=1; 一样
}
方法二(for循环):
for(int i=1;i<=1000;i++)
{
cout<<i<<endl;
}
我们运用break可以跳出循环
for(int i=1;i<=1000;i++)
{
//在i=10的时候就跳出来循环,所以i只能循环10次
if(i==10)
{
break;
}
}
6.1 输出1~100的所有数
样例输入:
无
样例输出:
1
2
3
4
……
#include <iostream>
using namespace std;
int main()
{
for(int i=1;i<=100;i++)
{
cout<<i<<endl;
}
return 0;
}
6.2 输出1~100的所有奇数
样例输入:
无
样例输出:
1
3
5
……
#include <iostream>
using namespace std;
int main()
{
for(int i=1;i<=100;i+=2) //每次加二,全都为奇数
{
cout<<i<<endl;
}
return 0;
}
6.3 输出1~100的和
样例输入:
无
样例输出:
5050
#include <iostream>
using namespace std;
int mian()
{
long long cnt=0; //long long 类型无字符21位有字符20位
for(int i=1;i<=100;i++)
{
cnt+=i;
}
cout<<cnt;
return 0;
}
6.4 韩信点兵
韩信有一对士兵,他让士兵报数,如果按照 1 1 1 到 5 5 5 报数,最后的士兵报 1 1 1 ,按 1 1 1 到 6 6 6 报数,最后的士兵报 5 5 5 ,按 1 1 1 到 7 7 7 报数,最后的士兵报 4 4 4,按 1 1 1 到 11 11 11 报数,最后一个士兵报 10 10 10 ,请问韩信有多少名士兵
样例输入:
无
样例输出:
2111
#include <iostream>
using namespace std;
int main()
{
int i=1;
//死循环,满足条件我们就用break跳出
for(i=1;;i++)
{
if(i % 5 == 1 && i % 6 == 5 && i % 7 == 4 && i % 11 == 10)
{
//满足条件 跳出循环
break;
}
}
cout<<i;
return 0;
}
7.循环嵌套
循环嵌套是多个循环嵌套在一个循环里
例:
for(int i=1;i<=10;i++)
{
for(int j=1;j<=10;j++)
{
for(int k=1;k<=10;k++)
{
......
}
}
}
7.1 星号正方形
输入一个 n n n ,输出 n n n * n n n 的 $ * $ 矩阵
样例输入:
3
样例输出:
***
***
***
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cout<<"*";
}
//输出换行
cout<<endl;
}
return 0;
}
7.2 星号直角三角形
输入一个 n n n ,输出 n n n ∗ * ∗ n n n 的 直角三角形
样例输入:
3
样例输出:
*
**
***
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
cout<<"*";
}
cout<<endl;
}
return 0;
}
7.3 星号锐角三角形
输入一个 n n n ,输出 n n n ∗ * ∗ n n n 的 锐角三角形
样例输入:
3
样例输出:
*
**
***
#include <iostream>
using namespace std;
int main()
{
int n,k,s=1;
cin>>n;
//计算刚开始的空格数量
k=n-1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=k;j++)
{
cout<<" ";
}
for(int j=1;j<=s;j++)
{
cout<<"*";
}
cout<<endl;
s+=2;
k--;
}
return 0;
}
8.穷举
8.1 鸡兔同笼 p l u s plus plus
输入 x x x 个头和 y y y 只腿,输出 c n t cnt cnt 和 a n s ans ans 表示鸡有多少只,兔有多少只?
数据范围:0< x x x <=500 0< y y y <=1000
#include <iostream>
using namespace std;
int main()
{
int x,y,cnt,ans;
cin>>x>>y;
for(int i=1;i<=x;i++)
{
for(int j=1;j<=x;j++)
{
if(i*2+j*4==y && i+j==x)
{
cout<<i<<" "<<j;
return 0;
}
}
}
return 0;
}
8.2 百钱百鸡(简单版)
用一百元买一百只鸡,公鸡,母鸡,小鸡都要有,公鸡 5 5 5 元 1 1 1 只,母鸡 3 3 3 元 1 1 1 只,小鸡 1 1 1 元 3 3 3 只 (只输出一个结果)
样例输入:
无
样例输出:
8 12 80
#include <iostream>
using namespace std;
int main()
{
int ans1,ans2,ans3;
for(int i=1;i<=98;i++)
{
for(int j=1;j<=98;j++)
{
for(int k=1;k<=98;k++)
{
if(i+j+k==100 && i*5+j*3+k*0.3==100)
{
ans1=i;
ans2=j;
ans3=k;
break;
}
}
}
}
cout<<ans1<<" "<<ans2<<" "<<ans3;
return 0;
}
9.数组
一个有很多盒子的空间叫数组
定义方法:
//这是a数组里有10000盒子
int a[10000]
| 1 | 2 | 3 | 4 | 5 | 6 |
运用:
for(int i=1;i<=100;i++)
{
//a[i i是a[]的下标]
cin>>a[i];
}
9.1 成绩统计I
输入一个 n n n 表示班级里的人数,输入 n n n 个数表示每个学生的成绩,如果不及格那就输出那个人的编号和成绩
样例输入:
3
79 80 59
样例输出:
3 59
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[100000];
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
if(a[i]<60)
{
cout<<i<<" "<<a[i]<<endl;
}
}
return 0;
}
9.2 成绩统计II
输入一个 n n n 表示班级里的人数,输入 n n n 个数表示每个学生的成绩,输出班级里同学的总分和平均分
样例输入:
4
89 91 89 91
样例输出:
90
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[100000];
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
int cnt=0,ans=0;
for(int i=1;i<=n;i++)
{
cnt+=a[i];
}
ans=cnt/n;
cout<<cnt<<endl;
cout<<ans<<endl;
return 0;
}
10.sqrt函数
什么是开根号???
开根号长这样
2
\sqrt{2}
2
//哈哈,还是cmath的头文件
#include <cmath>
//用这个也可以
#include <math.h>
//下面就是sqrt函数了
sqrt();
10.1 正方形的边长
输入一个 r r r 表示正方形的面积 ,用sqrt函数求出正方形的边长
样例输入:
16
样例输出:
4
r
\sqrt{r}
r
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
//sqrt容易分出小数,要用double
double r;
cin>>r;
r=sqrt(r);
cout<<r;
return 0;
}
11.自定义函数
系统函数
系统函数是为了实现某个任务而打包在一起的一组语句
例:
水+米+电饭锅=米饭
大豆+水+破壁机=豆浆
脏衣服+水+洗衣液+洗衣机=干净的衣服
例:
//开根号函数
sqrt();
//交换函数
swap();
//最大数函数
max();
//最小数函数
min();
函数长什么样
//数据类型 名字(输入值)
//{
// return ; 返回值
//}
11.1 纯粹素数
输入一个 n n n ,如果 n n n 是素数,去掉最高位,剩下的仍为素数,一直到最后一位
如果是输出 是纯粹素数,否则输出不是纯粹素数
#include <iostream>
using namespace std;
//自定义函数要有,数据类型,名字,输入值(可有可无)
int zhishu(int n)
{
//retur是返回值
if(n<2)
{
return 0;
}
for(int i=2;i*i<=n;i++)
{
if(n%i==0)
{
return 0;
}
}
return 1;
}
int main()
{
int ans=0,n;
cin>>n;
while(n!=0)
{
if(zhishu(n)==1)
{
ans++;
}
n/=10;
}
if(ans==4)
{
cout<<"是纯粹素数";
}
else
{
cout<<"不是纯粹素数";
}
return 0;
}
11.2 统计约数
输入一个 n n n ,统计 n n n 里有多少约数
#include <iostream>
using namespace std;
int yueshu(int n)
{
int ans=0;
for(int i=1;i*i<=n;i++)
{
if(n%i==0)
{
ans++;
int b=n/i;
if(b!=i)
{
ans++;
}
}
}
return ans;
}
int main()
{
int n;
cin>>n;
cout<<yueshu(n);
return 0;
}
12.递归求解
递归是用上一项的值完成这一项的值
12.1 等差数列
输入一个 n n n , 1 , 5 , 9 , 13 1,5,9,13 1,5,9,13 ,输出第 n n n 项的值
#include <iostream>
using namespace std;
int main()
{
int a[10000];
//首项为一
a[1]=1;
int n;
cin>>n;
for(int i=2;i<=n;i++)
{
a[i]=a[i-1]+4;
}
cout<<a[n];
return 0;
}
#include <iostream>
using namespace std;
int dg(int i)
{
int r;
if(i==1)
{
r=1;
}
else
{
r=dg(i-1)+4;
}
return r;
}
int main()
{
int n;
cin>>n;
int ans;
for(int i=1;i<=n;i++)
{
ans=dg(i);
}
cout<<ans;
return 0;
}
我们经常输出字符
cout<<"abc";
但是有没有字符串类型的数据类型
有
c h a r char char 和 s t r i n g string string
char a='a';
string b="abcde";
A S C I I ASCII ASCII表
13.1 输出 A S C I I ASCII ASCII 码
输入一个字符,输出对应的 A S C I I ASCII ASCII 码
#include <iostream>
using namespace std;
int main()
{
char a;
cin>>a;
//转换类型
cout<<int(a);
return 0;
}
13.2 输出 A S C I I ASCII ASCII 码 p l u s plus plus
输入一个字符,输出对应的 A S C I I ASCII ASCII 码和大写字母
#include <iostream>
using namespace std;
int main()
{
char a;
cin>>a;
//转换类型
cout<<int(a)<<endl;
a=a-32;
cout<<a;
return 0;
}
14.二位数组
怎样定义二位数组
//数据类型 名字[数字][数字];
//例:
int a[100][100];
一位数组是一条线,二位数组是一个矩阵
14.1 数据统计
输入一个 n n n,输入 n n n个人的语数英的期末成绩
输出前三名的总成绩
#include <iostream>
#include <algorithm>
using namespace std;
int ans[10000];
int main()
{
int a[10000][3];
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=3;j++)
{
cin>>a[i][j];
ans[i]+=a[i][j];
}
}
sort(ans+1,ans+n+1,greater<int>());
cout<<ans[1]<<" "<<ans[2]<<" "<<ans[3];
return 0;
}
完结撒花
更多推荐



所有评论(0)