搜索
查看: 2221|回复: 9
打印 上一主题 下一主题

99乘法

[复制链接]
跳转到指定楼层
楼主
发表于 2013-4-6 23:47:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i,j;
    for(i=1;i<=9;i++)
    {
  for(j=1;j<=i;j++)
        {
        printf("%d*%d=%d ",i,j,i*j);
        }
        printf("\n");
    }  

system("pause");
return 0;
谁能帮我简单叙述下循环的过程。叙述3个循环这样

最佳答案

查看完整内容

for循环的语法是这样的: for (表达式1; 表达式2; 表达式3) { 循环体语句(可以是单条语句也可以是多条语句组成的复合语句) } 执行过程是这样的: 1.首先执行表达式1,通常我们都在此处给循环变量赋初值(比如你程序中的i=1, j=1); 2.然后判断表达式2是否返回逻辑真值,若为真则执行循环体,假则退出循环(比如i
楼主新帖
楼主热帖
沙发
发表于 2013-4-6 23:47:36 | 只看该作者
for循环的语法是这样的:
for (表达式1; 表达式2; 表达式3)
{
    循环体语句(可以是单条语句也可以是多条语句组成的复合语句)
}
执行过程是这样的:
1.首先执行表达式1,通常我们都在此处给循环变量赋初值(比如你程序中的i=1, j=1);
2.然后判断表达式2是否返回逻辑真值,若为真则执行循环体,假则退出循环(比如i<=9, j<=i);
3.当表达式2返回真值,执行完循环体后再执行表达式3,通常我们在此处改变循环变量的值(如i++, j++);
4.返回第2步。

99乘法表的打印共两重循环。外层循环控制行的打印,内层循环则是控制列。程序运行时其过程是这样的:
刚进入循环时,给外层循环变量i赋初值,既i=1;
然后判断循环条件(i<=9)是否成立,此时1<=9成立(即返回逻辑真值),所以执行循环体;
    进入内循环后同样先给j赋初值,j=1;
    由于1<=1成立,故而执行输出语句,得到"1*1=1 ";
    随后执行j++,此时j=2;
    再判断j<=i是否成立,2<=1已不成立,故退出内循环,执行printf("\n");输出一个换行符;
外循环的循环体到此结束,接下来执行i++,得到i=2;
再判断i<=9是否成立,因2<=9成立,所以执行循环体;
    与前述内循环过程相同,首先给j赋初值,j=1;
    因1<=2成立,故输出"2*1=2 ";
    执行j++后j=2;
    2<=2成立,再输出"2*2=4 ";
    再执行j++后j=3;
    此时3<=2不成立,退出内循环,执行换行符的输出;
外循环体结束,i++,i=3;
又一次判断i<=9是否成立……
直到输出完第9行后,执行i++,i的值变为10,i<=9不成立,退出外循环。

板凳
 楼主| 发表于 2013-4-7 15:05:13 | 只看该作者
大哥。你太帅了挖~~
地板
发表于 2013-4-7 16:00:30 | 只看该作者
怎么使三角的形状变化?
5#
发表于 2013-4-7 17:27:25 | 只看该作者
xiaobailaile 发表于 2013-4-7 16:00
怎么使三角的形状变化?

要改变三角的形状,只需将内循环中j的初值及循环条件改变一下即可。如下:
for (j=i;j<=9;j++)
6#
发表于 2013-4-7 17:54:27 | 只看该作者
#include <stdio.h>
#include <stdlib.h>
int main()
{int a,b;
for(a=1;a<=9;a++)
{for(b=1;b<=a;b++)
printf("%d*%d=%d",a,b,a*b);
        printf("\n");}
        system("pause");
        return 0;
}
7#
发表于 2013-4-9 09:10:36 | 只看该作者
Smallbee 发表于 2013-4-7 17:27
要改变三角的形状,只需将内循环中j的初值及循环条件改变一下即可。如下:
for (j=i;j

你是怎么想的 ,能给我解释下现在是怎么循环的吗?谢谢。
8#
发表于 2013-4-9 09:22:11 | 只看该作者
好帅啊,帮忙搞个除法口诀吧,谢谢!
9#
发表于 2013-4-9 16:00:19 | 只看该作者
本帖最后由 Smallbee 于 2013-4-9 16:02 编辑
xiaobailaile 发表于 2013-4-9 09:10
你是怎么想的 ,能给我解释下现在是怎么循环的吗?谢谢。

对不起,想得太简单了。内循环中还要增加从第2行起的前端空格,应该这样写:
  1.   for (i=1;i<10;i++)
  2.   {
  3.     for (j=1; j<i; j++)
  4.     {
  5.       printf("\t");
  6.     }
  7.     for (j=i;j<=9;j++)
  8.     {
  9.       printf("%d*%d=%d\t",i,j,i*j);
  10.     }
  11.     printf("\n\n");}
复制代码
10#
发表于 2013-4-9 16:07:17 | 只看该作者
zhgule 发表于 2013-4-9 09:22
好帅啊,帮忙搞个除法口诀吧,谢谢!

除法口诀?没见过,不知道是不是这个样子
  1.   for (i=1;i<10;i++)
  2.   {
  3.           for (j=1;j<10;j++)
  4.     {
  5.       printf("%d/%d=%d\t",i*j,i,j);
  6.     }
  7.     printf("\n\n");
  8.   }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表