全国软件专业人才开发与设计赛题之简单题

3.1计算手机通话时长,系统提供开始与结束时间,输出两时间的时间差

输入格式:24:34代表24分34秒

标准输入:24:34 58:23

输出对应的秒数

 1 #include <stdio.h>
 2 int main()
 3 {
 4     int pmin,psec,nmin,nsec;//用于对前后时间保存
 5     while(scanf("%d:%d %d:%d",&pmin,&psec,&nmin,&nsec)!=EOF)
 6     {
 7         if(nsec<psec)nmin=(60+nmin-1)%60;//如果结束秒数比开始秒数小,需要调整分钟数
 8         int diffsec=(nsec-psec+60)%60+((nmin-pmin+60)%60)*60;
 9         printf("%d\n",diffsec);//输出为
10     }
11     return 1;
12 }

 

 3.2有一种特殊的两位数,比如:25

其平方625的末尾两位正好和25相同。

请写程序计算所有这样的二位数,由小到大排列,每个数据占一行

 1 #include <stdio.h>
 2 int main()
 3 {
 4     for(int i=10;i<100;i++)
 5     {
 6         if(((i-1)*i)%100==0)//i*i-i等价与(i-1)*i 由于题目仅仅是对两位数进行处理,所以可以采用%100的方式
 7             printf("%d\n",i);
 8     }
 9     return 1;
10 }

 

 3.3在某些场所,我们需要对计量数据和单位进行分割,并进行输出。

举例:1.5kg 

输出:

1.5

kg 

请写程序进行分割输出。

 1 #include <stdio.h>
 2 #include <string.h>
 3 /*------------------------
 4 由于题意只是要求对数字和单位分离
 5 但是,数据的格式需要保留,所以
 6 本程序思路:
 7 首先分别一行的所有信息至sourcestr[]
 8 然后sscanf对sourcestr进行分离数据和单位字符串
 9 进而在读取的sourcestr中匹配单位字符串的位置
10 然后对sourcestr字串进行分离输出
11 -------------------------*/
12 int main()
13 {
14     char sourcestr[50];
15     char desstr[50];
16     double dnumber=0;//双精度数据
17     int position=0;
18     while(scanf("%s",sourcestr)!=EOF)
19     {
20         //
21         sscanf(sourcestr,"%lf%s",&dnumber,desstr);
22         //寻找单位出现的位置,进行提取数字
23         position=strcspn(sourcestr,desstr);
24         for(int i=0;i<strlen(sourcestr);i++)
25         {
26             if(i==position)
27                 printf("\n");
28             putchar(sourcestr[i]);
29         }
30         printf("\n");
31     }
32     return 1;
33 }

 

3.4输出今年有多少毫秒(提示:今年不是闰年) 

1 #include <stdio.h>
2 #include <string.h>
3 int main()
4 {
5     //这里用365.0提升数据的表示范围,防止数据的溢出
6     //输出进行类型转换long
7     printf("%ld\n",(long)(365.0*24*60*60*1000));//365天*24小时*60分钟*60s*1000毫秒 
8     return 1;
9 }

 

 

 

 

posted @ 2010-08-19 23:10  Eric.wei  阅读(279)  评论(0编辑  收藏  举报