Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C:如何在这个星号方块打印程序中添加重试功能_C - Fatal编程技术网

C:如何在这个星号方块打印程序中添加重试功能

C:如何在这个星号方块打印程序中添加重试功能,c,C,我需要一个要求整数的程序&根据输入的数字打印出一个emtpy星号方块。如果输入无效,我需要它再次尝试询问 . 这就是我到目前为止所做的(它已经可以基于一个可变数字生成一个平方),我只需要增强它,这样它就会再次询问用户是否太笨而无法输入整数 #include <stdio.h> int Loops() { int s, e, z; printf("Input number \n"); scanf("%d", &s); for(e = 0; e

我需要一个要求整数的程序&根据输入的数字打印出一个emtpy星号方块。如果输入无效,我需要它再次尝试询问 . 这就是我到目前为止所做的(它已经可以基于一个可变数字生成一个平方),我只需要增强它,这样它就会再次询问用户是否太笨而无法输入整数

#include <stdio.h>
int Loops() {
    int s, e, z; 
    printf("Input number \n");
    scanf("%d", &s);
    for(e = 0; e < s; e++) {
        for(z = 0; z < s; z++) {   
            if(e==0 || e==s-1 || z==0 || z==s-1)
                printf("*");
            else
                printf(" ");
        }
        printf("\n");
    }
}

int main() { 
   Loops();
}
#包括
int循环(){
int s,e,z;
printf(“输入编号\n”);
scanf(“%d”和“&s”);
对于(e=0;e

我想老师提到了添加一个开关盒…?

我提出了这个解决方案,用几句话我检查了用户输入的数字类型,如果它大于0,那么运行,你不必担心它是浮点,因为你已经定义了一个整数类型,而非整数的部分是自动定位的

#include <stdio.h>
int Loops() {
    int s, e, z;
    printf("Input number \n");
    scanf("%d", &s);
    if (s > 0 ) {
        for (e = 0; e < s; e++) {
            for (z = 0; z < s; z++) {
                if(e == 0 || e == s - 1 || z == 0 || z == s - 1)
                    printf("*");
                else
                    printf(" ");
            }
            printf("\n");
        }
    } 
    else
        Loops();
}

int main() {
   Loops();

   return 0;
}
#包括
int循环(){
int s,e,z;
printf(“输入编号\n”);
scanf(“%d”和“&s”);
如果(s>0){
对于(e=0;e
您可以简单地使用无限循环,即
而(1)
循环的条件是
中断
。假设您希望用户输入正整数,同时丢弃负数和字母,您可以通过以下方式执行此操作:

int Loops() {
int s, e, z;

while(1)
{
    printf("Input number \n");
    e = scanf("%d", &s);
    if((s <= 0) || (e != 1))
    {
        printf("Please Enter Non-negaitve Number\n");
        getchar(); //This is to consume the '\n'
    }
    else
    {
        break;
    }
}

for(e = 0; e < s; e++) {
    for(z = 0; z < s; z++) {
        if(e==0 || e==s-1 || z==0 || z==s-1)
            printf("*");
        else
            printf(" ");
    }
    printf("\n");
  }
}
int循环(){
int s,e,z;
而(1)
{
printf(“输入编号\n”);
e=scanf(“%d”&s);

如果((s循环通常有助于再次执行某些操作。如果您想验证您读取的输入,那么它有助于了解可能返回的内容。并且知道如果失败,它将把输入保留在输入缓冲区中。因此,我要做的是,这是一个家庭作业,而不是?我们通常不喜欢在这里回答家庭作业,除非您有任何问题。)y特定的编码问题至少给出了一个解决问题的尝试。到目前为止,我还没有看到使用
开关盒
if
或甚至检查
s
来解决任何问题的尝试……如果用户输入
a
B
或任何其他字母表,那么?