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;
外循环 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 输出的是三个数
————
为什么啊
------------
请看问题补充解答一下,谢谢
追答这个可能不是循环的问题了,给我一下你解题的思路,我调试一下,看是哪一个步骤出问题了,把题目一起发了吧
追问我程序的思路就是图中的连线所指啊,当是偶数时,路线如下先右后下→↓
当时奇数时,先上后左↑←
*******************************************
我又看了下,
printf是一个强大的东西,哪儿的数据不对就把那个数据打出来看看,是不是你预期的数据,就像觉得i和j不对就把这两个都打出来,看看打印的和自己预想的一不一样,调试是程序员不可或缺的一项技能,祝安好
本回答被提问者采纳 参考技术C 小于不能取到那个值以上是关于C语言中for循环报错的主要内容,如果未能解决你的问题,请参考以下文章