简单的C问题

时间:2011-03-07 19:28:36

标签: c

我刚刚开始学习C,我正在使用的书中有一个问题是:
使用嵌套循环生成以下模式:

$
$$
$$$
$$$$
$$$$$

当然,我被卡住了。

#include <stdio.h>
int main (void)
{
    int i, j;
    char ch = '$';
    for(i = 1; i < 5; i++)
    {
        for(j = 1; j <=5; j++)
           printf("%c", ch);
        printf("\n");
    }
    return 0;
}

8 个答案:

答案 0 :(得分:4)

您需要做的事情的逻辑非常简单:您需要打印5行,其中i行已经i '$'

伪代码看起来像这样:

for any i from 1 to 5:
  print '$' times i
  print newline

print '$' times i可能如下所示:

for any j from 1 to i:
  print '$'

使用C语法重写它不应该太难。

答案 1 :(得分:2)

由于用代码回答这个问题是作弊,这里有一些提示:

  • 对于您要打印的每一行,您希望打印一些等于行号的$ s。
  • printf除非您告诉它,否则不会添加换行符,因此对printf的连续调用可以将字符放在同一行上。

如果您的代码不起作用,请将其发布。我们很乐意帮助您解决问题。

修改:根据您的示例代码,您遇到了一些非常小的问题。

首先,在您的外部循环中,您需要<=而不是<。这会让你达到5.其次,在你的内循环中,j <= 5应该是j <= i。虽然我会编写内部循环,其中j从0开始,< i,这只是一种风格偏好。

如果您不确定,printf("%c", ch)也相当于printf("$")

作为参考,这是我的第一个答案。它与你的非常相似:

#include <stdio.h>

int main()
{
    int line, dollar;
    for (line=1; line <= 5; line++)
    {
        for (dollar = 0; dollar < line; dollar++)
        {
            printf ("$");
        }
        printf ("\n");
    }
    return 0;
}

答案 2 :(得分:0)

  • 你的外圈需要从1开始 到5,它只从1到4运行 书面。 for( i = 1; i <= 5; i++ )
  • 内部循环需要从0运行到i-1(如果您愿意,则需要1到i)。 for( j = 0; j < i; i++ )
  • 变量ch是多余的,因为它永远不会改变,你可以在printf()调用中使用文字字符串直接打印字符,或者更好地使用putchar()打印字符常量。
  • 解决这些简单问题的最佳方法是在调试器中执行代码并观察代码流以及变量如何随每一步而变化。

答案 3 :(得分:0)

#include <stdio.h>
int main (void)
{
int i, j;
char ch = '$';

for(i = 1; i < 5; i++)
{
   for(j = 1; j <=i; j++)
      printf("%c", ch);
   printf("\n");
}
 return 0;

}

描述: 第一个for循环用于打印行.. 和嵌套for循环是for&#39; $&#39;必须打印

答案 4 :(得分:0)

请尝试此代码,如果您想要一般化(意味着用户可以提供任何数字来打印模式,您可以从用户那里获取输入)。比如n然后替换为(row = 1; row&lt; = 5; row ++)为for(row = 1; row&lt; = n; row ++)

#include<stdio.h>
    int main()
    {
       int row, col;
       for(row = 1; row <=5; row++)
       {
           for(col = 0; col < row; col++)
              printf("$");
           printf("\n");
       }
       return 0;
    }

答案 5 :(得分:-1)

#include <stdio.h>
int main (void)
{
    for (int i = 1; i <= 6; i++)
    {
        for (int j = 1; j <= 6; j++)
        {
            if (i - j >= 0)
                printf("$");
        }
        printf("\n");
    }
 return 0;
}

答案 6 :(得分:-2)

这很简单,为什么呢,因为在它里面你只想以行和列的形式打印,而且应该按顺序递增。在第一个for循环中,您将打印行并使用包含for循环,您需要为列执行此操作。

答案 7 :(得分:-2)

首先,一些关于循环的基本内容是 - 当外循环执行一次时,内循环将完成其整个迭代。 在你的情况下 - 对于(i = 1; i&lt; 5; i ++)//对于i的每个变化值的外部循环,例如i = 1,2,3,4 内循环(j = 1; j <= 5; j ++)//将完成整个迭代(即5次因为你使用j = 1到j <= 5。

现在你问题的问题在于 -

for(i = 1; i < 5; i++) //here is problem this will run only 4 time because i<5, and you require 5 times as according to your output given,replace it with i<=5 
{
    for(j = 1; j <=5; j++) //here is also because you are using j<=5, as I mention above it will run 5 times for each value of i (in outer loop),so replace j<=5 by j<=i, because for each change value of i, you require same time execution of inner loop to print the value of "ch" variable) 
       printf("%c", ch);
    printf("\n");
}

所以这里是修改后的代码

int main(){

// your code goes here
int i, j;
char ch = '$';
for(i = 1; i < =5; i++) // outer loop
{
    for(j = 1; j <=i; j++) // inner loop
       printf("%c", ch);
    printf("\n"); // to move on next line after the complition of inner loop 
}
return 0;

}

这可能对你有帮助。