C 语言:数组一题的小难点,请高手帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/07/04 16:37:54
打印y=x*x的图像,x的取值范围为【-50,50】,每隔五个数打印一个“*”。
下面是课外书上的正确答案,不过有几处不太理解,请高手们帮帮忙:
正确代码:
#include<string.h>
#include<stdio.h>
main()
{
char a[61];//为何定义61个变量?随便定义的麽?有何规律没?
float x,y,r;
int k,j;
printf("%6c%7c",'X','Y');
for(k=0;k<20;k++)
printf(" ");
printf("GRAPH OF FUNCTION Y=X*X\n\n");
for(x=-50;x<=50;x+=5)
{
y=x*x;
r=y/2500;//为何除以2500,此数值怎么定义,还可以用其他数值麽
printf("%6.0f%7.0f",x,y);
for(k=1;k<=61;k++)//
a[k]=' ';
j=r*61+0.5;//最不理解的一步,他是如何来的?为何又加了个0.5,不乘以61?;有没规律!!
a[0]='|';
a[j]='*';
a[j+1]='\0';//字符串结束标志?
printf("%s\n",a);
}
}
请高手们帮小弟讲讲每步的含义,先此谢过!!
附上图片:
j=r*61+0.5;改为j=r*60+0.5; 最好能让我举一反三

r=y/2500;//为了把r缩小到小于1
printf("%6.0f%7.0f",x,y);
for(k=1;k<=61;k++)//
a[k]=' ';
j=r*61+0.5;//这个j就是*要放在数组里的位置,+0.5是为了四舍五入
a[0]='|';
a[j]='*';
a[j+1]='\0';//字符串结束标志,是的
printf("%s\n",a);