大偵探福爾摩斯接到一張奇怪的字條:「我們約會吧!3485djdkxh4hhge 2984akdfkkkkggedsb s&hgsfdk d&hyscvnm」。大偵探很快就明白了,字條上奇怪的亂碼實際上就是約會的時間「星期四 14:04」,因為前面兩字串中第1對相同的大寫英文本母(大小寫有區分)是第4個字母'd',代表星期四;第2對相同的字元是'e',那是第5個英文本母,代表一天裡的第14個鐘頭(於是一天的0點到23點由數字0到9、以及大寫字母a到n表示);後面兩字串第1對相同的英文本母's'出現在第4個位置(從0開始計數)上,代表第4分鐘。現給定兩對字串,請幫助福爾摩斯解碼得到約會的時間。
輸入格式:
輸入在4行中分別給出4個非空、不包含空格、且長度不超過60的字串。
輸出格式:
在一行中輸出約會的時間,格式為「day hh:mm」,其中「day」是某星期的3字元縮寫,即mon表示星期一,tue表示星期二,wed表示星期三,thu表示星期四,fri表示星期五,sat表示星期六,sun表示星期日。題目輸入保證每個測試存在唯一解。
輸入樣例:
3485djdkxh4hhge輸出樣例:2984akdfkkkkggedsb
s&hgsfdk
d&hyscvnm
thu 14:04
思路:先確定星期:在第一行字串中找到『a』-『g』的字元,和第二行相同位置的字元進行判斷,若相等確定星期。再確定小時,在確定了星期的字元基礎上繼續向後尋找數字或者『a』-『n』的字母,與第二行相同位置字元進行比較。確定分鐘,在第三行字串中尋找出現的字母,與第四行相同位置的字元進行比較,注意,此處要的是位置。
一、起始變數
1.a、b、c、d四個字串
2.count,計數變數,用來判斷是第幾個相同的字元。
二、運算
1.先確定星期:在第一行字串中找到『a』-『g』的字元,和第二行相同位置的字元進行判斷,若相等確定星期。
2.再確定小時,在確定了星期的字元基礎上繼續向後尋找數字或者『a』-『n』的字母,與第二行相同位置字元進行比較。
3.確定分鐘,在第三行字串中尋找出現的字母,與第四行相同位置的字元進行比較,注意,此處要的是位置。
三、**
#include "stdio.h"
#include "string.h"
typedef char string[4];
int main()
; char a[60],b[60],c[60],d[60];
int i, j;
int count = 0;//用來統計是第幾個相同的字元;
scanf("%s",a);
scanf("%s",b);
scanf("%s",c);
scanf("%s",d);
for(i = 0; i < strlen(a) && count <= 1; i++)
}//確定小時,在確定了星期的字元基礎上繼續向後尋找數字或者『a』-『n』的字母,與第二行相同位置字元進行比較。
if(count == 1 && a[i] >= '0' && a[i] <= '9' )
}else if(count == 1 && a[i] >= 'a' && a[i] <= 'n' )
} }
//確定分鐘,在第三行字串中尋找出現的字母,與第四行相同位置的字元進行比較,注意,此處要的是位置。
for( i = 0; i < strlen(c); i++)
else
}} }
return 0;
}
PAT乙級1014(C語言)
大偵探福爾摩斯接到一張奇怪的字條 我們約會吧!3485djdkxh4hhge 2984akdfkkkkggedsb s hgsfdk d hyscvnm 大偵探很快就明白了,字條上奇怪的亂碼實際上就是約會的時間 星期四 14 04 因為前面兩字串中第1對相同的大寫英文本母 大小寫有區分 是第4個字母...
1014 C語言的文法
程式 外部宣告 程式 外部宣告 外部宣告 函式定義 宣告 函式定義 函式型別 說明符 復合語句 函式型別 void char int float 說明符 指標 直接說明符 直接說明符 指標 指標 直接說明符 識別符號 直接說明符 直接說明符 常量表示式 識別符號 引數序列 識別符號 直接說明符,識別...
PAT 乙等 1004 C語言
讀入n名學生的姓名 學號 成績,分別輸出成績最高和成績最低學生的姓名和學號。輸入格式 每個測試輸入包含1個測試用例,格式為 第1行 正整數n 第2行 第1個學生的姓名 學號 成績 第3行 第2個學生的姓名 學號 成績 第n 1行 第n個學生的姓名 學號 成績其中姓名和學號均為不超過10個字元的字串,...