>第 6 章 循环语句>嵌套循环

daidai daidai@sina.com http://learn.akae.cn/media/ch06s05.html
2009-02-04 13:14:12

建议对复杂循环中,变量(如用于计数的 i)的值的传递,深入讲解一下。请老师讲解一下
如本节课后题(做注释处):
#include <stdio.h>

int diamond(int n,char c);
int diamond(int n,char c)
{
  int i,j,k; //****

  if(n%2!=0)
  {
     for(k=n;k>0;k--)
     {
         for(i=1;i<=k;i++)//***此处对i初值赋为1
            printf("\t");
         //***下面的for循环中,i的值为多少??
         for(j=2*i-1;j<=n;j++)
            printf("%c\t",c);
         printf("\n");
     }
     for(k=1;k<=n-2;k++)
     {

         for(i=k;i>=1;i--)
            printf("\t");

         for(j=n-2*k;j>0;j--)
         {
            printf("%c\t",c);

         }
         printf("\n");
     }
  }
  else
     printf("ERROR!");

}

int main(void)
{
  int n;
  char c;
  printf("Please Input One Num and One Char [ex:5,*] :");
  scanf("%d,%c",&n,&c);
  diamond(n,c);
  getch();
  return 0;
}


daidai daidai0628@sina.com
2009-02-04 13:19:40

算了,太乱了。留言板不支持换行!


宋劲杉 songjinshan@akaedu.org
2009-02-04 21:04:23

嗯,留言板不支持换行是一个挺严重的问题。谢谢你的提醒,我用一个quick and dirty hack让它支持换行了,等以后有时间再改得好看点。

至于你提的问题,似乎不是个特别的问题。i是一个变量,给它赋值就存起来,下次取就取上次存的值,i在前一个循环中用过了,在后一个循环中取前一个循环结束时的值,我认为不需要特别说明。而且上一节给出过类似的例子:
for (i = 2; i < n; i++)
	if (n % i == 0)
		break;
if (i == n)
	return 1;


杨炀 ybg139@163.com
2009-04-12 22:35:00

真的很幸运找到您这个网站,对我学c来说有了莫大的帮助,只可惜我发现的有点晚.真的很感激您!


如果您有建设性意见,哪怕只是纠正一个错别字,也请不吝赐教,您留下的姓名和email将会出现在本书前言的致谢中。再次感谢您的宝贵意见!