The Famous Clock
-
描述
-
Mr. B, Mr. G and Mr. M are now in Warsaw, Poland, for the 2012’s ACM-ICPC World Finals Contest. They’ve decided to take a 5 hours training every day before the contest. Also, they plan to start training at 10:00 each day since the World Final Contest will do so. The scenery in Warsaw is so attractive that Mr. B would always like to take a walk outside for a while after breakfast. However, Mr. B have to go back before training starts, otherwise his teammates will be annoyed. Here is a problem: Mr. B does not have a watch. In order to know the exact time, he has bought a new watch in Warsaw, but all the numbers on that watch are represented in Roman Numerals. Mr. B cannot understand such kind of numbers. Can you translate for him?
-
输入
- Each test case contains a single line indicating a Roman Numerals that to be translated. All the numbers can be found on clocks. That is, each number in the input represents an integer between 1 and 12. Roman Numerals are expressed by strings consisting of uppercase ‘I’, ‘V’ and ‘X’. See the sample input for further information. 输出
- For each test case, display a single line containing a decimal number corresponding to the given Roman Numerals. 样例输入
-
I II III IV V VI VII VIII IX X XI XII
样例输出
-
Case 1: 1 Case 2: 2 Case 3: 3 Case 4: 4 Case 5: 5 Case 6: 6 Case 7: 7 Case 8: 8 Case 9: 9 Case 10: 10 Case 11: 11 Case 12: 12
Mr.B先生买了块手表,但手表上显示的是罗马数字,请编程将输入一个罗马数字将其转换为阿拉伯数字。
思想:
这道题直接用数组实现,定义一个二维数组a[N][],用for循环遍历每一个数组元素,如果字符串经比较相等,则输出结果。
代码实现:
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[12][5]={"I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII"};
char b[12];
int n=0,i;
while(~scanf("%s",b)){
n++;
for(i=0;i<12;i++)
{
if(strcmp(a[i],b)==0)//a是指向 5个元素 数组的指针
{
printf("Case %d: %d\n",n,i+1);
}
}
}
return 0;
}
做题心得:
1.学会用数组解决问题
2.字符串比较函数: strcmp
用法:int strcmp(char * str1,char *str2);
如果str1>str2,函数返回值>0;
如果两串相等,函数返回值为0.