文章目錄
BASIC-14 時間轉換
題目信息
問題描述
給定一個以秒爲單位的時間t,要求用“<H>:<M>:<S>”
的格式來表示這個時間。<H>
表示時間,<M>
表示分鐘,而<S>
表示秒,它們都是整數且沒有前導的“0”。例如,若t=0,則應輸出是“0:0:0”;若t=3661,則輸出“1:1:1”。
輸入格式
輸入只有一行,是一個整數t(0<=t<=86399)。
輸出格式
輸出只有一行,是以“<H>:<M>:<S>”
的格式所表示的時間,不包括引號。
樣例輸入
0
樣例輸出
0:0:0
樣例輸入
5436
樣例輸出
1:30:36
解題思路
主要考察
本題給出的考察關鍵字是:取餘、數字字符混合輸出
。因爲C++在格式化輸出方面的語法比較複雜,所以在這裏我們可以直接使用printf()
函數進行輸出,需要引入#include<cstdio>
頭文件。
解題代碼
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int t;
cin>>t;
printf("%d:%d:%d",t/3600,t%3600/60,t%60);
return 0;
}
BASIC-15 字符串對比
題目信息
問題描述
給定兩個僅由大寫字母或小寫字母組成的字符串(長度介於1到10之間),它們之間的關係是以下4中情況之一:
1:兩個字符串長度不等。比如 Beijing 和 Hebei
2:兩個字符串不僅長度相等,而且相應位置上的字符完全一致(區分大小寫),比如 Beijing 和 Beijing
3:兩個字符串長度相等,相應位置上的字符僅在不區分大小寫的前提下才能達到完全一致(也就是說,它並不滿足情況2)。比如 beijing 和 BEIjing
4:兩個字符串長度相等,但是即使是不區分大小寫也不能使這兩個字符串一致。比如 Beijing 和 Nanjing
編程判斷輸入的兩個字符串之間的關係屬於這四類中的哪一類,給出所屬的類的編號。
輸入格式
包括兩行,每行都是一個字符串
輸出格式
僅有一個數字,表明這兩個字符串的關係編號
樣例輸入
BEIjing
beiJing
樣例輸出
3
解題思路
主要考察
本題給出的考察關鍵字是:字符串、大小寫
。只要是考察了字符串的操作。在C++中我們可以直接使用<string>
類庫對字符串進行操作,比如使用compare()
比較兩個字符串是否相等,使用length()
或者size()
求字符串的長度,使用append()
在字符串末尾添加一個字符等等。更加詳細的字符串操作請參考C++的api:string api詳解
解題思路
我們直接根據題目要求寫就可以了。首先我們設置一個標誌位flag = 0,然後再判斷兩個字符串長度是否相等,如果不相等令flag = 1,如果相等flag自然還是爲0;接下來使用compare()
函數判斷兩個字符串是否完全相等,如果相等則令flag = 2;再接下來判斷兩個字符串的長度是否相等,這裏要注意:如果兩個字符串完全相等,那麼長度自然也是相等的,那麼我們如何避免由於兩個字符串完全相等flag = 2後再因爲兩個字符串的長度相等而被重新賦值爲3呢?
其實很簡單,我們只需要在判斷條件裏再加一個flag != 2
就可以了。如果flag已經爲2了,那麼我們加上這個判斷條件之後就不會出現上述提到的問題了。然後進入第三個判斷後我們將兩個字符串統一標準,全部轉換爲大寫或者全部轉換爲小寫,然後我們再使用compare()判斷兩個字符串是否相等,如果此時相等了,那麼我們令flag = 3;接下來經過第三個判斷的轉換,如果兩個字符串長度相等,而且全都轉換爲小寫之後仍然不一樣,那麼令flag = 4;最後我們使判斷函數返回flag的最終結果即可。
解題代碼
#include<iostream>
#include<string>
using namespace std;
int judge(string s1,string s2){
int flag = 0;
//如果兩個字符串長度不相等
if(s1.length() != s2.length()){
flag = 1;
}
//如果兩個字符串完全一樣
if(s1.compare(s2) == 0){
flag = 2;
}
//如果兩個字符串長度相等,但是不完全一樣,那麼將這兩個字符串全部轉換爲小寫再比較
if(s1.length() == s2.length() && flag != 2){
int len = s1.length();
for(int i=0;i<len;i++){
if(s1[i] >= 'A' && s1[i] <= 'Z'){
s1[i] += 32;
}
if(s2[i] >= 'A' && s2[i] <= 'Z'){
s2[i] += 32;
}
}
//如果兩個字符串都轉換爲小寫之後完全一樣,那麼令flag = 3
if(s1.compare(s2) == 0){
flag = 3;
}
}
//如果兩個字符串長度相等,而且全都轉換爲小寫之後仍然不一樣,那麼令flag = 4
if(s1.size() == s2.size() && s1.compare(s2) != 0){
flag = 4;
}
return flag;
}
int main(){
string s1,s2;
getline(cin,s1);
getline(cin,s2);
cout<<judge(s1,s2);
return 0;
}
以上就是對於這兩個題目的解題思路了。如果你覺得我的文章對你有用請點個贊支持一下吧,喜歡我寫的文章那麼請點個關注再走喲。如果此文章有錯誤或者有不同的見解歡迎評論或者私信。
我是ACfun:一個成長中的程序猿,感謝大家的支持。