求两直线交点并将交点排序的C语言源代码
y=kx+b与y=0,1,2.......100的交点,k和b的值是变化的,k=tan(a)a=0~90度,然后把这些求得的x横坐标值从小到大进行排序,将排序的值以数组X...
y=kx+b与y=0,1,2.......100的交点,k和b的值是变化的,k=tan(a) a=0~90度,然后把这些求得的x横坐标值从小到大进行排序,将排序的值以数组X表示。
我是学习c 的新手,请高手帮助,若回答满意,再加分高分。 展开
我是学习c 的新手,请高手帮助,若回答满意,再加分高分。 展开
展开全部
void jiaodian(int a,int b) //这是个功能函数,a和b的值通过形参传过来
{int i,y,k,A[100];
k=tana;
for(y=0;y<=100;y++)
A[y]=(y-b)/k; //tana(a=0~09)斜率为正,不用排序
for(i=0;i<=100;i++)
printf("%4d",A[i]);
}
void main() //主函数
{int a,b;
{
scanf("%d",a); //通过键盘输入a
scanf("%d",b); //通过键盘输入b ,这样你的a,b就可以是任意的了。
jiaodian(a,b); //调用上面的功能函数;
}
试试吧,建议初学者还是从基础一些的学起,这道题目涉及了函数和数组,没学直接上手会比较困难~~加油吧
{int i,y,k,A[100];
k=tana;
for(y=0;y<=100;y++)
A[y]=(y-b)/k; //tana(a=0~09)斜率为正,不用排序
for(i=0;i<=100;i++)
printf("%4d",A[i]);
}
void main() //主函数
{int a,b;
{
scanf("%d",a); //通过键盘输入a
scanf("%d",b); //通过键盘输入b ,这样你的a,b就可以是任意的了。
jiaodian(a,b); //调用上面的功能函数;
}
试试吧,建议初学者还是从基础一些的学起,这道题目涉及了函数和数组,没学直接上手会比较困难~~加油吧
更多追问追答
追问
谢谢你的鼓励,我今年刚上研究生,因为本科的时候没怎么学C,现在主要用这个VC++6.0编程, 所以很棘手。。
追答
C是语言中比较基础的,所以不会太难,我才本科呢~加油很快就能上手的~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
怎么说呢,如果k,b是变化的话,那这有无穷个交点了,每确定一条直线,都会有101个交点,你的问题描述的不太清楚,不过我猜你是不是想说,用户如果输入 k和b的值可以求出这101个交点,而且是排序了的,是这个意思吧
void main()
{
int k=1,b=1;//这个我自己给的,你的条件中斜率永远是正的
int a[101];//存放x的结果
for(int y=0; y<= 100; y++)
{
a[y]= (y-b)/k; //不用排序了,原因是斜率是正的
}
//输出的瞧瞧
for(int i= 0; i<101; i++)
{
printf("%d ",a[i]);
}
}
void main()
{
int k=1,b=1;//这个我自己给的,你的条件中斜率永远是正的
int a[101];//存放x的结果
for(int y=0; y<= 100; y++)
{
a[y]= (y-b)/k; //不用排序了,原因是斜率是正的
}
//输出的瞧瞧
for(int i= 0; i<101; i++)
{
printf("%d ",a[i]);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1楼那个想当然了你定义k,b忽略很很多情况 2楼的太复杂了吧 即使只给a也可以用自带math函数算
#include"stdio.h"
void mian()
{
float x[100];float center;int i,j;float k,b;
printf("请输入k,b");
scanf("%f%f",&k,&b);//输入k,b
for(i=0;i<=100;i++)//根据k,b,y求x
{
x[i]=(i-b)/k;//即y=kx+b y=i
}
for (i = 0; i < 100; i++)//冒泡排序法 升序
{
for (j = i + 1; j < 101; j++)
{
if (x[i] > x[j])
{
center = x[i];
x[i] = x[j];
x[j] = center;
}
}
}
for(i=0;i<100;i++)//输出x的值
{
printf("%f\n",x[i]);
}
}
#include"stdio.h"
void mian()
{
float x[100];float center;int i,j;float k,b;
printf("请输入k,b");
scanf("%f%f",&k,&b);//输入k,b
for(i=0;i<=100;i++)//根据k,b,y求x
{
x[i]=(i-b)/k;//即y=kx+b y=i
}
for (i = 0; i < 100; i++)//冒泡排序法 升序
{
for (j = i + 1; j < 101; j++)
{
if (x[i] > x[j])
{
center = x[i];
x[i] = x[j];
x[j] = center;
}
}
}
for(i=0;i<100;i++)//输出x的值
{
printf("%f\n",x[i]);
}
}
追问
你好,谢谢你的回答,请问,如果要调用一个二维数组R的一行作为一个向量,并求这个向量的模怎么实现呢?我刚学C,好多不会,麻烦啦!
追答
定义一个二维数组a[][3]
起始点B(x2,y2)a(x1,y1)
用scanf输入4个数赋值给数组a[][3]
a[0][0]=x1;a[0][1]=y1;a[0][2]=x2;a[0][3]=y2;
定义一个变量 float mo=sqrt((a[0][3]-a[0][1])*(a[0][3]-a[0][1])+(a[0][2]-a[0][0])*(a[0][2]-a[0][0]))
用sqrt()头文件要加上include"math.h"
然后用printf输出模
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <math.h>
#define pi 3.1415926 //定义pi的大小
int main()
{
int y;
double a, k, usX[101]={0};
double angle;
int b;
printf("a=");
scanf("%lf",&a); //输入a
printf("b=");
scanf("%d",&b); //输入b
if((a>=90)||(a<=0)) //检查a的范围
{
printf("a is out of range");
return -1;
}
angle = a/180*pi; //将a转化为弧度
k=tan(angle); //得到k
for(y=0; y<=100; y++)
{
usX[y] = (y-b)/k; //求每个交点的横坐标,y为升序,x也为升序
printf("x[%d] = %f",y,usX[y]);
}
return 0;
}
#include <math.h>
#define pi 3.1415926 //定义pi的大小
int main()
{
int y;
double a, k, usX[101]={0};
double angle;
int b;
printf("a=");
scanf("%lf",&a); //输入a
printf("b=");
scanf("%d",&b); //输入b
if((a>=90)||(a<=0)) //检查a的范围
{
printf("a is out of range");
return -1;
}
angle = a/180*pi; //将a转化为弧度
k=tan(angle); //得到k
for(y=0; y<=100; y++)
{
usX[y] = (y-b)/k; //求每个交点的横坐标,y为升序,x也为升序
printf("x[%d] = %f",y,usX[y]);
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询