【问题标题】:C command line arguments for printing square用于打印正方形的 C 命令行参数
【发布时间】:2021-03-18 16:51:45
【问题描述】:

这段代码应该打印出一个像这样的正方形,它们之间没有空行。我正在尝试使用命令行参数来确定正方形的大小。它似乎只是没有读取命令行参数,只是从 1 开始计数,直到我按下 CTRL-C 来停止它。

012345

123456

234567

345678

#include <stdio.h>                                                               
#include <stdlib.h>                                                              
                                                                             
                                                                             
int main(int argc, char *argv[])                                                 
{                                                                                
 int row;                                                                       
 int colm;                                                                      
                                                                             
 // Check for a command line argument.                                          
 if(argc < 2){                                                                  
  printf("usage: box size");                                                   
 }                                                                              
 else{                                                                          
                                                                             
  int n = atoi(argv[1]);                                                       
                                                                             
  for (row = 0; row <= n; row++){                                              
  n = row;                                                                   
  for (colm = 0; colm <= n; colm++){                                         
    printf("%d ",n);                                                         
    n++;                                                                     
  }                                                                          
  printf("\n");                                                              
 }                                                                            
}                                                                              
return 0;                                                                      
}   

【问题讨论】:

  • 请将if(argc &lt; 1) 更改为if(argc &lt; 2)。可执行文件名是第一个参数argv[0]。此外,要 printf n 行将 for (row = 0; row &lt;= n; row++) 更改为 for (row = 0; row &lt; n; row++)
  • 感谢您的建议...它帮助了我,谢谢

标签: c for-loop if-statement command-line


【解决方案1】:

在循环for (colm = 0; colm &lt;= n; colm++){ 中执行n++; 会使上限转义无法到达,并且循环将继续进行,直到发生溢出为止。

您应该做的是打印rowcolm 的总和而不更改n

for (row = 0; row <= n; row++){
  for (colm = 0; colm <= n; colm++){
    printf("%d ",row + colm);
  }
  printf("\n");
}

【讨论】:

    猜你喜欢
    • 2016-01-22
    • 1970-01-01
    • 2021-03-12
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2020-05-05
    • 2016-05-01
    相关资源
    最近更新 更多