如何解决如何根据主要参数打印正方形
所以我有这段代码。在这个试验中,我的主要参数是[“ 2”]。
#include <stdlib.h>
#include <stdio.h>
void my_square(int x,int y) {
if(x == 5 && y == 3){
printf("o---o\n");
printf("| |\n");
printf("o---o\n");
}
if(x == 5 && y == 1){
printf("o---o\n");
}
if(x == 1 && y == 1){
printf("o\n");
}
if(x == 1 && y == 5){
printf("o\n");
printf("|\n");
printf("|\n");
printf("|\n");
printf("o\n");
}
if(x == 4 && y == 4){
printf("o--o\n");
printf("| |\n");
printf("| |\n");
printf("o--o\n");
}
if(x == 2 && y == 2){
printf("oo\noo\n");
}
if(x == 2 && y == 0){
printf("");
}
}
int main(int argc,char *argv[]){
if(atoi(argv[1]) && atoi(argv[2])){
my_square(atoi(argv[1]),atoi(argv[2]));
}
if( atoi(argv[1]) && atoi(argv[2]) == '\n'){
my_square(atoi(argv[1]),0);
}
return 0;
}
Tester 对于输入[“ 2”],输出应为空白。但是我不知道如何编写代码来解决这个问题。关于如何执行此操作的任何想法?预先谢谢你。
解决方法
atoi(argv[2]) == '\n'
不是判断第二个参数是否被忽略的正确方法,您需要为其提供默认值。如果仅提供一个参数,则argv[2]
将为NULL
,并且您不能将其传递给atoi()
。另外,'\n'
等效于10
-为什么您希望atoi()
返回一个不存在的值?
要知道提供了多少个参数,请检查argc
。
int main(int argc,char *argv[]) {
if (argc == 2) {
my_square(atoi(argv[1]),0);
} else if (argc > 2) {
my_square(atoi(argv[1]),atoi(argv[2]));
} else {
printf("Usage: %s x [y]\n",argv[0]);
}
return 0;
}
在my_square()
中,如果要打印包含空格的行,请使用:
if (x == 2 && y == 0) {
printf(" \n");
}
printf("")
根本不打印任何内容。
您还应该在else if
中使用my_square()
,因为所有条件都是互斥的。找到匹配项后,检查所有其余组合就没有意义了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。