首页 > 解决方案 > 用于打印正方形的 C 命令行参数

问题描述

这段代码应该打印出一个像这样的正方形,它们之间没有空行。我正在尝试使用命令行参数来确定正方形的大小。似乎只是没有读取命令行参数,只是从 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;                                                                      
}   

标签: cfor-loopif-statementcommand-line

解决方案


n++;在循环中执行for (colm = 0; colm <= n; colm++){会使达到上限逃逸,并且循环将继续直到发生溢出。

你应该做的是打印rowcolm不改变的总和n

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

推荐阅读