共有回帖数 0 个
-
呵呵,我只是一个刚刚学C的毛头小子,对C没有很深的理解,发此贴只是谈谈自己的for的理解,不喜勿喷,有错欢迎指出,还请不吝赐教。


怎么打出的.也就是
for(i=0;i5;i++)
printf(“*n”);
但对于这个一行多个 就不知道怎么打了,更别说每行*号还不一样多。没办法,是在不懂就只有问人了,问同学问网友,终于问道了能使我理解的回答了。他是这样讲的:(以菱形为列)
for(i=0;i4;i++)
{
for(j=0;j=2-i;j++)
printf(" ");
for(k=0;k=2*i;k++)
printf("*");
printf("n");
}
既然不能理解,那就一步一步的看程序是怎样运行的,当i=0时,i4成立,则执行下一步,也就是j=0 。2-i也就是2,j2成立,执行下一步,输出一个空格;J自加是1,1也小于2,成立,执行下一步,输出一个空格;j继续自加为2,2小于等于2成立,执行下一步,输出一个空格;j继续自加为3,并不是小于等于2,不成立,所以此次循环执行完毕,程序向下执行。2*i=0,0小于等于0,成立,执行下一步,输出一个*号,k自加为1并不是小于等于0,此循环执行完毕,执行下一步,输出一个换行。程序回到i循环了,i自加为1,1是小于4的,所以程序向下执行……这样,就会把上面的三角形打出来。下面的也相同,结合在一起就是一个菱形了。


怎么样,是不是勾起了童年的痛苦回忆?
#includestdio.h
int main()
{
int i,j;
for(i=1;i=9;i++)
{
for(j=1;j=i;j++)
printf("%dX%d=%dt",j,i,i*j);
printf("n");
}
}其实代码就只怎么点,呵呵。

这题是老师实验室网站上的一题,弄懂了for循环之后,就尝试做这个了,照刚刚弄懂的思路,没一行*号是成线性规律增加的,应该能写出来, . 号也是呈线性规律增加的,也写的出来,于是写了一个
#include "stdio.h"
void main()
{
int i ,j,k;
for(i=1;i=8;i++)
{
for(j=1;j=i;j++)
printf("*");
for(k=2;k=i;k++)
printf(".");
printf("n");
}
}
但运行出来的结果却是 。后来想想, . 号是镶嵌在*号里的,那把打印 . 号的循环也镶嵌在打印 * 号的循环是不是就可以了呢?说干就干,就改写成如下形式
#includestdio.h
int main()
{
int i, j,k;
for(i=1;i=8;i++)
{
for(j=1;j=i;j++)
{
printf("*");
for(k=2;k=i;k++)
printf(".");
}
printf("n");
}
}哈哈,果然成功了。

,鉴于第一次失败的经验,此次一看就明白了,两个程序后面部分都一样,只是改后的题前面多了并列的空格图形,此题只需在原代码打印点星的循环前加个并列的for就OK了。
1. 还记得那个水仙花数么,书上给出的算法是
设一个数N,把N/100的值赋给i,把N/10-i*10的值赋给j,把N对10求余的值赋给k,再来判断i^3+j^3+k^3是否等于N。一直看不懂,索性就按照自己的思路写了一个,直接就是(n==100*i+10*j+k && n==i*i*i+j*j*j+k*k*k) 呵呵,是不是好理解了很多。于是写代码如下
#include "stdio.h"
void main()
{
int i,j,k,a;
for(i=1;i=9;i++)
for(j=0;j=9;j++)
for(k=0;k=9;k++)
{
a=i*100+j*10+k;
if(a==i*i*i+j*j*j+k*k*k)
printf("%d=%d^3+%d^3+%d^3n",a,i,j,k);
}

楼主 2015-11-05 12:55 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知