C语言中for循环报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中for循环报错相关的知识,希望对你有一定的参考价值。

C语言中for循环报错我想用for循环输入点坐标,可是报错,不知道这么写怎么改
#include<stdio.h>
#include<math.h>
int main(void)

struct point
float x;
float y;
float z;
p1,p2,p3;
printf("球心为原点,半径20.\n");
printf("输入点坐标。\n");
int i;
for(i=1;i<4;i++)
printf("点pi(x,y,z)=");
scanf("%f,%f,%f",&pi.x,&pi.y,&pi.z);//这一行报错

return 0;

1、在c文件中是不能在循环里定义变量的(for (int i = 1; i< 4 ; i++))这样编译器会报错,但是.cpp文件可以,c语言不支持循环内定义变量,c++支持这种定义。初学者需要注意一下。

2、可以参考下图修改:

参考技术A #include<stdio.h>
#include<math.h>
int main(void)

struct point 

float x;
float y;
float z;
pi,p2,p3;                    //这里,把p1 改成 pi 即可。
printf("球心为原点,半径20.\\n");
printf("输入点坐标。\\n");
int i;
for(i=1;i<4;i++)

printf("点pi(x,y,z)=");
scanf("%f,%f,%f",&pi.x,&pi.y,&pi.z);//这一行报错

return 0;

追问

这样我后面的p2,p3都没有读取到数据

追答#include<stdio.h>
#include<math.h>
int main(void)

    struct point 
    
        float x;
        float y;
        float z;
    p[4];                    //这里,改为数组 p。
    printf("球心为原点,半径20.\\n");
    printf("输入点坐标。\\n");
    int i;
    for(i=1;i<4;i++)
    
    printf("点pi(x,y,z)=");
    scanf("%f,%f,%f",&p[i].x,&p[i].y,&p[i].z);//使用数组就可以了。 
    
    return 0;

本回答被提问者采纳

帮我解释下C语言里for循环的条件表达式中小于和小于等于的区别

—————————————————————————
_____________________________________________
以下程序是我按照此图中规律写的,小于和小于等于改好了
—————————————————————————
#include<stdio.h>#define row 5 //行数#define col 5 //列数
void main() int a[row][col]; int i,j,m=0,right=row-1; for(i=0;i<row;i++) if(i%2==0) //右下 for(j=0;j<i;j++) m++; a[right-i][j]=m; for(j=right-i;j<=right;j++) m++; a[j][i]=m; else //上左 for(j=right;j>right-i;j--) m++; a[j][i]=m; for(j=i;j>=0;j--) m++; a[right-i][j]=m;

for (i =0;i<row;i++) for (j=0;j<col;j++) //C的标准输入输出库(stdio.h)的格式比较好用 printf("%2d ",a[i][j]); printf("\n");
printf("\n"); for (i =0;i<2;i++) for (j =0;j<i;j++) printf("%2d ",j); printf("\n"); printf("\n");
-----------------------------------------------------
上图是正确输出的图示
-----------------------------------------------------

*******************************************
我又研究了一下,图示中5 6 7里的7应该是
接下来的这个for(j=right-i;j<=right;j++)循环输出的
*******************************************
for(i=0;i<row;i++) if(i%2==0) //右下 for(j=0;j<i;j++) m++; a[right-i][j]=m; for(j=right-i;j<=right;j++) m++; a[j][i]=m;

参考技术A 编程语言里 i= 0 的换 用小于 i=1 用 <=追问

外循环 i=0
i 从 0 开始
内循环
j 也从 0 开始
当外循环 i=2 时
j=0; j<i 也就是 j<2
这时候输出的是两个数啊
但是程序输出的是 5 6 7 三个数
我也是想要输出三个数
我想的是 j<=i 也就是 j<=2 才输出三个数
但是正确的却是 j<i j<2 输出的是三个数
————
为什么啊
------------

参考技术B 问题不是很清晰啊,想要问什么呢,是for括号里面的那个;j<=right吗,还是什么其他的追问

请看问题补充解答一下,谢谢

追答

这个可能不是循环的问题了,给我一下你解题的思路,我调试一下,看是哪一个步骤出问题了,把题目一起发了吧

追问

我程序的思路就是图中的连线所指啊,当是偶数时,路线如下先右后下→↓

当时奇数时,先上后左↑←

*******************************************

我又看了下,

追答

printf是一个强大的东西,哪儿的数据不对就把那个数据打出来看看,是不是你预期的数据,就像觉得i和j不对就把这两个都打出来,看看打印的和自己预想的一不一样,调试是程序员不可或缺的一项技能,祝安好

本回答被提问者采纳
参考技术C 小于不能取到那个值

以上是关于C语言中for循环报错的主要内容,如果未能解决你的问题,请参考以下文章

C语言中for的双循环怎么用

C语言中的for循环

C语言中退出for循环的方法?

C语言for循环

c语言中的循环的嵌套是怎么运行的

C语言中:两个for循环嵌套使用有什么作用?