鱼C论坛

 找回密码
 立即注册
查看: 2804|回复: 10

学习C语言中的遇到的问题,求助

[复制链接]
发表于 2012-6-6 12:44:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在学习网站上的一个题目是用C写出用*画图,第一行一个*,第二行两个 *,依次下去,到第六行是六个 * ,刚刚在学C,想了一晚上的时间写出这样的程序:
#include <stdio.h>
void main()
{
int i=1,k;
do
{
  k=1;
  if (k<=i)
  {
   printf("*");
   k++;
  }
  else
  {
   printf("\n");
  }
  i++;
}
while (i<=6);
}

可是程序执行时只能打出一行的六个 * 请哪个老师帮忙指点下吧。。。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-6 15:07:35 | 显示全部楼层
#include <stdio.h>
void main()
{
        int i,k;
        for (i=1;i<=6;i++)
        {
                for (k=1;k<=i;k++)
                {
                        printf("*");
                }
                printf("\n");
        }
}
//程序执行第一次,外循环 i=1,内循环 K=1,执行一次循环,打印一个*,外循环打印一个换行,第二次 外循环i=2,内循环K=1,打印一个*,在进行内循环,k=2,在打印一个*,内循环结束,执行printf("\n"),打印换行,在进行第三次,i=3,k从1开始,执行三次,答应三个“*”,再执行外循环,打印换行,以此类推,直到i=6,内循环执行6次。我觉得应该说明白了。。。
不行就单步调试。。。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-6-6 18:24:16 | 显示全部楼层

谢谢楼上的朋友,这程序写出来就看的比较明白了,我用你的方法试过了,可以成功,只是我没有找到我的写法出错在哪里了,这样心里没有头绪呀

#include <stdio.h>

void main()
{
        int i=1,k;
        do
        {
                k=1;
                if (k<=i)
                {
                        printf("*");
                        k++;
                }
                else
                {
                        printf("\n");
                }
                i++;
        }
        while (i<=6);
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-6 18:40:12 | 显示全部楼层
dubug 发表于 2012-6-6 18:24
谢谢楼上的朋友,这程序写出来就看的比较明白了,我用你的方法试过了,可以成功,只是我没有找到我的写法 ...

单步调试会非常的明显,在函数的执行部分,k=1,每循环一次都被赋值一次,这样if就一直成立,之后就是出来六颗星
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-6 18:54:35 | 显示全部楼层
  1. #include <stdio.h>
  2. void main()
  3. {
  4.       int k,i=1;
  5.         do
  6.      {
复制代码
应该达到了你想要的结果!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-6 18:55:20 | 显示全部楼层
#include <stdio.h>
void main()
{
        int k,i=1;
    do
        {
            k=1;
            while(k<=i)
                {
                       
                        printf("*");
                        k++;
                }
                printf("\n");
                i++;
        }
   while (i<=6);
}
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-6-6 19:08:59 | 显示全部楼层
akon 发表于 2012-6-6 18:55
#include
void main()
{

经过修改与单步调试,终于改好了。。。
#include <stdio.h>

void main()
{
        int i=1,k;
        do
        {
                k=1;
                while (k<=i)
                {
                        printf("*");
                        k++;
                }
                while (k>i)
                {
                        printf("\n");
                        i++;
                }
        }
        while (i<=6);
}
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-6-6 19:11:51 | 显示全部楼层
akon 发表于 2012-6-6 18:55
#include
void main()
{

谢谢,呵呵,经过改过的,我发表了以后看到竞然和你的一样呀。。。太高兴了。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-6 19:30:35 | 显示全部楼层
dubug 发表于 2012-6-6 19:11
谢谢,呵呵,经过改过的,我发表了以后看到竞然和你的一样呀。。。太高兴了。

客气~,,,,,,:lol
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-6 21:57:45 | 显示全部楼层
#include <stdio.h>

int main()
{
        char str[] = {"******"};
        int i;
        for(i=0; i < 6; i++)
        {
                printf("%*.*s\n", i + 1, i + 1, str);
        }
        return( 0 );
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-6 21:58:16 | 显示全部楼层
楼主看看我的行不
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-13 16:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表