c语言问题,总是陷入死循环,??
#include<stdio.h>voidmain(){inti,j,k,n;while(n!='a'){printf("请输入一个奇数:");scanf("&d",&n...
#include<stdio.h>
void main()
{
int i,j,k,n;
while(n!='a')
{
printf("请输入一个奇数:");
scanf("&d",&n);
if(n%2==0)
{
printf("您输入的是偶数,请输入一个奇数:");
continue;
}
for(i=1;i<=(n+1)/2;i++)
{
for(j=0;j<=(n+1)-2*i;j++)
{
printf(" ");
}
for(k=1;k<=2*i-1;k++)
{
printf("* ");
}
printf("\n");
}
for(i=1;i<=(n-1)/2;i++)
{
for(j=0;j<=2*i;j++)
{
printf(" ");
}
for(k=1;k<=n-2*i;k++)
{
printf("* ");
}
printf("\n");
}
scanf("%d",&n);
}
}
这个程序好像所有的for循环都不执行,如果输入的奇数,只会重复“请您输入一个奇数”,如果是偶数,就只会重复,“您输入的是一个偶数,请输入一个奇数”,这是怎么回事,???? 展开
void main()
{
int i,j,k,n;
while(n!='a')
{
printf("请输入一个奇数:");
scanf("&d",&n);
if(n%2==0)
{
printf("您输入的是偶数,请输入一个奇数:");
continue;
}
for(i=1;i<=(n+1)/2;i++)
{
for(j=0;j<=(n+1)-2*i;j++)
{
printf(" ");
}
for(k=1;k<=2*i-1;k++)
{
printf("* ");
}
printf("\n");
}
for(i=1;i<=(n-1)/2;i++)
{
for(j=0;j<=2*i;j++)
{
printf(" ");
}
for(k=1;k<=n-2*i;k++)
{
printf("* ");
}
printf("\n");
}
scanf("%d",&n);
}
}
这个程序好像所有的for循环都不执行,如果输入的奇数,只会重复“请您输入一个奇数”,如果是偶数,就只会重复,“您输入的是一个偶数,请输入一个奇数”,这是怎么回事,???? 展开
展开全部
给你改了一下更加简洁清晰,我运行过了,结果是对的,看看是不是满足你的要求
#include<stdio.h>
void main()
{
int i,j,k,n;
printf("请输入一个奇数:");
scanf("%d",&n); //先输入一个数
printf("\n");
if(n!=0) //判断是否为0,不为0则继续执行,你这里原来是用的while就造成了死循环
{
while(n%2==0) //判断奇偶,若为偶数则循环提示重新输入
{
printf("您输入的是偶数,请输入一个奇数:");
scanf("%d",&n);
}
for(i=1;i<=(n+1)/2;i++)
{
for(j=0;j<=(n+1)-2*i;j++) printf(" ");
for(k=1;k<=2*i-1;k++) printf("* ");
printf("\n");
}
for(i=1;i<=(n-1)/2;i++)
{
for(j=0;j<=2*i;j++) printf(" ");
for(k=1;k<=n-2*i;k++) printf("* ");
printf("\n");
} //以上输出图形的两个for循环帮你去掉了几个不必要的大括号,这样看起来更简洁
}
}
#include<stdio.h>
void main()
{
int i,j,k,n;
printf("请输入一个奇数:");
scanf("%d",&n); //先输入一个数
printf("\n");
if(n!=0) //判断是否为0,不为0则继续执行,你这里原来是用的while就造成了死循环
{
while(n%2==0) //判断奇偶,若为偶数则循环提示重新输入
{
printf("您输入的是偶数,请输入一个奇数:");
scanf("%d",&n);
}
for(i=1;i<=(n+1)/2;i++)
{
for(j=0;j<=(n+1)-2*i;j++) printf(" ");
for(k=1;k<=2*i-1;k++) printf("* ");
printf("\n");
}
for(i=1;i<=(n-1)/2;i++)
{
for(j=0;j<=2*i;j++) printf(" ");
for(k=1;k<=n-2*i;k++) printf("* ");
printf("\n");
} //以上输出图形的两个for循环帮你去掉了几个不必要的大括号,这样看起来更简洁
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
void main()
{
int i,j,k,n;
n=1;//要先把一个值付给n
while(n!=0)//'a') //n是整数,最好跟整数进行比较
{
printf("请输入一个奇数:");
scanf("%d",&n); //%d而不是&d
if(n%2==0)
{
printf("您输入的是偶数,请输入一个奇数:");
continue;
}
for(i=1;i<=(n+1)/2;i++)
{
for(j=0;j<=(n+1)-2*i;j++)
{
printf(" ");
}
for(k=1;k<=2*i-1;k++)
{
printf("* ");
}
printf("\n");
}
for(i=1;i<=(n-1)/2;i++)
{
for(j=0;j<=2*i;j++)
{
printf(" ");
}
for(k=1;k<=n-2*i;k++)
{
printf("* ");
}
printf("\n");
}
scanf("%d",&n);
}
}
void main()
{
int i,j,k,n;
n=1;//要先把一个值付给n
while(n!=0)//'a') //n是整数,最好跟整数进行比较
{
printf("请输入一个奇数:");
scanf("%d",&n); //%d而不是&d
if(n%2==0)
{
printf("您输入的是偶数,请输入一个奇数:");
continue;
}
for(i=1;i<=(n+1)/2;i++)
{
for(j=0;j<=(n+1)-2*i;j++)
{
printf(" ");
}
for(k=1;k<=2*i-1;k++)
{
printf("* ");
}
printf("\n");
}
for(i=1;i<=(n-1)/2;i++)
{
for(j=0;j<=2*i;j++)
{
printf(" ");
}
for(k=1;k<=n-2*i;k++)
{
printf("* ");
}
printf("\n");
}
scanf("%d",&n);
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对啊,一楼说得对,可是他还是没说详细(PS:不好意思一楼),
如果您的本意是输入“a”得到循环结束的话》》那么只有输入97才行,记不住了,或许是98.这是a对应的ASCLI码。废话一点:就是当您输入a的时候,并不输入到内存中"a",而是: “a/0”》》》关于它的详细您可以到百度去查,是有的。
希望我的回答可以帮到您》》》》
如果您的本意是输入“a”得到循环结束的话》》那么只有输入97才行,记不住了,或许是98.这是a对应的ASCLI码。废话一点:就是当您输入a的时候,并不输入到内存中"a",而是: “a/0”》》》关于它的详细您可以到百度去查,是有的。
希望我的回答可以帮到您》》》》
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while(n!='a') 这个的问题```除非你输入的是a的ascii码值否则永远在里面绕````
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询