c语言程序设计~循环语句

循环结构程序设计主要知识点。

①.while语句的格式和功能如下:

格式:while(表达式)循环体

功能:当表达式的值为真时,重复执行其后循环体。

说明:循环体是循环语句的内嵌语句,可以是空或复合语句(下同)。

②.do-while语句的格式和功能如下:

格式:do 循环体while(表达式)

功能:重复执行循环体,直到表达式的值为假。

说明:do-while循环至少执行一次循环体。

③.for语句的格式和功能如下:

格式:for(表达式1; 表达式2; 表达式3) 循环体

功能:

(1)计算表达式1;

(2)当表达式2的值为真时,重复执行循环体和计算表达式3。

说明:表达式1、表达式2、表达式3均可缺省,但保留分号。

④continue语句的格式和功能如下:

格式:continue;

功能:跳过循环体中其后程序段(结束本次循环)。

说明:continue语句只能用于循环

continue和break的区别

 

continue 语句和 break 语句的区别是,continue 语句只结束本次循环,而不是终止整个循环。break 语句则是结束整个循环过程,不再判断执行循环的条件是否成立。而且,continue 只能在循环语句中使用,即只能在 for、while 和 do…while 中使用,除此之外 continue 不能在任何语句中使用。

 

所以,再次强调:continue 不能在 switch 中使用,除非 switch 在循环体中。此时 continue 表示的也是结束循环体的本次循环,跟 switch 也没有关系。

WA的次数比较多的题。

**♡输入两个正整数 m 和 k,其中1 < m < 100000,1 < k < 5 ,判断 m 能否被19整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO。 

 

例如,输入: 

43833 3 

满足条件,输出YES。

 

如果输入:

39331 3 

尽管有3个3,但不能被19整除,也不满足条件,应输出NO。

 

输入

m 和 k 的值,中间用单个空格间隔。

输出

满足条件时输出 YES,不满足时输出 NO。

①#include<iostream>

#include<cstdio>

using namespace std;

int main()

{

    int m,k,n,s;

    cin>>m>>k;

    e=m;

    while (m!=0)

    {

       n=m%10;

       m/=10;

       if(n==3)

       s++;

    }

 

    if(s==k&&e%19==0)

    cout<<"YES";

    else

    cout<<"NO";

 

第一次写竟然忘记了定义e!!!

 

}

②#include<iostream>

#include<cstdio>

using namespace std;

int main()

{

    int m,k,n,s=0,e;

    cin>>m>>k;

    e=m;

    while (e>0)

    { if(e%10==3)

       s++;

       e/=10;

    }

    if(s==k&&e%19==0)

    cout<<"YES";

    else

    cout<<"NO";

这次虽然定义了e,但是好像忽略了一个重大问题,在循环后这里e已经变成了0,所以不管怎么除都是0,无法判断正确结果。

 

 

}

③#include<iostream>

#include<cstdio>

using namespace std;

int main()

{

    int m,k,n,s=0,e;

    cin>>m>>k;

    e=m;

    while (e>0)

    { if(e%10==3)

       s++;

       e/=10;

    }

    if(s==k&&m%19==0)

    cout<<"YES";

    else

    cout<<"NO";

这个是修改了几遍之后的程序。条件可以为e%10=3,这样又可以少写一些步鄹。

n=m/10;if(n==3);s++

 

}

**♡这是画矩阵的问题,此类问题有很多种,比如蛋糕裱花,画菱形等,其实在做这种题时

说难也难说简单也简单,关键在于找规律,

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

输出

输出画出的图形。

#include<iostream>

#include<stdio.h>

using namespace std;

int main()

{

    int h,k,x;

    char c;

    int i,j;

    cin>>h>>k>>c>>x;

    if(x==1)

    {

        for(i=1;i<=h;i++)

        {

            for(j=1;j<=k;j++)

         {

 

           cout<<c;

        }

           cout<<endl;

        }

    }

    if(x==0){

    for(i=1;i<=h;i++){

 

            if(i==1||i==h)

            {

           for(j=1;j<=k;j++)

           {

              cout<<c;}

           cout<<endl;

        }

        else{

        for(j=1;j<=k;j++)

        {

            if(j==1||j==k)

            {cout<<c;}

 

            else{

 

                cout<<" ";

            }

        }    cout<<endl;

        }

        }

    }

关于敲七

**♡输出7和7的倍数,还有包含7的数字。例如(17,27,37...70,71,72,73...)

 

①#include<iostream>

#include<cstdio>

using namespace std;

int main()

{

    int N,s,i;

    cin>>N;

    for(i=1;i<=N;i++)

    {

        if(i%7==0)

        cout<<i<<endl;

        else

      {

          if(i%10==7)

          cout<<i<<endl;

      }

    }

 

}这个程序只能输出7的倍数和个位含有7的数,无法输出十位数和其他位数上的7比如71 72等

②#include <iostream>

using namespace std;

int main()

{

    int N,i;

cin>>N;

for(i=1;i<=N;i++)

{

if(i%7==0)

cout<<i<<endl;

else

{

int s=i;

    while(s>0)

{

if(s%10==7)

{cout<<i<<endl;

break;}

s/=10;

}

} 这个加上s/=10后,就可以把这个问题解决了。

}

 

}

**♡输入n,输出一个n*n的正方形,正方形由符号c1和c2组成,正方形的四条边和对角线由c1组成,其余部分由c2组成。

 

#include<iostream>

using namespace std;

int main()

{

    int n,i,j;

    char c1,c2;

    cin>>n>>c1>>c2;

    for(i=0;i<n;i++)

    {

        if(i==0||i==n-1)

        {

            for(j=0;j<n;j++)

            {

                cout<<c1;

            }

        }

        else

        {

            for(j=0;j<n;j++)

            {

                if(j==0||j==n-1||j==i||j==(n-i-1))

                {

                    cout<<c1;

                }

                else

                {

                    cout<<c2;

                }

            }

        }

        cout<<endl;

    }

}

.多组输入 余数相同问题的多组输入

#include<iostream>

#include<iomanip>

#include<cmath>

#include<cstdio>

using namespace std;

 

 

int main()

{

    int a,b,c;

    int d,e,f;

    int x;

    while(cin>>a>>b>>c)

{

x=2;

     d=a%x;e=b%x;f=c%x;

     

    while(d!=e||d!=f)

    {

 

        x++;

         d=a%x;e=b%x;f=c%x;

    }

cout<<x<<endl;

}

    

    return 0;

}

 

 

printf("%.2lf%%\n)",(1.0*m*100)/n,)

输出保留两位小数的浮点数。如20.00%

 

 

超级坑的一道题!!!!

描述:

一个不多于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 x=0 , s,n = 0,m,t=0,temp,f=0,number;

 

    {

       cin>>x;

   temp=x;

   s=x;

      for (n = 0; x > 0; n++)

        {

            x /= 10;

        }

cout<<n<<endl;

number=n;

int p=pow(10,number-1);

for(int i=1;i<=n;i++)

{

t=s/p;

s=s-t*p;

p=p/10;

cout<<t<<" ";

}

cout<<endl;

for(int i=0;i<n;i++)

   {

   m=temp%10;

   f=f*10+m;

   temp/=10;

}

cout<<f<<endl;

  

    }

 

我的感想,循环这部分题真的比前面的顺序结构和条件语句难好多,这里要思考的问题也很多,有很多时候条件的选择,定义,及赋初值,替换等等好多细节问题如果不注意,一不小心就会WA的。所以以后在考虑问题时,一定要全面思考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值