思想:使用while循環直至n=1爲止,同時定義一個哨兵,每當while循環一次則將哨兵多加一次,最終輸入出哨兵的值
#include<iostream>
using namespace std;
int main(){
int n;//定義正整數n
int count=0;//定義哨兵
cin>>n;//C++輸入流,輸入n的值
while(n!=1){//while循環體內存放終止條件
if(n%2==0)
n=n/2;//偶數則除2
else
n=(3*n+1)/2;//奇數則乘3加1再除2
count++;
}
cout<<count;//輸出流輸出
}
2.PAT B1032:挖掘機技術哪家強spa
爲了用事實說明挖掘機技術到底哪家強,PAT 組織了一場挖掘機技能大賽。現請你根據比賽結果統計出技術最強的那個學校。code
輸入格式:htm
輸入在第 1 行給出不超過 1 的正整數 N,即參賽人數。隨後 N 行,每行給出一位參賽者的信息和成績,包括其所表明的學校的編號(從 1 開始連續編號)、及其比賽成績(百分制),中間以空格分隔。blog
輸出格式:ip
在一行中給出總得分最高的學校的編號、及其總分,中間以空格分隔。題目保證答案惟一,沒有並列。
輸入樣例:
6
3 65
2 80
1 100
2 70
3 40
3 0
解析:
首先須要使用cin標準輸入流輸入挖掘機總數n,將其存放在一個數組裏,須要注意的是【包括其所表明的學校的編號(從 1 開始連續編號)】,說明對該數組進行初始化須要從1開始至n,所以該數組應該設爲n+1個。以後進行for循環,進行一次次的循環,同時在循環內進行cin輸入,在進行輸入的同時,進行查找其中的最大值,對於每個學校的分值應當相加——>【學校:數組下標;學校分值:數組的值】。
如何查找最大值呢?有好幾種方法都可以獲得,講最簡單的,開始設置一個max=0而且假設是最大的,而後在for循環裏依次進行比較,若是數組值比max的值大,則記錄下該值的下標而且將其賦值給max以確保max最終爲最大的值,最終獲得的下標就是學校,獲得的max值就是學校成績。
# include<iostream>
# include<algorithm>
# include<stdio.h>
# include<string>
using namespace std;
int main(){
int n,h,cj,max=0,maxh;
cin>>n;
int a[n+1];
for(int i=1;i<=n;i++){
a[i]=0;
}
for(int j=1;j<=n;j++){
cin>>h>>cj;
a[h]=a[h]+cj;
if(max<a[h]){
max=a[h];
maxh=h;
}
}
cout<<maxh<<" "<<max;
return 0;
}
3.PAT B1036:跟奧巴馬一塊兒編程
美國總統奧巴馬不只呼籲全部人都學習編程,甚至以身做則編寫代碼,成爲美國曆史上首位編寫計算機代碼的總統。2014 年末,爲慶祝「計算機科學教育周」正式啓動,奧巴馬編寫了很簡單的計算機代碼:在屏幕上畫一個正方形。如今你也跟他一塊兒畫吧!
輸入格式:
輸入在一行中給出正方形邊長 N(3)和組成正方形邊的某種字符 C,間隔一個空格。
輸出格式:
輸出由給定字符 C 畫出的正方形。可是注意到行間距比列間距大,因此爲了讓結果看上去更像正方形,咱們輸出的行數其實是列數的 50%(四捨五入取整)。
輸入樣例:
10 a
輸出樣例:
aaaaaaaaaa
a a
a a
a a
aaaaaaaaaa
解析:四捨五入,本質上即爲(n+1)/ 2:
若n爲偶數則(n+1)/ 2根據除法運算可知(n+1)/ 2 = n / 2
若n爲奇數數則爲(n+1)/ 2
輸出的時候第一行與最後一行所有輸出,對於第2~n-1行的時候首尾輸入一個a,中間輸入空格,使用雙層for循環解決
#include <iostream>
using namespace std;
int main()
{
int N;
char c;
cin>>N>>c;
for(int i = 0; i < (N + 1) / 2; i++)//四捨五入的本質
{
for(int j = 0; j < N; j++)
{
if(i == 0 || i == (N - 1) / 2 || j == 0 || j == N - 1)//i==0和i==(n-1)/2表明第一行和最後一行所有輸出字符
cout<<c; //其他的只有該行的第一個和最後一個須要輸出字符
else
cout<<' ';
}
cout<<endl;//換行
}
return 0;
}