自己的代码
#include <cstdio>
//#include <iostream>
#include <cstdlib>
#include <algorithm>
using namespace std;
struct node{
int index;
double content;
}B[4];
int main(){
double A[10]={},temp;
for(int i=1;i<10;i++){
scanf("%lf",&temp);
A[i]=temp;
}
printf("123为什么不输出这条语句!!!");
for(int i=0;i<=2;i++){
B[i].content=max(max(A[3*i+1],A[3*i+2]),max(A[3*i+2],A[3*i+3]));
if(B[i].content==A[3*i+1]){
B[i].index=3*i+1;
}else if(B[i].content==A[3*i+2]){
B[i].index=3*i+2;
}else if(B[i].content==A[3*i+3]){
B[i].index=3*i+3;
}
/*switch(B[i].content){
case A[3*i+1]:
B[i].index=3*i+1;
break;
case A[3*i+2]:
B[i].index=3*i+2;
break;
case A[3*i+3]:
B[i].index=3*i+3;
break;
}*/
}
for(int i=0;i<=2;i++){
int result=B[i].index%3;
switch(result){
case 0:
printf("L ");
break;
case 1:
printf("W ");
break;
case 2:
printf("T ");
break;
}
}
double sum=0;
sum=(B[0].content*B[1].content*B[2].content*0.65-1)*2;
printf("%.2f",sum);
return 0;
}
参考答案
#include <cstdio>
char S[3]={'W','T','L'};
int main(){
double ans=1.0,tmp,a;
int idx;
for(int i=0;i<3;i++){
tmp=0.0;
for(int j=0;j<3;j++){
scanf("%lf",&a);
if(a>tmp){
tmp=a;
idx=j;
}
}
ans*=tmp;//按公式累乘
printf("%c ",S[idx]);
}
printf("%.2f",(ans*0.65-1)*2);
return 0;
}
总结:
1,自己的代码中想引用c++库中的max函数,但遇到一些问题,总结,头文件需要#include<cstdlib>这个是c++的库文件,#include<algorithm>这个是max的库文件,另外#include<cstdio>和#include<iostream>是同样的效果,即输入输出流头文件,另外using namespace stdnamespace 就是一个名字的空间。是为了避免名字冲突而使用的。在不同的空间里可以使用同一个名字而不会引起名字冲突. 它的声明就像声明一个类一样。 可以将其理解为使用标准库,这几个函数缺一不可。
2,switch(a):case b,这里的ab都必须是常量,不可以变化,可以采用赋值将变化的量赋给常量再放到switch中。否则就要采用if else系列了。
3,本题其实相对很简单,就是九个数,我弄的太麻烦了。
4,关于输出的问题,日后回来填坑。