入门级c语言,只学过几个基础函数,自定义函数,for,while循环怎么解决下面问题
long it (int n);
int main(void)
{
int m,j;
int i=1;
long re;
while(i==1)
{
printf("Pleast enter a number (q to quit):");
i = (scanf("%d",&m)==1);
//printf("%d\n",i);
for (j = 0; i == 1, j !=1; ++j);
{
re=it(m);
printf("It's square is %ld\n",re);
}
}
printf("Thank you for your test!\n");
return 0;
}
long it (int n)
{
double r = 1;
int x;
x =n*n;
r = x;
return r;
}```
输入几个数字回车之后结果没有问题,但是打印q的时候for循环仍然会再次打印一遍,可是输入q之后,i不是已经等于0了吗,循环条件为假,不应该跳出循环吗,但是它仍然会又打印一遍for循环中的printf。怎么操作,求解
你这个就是输入一个数,然后输出平方吧,把i改成条件语句,j的循环也不要了
for (j = 0; i == 1, j !=1; ++j);
这句代码后面有个分号,导致for循环结束,下面大括号中的代码百分百执行。
还有,for语句中,中间最好不要用“,”运算符,会有问题。
希望对你有所帮助~
【以下回答由 GPT 生成】
问题的原因是在for循环的循环条件中,使用了逗号运算符来连接两个条件表达式。逗号运算符会先计算左边的表达式,然后忽略其结果,再计算右边的表达式。因此,即使左边的条件i==1为假,右边的条件j!=1仍然会执行。
为了解决这个问题,你可以将两个条件用逻辑与运算符&&连接起来,这样只有当两个条件都为真时,循环才会执行。修改代码如下:
#include <stdio.h>
long it(int n);
int main(void)
{
int m, j;
int i = 1;
long re;
while (i == 1)
{
printf("Please enter a number (q to quit):");
i = (scanf("%d", &m) == 1);
for (j = 0; i == 1 && j != 1; ++j)
{
re = it(m);
printf("It's square is %ld\n", re);
}
}
printf("Thank you for your test!\n");
return 0;
}
long it(int n)
{
double r = 1;
int x;
x = n * n;
r = x;
return r;
}
修改后的代码使用逻辑与运算符来连接循环条件,确保只有当输入的字符不为"q"且j不等于1时,for循环才会执行。这样,当输入"q"时,循环条件为假,程序会跳出循环,并打印"Thank you for your test!"。
【相关推荐】