一个C语言程序问题,看晕了,求大神详解

作者&投稿:褚政 (若有异议请与网页底部的电邮联系)
有一个C语言程序,看不懂,求大神解答~

#include int main(){unsigned a,b,cnt,i,j,flag;while(scanf("%u%u",&a,&b) == 2) //读到了两个数,就进入循环{cnt = 0;for(i = a; i <= b; ++i) {//检查给定范围内的每个数flag = 1;//假定它是素数for(j = 2; j * j <= i && flag; ++j)//在2~根号i范围内,如能被j整除,flag就为0,就退出循环flag = i % j;if(flag) ++cnt;//如果flag非0,说明i是一个素数,cnt加1}//这两个for循环和if的判断又是怎么回事printf("%u
",cnt);}return 0;}

距离1分钟,系统送的20分没有了,我先留个爪子印,待会儿改

while(y<=5){
    if(x>=10)break;   //   <-----   1
    if(x%2==0){ x+=5;continue;}   //   <----- 2
    x-=3; y++; //      <----- 3
}

循环开始,x=1,y=1

第一次循环: 条件1不成立,不会break。条件2不成立,执行3,x=-2, y=2;

第二次循环: 条件1不成立。条件2成立,x=3。执行continue,忽略语句3,执行下个循环。

第三次循环: 条件1不成立。条件2不成立,执行3,x=0, y=3

第四次循环: 条件1不成立。条件2成立,x=5。执行continue。忽略3,执行下一个循环。

第五次循环: 条件1不成立。条件2不成立,执行3,x=2, y=4

第六次循环: 条件1不成立。条件2成立,x=7。执行contine。 忽略3,执行下一个循环。

第七次循环: 条件1不成立。条件2不成立。执行3,x=4, y=5

第八次循环: 条件1不成立。条件2成立,x=9。执行continue。忽略3,执行下一个循环。

第九次循环: 条件1不成立。条件2不成立。x=6, y=6。

第十次循环: y<=5不成立,循环结束。



开始,x、y=1,while(y<=5)成立,第一个if明显不成立,第二个if的意思是x是否是2的倍数,也不成立,所以x-=3就是x=x-3就是-2,y++等于2。
回到第一个if,不成立,第二个if成立,x+=5就是x=x+5等于三,continue表示跳过下面的语句回到while,此时y还是2.到第一个if,不成立。
然后就是第二个if,不成立,继续下面,x=0,y=3。
循环,x=5,y=3.
循环,x=2,y=4.
循环,x=7,y=4.
循环,x=4,y=5.
循环,x=9,y=5.
循环,x=6,y=6,跳出while,输出。


问一个C语言程序的执行过程问题
isalpha用来判断是否为字母.如果是a-z或者A-Z之间的,isalpha值为真,否则值为假.大写字母的ascii码值是0x41到0x5A 小写字母是0x61到0x7A 所以任意的一个字母c, 做c%0x20的时候,结果是0x01到0x1A, 即1到26 于是 如果s[i]%0x20>26 说明超出了z或者Z的范围,需要回到对应的开始位置,即 Z+3...

