2022c语言真题 循环问题

img


程序如何运行得到运行结果789 不懂程序运行过程 b++ c++不是先使用再赋值吗

b++先使用再赋值是指它在某个表达式的情况下,当独立语句时,++b和b++是一样的
比如 , int a= 1,b=2;
那么 int c = a+b++;时,c=3,然后b=3,这种情况才有先后赋值问题,也就是它与 int c = a+(++b),效果不一样

先使用再赋值指的是这条语句内:
例如:
int a=1;
int b = a++;
这样结束之后a是2,b是1。
你这个这条语句都结束了,只有a++相当于a=a+1。

先取值再赋值,是同一条语句既有取值又有赋值时的优先级
好比四则混合运算中同时有乘法和加法,先乘除后加减
而a++这条语句,它只有赋值,没有取值,相当于一个算式里只有乘法没有加法

  • 这篇文章:2022 第十三届蓝桥杯省赛 C/C++ B组 试题与个人题解 也许能够解决你的问题,你可以看下
  • 除此之外, 这篇博客: 小唐开始刷蓝桥(四)2017年第八届C/C++ B组蓝桥杯省赛真题中的 二、等差素数列 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 题目描述:
    2,3,5,7,11,13,…是素数序列。
    类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。
    上边的数列公差为30,长度为6。
    2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。
    这是数论领域一项惊人的成果!
    有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:
    长度为10的等差素数列,其公差最小值是多少?
    分析分析:
    怎么说?有没有思路,在这里小唐嘿嘿,暴力是我们解决问题的另外一种美学
    题目代码

    #include <iostream>
    using namespace std;
    int panduan(int n)//用来看他们是不是素数的 
    {
    	if(n==2)
    	{
    		return 1;
    	 } 
    	for(int i=2;i<n;i++)
    	{
    		if(n%i==0)
    		return 0;
    	}
    	return 1;
    }
    int main()
    {
    	for(int i=2;i<1000000;i++)//i是我们的首项 
    	{
    		for(int j=1;j<1000;j++)//j是我们的枚举公差 
    			{
    				int temp=0;
    				for(int k=0;k<=9;k++)
    				{
    					if(panduan(k*j+i)==0)//我们对于数字进行模拟 
    					{
    						temp=1;
    						break;
    					}
    					
    				}
    				if(temp==0)
    				{
    					printf("%d",j);
    					return 0;
    				 } 
    			 } 	
    	}
    }
    

    运行结果:

    210