---
# System prepended metadata

title: Untitled

---

```c = 
//作業六範例//
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

void t1(void);
void t2(void);
void t3(void);
void t4(void);

int main()
{
	t1();
	//t2();
	//t3();
	//t4();

}
void t1(void)
{
	int i,j;
	int ans,t;
	float a,b,c,d;
	int ymax=0;
	int ymin=0;
	printf("請輸入a值 : ");
	scanf("%f",&a);
	printf("請輸入b值 : ");
	scanf("%f",&b);
	printf("請輸入c值 : ");
	scanf("%f",&c);
	printf("請輸入d值 : ");
	scanf("%f",&d);
	
	printf("方程式 y = %0.3f*x^3 + %0.3f*x^2 + %0.3f*x + %0.3f\n\n",a,b,c,d);
	//計算y的範圍 
	for(i=-30;i<=30;i++)
	{
		ans = round(a*pow(i,3)+b*pow(i,2)+c*i+d);
		if(ans>ymax)
		{
			ymax = ans;
		}
		else if(ans<ymin)
		{
			ymin = ans;
		}
		else
		{
			ymax = ymax;
			ymin = ymin;
		}
		
	}
	//印出答案 
	for(j=ymax;j>=ymin;j--)
	{	
		for(i=-30;i<=30;i++)
		{
			//方程式答案計算與斜率計算 
			ans = round(a*pow(i,3)+b*pow(i,2)+c*i+d);
			t = round((a*pow(i,3)+b*pow(i,2)+c*i+d)-(a*pow((i-1),3)+b*pow((i-1),2)+c*(i-1)+d));

			//列印斜率 
			if(j==ans)
			{
				if(t==0)
				{
					printf(" - ");
				}
				else if(t<0)
				{
					printf(" \\ ");
				}
				else
				{
					printf(" / ");
				}
				
			}
			//原點 
			else if(j==0)
			{
				if(i==0)
				{
					printf(" 0 ");
				}
				else if(i%5==0)
				{
					printf(" | ");
				}
				else
				{
					printf(" - ");
				}
			}
			//y軸上數值 
			else if(j==1)
			{
				if(i==0)
				{
					printf(" | ");
				}
				else if((i==5))
				{
					printf(" 5 ");
				}
				else if((i==-5))
				{
					printf("-5 ");
				}
				else if((i%5==0)&&(i<-5))
				{
					printf("%d",i);
				}
				else if((i%5==0)&&(i>5))
				{
					printf(" %d",i);
				}
				else
				{
					printf("   ");
				}
			}
			//x軸與x軸上數值 
			else if(j%5==0)
			{
				if(i==0)
				{
					printf(" - ");
				}
				else if(i==1)
				{
					printf("%d",j);
				}
				else
				{
					printf("   ");
				}
			}
			//y軸
			else
			{
				if(i==0)
				{
					printf(" | ");
				}
				else
				{
					printf("   ");
				}
	
			}
		}
		printf("\n\n");
	}
}
void t2(void)
{
	int i,j;
	int ans,t;
	float a,b,c,d;
	int ymax=0;
	int ymin=0;
	float x1,x2;
	float y1,y2;
	float x_d,y_d;
	int k;
	printf("請輸入a值 : ");
	scanf("%f",&a);
	printf("請輸入b值 : ");
	scanf("%f",&b);
	printf("請輸入c值 : ");
	scanf("%f",&c);
	printf("請輸入d值 : ");
	scanf("%f",&d);
	
	printf("方程式 y = %0.3f*x^3 + %0.3f*x^2 + %0.3f*x + %0.3f\n\n",a,b,c,d);
	for(i=-30;i<=30;i++)
	{
		ans = round(a*pow(i,3)+b*pow(i,2)+c*i+d);
		if(ans>ymax)
		{
			ymax = ans;
		}
		else if(ans<ymin)
		{
			ymin = ans;
		}
		else
		{
			ymax = ymax;
			ymin = ymin;
		}
		
	}
	printf("請輸入x1值 : ");
	scanf("%f",&x1);
	printf("請輸入x2值 : ");
	scanf("%f",&x2);;
	//計算y1&y2的答案與兩者距離 
	y1 = (a*pow(x1,3)+b*pow(x1,2)+c*x1+d);
	y2 = (a*pow(x2,3)+b*pow(x2,2)+c*x2+d);
	x_d = x2-x1;
	y_d = y2-y1;
	for(j=ymax;j>=ymin;j--)
	{	
		for(i=-30;i<=30;i++)
		{
			ans = round(a*pow(i,3)+b*pow(i,2)+c*i+d);
			t = round((a*pow(i,3)+b*pow(i,2)+c*i+d)-(a*pow((i-1),3)+b*pow((i-1),2)+c*(i-1)+d));
			//透過解方程式得出直線 
			k = round((i-x1)/(x_d)*(y_d)+y1);
			//列印直線 
			if(j==k)
			{
				printf(" + ");
			}
			else if(j==ans)
			{
				if(t==0)
				{
					printf(" - ");
				}
				else if(t<0)
				{
					printf(" \\ ");
				}
				else
				{
					printf(" / ");
				}
				
			}
			else if(j==0)
			{
				if(i==0)
				{
					printf(" 0 ");
				}
				else if(i%5==0)
				{
					printf(" | ");
				}
				else
				{
					printf(" - ");
				}
			}
			else if(j==1)
			{
				if(i==0)
				{
					printf(" | ");
				}
				else if((i==5))
				{
					printf(" 5 ");
				}
				else if((i==-5))
				{
					printf("-5 ");
				}
				else if((i%5==0)&&(i<-5))
				{
					printf("%d",i);
				}
				else if((i%5==0)&&(i>5))
				{
					printf(" %d",i);
				}
				else
				{
					printf("   ");
				}
			}
			//列印標註範圍 
			else if(j%5==0)
			{
				if(i==0)
				{
					printf(" - ");
				}
				else if(i==1)
				{
					printf("%d",j);
				}
				else if(i==round(x1))
				{
					printf(" | ");
				}
				else if(i==round(x2))
				{
					printf(" | ");
				}
				else
				{
					printf("   ");
				}
			}
			else
			{
				if(i==0)
				{
					printf(" | ");
				}
				else if(i==round(x1))
				{
					printf(" | ");
				}
				else if(i==round(x2))
				{
					printf(" | ");
				}
				else
				{
					printf("   ");
				}
	
			}
		}
		printf("\n\n");
	}
}
void t3(void)
{
	int i,j;
	int ans,t;
	float a,b,c,d;
	int ymax=0;
	int ymin=0;
	float x1,x2;
	float y1,y2;
	float x_d,y_d;
	float p,o;
	int k;
	printf("請輸入a值 : ");
	scanf("%f",&a);
	printf("請輸入b值 : ");
	scanf("%f",&b);
	printf("請輸入c值 : ");
	scanf("%f",&c);
	printf("請輸入d值 : ");
	scanf("%f",&d);
	
	printf("方程式 y = %0.3f*x^3 + %0.3f*x^2 + %0.3f*x + %0.3f\n\n",a,b,c,d);
	for(i=-30;i<=30;i++)
	{
		ans = round(a*pow(i,3)+b*pow(i,2)+c*i+d);
		if(ans>ymax)
		{
			ymax = ans;
		}
		else if(ans<ymin)
		{
			ymin = ans;
		}
		else
		{
			ymax = ymax;
			ymin = ymin;
		}
		
	}
	printf("請輸入x1值 : ");
	scanf("%f",&x1);
	printf("請輸入x2值 : ");
	scanf("%f",&x2);;
	//計算y1與y2
	//計算x間的距離 
	x_d = (x2-x1>0)? x2-x1 : x1-x2;
	y1 = (a*pow(x1,3)+b*pow(x1,2)+c*x1+d);
	y2 = (a*pow(x2,3)+b*pow(x2,2)+c*x2+d);
	y_d = y2-y1;
	y_d = (y2-y1>0)? y2-y1 : y1-y2;
	//趨近過程 
	for(x_d;(x_d>0.1);x_d=x_d/2)
	{
		y1 = (a*pow(x1,3)+b*pow(x1,2)+c*x1+d);
		y2 = (a*pow(x2,3)+b*pow(x2,2)+c*x2+d);
		y_d = y2-y1;
		y_d = (y2-y1>0)? y2-y1 : y1-y2;
		x1 = x1;
		x2 = (x1>x2)? x1-x_d : x1+x_d;
	}
	//斜率與截距 
	p = (y2-y1)/(x2-x1);
	o = y1-p*x1;
	printf("x1 = %f\nx2 = %f\ny1 = %f\ny2 = %f\n(x2-x1) = %f\n(y2-y1) = %f\n斜率 = %f\n截距 = %f\n\n",x1,x2,y1,y2,x_d,y_d,p,o);
	for(j=ymax;j>=ymin;j--)
	{	
		for(i=-30;i<=30;i++)
		{
			ans = round(a*pow(i,3)+b*pow(i,2)+c*i+d);
			t = round((a*pow(i,3)+b*pow(i,2)+c*i+d)-(a*pow((i-1),3)+b*pow((i-1),2)+c*(i-1)+d));
			k = round((i-x1)/(x_d)*(y_d)+y1);

			if(j==round(y1)&&i==round(x1))
			{
				printf(" @ ");
			}
			else if(j==ans)
			{
				if(t==0)
				{
					printf(" - ");
				}
				else if(t<0)
				{
					printf(" \\ ");
				}
				else
				{
					printf(" / ");
				}
				
			}
			else if(j==0)
			{
				if(i==0)
				{
					printf(" 0 ");
				}
				else if(i%5==0)
				{
					printf(" | ");
				}
				else
				{
					printf(" - ");
				}
			}
			else if(j==1)
			{
				if(i==0)
				{
					printf(" | ");
				}
				else if((i==5))
				{
					printf(" 5 ");
				}
				else if((i==-5))
				{
					printf("-5 ");
				}
				else if((i%5==0)&&(i<-5))
				{
					printf("%d",i);
				}
				else if((i%5==0)&&(i>5))
				{
					printf(" %d",i);
				}
				else
				{
					printf("   ");
				}
			}
			else if(j%5==0)
			{
				if(i==0)
				{
					printf(" - ");
				}
				else if(i==1)
				{
					printf("%d",j);
				}
				else if(i==round(x1))
				{
					printf(" | ");
				}
				else if(i==round(x2))
				{
					printf(" | ");
				}
				else
				{
					printf("   ");
				}
			}
			else
			{
				if(i==0)
				{
					printf(" | ");
				}
				else if(i==round(x1))
				{
					printf(" | ");
				}
				else if(i==round(x2))
				{
					printf(" | ");
				}
				else
				{
					printf("   ");
				}
	
			}
		}
		printf("\n\n");
	}	
}
void t4(void)
{
	int i,j;
	int ans,t;
	float a,b,c,d;
	int ymax=0;
	int ymin=0;
	float x1,y1,m,l;
	int k;
	printf("請輸入a值 : ");
	scanf("%f",&a);
	printf("請輸入b值 : ");
	scanf("%f",&b);
	printf("請輸入c值 : ");
	scanf("%f",&c);
	printf("請輸入d值 : ");
	scanf("%f",&d);
	
	printf("方程式 y = %0.3f*x^3 + %0.3f*x^2 + %0.3f*x + %0.3f\n\n",a,b,c,d);
	for(i=-30;i<=30;i++)
	{
		ans = round(a*pow(i,3)+b*pow(i,2)+c*i+d);
		if(ans>ymax)
		{
			ymax = ans;
		}
		else if(ans<ymin)
		{
			ymin = ans;
		}
		else
		{
			ymax = ymax;
			ymin = ymin;
		}
		
	}
	printf("請輸入x1 : ");
	scanf("%f",&x1);
	printf("請輸入斜率值 : ");
	scanf("%f",&m);
	printf("請輸入截距值 : ");
	scanf("%f",&l);
	y1 = (a*pow(x1,3)+b*pow(x1,2)+c*x1+d);
	for(j=ymax;j>=ymin;j--)
	{	
		for(i=-30;i<=30;i++)
		{
			ans = round(a*pow(i,3)+b*pow(i,2)+c*i+d);
			t = round((a*pow(i,3)+b*pow(i,2)+c*i+d)-(a*pow((i-1),3)+b*pow((i-1),2)+c*(i-1)+d));
			k = round(i*m+l);

			if(j==round(y1)&&i==round(x1))
			{
				printf(" @ ");
			}
			else if(j==k)
			{
				printf(" # ");
			}
			else if(j==ans)
			{
				if(t==0)
				{
					printf(" - ");
				}
				else if(t<0)
				{
					printf(" \\ ");
				}
				else
				{
					printf(" / ");
				}
				
			}
			else if(j==0)
			{
				if(i==0)
				{
					printf(" 0 ");
				}
				else if(i%5==0)
				{
					printf(" | ");
				}
				else
				{
					printf(" - ");
				}
			}
			else if(j==1)
			{
				if(i==0)
				{
					printf(" | ");
				}
				else if((i==5))
				{
					printf(" 5 ");
				}
				else if((i==-5))
				{
					printf("-5 ");
				}
				else if((i%5==0)&&(i<-5))
				{
					printf("%d",i);
				}
				else if((i%5==0)&&(i>5))
				{
					printf(" %d",i);
				}
				else
				{
					printf("   ");
				}
			}
			else if(j%5==0)
			{
				if(i==0)
				{
					printf(" - ");
				}
				else if(i==1)
				{
					printf("%d",j);
				}
				else if(i==round(x1))
				{
					printf(" | ");
				}
				else
				{
					printf("   ");
				}
			}
			else
			{
				if(i==0)
				{
					printf(" | ");
				}
				else if(i==round(x1))
				{
					printf(" | ");
				}
				else
				{
					printf("   ");
				}
	
			}
		}
		printf("\n\n");
	}
}


```