C语言基本问题
三、第3题,C语言中强制类型转换,仅对转换的语句有效,而不会改变所转换变量的原有数据类型,这是正确的,应该选T。四、第4题,i=8,j=10;printf("%d,%d,%d,%d\\n",i,j,++i,j++);实际上是一个程序执行类题目,执行这一句时,先取得ij变量的值,其中有一个++i(先自增),一个j++(...

三道c语言的程序题要求要步骤全、最好把思路写上 先上200分在线等_百 ...
第一题很简单,没啥好说的,就是输入数字,然后一个简单的 switch case 语句。include <stdio.h> int main(){ int a, b, opr;printf("输入两个数字,如 3 5 (数字用空格分开)\\n");scanf("%d %d", &a, &b);printf("选择计算方式:\\n");printf("1. 加, 2. 减, 3. 乘, ...

C语言问题,编写一个程序计算矩形的面积和周长
1.代码参考:(边长可以是整数也可以是小数;实现乘法的运算符是*)2.代码参考:

求一个c语言程序 题目是 0到100的和
number = 0;for (i=0; i<=100; ++i){ number += i;} printf("%d\\n", number);return 0;} 总体来说使用等差数列求和公式的方法速度更快,但是中间过程可能超过整形范围,不过这个可以通过简单地处理解决这个问题。尽管使用循环语句不会出现中间数据超范围的问题,但是程序运行速度较慢 ...

c语言问题
C) (*p1=*p2)!=’\\0” D) (*p2=*p1) !=’\\0’② A) a[],b[] B) a,b C) a[100],b[100] D) a[0],b[0]2.下列程序是检查一个字符串是否回文。所谓回文即正向,反向的拼写都一样,如moom,aba等。当是回文时,输出“yes!”.否则输出”no!”。填空。(99...

c语言出现了一个问题,导致程序停止正常工作,请关闭程序
1、野指针,你使用的指针指向未知区域 2、scanf函数输入整形、字符……的时候缺少了& 3、缓冲区溢出,也就是说你使用数组时不经意间越界了

C语言程序运行错误
是这样,你的程序有两个问题:1. 逻辑关系错误:如jaybestwang同学所说,while内的逻辑是始终成立的,c不等于'n'就肯定等于'N'嘛,所以改成while(c!='n'&&c!='N') ;2. 程序设计缺陷:如deng576631589同学所说,scanf函数会把缓冲区的回车符也载入,因此第二个scanf函数实际上接收的是你第一...

2个c语言小问题,新手求解。第一个程序y为什么不是10?2题的23为什么为真...
x=y之后,x值就是20了 2,r=4,整个表达式值是4,非0即为真 3,相当于(0<r) < 1 其中0<r是假的,其值为0,0 < 1,当然为真

小弟最近编写了两个c语言源程序,但其中种种问题无法解决,特来求助
首先我们来讨论下第一个程序。第一个程序的问题并不大,编译的时候编译器提示:错误 3 error C3861: “getch”: 找不到标识符 我们分析这个错误,是编译器无法识别"getch"这个函数。经过查询,我们了解到getch()函数的确存在,并且详细信息如下:函数名 getch 功 能 在windows平台下从控制台无回显地...

永定区18392039510: 这是一个c语言的程序设计题,未来教育的答案解释完全看不懂,求大神帮忙解释一下,尤其是对于pl[i+ -
学河利君: 要想把p2连接到p1的末端,首先要找到p1的末端 p1的末端怎么找呢?做法是第一个for语句,注意这两个for后面都有分号,因此并不是嵌套语句,不要弄混了. 第一个for语句依次检查p1的第i个字符是否为'\0',如果不是则i++,继续下一次判断,当循环退出是,i刚好在p1的末端'\0'处. 第二个for循环是把p2的字符依次拷贝到p1的后面,p1[i++] = p2[j],正是这个拷贝的过程.

永定区18392039510: 一个C程序问题,求大神帮帮忙 -
学河利君: for循环括号后面分号去掉.满意请采纳

永定区18392039510: 请教一个C语言的程序问题,求大神指导... -
学河利君: 和存储模式有关,x86体系下应该是小端模式对union开始的两次赋值之后内存布局 0x02 0x03(低地址到高地址)由于是小端模式,当以整体作为一个数字读出是,高地址在高位,低地址在低位实际上也就是0x0302,不就是十进制的770

永定区18392039510: 一道c语言编程题,求大神指教! -
学河利君: #include <stdio.h> void printdigits( int n ); int main() { int n; scanf("%d", &n); printdigits(n); return 0; } void printdigits( int n ) { if(n) { printdigits(n/10); printf("%d\n",n%10); } }

永定区18392039510: 求大神帮忙看一道c语言编程题 -
学河利君: 不止一个错误:printf(P1=%f\n,P1);要改为printf("P1=%f\n",P1); 另外return 0;'“;“改为英文 程序如下:#include<stdio.h>#include<math.h> int main() { float r1,r2,r3,r4,r5,P,P1,P2,P3,P4,P5; r1=0.0414; r2=0.0468; r3=0.054; r4=0.0585; r5=0....

永定区18392039510: C语言的一个程序看不懂,求大神讲解?
学河利君: 明显的自增自减在变量后面所以先计算后运算嘛,三个变量的值初始都为真所以与运算条件成立

永定区18392039510: 求大神帮解一道C语言程序题,谢谢 -
学河利君: #include int main(){ int x; scanf("%d",&x); if(x>25){ printf("000000\n"); return 0; } int fac=1; for(int i=1;ifac=(fac*i)%1000000; } printf("%06d\n",fac); return 0; }

永定区18392039510: 求高手帮我看一下这段c 语言程序出了什么问题 -
学河利君: 应该是cirf=getCirth(a,b,c);因为你在getCirth函数内return cirf;也就是说,函数会返回一个值,这个getCirth函数内的变量和main函数变量是不相同的,都只是局部变量,并不是全局变量,要不就把return cirf;去掉,然后在#include<..> 下,不放进任何函数,定义一个全局变量int cirf;,然后去掉main函数中的int cirf;.要不就cirf=getCirth(a,b,c);

永定区18392039510: c语言的问题,我快崩溃了,求大神!!! -
学河利君: 在每一个getchar()后面加一个fflush()函数:例如: a=getchar();fflush();--------------------------getchar()是从输入缓冲区取数据,回车换行也是输入,并且是2个字符,不刷新缓冲区的话,第二次用getchar()会取到回车符.

永定区18392039510: c语言程序出错了,大神帮忙看看呗,大谢~~(题:输入三个字符串,按由小到大顺序输出) -
学河利君: “void exchange(char *pt1,char*pt2,char*pt3);”这句声明与下面的“void excange(char *pt1,char*pt2,char*pt3)”函数名的说明不一...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网