• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go

1592148.jpg

16f0ebec

for循环嵌套过程中精简失败,为什么有了i还要有j?

备注:我是文科生自学编程,希望有懂电脑编程的高手指点,谢谢。

for循环嵌套过程中尝试精简程序却失败,为什么有了i还要有j?毕竟“j=1;j<=i;++j",另一方面”i = 1; i <= n; ++i“既然i和j是这种关系,忽略掉j为何不行?

教科书范例如下:




因我觉得i与j同时并存很麻烦,于是后来用了两种方法取消了j,尝试只用i就解决所有问题,但运算结果与教科书范例结果不一样。

方法一





方法二

  
  




  

1551358.jpg

嗨嗨嗨

B1F  2023-04-02 23:41
(嗨嗨嗨1)
问问神奇的chatgpt

1063248.gif

snowhalation

B2F  2023-04-02 23:45
(如果没有本子和黄油 我可能会成为一个猎奇插人狂)
你是来钓鱼的吗

ptw


4aee6f90fb98dd1b.gif

七星劍

B4F  2023-04-02 23:46
(頭像:https://beta.kemono.party/fantia/user/50309/post/1293771)
這真的像是釣魚的

none.gif

d98355df

结果不正确啊,答案错误

none.gif

203d9867

照着你自己写的手动算一遍就知道怎么行不通了

1411048.jpg

aol_milan

要不你先理解一下每个变量的作用是什么再考虑怎么精简

5.gif

睡觉的笨蛋

……槽点过多都不知道该怎么回答了。

1739300.jpg

救世竹楼

B9F  2023-04-02 23:52
([Hussyfan] Rca Complete (Babyj) [1H 27Min 22Sec])
循环内变量不要重复用。你看点正经教学吧

3.gif

endorphin

   好像之前教妹子python     完全没有过一遍代码流程的概念

none.gif

上官婉儿

我看你有了解chatgpt,那我建议你问一问chatgpt

ptw


9.png

皮卡超车

一句话回答楼主的问题,因为下一个循环(j)需要用到i(j <=i ),所以不能更改i,没有j还会有k

1037406.jpg

大菠萝

B14F  2023-04-03 00:11
(木有鱼丸)
你先去了解下最基础的编程概念。

所谓的变量、作用域是什么东西。

不懂直接问chatgpt。

我们只看一轮循环。

int i = 0;

for (i = 0; i < 10; i++) {
   // i = 0
   printf("i: %d", i);
  
   for (i = 0; i < 20; i++) {
       // do something
   }

   // i = 20,你猜为什么最外层循环结束了
   printf("i: %d", i);
}


我都不想说你的方法二,你数学真的不是跟着体育老师混日子的么?
求阶乘的和,直接被你搞成求和-1了。
如果你真的觉得自己的逻辑没有问题,建议重学数学

最尴尬的是你对着课本抄,还抄错了
1! + 2! + 3!+ 4! + 5! + 6! + 7! + 8! + 9! + 10! = 4037913

我猜课本应该想告诉你多层循环的概念,否则它完全没必要给你套两层来增加复杂度。

long sum = 0;
int factorial = 1;
for (int i = 1; i <= 10; i++) {
    factorial *= i;
    sum += factorial;
}

printf("sum: %ld", sum);

1037406.jpg

大菠萝

B15F  2023-04-03 00:14
(木有鱼丸)
自学,就去B站看基础视频。

0基础你啃书,就那些教程项目基本GG

看完基础,直接去写项目、看官方文档,英文优先、中文翻译其次,国内项目再次之。

5.gif

Plus

B16F  2023-04-03 00:15
(id-plus)
因为两次循环简单符合逻辑
如最简单的打印
*
**
***
外层循环表示打印三行,内循环控制打印星号数量

844869.jpg

苏打汽

啊这,不是兄弟不想帮你,你这问题太智障了,实在是很像⛵。

针对你第一个想法,i是在for循环外实例化的,你两层for循环都对i赋值为1,那外面一层就起不到作用了,第一遍内层for循环跑完之后i就等于n+1了,外层for循环就直接结束,一共只跑了一遍。而在这一遍的循环中,m一直是等于0,所以sum一直在加0,最后的输出也是0。

至于第二个想法,你仔细看看,m每次循环都会被重新赋值为1,没有起到任何作用,整个循环只是从1加到n而已………

none.gif

Rookie

楼主你知道书上的代码是怎么算出这个结果吗?建议搞清楚代码执行的过程再来提问。学习变量和for循环的作用

none.gif

厄—诡

B19F  2023-04-03 00:47
(不曾你巅峰时慕名而来 也未曾在你低谷时离你而去)
你别用 VS 学C

1142461.png

5f3bd6a5

B20F  2023-04-03 00:49
(李小仙)
因为你第二个循环是(j=1;j<=i;j++),也就是说当i=1的时候,里面循环1次,i=2.里面循环两次.i是一个会变动的值,从1变到n,每次循环都不一样.你那个(i=1;i<n;i++),这里面n是死的,不会随着外面的而变化
,之所以他用i和j两个变量,是因为i不仅在第一个循环里递增用,他还要传入到第二个循环里面决定循环次数,所以不能省一个变量;
你两个循环用同一个i作为变量,这个i是会相互影响的,也就是本来i++,在内循环递增1,外循环不变,你在内循环递增1的时候,外循环也少循环了一轮.
如果你实在想在两个循环里面只用一个i,那就for(int i=1;)两个都这么写.这样i就只在单独的循环内递增.详细看一下局部变量和全局变量

1459467.png

虚伪之物

B21F  2023-04-03 00:55
(虚伪之物)
好像没什么人做这方面的视频唉? 要不我录个教学视频?

689547.jpg

b2179493

B22F  2023-04-03 00:56
(Fight against the dictator)
槽点过多以至于不知道怎么说,楼主要不先看一遍C语言随便那本入门教科书再说?

1562244.jpg

thomas

B23F  2023-04-03 01:07
(无)
楼主要不试试别的方向吧 看了你两次帖子了 学代码可能不是很适合你

1592148.jpg

16f0ebec

回 23楼(thomas) 的帖子

谢谢你的劝说,但现在这个社会如果不懂电脑,不但生活上有诸多不便,同时精神状态上也会自己看不起自己。

1592148.jpg

16f0ebec

回 21楼(虚伪之物) 的帖子

谢谢你的好意。

1554513.gif

物质隐身

B26F  2023-04-03 14:59
(无)
建议问gpt4

1592148.jpg

16f0ebec

回 20楼(5f3bd6a5) 的帖子

谢谢你的解说,我开始有点明白了。谢谢。

1592148.jpg

16f0ebec

回 19楼(厄—诡) 的帖子

我用visual studio是因为它免费,同时是微软生产功能齐全,而且不用担心有病毒。现在编程软件太多,当时我根本不知道选择哪款。

1592148.jpg

16f0ebec

回 17楼(苏打汽) 的帖子

虽然你用太智障形容我,但因你耐心指导我,我还是谢谢你百忙中回复。谢谢。

1592148.jpg

16f0ebec

回 16楼(Plus) 的帖子

你的解释很好,谢谢你的教导。
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go