我需要一个程序,该程序要求一个基于输入号的整数打印出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();
}
我认为老师提到了添加开关案例...?
我提出了这个解决方案,用几个词来检查用户输入的数字类型,如果是> 0,则不必担心它是float,因为您是因为您已经定义了一个整数类型,并且零件不整数被自动进行。
#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;
}
您可以简单地使用无限循环,即while(1)
循环,条件为break
。假设您希望用户输入正整数并丢弃负数和字母,您可以以以下方式执行此操作:
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 Numbern");
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");
}
}