c/c++循环语句总结

c/c++循环语句

循环语句可以重复执行大量相同语句,真正发挥了计算机计算的优势,在学习的过程中,循环编程给了我极大的快感和成就感。
基本的知识点:
一、三种循环语句
1、for循环:基本格式:for(初始化;条件;调整)
当循环条件满足时,执行相同的语句,然后进行调整(比如i++,i–)。
2、while循环:基本格式:while(条件){ 循环体 },先判断条件,若满足条件,执行循环体,若不满足条件,跳出循环。
3、 do-while循环:基本格式:do{ 循环体 }while(条件),先执行循环,再判断条件,条件满足,继续执行循环体,条件不满足,跳出循环。
二、循环嵌套
这三种循环语句可以互相嵌套,嵌套的目的是在不同的维度上展开代码。以for嵌套为例,for{for{ 循环体1 }循环体2(可无) }的意义是先把循环体1执行完再执行循环体2。千万切记,循环中的语句是一条一条执行的,嵌套是从里到外执行的,先把最里面的循环执行完,再执行外循环。
三、循环辅助语句
break:跳出离它最近的循环。
continue:忽略下面的语句,回到循环开始。
四、关于循环的一些细节
1、在循环里面定义的变量,不可以拿到循环外使用,因为只是局部变量。比如for(int i;;),这里的i不能拿出此循环使用。
2、变量i定义在循环语句中,因此i在循环体内不可见。
3、暴力解法容易超时。
五、open judge循环题目分析
1、孙老师讲授的《计算概论》这门课期中考试刚刚结束,他想知道考试中取得的最高分数。因为人数比较多,他觉得这件事情交给计算机来做比较方便。你能帮孙老师解决这个问题吗?

输入:
输入两行,第一行为整数n(1 <= n < 100),表示参加这次考试的人数.第二行是这n个学生的成绩,相邻两个数之间用单个空格隔开。所有成绩均为0到100之间的整数。
输出:
输出一个整数,即最高的成绩。
样例输入

5
85 78 90 99 60

样例输出

99

我的代码

#include<iostream>
using namespace std;
int main()
{
	int n,t,max=0,i;
	cin>>n;
	for(i=0;i<n;i++)
	{cin>>t;
		if(t>max)
		max=t;
		}
		cout<<max;
		return 0;
}

2、描述
根据参数,画出矩形。

输入:
输入一行,包括四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行不多于10行,宽不少于5列不多于10列);第三个参数是一个字符,表示用来画图的矩形符号;第四个参数为1或0,0代表空心,1代表实心。
输出:
输出画出的图形。
样例输入

7 7 @ 0

样例输出

@@@@@@@
@     @
@     @
@     @
@     @
@     @
@@@@@@@

我的代码

#include <iostream>
using namespace std;
int main()
{
    int h,d,x,i,j;
    char a;
    while(scanf("%d %d %c %d",&h,&d,&a,&x)!=EOF)//EOF的值为-1,这个式子的意义是,执行程序,直到输入的值为-1时结束循环。
    {
        if(x==1)
        {
            for(i=1;i<=h;i++)
            {
                for(j=1;j<=d;j++){
                printf("%c",a);
                }
                    printf("\n");
            }
        }
        if(x==0){
            for(i=1;i<=h;i++){
                if(i==1||i==h){
                    for(j=1;j<=d;j++){
                       cout<<a;
                    }
                    cout<<endl;
                }
               else{
                    for(j=1;j<=d;j++){
                    if(j==1||j==d){
                        cout<<a;
                    }
                    else{
                       cout<<" ";
                    }
                }
                   cout<<endl;
                }
            }
        }
    }
}

3、描述
输出7和7的倍数,还有包含7的数字。例如(17,27,37…70,71,72,73…)

输入
一个整数N。(N不大于30000)
输出
从小到大排列的不大于N的与7有关的数字,每行一个。
样例输入

20

样例输出

扫描二维码关注公众号,回复: 4613557 查看本文章
7
14
17

我的代码

#include<iostream>
using namespace std;
int main()
{
    int a;
    cin>>a;
    for(int b=1;b<=a;b++){
        if(b%7==0)
            cout<<b<<endl;
        else for(int c=b;c>=7;c/=10)
        {
            if(c%10==7)
            {
                cout<<b<<endl;
                break;
            }
        }
    }
}

4、描述
给出一些整数对,它们表示一些平面上的坐标点,给定一个点,求所有那些点到该点最短距离的点。结构为:第一个整数对为所给定的点,后面的整数对为所有其他的点。

输入
第一个整数对为所给定的点,后面的整数对为所有其他的点。
输出
到第一个点最短距离的点
样例输入

9 2
1 0
1 1
0 0
1 2
2 1

样例输入

2 1

我的代码


#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
int main ()
{
    int a,b,c,d,f=999999999,g,h;
	float e;
    scanf("%d%d",&a,&b);
    while(cin>>c>>d)
    {
        e=sqrt((a-c)*(a-c)+(b-d)*(b-d));
        if(f>e)
		{
        f=e;
		g=c;
		h=d;
		}
    }
	cout<<g<<" "<<h;
}





5、
描述
一个不多于5位的正整数a,要求:1.求出它是几位数;2.分别打出每一位数字;3.按逆序打出各位数字,例如原数为321,应输出123。

输入
一行,不多于5位的正整数
输出
三行
第一行,一个整数,表示整数a的位数
第二行,正序输出整数a的每一位,每位间一个空格
第三行,逆序输出整数a,如果a是321,则输出123,如果a是100,则输出1
样例输入

123

样例输出


    3
    1 2 3
    321

我的代码

#include<iostream>
#include<cmath>
using namespace std;
int main()
{int a,b=0,c,d,q,v,s=0;
	cin>>a;
	c=a;
	d=a;
	while(a!=0)
	{a/=10;
	++b;}
	cout<<b<<endl;
	for(int i=1;i<=b;i++)
	{q=pow(10,b-i);
	v=c/q;
	c=c-v*q;
	cout<<v<<" ";}
	cout<<endl;
	do{s=s*10+d%10;
		d/=10;}
		while(d!=0);
		{cout<<s;}

	return 0;

	}

猜你喜欢

转载自blog.csdn.net/weixin_43238423/article/details/84898802
今日推荐