C语言一个程序运算的小程序。急急急,编译成功但是,运行到一半的时候却直接关闭了。我是初学的........
#include"stdio.h"#include"math.h"#definepi3.14159265359main(){intls;floatx1,y1,r,t,ly...
#include "stdio.h"
#include "math.h"
#define pi 3.14159265359
main()
{
int ls;
float x1,y1,r,t,ly,e,j,x2,y2,q,g,x3,y3,jd1,jd2,s,d,a,b,a1,b1,l,zh,hz,hy,yh,qz;
double n1,n2,u;
printf("qing shu ru jd1 he jd2 de x,y zhou zhi");
scanf("%f,%f,%f,%f",&x1,&y1,&x2,&y2);
a=x2-x1;
b=y2-y1;
if(a>0)
{
if(b>0)
n1=atan (abs(b/a)) ;
else
n1=360-atan(abs(b/a));
}
else
{ if(b>0)
n1=180-atan(abs(b/a));
else
n1=180+atan(abs(b/a));
}
{
printf("qing shu ru jd3 de x,y zuo biao zhi");
scanf("%f,%f",&x3,&x3);
a1=x3-x2;
b1=y3-y2;
if(a1>0)
{
if(b1>0)
n2=atan(abs(b1/a1)) ;
else
n2=360(这个其实是角度,我不知道怎么输入)-atan(abs(b1/a1));
}
else
if(b1>0)
n2=180-atan(abs(b1/a1));
else
n2=180+atan(abs(b1/a1));
} /*判断n1,n2的方位角*/
u=n2-n1; /*u是转角*/
printf("qing shu ru ls,r de zhi");
scanf("%f,%f",&ls,&r);
q=ls/2-(ls*ls*ls)/(240*r*r); /*切线增长量*/
s=sqrt(ls*r); /*缓和曲线参数*/
g=(ls*ls)/(24*r)-(ls*ls*ls*ls)/(2384*r*r*r); /*圆曲线内移值*/
t=(r+g)*(tan(u/2))+q; /*切线长*/
l=(pi/180)*u*r+ls; /*曲线长*/
ly=l-2*ls; /*圆曲线长*/
e=(r+g)*(1/(cos(u/2)))-r; /*外矩长*/
j=2*t-l; /*修正值*/
printf("qing shu ru jd1 de zhuang hao");
scanf("%f",&jd1);
d=sqrt(a*a+b*b);
jd2=jd1+d-j; /*jd2的桩号*/
zh=jd2-t;
hy=zh+ls;
yh=hy+ly;
jd2=qz+j/2; /*检验*/
printf("shu chu shu ju");
printf("jd2=%f\n,zhuanjiao=%f\n,q=%f\n,neiyizhi=%f\n,T=%f\n,L=%f\n,ly=%f\n,E=%f\n,j=%f, zh=%f, hy=%f, yh=%f, hz=%f, qz=%f, s=%f",jd2,u,q,g,t,l,ly,e,j,zh,hy,yh,hz,qz,s);
getch();
}
还有角度我不知道怎么表示,麻烦大侠帮忙修改下。 展开
#include "math.h"
#define pi 3.14159265359
main()
{
int ls;
float x1,y1,r,t,ly,e,j,x2,y2,q,g,x3,y3,jd1,jd2,s,d,a,b,a1,b1,l,zh,hz,hy,yh,qz;
double n1,n2,u;
printf("qing shu ru jd1 he jd2 de x,y zhou zhi");
scanf("%f,%f,%f,%f",&x1,&y1,&x2,&y2);
a=x2-x1;
b=y2-y1;
if(a>0)
{
if(b>0)
n1=atan (abs(b/a)) ;
else
n1=360-atan(abs(b/a));
}
else
{ if(b>0)
n1=180-atan(abs(b/a));
else
n1=180+atan(abs(b/a));
}
{
printf("qing shu ru jd3 de x,y zuo biao zhi");
scanf("%f,%f",&x3,&x3);
a1=x3-x2;
b1=y3-y2;
if(a1>0)
{
if(b1>0)
n2=atan(abs(b1/a1)) ;
else
n2=360(这个其实是角度,我不知道怎么输入)-atan(abs(b1/a1));
}
else
if(b1>0)
n2=180-atan(abs(b1/a1));
else
n2=180+atan(abs(b1/a1));
} /*判断n1,n2的方位角*/
u=n2-n1; /*u是转角*/
printf("qing shu ru ls,r de zhi");
scanf("%f,%f",&ls,&r);
q=ls/2-(ls*ls*ls)/(240*r*r); /*切线增长量*/
s=sqrt(ls*r); /*缓和曲线参数*/
g=(ls*ls)/(24*r)-(ls*ls*ls*ls)/(2384*r*r*r); /*圆曲线内移值*/
t=(r+g)*(tan(u/2))+q; /*切线长*/
l=(pi/180)*u*r+ls; /*曲线长*/
ly=l-2*ls; /*圆曲线长*/
e=(r+g)*(1/(cos(u/2)))-r; /*外矩长*/
j=2*t-l; /*修正值*/
printf("qing shu ru jd1 de zhuang hao");
scanf("%f",&jd1);
d=sqrt(a*a+b*b);
jd2=jd1+d-j; /*jd2的桩号*/
zh=jd2-t;
hy=zh+ls;
yh=hy+ly;
jd2=qz+j/2; /*检验*/
printf("shu chu shu ju");
printf("jd2=%f\n,zhuanjiao=%f\n,q=%f\n,neiyizhi=%f\n,T=%f\n,L=%f\n,ly=%f\n,E=%f\n,j=%f, zh=%f, hy=%f, yh=%f, hz=%f, qz=%f, s=%f",jd2,u,q,g,t,l,ly,e,j,zh,hy,yh,hz,qz,s);
getch();
}
还有角度我不知道怎么表示,麻烦大侠帮忙修改下。 展开
3个回答
展开全部
#include <dos.h> /*DOS接口函数*/
#include <math.h> /*数学函数的定义*/
#include <conio.h> /*屏幕操作函数*/
#include <stdio.h> /*I/O函数*/
#include <stdlib.h> /*库函数*/
#include <stdarg.h> /*变量长度参数表*/
#include <graphics.h> /*图形函数*/
#include <string.h> /*字符串函数*/
#include <ctype.h> /*字符操作函数*/
#define UP 0x48 /*光标上移键*/
#define DOWN 0x50 /*光标下移键*/
#define LEFT 0x4b /*光标左移键*/
#define RIGHT 0x4d /*光标右移键*/
#define ENTER 0x0d /*回车键*/
void *rar; /*全局变量,保存光标图象*/
struct palettetype palette; /*使用调色板信息*/
int GraphDriver; /* 图形设备驱动*/
int GraphMode; /* 图形模式值*/
int ErrorCode; /* 错误代码*/
int MaxColors; /* 可用颜色的最大数值*/
int MaxX, MaxY; /* 屏幕的最大分辨率*/
double AspectRatio; /尘姿则* 屏幕的像素比*/
void drawboder(void); /*画边框函数*/
void initialize(void); /*初始化函数*/
void computer(void); /*计算器计算函数*/
void changetextstyle(int font, int direction, int charsize); /*改变文本样式函数*/
void mwindow(char *header); /*窗口函数*/
int specialkey(void) ; /*获取特殊键函数*/
int arrow(); /*设置箭头光标函数*/
/*主函数*/
int main()
{
initialize();/* 设置系统进入图形模式 */
computer(); /*运行计算器 */
closegraph();/*系统关闭图形模式返回文本模式*/
return(0); /*结束程序*/
}
/* 设置系统进入图形模式 */
void initialize(void)
{
int xasp, yasp; /* 用于读x和y方向纵横比*/
GraphDriver = DETECT; /* 自动检测显示器*/
initgraph( &GraphDriver, &GraphMode, "" );
/*初始化图形系统*/
ErrorCode = graphresult(); /*读初始化结果*/
if( ErrorCode != grOk ) /*如果初始化时出现错误*/
{
printf("Graphics System Error: %s\n",
grapherrormsg( ErrorCode ) ); /*显示册派错误代码*/
exit( 1 ); /*退出*/
}
getpalette( &palette ); /* 读面板信息*/
MaxColors = getmaxcolor() + 1; /* 读取颜色的最大值*/
MaxX = getmaxx(); /* 读屏幕尺寸 */
MaxY = getmaxy(); /* 读屏幕尺寸 */
getaspectratio( &xasp, &yasp ); /* 拷贝纵横比到变量中*/
AspectRatio = (double)xasp/(double)yasp;/* 计算纵横比值*/
}
/*计算器函数*/
void computer(void)
{
struct viewporttype vp; /*定义视口类派棚型变量*/
int color, height, width;
int x, y,x0,y0, i, j,v,m,n,act,flag=1;
float num1=0,num2=0,result; /*操作数和计算结果变量*/
char cnum[5],str2[20]=,c,temp[20]=;
char str1[]="1230.456+-789*/Qc=^%";/* 定义字符串在按钮图形上显示的符号 */
mwindow( "Calculator" ); /* 显示主窗口 */
color = 7; /*设置灰颜色值*/
getviewsettings( &vp ); /* 读取当前窗口的大小*/
width=(vp.right+1)/10; /* 设置按钮宽度 */
height=(vp.bottom-10)/10 ; /*设置按钮高度 */
x = width /2; /*设置x的坐标值*/
y = height/2; /*设置y的坐标值*/
setfillstyle(SOLID_FILL, color+3);
bar( x+width*2, y, x+7*width, y+height );
/*画一个二维矩形条显示运算数和结果*/
setcolor( color+3 ); /*设置淡绿颜色边框线*/
rectangle( x+width*2, y, x+7*width, y+height );
/*画一个矩形边框线*/
setcolor(RED); /*设置颜色为红色*/
outtextxy(x+3*width,y+height/2,"0."); /*输出字符串"0."*/
x =2*width-width/2; /*设置x的坐标值*/
y =2*height+height/2; /*设置y的坐标值*/
for( j=0 ; j<4 ; ++j ) /*画按钮*/
{
for( i=0 ; i<5 ; ++i )
{
setfillstyle(SOLID_FILL, color);
setcolor(RED);
bar( x, y, x+width, y+height ); /*画一个矩形条*/
rectangle( x, y, x+width, y+height );
sprintf(str2,"%c",str1[j*5+i]);
/*将字符保存到str2中*/
outtextxy( x+(width/2), y+height/2, str2);
x =x+width+ (width / 2) ; /*移动列坐标*/
}
y +=(height/2)*3; /* 移动行坐标*/
x =2*width-width/2; /*复位列坐标*/
}
x0=2*width;
y0=3*height;
x=x0;
y=y0;
gotoxy(x,y); /*移动光标到x,y位置*/
arrow(); /*显示光标*/
putimage(x,y,rar,XOR_PUT);
m=0;
n=0;
strcpy(str2,""); /*设置str2为空串*/
while((v=specialkey())!=45) /*当压下Alt+x键结束程序,否则执行下面的循环*/
{
while((v=specialkey())!=ENTER) /*当压下键不是回车时*/
{
putimage(x,y,rar,XOR_PUT); /*显示光标图象*/
if(v==RIGHT) /*右移箭头时新位置计算*/
if(x>=x0+6*width)
/*如果右移,移到尾,则移动到最左边字符位置*/
{
x=x0;
m=0;
}
else
{
x=x+width+width/2;
m++;
} /*否则,右移到下一个字符位置*/
if(v==LEFT) /*左移箭头时新位置计算*/
if(x<=x0)
{
x=x0+6*width;
m=4;
} /*如果移到头,再左移,则移动到最右边字符位置*/
else
{
x=x-width-width/2;
m--;
} /*否则,左移到前一个字符位置*/
if(v==UP) /*上移箭头时新位置计算*/
if(y<=y0)
{
y=y0+4*height+height/2;
n=3;
} /*如果移到头,再上移,则移动到最下边字符位置*/
else
{
y=y-height-height/2;
n--;
} /*否则,移到上边一个字符位置*/
if(v==DOWN) /*下移箭头时新位置计算*/
if(y>=7*height)
{
y=y0;
n=0;
#include <math.h> /*数学函数的定义*/
#include <conio.h> /*屏幕操作函数*/
#include <stdio.h> /*I/O函数*/
#include <stdlib.h> /*库函数*/
#include <stdarg.h> /*变量长度参数表*/
#include <graphics.h> /*图形函数*/
#include <string.h> /*字符串函数*/
#include <ctype.h> /*字符操作函数*/
#define UP 0x48 /*光标上移键*/
#define DOWN 0x50 /*光标下移键*/
#define LEFT 0x4b /*光标左移键*/
#define RIGHT 0x4d /*光标右移键*/
#define ENTER 0x0d /*回车键*/
void *rar; /*全局变量,保存光标图象*/
struct palettetype palette; /*使用调色板信息*/
int GraphDriver; /* 图形设备驱动*/
int GraphMode; /* 图形模式值*/
int ErrorCode; /* 错误代码*/
int MaxColors; /* 可用颜色的最大数值*/
int MaxX, MaxY; /* 屏幕的最大分辨率*/
double AspectRatio; /尘姿则* 屏幕的像素比*/
void drawboder(void); /*画边框函数*/
void initialize(void); /*初始化函数*/
void computer(void); /*计算器计算函数*/
void changetextstyle(int font, int direction, int charsize); /*改变文本样式函数*/
void mwindow(char *header); /*窗口函数*/
int specialkey(void) ; /*获取特殊键函数*/
int arrow(); /*设置箭头光标函数*/
/*主函数*/
int main()
{
initialize();/* 设置系统进入图形模式 */
computer(); /*运行计算器 */
closegraph();/*系统关闭图形模式返回文本模式*/
return(0); /*结束程序*/
}
/* 设置系统进入图形模式 */
void initialize(void)
{
int xasp, yasp; /* 用于读x和y方向纵横比*/
GraphDriver = DETECT; /* 自动检测显示器*/
initgraph( &GraphDriver, &GraphMode, "" );
/*初始化图形系统*/
ErrorCode = graphresult(); /*读初始化结果*/
if( ErrorCode != grOk ) /*如果初始化时出现错误*/
{
printf("Graphics System Error: %s\n",
grapherrormsg( ErrorCode ) ); /*显示册派错误代码*/
exit( 1 ); /*退出*/
}
getpalette( &palette ); /* 读面板信息*/
MaxColors = getmaxcolor() + 1; /* 读取颜色的最大值*/
MaxX = getmaxx(); /* 读屏幕尺寸 */
MaxY = getmaxy(); /* 读屏幕尺寸 */
getaspectratio( &xasp, &yasp ); /* 拷贝纵横比到变量中*/
AspectRatio = (double)xasp/(double)yasp;/* 计算纵横比值*/
}
/*计算器函数*/
void computer(void)
{
struct viewporttype vp; /*定义视口类派棚型变量*/
int color, height, width;
int x, y,x0,y0, i, j,v,m,n,act,flag=1;
float num1=0,num2=0,result; /*操作数和计算结果变量*/
char cnum[5],str2[20]=,c,temp[20]=;
char str1[]="1230.456+-789*/Qc=^%";/* 定义字符串在按钮图形上显示的符号 */
mwindow( "Calculator" ); /* 显示主窗口 */
color = 7; /*设置灰颜色值*/
getviewsettings( &vp ); /* 读取当前窗口的大小*/
width=(vp.right+1)/10; /* 设置按钮宽度 */
height=(vp.bottom-10)/10 ; /*设置按钮高度 */
x = width /2; /*设置x的坐标值*/
y = height/2; /*设置y的坐标值*/
setfillstyle(SOLID_FILL, color+3);
bar( x+width*2, y, x+7*width, y+height );
/*画一个二维矩形条显示运算数和结果*/
setcolor( color+3 ); /*设置淡绿颜色边框线*/
rectangle( x+width*2, y, x+7*width, y+height );
/*画一个矩形边框线*/
setcolor(RED); /*设置颜色为红色*/
outtextxy(x+3*width,y+height/2,"0."); /*输出字符串"0."*/
x =2*width-width/2; /*设置x的坐标值*/
y =2*height+height/2; /*设置y的坐标值*/
for( j=0 ; j<4 ; ++j ) /*画按钮*/
{
for( i=0 ; i<5 ; ++i )
{
setfillstyle(SOLID_FILL, color);
setcolor(RED);
bar( x, y, x+width, y+height ); /*画一个矩形条*/
rectangle( x, y, x+width, y+height );
sprintf(str2,"%c",str1[j*5+i]);
/*将字符保存到str2中*/
outtextxy( x+(width/2), y+height/2, str2);
x =x+width+ (width / 2) ; /*移动列坐标*/
}
y +=(height/2)*3; /* 移动行坐标*/
x =2*width-width/2; /*复位列坐标*/
}
x0=2*width;
y0=3*height;
x=x0;
y=y0;
gotoxy(x,y); /*移动光标到x,y位置*/
arrow(); /*显示光标*/
putimage(x,y,rar,XOR_PUT);
m=0;
n=0;
strcpy(str2,""); /*设置str2为空串*/
while((v=specialkey())!=45) /*当压下Alt+x键结束程序,否则执行下面的循环*/
{
while((v=specialkey())!=ENTER) /*当压下键不是回车时*/
{
putimage(x,y,rar,XOR_PUT); /*显示光标图象*/
if(v==RIGHT) /*右移箭头时新位置计算*/
if(x>=x0+6*width)
/*如果右移,移到尾,则移动到最左边字符位置*/
{
x=x0;
m=0;
}
else
{
x=x+width+width/2;
m++;
} /*否则,右移到下一个字符位置*/
if(v==LEFT) /*左移箭头时新位置计算*/
if(x<=x0)
{
x=x0+6*width;
m=4;
} /*如果移到头,再左移,则移动到最右边字符位置*/
else
{
x=x-width-width/2;
m--;
} /*否则,左移到前一个字符位置*/
if(v==UP) /*上移箭头时新位置计算*/
if(y<=y0)
{
y=y0+4*height+height/2;
n=3;
} /*如果移到头,再上移,则移动到最下边字符位置*/
else
{
y=y-height-height/2;
n--;
} /*否则,移到上边一个字符位置*/
if(v==DOWN) /*下移箭头时新位置计算*/
if(y>=7*height)
{
y=y0;
n=0;
展开全部
#include "stdio.h"
#include "math.h"
#define pi 3.14159265359
main()
{
int ls;
float x1,y1,r,t,ly,e,j,x2,y2,q,g,x3,y3,jd1,jd2,s,d,a,b,a1,b1,l,zh,hz,hy,yh,qz;
double n1,n2,u;
printf("qing shu ru jd1 he jd2 de x,y zhou zhi");
scanf("%f,%f,%f,%f",&x1,&y1,&x2,&y2);
a=x2-x1;
b=y2-y1;
if(a>0)
{
if(b>0)
n1=atan (abs(b/a)) ;
else
n1=360*pi/180-atan(abs(b/a));
}
else
{ if(b>0)
n1=180*pi/180-atan(abs(b/a));
else
n1=180*pi/180+atan(abs(b/a));
}
{
printf("qing shu ru jd3 de x,y zuo biao zhi");
scanf("%f,%f",&x3,&y3);//这里原来纯扰有错误,修改好了
a1=x3-x2;
b1=y3-y2;
if(a1>0)
{
if(b1>0)
n2=atan(abs(b1/a1)) ;
else
n2=360*pi/180-atan(abs(b1/a1));
}
else
if(b1>0)
n2=180*pi/180-atan(abs(b1/a1));
else
n2=180*pi/180+atan(abs(b1/a1));
} /*判断n1,n2的方位角*/
u=n2-n1; /*u是转角*/
printf("qing shu ru ls,r de zhi");
scanf("%f,%f",&ls,&r);
q=ls/2-(ls*ls*ls)/(240*r*r); /闷培*切线增长量*/
s=sqrt(ls*r); /*缓和曲线参数*/
g=(ls*ls)/(24*r)-(ls*ls*ls*ls)/(2384*r*r*r); /*圆曲线内移蚂裤唯值*/
t=(r+g)*(tan(u/2))+q; /*切线长*/
l=(pi/180)*u*r+ls; /*曲线长*/
ly=l-2*ls; /*圆曲线长*/
e=(r+g)*(1/(cos(u/2)))-r; /*外矩长*/
j=2*t-l; /*修正值*/
printf("qing shu ru jd1 de zhuang hao");
scanf("%f",&jd1);
d=sqrt(a*a+b*b);
jd2=jd1+d-j; /*jd2的桩号*/
zh=jd2-t;
hy=zh+ls;
yh=hy+ly;
jd2=qz+j/2; /*检验*/
printf("shu chu shu ju");
printf("jd2=%f\n,zhuanjiao=%f\n,q=%f\n,neiyizhi=%f\n,T=%f\n,L=%f\n,ly=%f\n,E=%f\n,j=%f, zh=%f, hy=%f, yh=%f, hz=%f, qz=%f, s=%f",jd2,u,q,g,t,l,ly,e,j,zh,hy,yh,hz,qz,s);
getch();
}
#include "math.h"
#define pi 3.14159265359
main()
{
int ls;
float x1,y1,r,t,ly,e,j,x2,y2,q,g,x3,y3,jd1,jd2,s,d,a,b,a1,b1,l,zh,hz,hy,yh,qz;
double n1,n2,u;
printf("qing shu ru jd1 he jd2 de x,y zhou zhi");
scanf("%f,%f,%f,%f",&x1,&y1,&x2,&y2);
a=x2-x1;
b=y2-y1;
if(a>0)
{
if(b>0)
n1=atan (abs(b/a)) ;
else
n1=360*pi/180-atan(abs(b/a));
}
else
{ if(b>0)
n1=180*pi/180-atan(abs(b/a));
else
n1=180*pi/180+atan(abs(b/a));
}
{
printf("qing shu ru jd3 de x,y zuo biao zhi");
scanf("%f,%f",&x3,&y3);//这里原来纯扰有错误,修改好了
a1=x3-x2;
b1=y3-y2;
if(a1>0)
{
if(b1>0)
n2=atan(abs(b1/a1)) ;
else
n2=360*pi/180-atan(abs(b1/a1));
}
else
if(b1>0)
n2=180*pi/180-atan(abs(b1/a1));
else
n2=180*pi/180+atan(abs(b1/a1));
} /*判断n1,n2的方位角*/
u=n2-n1; /*u是转角*/
printf("qing shu ru ls,r de zhi");
scanf("%f,%f",&ls,&r);
q=ls/2-(ls*ls*ls)/(240*r*r); /闷培*切线增长量*/
s=sqrt(ls*r); /*缓和曲线参数*/
g=(ls*ls)/(24*r)-(ls*ls*ls*ls)/(2384*r*r*r); /*圆曲线内移蚂裤唯值*/
t=(r+g)*(tan(u/2))+q; /*切线长*/
l=(pi/180)*u*r+ls; /*曲线长*/
ly=l-2*ls; /*圆曲线长*/
e=(r+g)*(1/(cos(u/2)))-r; /*外矩长*/
j=2*t-l; /*修正值*/
printf("qing shu ru jd1 de zhuang hao");
scanf("%f",&jd1);
d=sqrt(a*a+b*b);
jd2=jd1+d-j; /*jd2的桩号*/
zh=jd2-t;
hy=zh+ls;
yh=hy+ly;
jd2=qz+j/2; /*检验*/
printf("shu chu shu ju");
printf("jd2=%f\n,zhuanjiao=%f\n,q=%f\n,neiyizhi=%f\n,T=%f\n,L=%f\n,ly=%f\n,E=%f\n,j=%f, zh=%f, hy=%f, yh=%f, hz=%f, qz=%f, s=%f",jd2,u,q,g,t,l,ly,e,j,zh,hy,yh,hz,qz,s);
getch();
}
追问
还是不行!输入交点1的桩号后,就直接关闭了。下边有提示说“可能”qz“和”hz“在定义以前使用了它在main函数中。顺便问下,那个角度值直接输入360、180可以吗?
追答
计算机里用的角度都是弧度制。
我又检查了程序,qz,hz的计算公式没有,是不是忘记了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你用的是什么编译器?
追问
win-tc
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询