jq在外面取for里面的值_10、for语句

2a2d7d2d865c26f673ac52b8334ba74d.png

终于到了循环~ 来吧~ 看看C++的for语句和python有何不同~

1、for语句

示例4.1:先来体验一个吧~

对于给定的任意正整数n,输出1~n的平方数。

//exam 4.1
#include <iostream>
using namespace std;
int main()
{
	int i,n;
	cin>>n;
	for (i=1;i<=n;i++)
	cout<<i*i<<endl;
	return 0;
}

d82629f72a19e3705478c33e01dbe0a0.png

8788869b72d21802b1819e924b58b017.png

定义格式:

格式1:

for(循环变量初始化;循环条件;循环变量增量)

语句;

格式2:

for(循环变量初始化;循环条件;循环变量增量)

{

语句1;

语句2;

......

}

标颜色的语句都是要重复执行的内容,即for循环体。

功能:

对于使循环条件成立的每一个循环变量的取值,都要执行一次循环体。

for 循环语句的执行流程:

0fc1a41564c0f46d6eb4471f4ce962da.png

示例4.2:

写出下面程序的运行结果。

// exam 4.2
#include <iostream>
using namespace std;
int main()
{
	int i;
	for (i=1;i<=5;i++)
	   cout<<i;
	return 0;
}

我猜测是12345

实际运行结果:

b669f9f577bd4d2636331cacf8dbb03c.png

还是蛮easy的,只要记住它的格式就好了,注意里面有两个分号最后一个循环变量增量后面没有分号了。

示例4.3:

写出下面程序的运行结果。

// exam 4.3
#include <iostream>
using namespace std;
int main()
{
	int i,j;
	for (i=0,j=10;i<j;i++,j--)
	cout<<i<<" "<<j<<endl;
	return 0;
}

我猜测是这样的:

i 初始是0,j初始是10,i每次增加1,j每次减少1,但还是要满足i比j小。

因此,结果是这样的:0 10 1 9 2 8 3 7 4 6

实际运行结果:

3cb198763da9a4d7bc2535e5fdd43db9.png

哦哦,endl那每一次都要换一行,注意啦~

示例4.4:

写出下面程序的运行结果。

// exam 4.4
#include <iostream>
using namespace std;
int main()
{
	int i,sum;
    sum=0;
	for (;i<=100;)
	{
		sum+=i;
		i++;
	}
	cout<<i<<" "<<sum<<endl;
	return 0;
}

诶,这个就神奇了,标准格式的:

for(循环变量初始化;循环条件;循环变量增量)

语句;

里面只有循环条件,变量初始化和变量增量都没有。注意观察语句中竟然有 i++,也就是循环变量增量,因此啊,猜测这里是求1到100的和,结果是100 5050?

实际运行结果:

ccf902a637753fa666dadf8abcf71005.png

推测错了。。。为啥i是101呢,哦,就是前面已经到了100,计算完100以内的和5050了,但是循环体里面i还要增加1,那就是101。

实验:

// exam 4.4-1
#include <iostream>
using namespace std;
int main()
{
	int i,sum;
    sum=0;
	for (i=0;i<=100;i++)
	{
		sum+=i;
		i++;
	}
	cout<<i<<" "<<sum<<endl;
	return 0;
}

猜测结果:这里应该是0到100相加的和

实际运行结果:

a8d79c7d55f20c549560ce56ee9eb4fc.png
// exam 4.4-1
#include <iostream>
using namespace std;
int main()
{
	int i,sum;
    sum=0;
	for (i=1;i<=100;i++)
	{
		sum+=i;
		i++;
	}
	cout<<i<<" "<<sum<<endl;
	return 0;
}

猜测结果:这里应该是1到99相加的和

实际运行结果:

708f2eaafecc4df25ca69430fecc8d6e.png

示例4.5:

输出100以内所有的偶数

// practice 4.5
#include <iostream>
using namespace std;
int main()
{
	int i;
	for (i=1;i<=100;i++)
	{
		i++;
        cout<<i<<" ";
	}
	return 0;
}

我这里是直接沿用上一小节的了,

运行结果:

78caf4a1377d12f481abe6ca1894ce95.png

看下书中给出的答案吧:

// exam 4.5
#include <iostream>
using namespace std;
int main()
{
	int i;
	for (i=1;i<=100;i++)
	{
		if (i%2==0)
        cout<<i<<"";
	}
	return 0;
}

运行结果:

603b72d5a663c889ba2143a1037c2463.png

除了加一个条件判断,书中还给了另一种方法,就是从2开始,直接每次加2:

// exam 4.5-2
#include <iostream>
using namespace std;
int main()
{
	int i;
	for (i=2;i<=100;i+=2)
        cout<<i<<"";
	return 0;
}

运行结果:

84c6f0c09b96f2e89542775d7e3e7e3d.png

示例4.6:

分别计算1~100中偶数和奇数之和。

// practice 4.6
#include <iostream>
using namespace std;
int main()
{
	int i,sum1,sum2;
    sum1=0;
    sum2=0;
	for (i=1;i<=100;i++)
	{
		if (i%2==0)
          {sum1+=i;}
        else
           sum2+=i;    
	}
    cout<<"100以内偶数之和为"<<sum1<<endl;
    cout<<"100以内奇数之和为"<<sum2<<endl;
	return 0;
}

