算一個數是2的幾次方:
在以前,我是隻會用For語句的,所以這道題怎麼也做不出來。做是可以做,但是沒有範圍,控制變量不知道選到幾。for語句做不出,那就用別的循環了。所以,要用while。
n先除以2,直到等於1爲止。n每除以一次2,s+1。
所以代碼如下
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,s;
cin>>n;
s=0;//s賦初值,不賦初值程序輸出結果不對。
while (n!=1)
{
n=n/2;
s=s+1;
}
cout<<s<<endl;
return 0;
}
判斷三角形:
輸入一個三角形的邊長,分別判斷這個三角形是否是等邊三角形、等腰三角形、三角形。
解:
三角形條件:任意兩邊之和大於第三邊。
等腰三角形:有兩邊相等,且是三角形。
等邊三角形:三邊長度相等。
題目要求先判斷是否是等邊三角形,再判斷是否是等腰三角形,然後是三角形。
所以是等邊三角形就一定是等腰和普通三角形。
不是等邊三角形,但是是等腰三角形的一定是普通三角形。
但是在判斷三角形等腰和等邊的時候要判斷邊長有沒有0。
這題還有一個要注意的,本題輸出的不是“yes”而是“yse”
代碼如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
if ((a==b)&&(b==c)&&(c!=0))//條件一定不能忘記0
cout<<"yse"<<endl;
else cout<<"no"<<endl;
if (((a==b)||(b==c)||(c==a))&&((a!=0)&&(b!=0)&&(c!=0)))
cout<<"yse"<<endl;
else cout<<"no"<<endl;
if (((a+b>c)&&(c+b>a)&&(a+c>b))&&((a!=0)&&(b!=0)&&(c!=0)))
cout<<"yse"<<endl;
else cout<<"no"<<endl;
return 0;
}