是 x=;而if(d<)在c语言中使用无效
Is x=; and if(d<) invalid to use in c language
本题最后有c语言的中点画圆算法。看到代码中有如下两条语句
x=;
if(d<);
在线程序和我们的书中也有,所以基本上我认为编译器可能会自动将它们初始化为 0(零),所以我在作业中编写了相同的代码。但是老师说这是错误的,确实它在 Turbo C++ 编译器中给出了 Invalid Expression。所以我想知道是不是错了,为什么到处都是这样写。
代码如下:
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
void main() {
int gd=DETECT,gm;
int i,r,x,y,xc,yc;
float d;
clrscr();
initgraph(&gd,&gm,"c:\tc\");
printf("Enter Radius\n");
scanf("%d",&r);
printf("Enter Center of circle\n");
scanf("%d",&xc);
scanf("%d",&yc);
d=1.25-r;
x=;
y=r;
do {
if(d<) {
x=x+1;
d=d+2*x+1;
} else {
x=x+1;
y=y-1;
d=d+2*x-2*y+10;
}
putpixel(xc+x,yc+y,5);
putpixel(xc-y,yc-x,5);
putpixel(xc+y,yc-x,5);
putpixel(xc-y,yc+x,5);
putpixel(xc+y,yc+x,5);
putpixel(xc-x,yc-y,5);
putpixel(xc+x,yc-y,5);
putpixel(xc-x,yc+y,5);
} while(x<y);
getch();
}
也是上面代码的link:
Mid Point Circle Drawing Algorithm Code in c Language
请帮帮我。谢谢
不,这些表达式在语法上无效。
书籍有拼写错误,fishy-looking 在线书籍的复制品也有拼写错误。那个图像看起来像细胞 phone 照片什么的,真的很可疑。
网上说的不一定是真的1.
1 网上一位匿名陌生人说。 :)
您提供的link上的代码明显被篡改了
正确的代码在这里:
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <math.h>
void main()
{
int gd = DETECT, gm;
int r, x, y, p, xc = 320, yc = 240;
initgraph(&gd, &gm, "C:\TC\BGI");
cleardevice();
printf("Enter the radius ");
scanf("%d", &r);
x = 0;
y = r;
putpixel(xc + x, yc - y, 1);
p = 3 - (2 * r);
for (x = 0; x <= y; x++)
{
if (p<0)
{
y = y;
p = (p + (4 * x) + 6);
}
else
{
y = y - 1;
p = p + ((4 * (x - y) + 10));
}
putpixel(xc + x, yc - y, 1);
putpixel(xc - x, yc - y, 2);
putpixel(xc + x, yc + y, 3);
putpixel(xc - x, yc + y, 4);
putpixel(xc + y, yc - x, 5);
putpixel(xc - y, yc - x, 6);
putpixel(xc + y, yc + x, 7);
putpixel(xc - y, yc + x, 8);
}
getch();
closegraph();
}
注意:此处的代码仅适用于古董 Turbo C。对于其他平台,需要进行调整。
问题什么是变量x的存储class?
ans. 局部变量,即块语句中使用的 var x(如您在 main() 中使用的那样)属于"AUTO" 在 C.
中存储 class
还有一个问题 :-
现在,您想到的问题是,自动变量初始化为**的默认值是多少??**
Ans. 初始化为“垃圾值”。
在 x 的声明中:-
int i,r,x,y,xc,yc;
注:- x初始化为垃圾值.
但是你写,
x=;
注:-既不是声明也不是初始化语句,
但编译器无法理解 Incomplete statement,因此会给出错误:
无效表达式
现在,来到你的下一个疑问:-
if(d<);
它也是一个无效的表达式,因为如果您计算的话,只需考虑一般数学:-
如果 2 大于 ______??
你能想象空白space中的值吗??
是的,你可以,但是,编译器(或计算机)不能:)
本题最后有c语言的中点画圆算法。看到代码中有如下两条语句
x=;
if(d<);
在线程序和我们的书中也有,所以基本上我认为编译器可能会自动将它们初始化为 0(零),所以我在作业中编写了相同的代码。但是老师说这是错误的,确实它在 Turbo C++ 编译器中给出了 Invalid Expression。所以我想知道是不是错了,为什么到处都是这样写。
代码如下:
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
void main() {
int gd=DETECT,gm;
int i,r,x,y,xc,yc;
float d;
clrscr();
initgraph(&gd,&gm,"c:\tc\");
printf("Enter Radius\n");
scanf("%d",&r);
printf("Enter Center of circle\n");
scanf("%d",&xc);
scanf("%d",&yc);
d=1.25-r;
x=;
y=r;
do {
if(d<) {
x=x+1;
d=d+2*x+1;
} else {
x=x+1;
y=y-1;
d=d+2*x-2*y+10;
}
putpixel(xc+x,yc+y,5);
putpixel(xc-y,yc-x,5);
putpixel(xc+y,yc-x,5);
putpixel(xc-y,yc+x,5);
putpixel(xc+y,yc+x,5);
putpixel(xc-x,yc-y,5);
putpixel(xc+x,yc-y,5);
putpixel(xc-x,yc+y,5);
} while(x<y);
getch();
}
也是上面代码的link:
Mid Point Circle Drawing Algorithm Code in c Language
请帮帮我。谢谢
不,这些表达式在语法上无效。
书籍有拼写错误,fishy-looking 在线书籍的复制品也有拼写错误。那个图像看起来像细胞 phone 照片什么的,真的很可疑。
网上说的不一定是真的1.
1 网上一位匿名陌生人说。 :)
您提供的link上的代码明显被篡改了
正确的代码在这里:
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <math.h>
void main()
{
int gd = DETECT, gm;
int r, x, y, p, xc = 320, yc = 240;
initgraph(&gd, &gm, "C:\TC\BGI");
cleardevice();
printf("Enter the radius ");
scanf("%d", &r);
x = 0;
y = r;
putpixel(xc + x, yc - y, 1);
p = 3 - (2 * r);
for (x = 0; x <= y; x++)
{
if (p<0)
{
y = y;
p = (p + (4 * x) + 6);
}
else
{
y = y - 1;
p = p + ((4 * (x - y) + 10));
}
putpixel(xc + x, yc - y, 1);
putpixel(xc - x, yc - y, 2);
putpixel(xc + x, yc + y, 3);
putpixel(xc - x, yc + y, 4);
putpixel(xc + y, yc - x, 5);
putpixel(xc - y, yc - x, 6);
putpixel(xc + y, yc + x, 7);
putpixel(xc - y, yc + x, 8);
}
getch();
closegraph();
}
注意:此处的代码仅适用于古董 Turbo C。对于其他平台,需要进行调整。
问题什么是变量x的存储class?
ans. 局部变量,即块语句中使用的 var x(如您在 main() 中使用的那样)属于"AUTO" 在 C.
中存储 class还有一个问题 :-
现在,您想到的问题是,自动变量初始化为**的默认值是多少??**
Ans. 初始化为“垃圾值”。
在 x 的声明中:-
int i,r,x,y,xc,yc;
注:- x初始化为垃圾值.
但是你写,
x=;
注:-既不是声明也不是初始化语句,
但编译器无法理解 Incomplete statement,因此会给出错误:
无效表达式
现在,来到你的下一个疑问:-
if(d<);
它也是一个无效的表达式,因为如果您计算的话,只需考虑一般数学:- 如果 2 大于 ______??
你能想象空白space中的值吗?? 是的,你可以,但是,编译器(或计算机)不能:)