C语言编程
股票价格涨跌趋势,常用蜡烛图技术中的K线图来表示,分为按日的日K线、按周的周K线、按月的月K线等。以日K线为例,每天对应一根蜡烛小图,每天股票价格从开盘到收盘走完一天,在...
股票价格涨跌趋势,常用蜡烛图技术中的K线图来表示,分为按日的日K线、按周的周K线、按月的月K线等。
以日K线为例,每天对应一根蜡烛小图,每天股票价格从开盘到收盘走完一天,在一天对应的蜡烛图中,要表示四个价格:开盘价格Open(早上刚刚开始开盘买卖成交的第1笔价格)、收盘价格Close(下午收盘时最后一笔成交的价格)、中间的最高价High和最低价Low。
如果收盘价格低于开盘价格,表示为“实心蓝白蜡烛”;
如果收盘价高于开盘价,表示为“空心红蜡烛”;
如果开盘价等于收盘价,则为“十字红蜡烛”;
如果最低价格比开盘价或收盘价低,称为“有下影线”;
如果最高价比收盘价开盘价高,称为“有上影线”。
请编程序,根据给定的四个价格组合,输出当日的蜡烛是一根什么样的蜡烛。
输入输出:
第一行输入案例数T
每一行输入股票的一组四个价格组合(四个小数):开盘价, 收盘价, 最高价, 最低价。
输出当日蜡烛图的名称:
有上影线/有下影线/有上下影线/无影线的实心蓝白蜡烛/空心红蜡烛/十字红蜡烛
样例输入:
3
5.110 5.105 5.250 5.100
5.110 5.110 5.110 5.110
5.110 5.120 5.120 5.100
输出:
有上下影线的实心蓝白蜡烛
无影线的十字红蜡烛
有下影线的空心红蜡烛
以下为源代码
#include <stdio.h>
#include "genlib.h"
#include "simpio.h"
int main(void){
int loop,m,n,ri,s[10];
double a,b,c,d;
scanf("%d",&loop);
for(ri=1;ri<=loop;ri++){
scanf("%f""%f""%f""%f",&a,&b,&c,&d);
if((c>a && c>b) && (d<a || d<b)) printf("有上下影线的");
else{if(c>a && c>b) printf("有上影线的");
else if(d<a || d<b) printf("有下影线的");
else printf("无影线的");
}
if(a<b) printf("空心红蜡烛");
else if(a>b) printf("实心蓝白蜡烛");
else printf("十字红蜡烛");
printf("\n");
}
}
为什么运行时永远是“十字红蜡烛”? 展开
以日K线为例,每天对应一根蜡烛小图,每天股票价格从开盘到收盘走完一天,在一天对应的蜡烛图中,要表示四个价格:开盘价格Open(早上刚刚开始开盘买卖成交的第1笔价格)、收盘价格Close(下午收盘时最后一笔成交的价格)、中间的最高价High和最低价Low。
如果收盘价格低于开盘价格,表示为“实心蓝白蜡烛”;
如果收盘价高于开盘价,表示为“空心红蜡烛”;
如果开盘价等于收盘价,则为“十字红蜡烛”;
如果最低价格比开盘价或收盘价低,称为“有下影线”;
如果最高价比收盘价开盘价高,称为“有上影线”。
请编程序,根据给定的四个价格组合,输出当日的蜡烛是一根什么样的蜡烛。
输入输出:
第一行输入案例数T
每一行输入股票的一组四个价格组合(四个小数):开盘价, 收盘价, 最高价, 最低价。
输出当日蜡烛图的名称:
有上影线/有下影线/有上下影线/无影线的实心蓝白蜡烛/空心红蜡烛/十字红蜡烛
样例输入:
3
5.110 5.105 5.250 5.100
5.110 5.110 5.110 5.110
5.110 5.120 5.120 5.100
输出:
有上下影线的实心蓝白蜡烛
无影线的十字红蜡烛
有下影线的空心红蜡烛
以下为源代码
#include <stdio.h>
#include "genlib.h"
#include "simpio.h"
int main(void){
int loop,m,n,ri,s[10];
double a,b,c,d;
scanf("%d",&loop);
for(ri=1;ri<=loop;ri++){
scanf("%f""%f""%f""%f",&a,&b,&c,&d);
if((c>a && c>b) && (d<a || d<b)) printf("有上下影线的");
else{if(c>a && c>b) printf("有上影线的");
else if(d<a || d<b) printf("有下影线的");
else printf("无影线的");
}
if(a<b) printf("空心红蜡烛");
else if(a>b) printf("实心蓝白蜡烛");
else printf("十字红蜡烛");
printf("\n");
}
}
为什么运行时永远是“十字红蜡烛”? 展开
2个回答
2014-12-18
展开全部
首先是scanf读入double要用%lf
其次if else嵌套太多,一定要用花括号{},避免自己搞混
再次,变量名要有意义些
#include <stdio.h>
//#include "genlib.h"
//#include "simpio.h"
int main(void) {
int loopCount, i; //后面这些变量没有被用到啊 m, n, s[10];
double open, close, max, min; //给变量起有意义的名字
double upper, lower; //箱体的上下边界
scanf("%d", &loopCount);
for (i = 0; i < loopCount; i++) { //请遵循c语言从0开始的惯例
scanf("%lf %lf %lf %lf", &open, &close, &max, &min);
//判断箱体的上下边界
if (open > close) {
upper = open;
lower = close;
} else {
upper = close;
lower = open;
}
//判断有无影线
if ((max <= upper) && (min >= lower)) {
printf("无");
} else {
printf("有");
if (max > upper) {
printf("上");
}
if (min < lower) {
printf("下");
}
}
printf("影线的");
//判断是"空心红","实心蓝白"还是"十字红"
if (open < close) {
printf("空心红");
} else {
if (open > close) {
printf("实心蓝白");
} else {// open == close
printf("十字红");
}
}
printf("蜡烛\n");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
int main(void){
int loop,m,n,ri,s[10];
double a,b,c,d;
scanf("%d",&loop);
for(ri=1;ri<=loop;ri++){
int up=0,down=0; //加两个变量,便于理解
scanf("%lf%lf%lf%lf",&a,&b,&c,&d); //double用%lf longfloat
if(c>a && c>b) up=1;
if(d<a || d<b) down=1;
if( up && down ) printf("有上下影线的");
else{
if ( up ) printf("有上影线的");
else if (down) printf("有下影线的");
else printf("无影线的");
}
if(a<b) printf("空心红蜡烛");
else if(a>b) printf("实心蓝白蜡烛");
else printf("十字红蜡烛");
printf("\n");
}
}
更多追问追答
追问
编译时C:\Users\1\Desktop\testASC_for5\collect2.exe [Error] ld returned 1 exit status
追答
你是不是有程序在运行没有关闭啊!
关闭所有在执行的程序,然后重新编译运行,还不行,就上图
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询