标题:初写C程序求指导啊,为什么我输入'y'不能进入下一次循环而是,控制台直接退 ...
只看楼主
liuwenlong
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-1-10
结帖率:0
已结贴  问题点数:20 回复次数:2 
初写C程序求指导啊,为什么我输入'y'不能进入下一次循环而是,控制台直接退出
// this application is used to calculate the area of coupling Plate
//这个程序用等分圆的方法近似计算天圆地方过渡曲面的面积,
//
void Crossproduct(double p1[],double p2[],double result[])//把两个向量p1xp2的积赋给result
{
    result[0]=p1[1]*p2[2]-p1[2]*p2[1];

    result[1]=p1[2]*p2[0]-p1[0]*p2[2];
    result[2]=p1[0]*p2[1]-p1[1]*p2[0];
}
double Innerproduct(double p1[],double p2[])//返回两个向量的p1.p2的积
{
    double result;
    result=p1[0]*p2[0]+p1[1]*p2[1]+p1[2]*p2[2];
    return result;
}


#include <math.h>
#include <stdio.h>
#define PI 3.1415926
int main()
{

 double Pipe_radii=500; //圆管的半径
 double Div_0[3];       //后等分点
 double Div_1[3];       //前等分点
 double Div_vec[3];     //等分向量
 double Acme[3]={600,600,300};//收口板顶点
 double da[3];          //存放前等分点到顶点的向量

 int Div_flg=0;        //等分点标记
 double MidAre[3];       //用来存放等分向量和向量da的叉积
 double Area=0;         //收口板面积
 char c='y';

 do
 {
 printf("输入进口短管外径\n");
 scanf("%f",&Pipe_radii);
 printf("输入收口板顶点距离X\n");
 scanf("%f",&Acme[0]);
 printf("输入收口板顶点距离Y\n");
 scanf("%f",&Acme[1]);
 printf("输入收口高度\n");
 scanf("%f",&Acme[2]);
 Div_0[0]=Pipe_radii;  //初始化后等分向量点使它指向等分点0
 Div_0[1]=0;
 Div_0[2]=0;
 for(Div_flg=1;Div_flg<=3;Div_flg++)
    {
     Div_1[0]=Pipe_radii*cos(PI/6*Div_flg);  //使前等分点向量指向后等分点的下一个点
     Div_1[1]=Pipe_radii*sin(PI/6*Div_flg);
     Div_1[2]=0;
     Div_vec[0]=Div_1[0]-Div_0[0];           //使等分向量等于前等分点向量减去后等分点向量
     Div_vec[1]=Div_1[1]-Div_0[1];
     Div_vec[2]=Div_1[2]-Div_0[2];              
     da[0]=Acme[0]-Div_1[0];     //使向量da等于前等分点到定点的向量
     da[1]=Acme[1]-Div_1[1];
     da[2]=Acme[2]-Div_1[2];
     Crossproduct(Div_vec,da,MidAre);      //得到等分向量与向量da的叉积并放入MidAre数组中
     Area=Area+0.5*sqrt(Innerproduct(MidAre,MidAre));     //把第Div_flg个三角形的面积加入到总面积中
     Div_0[0]=Div_1[0];                           
     Div_0[1]=Div_1[1];
     Div_0[2]=Div_1[2];       //让前等分点变成后等分点,进入下次循环
    }
 printf("收口板面积%f\n",Area);
 printf("收口板厚度8\n收口板重量%f",Area*8*7.85/1000000);
 printf("\n是‘y’否‘任意键’继续\n");//输入y继续下次计算,其他任意键退出?????想从从这里进入下次循环为什么不行
 scanf("%c",&c);
 }
while(c=='y');
 getchar();
 return 0;
 
}
搜索更多相关主题的帖子: 天圆地方 coupling double return result 
2014-01-10 08:31
Dramalife
Rank: 2
来 自:河北唐山
等 级:论坛游民
帖 子:35
专家分:50
注 册:2013-9-26
得分:10 

天才第一步,爹地宝贝纸尿裤~
2014-01-11 10:56
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
得分:10 
printf("输入收口高度\n");
scanf("%f",&Acme[2]);
毫无疑问是因为这个输入后面的回车符没处理. 加一个getchar().
2014-01-17 17:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-426354-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.694110 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved