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]
123456

运用:

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;
}
# 13.字符串

我们经常输出字符

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表

ascll码表

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;
}

完结撒花

更多推荐