#include <iostream>
using namespace std;
int main()
{
int i,m,j;
char c;
cin >> c;
for(i = 1;i <= 3; i++)
{
for(m = 1;m <= 5; m++)
{
if(m == 4-i)
{
for(j = 1; j<=1+(i-1)*2;j++)
cout << c;
m +=(i-1)*2;
}
else
cout << " ";
}
cout << endl;
}
return 0;
}
这里介绍下我的题解思路,先尝试这打印每一行的内容(设置外循环),然后通过补齐其余的图形找到行数与输出字符位置的对应关系,位置一与对应的行数匹配开始打印并且通过行数与结束位置的对应关系结束打印。
代码如下:组成三角形的条件任意两边之和大于第三边,任意两边之差小于第三边。
#include <iostream>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
if((a<b+c && a>abs(c-b)) || (b<a+c && b>abs(a-c)) || (c<a+b && c>abs(a-b)))
{
cout<<"yes";
}
else
{ cout<<"no";
}
}
代码如下:表达式记得别写重复
#include <iostream>
using namespace std;
#include <cmath>
int main()
{
int a,b,c;
cin>>a>>b>>c;
if((a<b+c && a>abs(c-b)) || (b<a+c && b>abs(a-c)) || (c<a+b && c>abs(a-b)))
{
cout<<"Yes";
}
else
{ cout<<"No";
}
}
代码如下:
#include <iostream>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
if (a+b>c && b+c>a && a+c>b ){
if (a*a+b*b == c*c)
{
cout<<"yes";
} else if(a*a + c*c == b*b){
cout<<"yes";
} else if(c*c + b*b == a*a){
cout<<"yes";
} else
cout<<"no";
}
else
cout<<"no";
}
老实说看到这个题目有点儿懵逼,不过我很快就觉得可以把这个三角形变换一下,不难发现其实每行打印就是左边一列的数字,初始值是行数的累加,并且对于每个数列而言下一个数字等于前面的数字加上它所在的行。
海伦公式;已知三角形的三边a, b, c 求三角形的面积S=sqrt(p(p-a)(p-b)(p-c));p=(a+b+c)/2;
保留精度:
#include <iomanip>
cout << fixed << setprecision(n) << x;
n 为对应保留几位小数,x为对应的数字。
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
double a, b, c;
cin >> a >> b >> c;
if (a + b > c && a + c > b && b + c >a){
double p = (a + b + c) / 2;
double sqrts = p*(p-a)*(p-b)*(p-c);
double s = sqrt(sqrts);
cout << fixed << setprecision(2) << s;
} else {
cout << "No answer";
}
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int a, b;
int m;
cin >> a >> b;
for(int i = 1; i < a+b; i++)
{
if(i+a>b && i+b>a )
{
m = i;
}
}
cout << m ;
}
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a, b, c;
cin >> a >> b >> c;
if(a+b > c && a+c > b && c+b>a){
if(pow(a,2)+pow(b,2)==pow(c,2)||pow(a,2)+pow(c,2)==pow(b,2)
||pow(c,2)+pow(b,2)==pow(a,2)){
if(a < b)
a = b;
if(a < c)
a = c;
int hypotenuse = pow(a,2);
cout << hypotenuse;
} else {
int temp;
if(a < b){
temp =a;
a = b;
b =temp;}
if(a < c){
temp = a;
a = c;
c = temp;}
if(b < c)
b = c; //三个数确定最大的数其余的数也要对应变换,否则会有数据丢失。
int hymax = pow(a,2) + pow(b,2);
cout << hymax;
}
}
return 0;
}
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int c, N, cnt = 0;
cin >> N;
for(int c = N / 2 + 1; c < N; c++)
{
int m = sqrt(pow(N,2) - pow(c,2));
if(pow(m,2) + pow(c,2) == pow(N,2) && m <= c ){
cnt += m/2 ;
}
}
cout << cnt;
return 0;
}
本人水平有限,如有错误恳请指正。