运行结果:

3212b1bb76c7b10f3ec1dbbd055013be.png

看看书上给的答案吧~

// exam 4.6
#include <iostream>
using namespace std;
int main()
{
	int i,sum1=0,sum2=0;
	for (i=1;i<=100;i++)
		if (i%2==0)  sum1+=i;
        else  sum2+=i;    
    cout<<"偶数和"<<sum1<<"  "<<"奇数和"<<sum2;
	return 0;
}

运行结果:

3b88aaa75709fdf02ba3ade974b427b2.png

书上写的更简洁呀,但逻辑是一样的,循环中先判断是不是偶数,然后加到对应的sum中

书中还有一种方法就厉害了~ 借助了两个初始变量i和j:

// exam 4.6-1
#include <iostream>
using namespace std;
int main()
{
	int i,j,sum1=0,sum2=0;
	for (i=2,j=1;i<=100;i+=2,j+=2)
    {
      sum1+=i;
      sum2+=j;
    }		   
    cout<<"偶数和"<<sum1<<"  "<<"奇数和"<<sum2;
	return 0;
}

运行结果:

51c23d861f179202482465f2b2689172.png

示例4.7:

已知n个人的身高值,求出其中的最大值。

那就是依次用身高和目前的最大值比较,大就覆盖,小就不管:

// practice 4.7
#include <iostream>
using namespace std;
int main()
{
	int i,n;
    float x,max=0;
    cin>>n;
	for (i=1;i<=n;i++)
    {
      cin>>x;
      if (x>max) max=x;
    }		   
    cout<<max<<endl;
	return 0;
}

运行结果:

ef7cddf60aae12ac77d837e5c4f0c944.png

*示例4.8:

807491c4ee7eef2211599b3fb49f74c6.png
// exam 4.8
#include <iostream>
using namespace std;
int main()
{
	int i,a=0,b=1,c;
    cout<<a<<"  "<<b;
	for (i=3;i<=40;i++)
    {
       c=a+b;
       cout<<c<<" ";
       if (i%10==0) cout<<endl;
       a=b;b=c;
    }		   
	return 0;
}

运行结果:

ea8b982087dcddc041fcc20cd50eb11d.png

作业:

1) 读程序,写结果

// test1-1
#include <iostream>
using namespace std;
int main()
{
	int i,n=0;
    for(i=1;i<=100;i=i*3)
       if (i%7==0) n++;
    cout<<n<<endl;	   
	return 0;
}

猜测结果是:i的值是3、9、27、81,他们除以7的余数没有为0的,那实际都不满足if语句,那n就没任何变化,结果为0。

运行结果:

13b29de7a67ed397a91cb72ef90e571e.png
// test1-2
#include <iostream>
using namespace std;
int main()
{
	int i,j;
    for(i=20,j=0;i<=50;i++,j=j+5)
       if (i==j) cout<<i<<endl;  
	return 0;
}

运行结果:

e078f58c65589faa5f753dfe03aa5a85.png
// test1-3
#include <iostream>
using namespace std;
int main()
{
	int n;
    for(n=1;n<=5;n++)
       switch(n%5)
       {
         case 0:cout<<n<<"@"<<endl;break;
         case 1:cout<<n<<"#"<<endl;break;
         default:cout<<n<<endl;
         case 2:cout<<n<<"$"<<endl;
       }
	return 0;
}

运行结果:

4c8c614565b36e7623e430fcaf8eae17.png
// test1-4
#include <iostream>
using namespace std;
int main()
{
	int n,i;
    for(i=1;i<=100;i++)
       {
         n=i;
         if (++n%2==0);
         if (++n%3==0);
         if (++n%7==0);
         cout<<i<<":"<<n<<"  ";
       }
	return 0;
}

运行结果:

00a7898138050c1a4cb45f226b82cb2b.png

*2、

班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留小数点后两位。

f5f5035bd1b754f5e0037c91cde552c8.png
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
    int n,i,a;
    double s;
    cin>>n;
    s=0;
    for(i=1;i<=n;i++)
   {
       cin>>a;
       s=s+a;
    }
    printf("%0.2f",s/n);
    return 0;
}

8a6ea9694b8f3d9b99439d720458f09b.png

d6414e6a4f5d27064c38f616f3a9970e.png

3、

给定一个长度为n的非负整数序列,请计算序列的最大跨度值(最大跨度值=最大值-最小值)

68f7288265ceb6a0045aa2c4026a7d80.png
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
    int n,i,a,max=0,min=0;
    cin>>n;
    for(i=1;i<=n;i++)
   {
       cin>>a;
      if (a>max) max=a;
      else if (a<max &&a<min) min=a;	
    }
    printf("%d",max-min);
    return 0;
}

6e8b9b23fac6790087d24080bb6d955e.png

5d312b721099db1370bee0394dc0fa51.png

上面这么写是10分,我看看怎么改能得100分~

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
    int n,i,a,max=0,min=1000;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
   {
       scanf("%d",&a);
      if (a>max) max=a;
      if (a<min) min=a;	
    }
    printf("%d",max-min);
    return 0;
}

100分~

原来得10分是因为结果对了但是逻辑完全不对啊,

错误的点是min的初始值是1000啊,要是0的话,任意输入一个都不会比它小啊。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值