item*=remainder;
sum+=item;
temp/=10;
}
if(i==sum)
printf("%d\n",i);
}
return0;
}
6.时间换算
UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。
现在,你的程序要读入一个整数,表示BJT的时和分。
整数的个位和十位表示分,百位和千位表示小时。
如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。
如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分。
有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。
你的程序要输出这个时间对应的UTC时间,输出的格式和输入的相同,即输出一个整数,表示UTC的时和分。
整数的个位和十位表示分,百位和千位表示小时。
如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。
提醒:
要小心跨日的换算。
输入格式:
一个整数,表示BJT的时和分。
整数的个位和十位表示分,百位和千位表示小时。
如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。
输出格式:
一个整数,表示UTC的时和分。
整数的个位和十位表示分,百位和千位表示小时。
如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。
输入样例:
903
输出样例:
103
时间限制:
500ms内存限制:
32000kb
#include
intmain()
{
inth,m,input,b;
scanf("%d",&input);
h=input/100;
m=input%100;
if(h>=8){
printf("%d",b=(h-8)*100+m);
}else{
printf("%d",b=(h+24-8)*100+m);
}
return0;
}
7.信号报告
题目内容:
无线电台的RS制信号报告是由三两个部分组成的:
R(Readability)信号可辨度即清晰度.
S(Strength) 信号强度即大小.
其中R位于报告第一位,共分5级,用1—5数字表示.
∙1---Unreadable
∙2---Barelyreadable,occasionalwordsdistinguishable
∙3---Readablewithconsiderabledifficulty
∙4---Readablewithpracticallynodifficulty
∙5---Perfectlyreadable
报告第二位是S,共分九个级别,用1—9中的一位数字表示
∙1---Faintsignals,barelyperceptible
∙2---Veryweaksignals
∙3---Weaksignals
∙4---Fairsignals
∙5---Fairlygoodsignals
∙6---Goodsignals
∙7---Moderatelystrongsignals
∙8---Strongsignals
∙9---Extremelystrongsignals
现在,你的程序要读入一个信号报告的数字,然后输出对应的含义。
如读到59,则输出:
Extremely strong signals, perfectly readable.
输入格式:
一个整数,信号报告。
整数的十位部分表示可辨度,个位部分表示强度。
输入的整数范围是[11,59],这个范围外的数字不可能出现在测试数据中。
输出格式:
一句话,表示这个信号报告的意义。
按照题目中的文字,先输出表示强度的文字,跟上逗号和空格,然后是表示可辨度的文字,跟上句号。
注意可辨度的句子的第一个字母是小写的。
注意这里的标点符号都是英文的。
输入样例:
33
输出样例:
Weak signals, readable with considerable difficulty.
#include
intmain()
{
intrs;
scanf("%d",&rs);
if(rs%10!
=0){
intr=rs/10;
ints=rs%10;
switch(s){
case1:
printf("Faintsignals,barelyperceptible,");
break;
case2:
printf("Veryweaksignals,");
break;
case3:
printf("Weaksignals,");
break;
case4:
printf("Fairsignals,");
break;
case5:
printf("Fairlygoodsignals,");
break;
case6:
printf("Goodsignals,");
break;
case7:
printf("Moderatelystrongsignals,");
break;
case8:
printf("Strongsignals,");
break;
case9:
printf("Extremelystrongsignals,");
break;
}
switch(r){
case1:
printf("unreadable.");
break;
case2:
printf("barelyreadable,occasionalwordsdistinguishable.");
break;
case3:
printf("readablewithconsiderabledifficulty.");
break;
case4:
printf("readablewithpracticallynodifficulty.");
break;
case5:
printf("perfectlyreadable.");
break;
}
}
return0;
}
也可以写成下面这样:
#include
intmain()
{
ints;
intr;
intn;
scanf("%d",&n);
r=n/10;
s=n%10;
switch(s){
case0:
printf("");
case1:
printf("Faintsignals,barelyperceptible,");break;
case2:
printf("Veryweaksignals,");break;
case3:
printf("Weaksignals,");break;
case4:
printf("Fairsignals,");break;
case5:
printf("Fairlygoodsignals,");break;
case6:
printf("Goodsignals,");break;
case7:
printf("Moderatelystrongsignals,");break;
case8:
printf("Strongsignals,");break;
case9:
printf("Extremelystrongsignals,");break;
}
switch(r){
case0:
printf("");
case1:
printf("unreadable.");break;
case2:
printf("barelyreadable,occasionalwordsdistinguishable.");break;
case3:
printf("readablewithconsiderabledifficulty.");break;
case4:
printf("readablewithpracticallynodifficulty.");break;
case5:
printf("perfectlyreadable.");break;
}
return0;
}
8.数字特征值
题目内容:
对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。
对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推。
这个整数在第n位上的数字记作x,如果x和n的奇偶性相同,则记下一个1,否则记下一个0。
按照整数的顺序把对应位的表示奇偶性的0和1都记录下来,就形成了一个二进制数字。
比如,对于342315,这个二进制数字就是001101。
这里的计算可以用下面的表格来表示:
数字
3
4
2
3
1
5
数位
6
5
4
3
2
1
数字奇偶
奇
偶
偶
奇
奇
奇
数位奇偶
偶
奇
偶
奇
偶
奇
奇偶一致
0
0
1
1
0
1
二进制位值
32
16
8
4
2
1
按照二进制位值将1的位的位值加起来就得到了结果13。
你的程序要读入一个非负整数,整数的范围是[0,100000],然后按照上述算法计算出表示奇偶性的那个二进制数字,输出它对应的十进制值。
提示:
将整数从右向左分解,数位每次加1,而二进制值每次乘2。
输入格式:
一个非负整数,整数的范围是[0,100000]。
输出格式:
一个整数,表示计算结果。
输入样例:
342315
输出样例:
13
#include"stdio.h"
#include"math.h"//使用pow函数需要引用
intmain()
{
//number:
输入的正整数;ret:
结果
intnumber=-1,ret=0;
scanf("%d",&number);
if(number>0&&number<=100000)
{
//cont:
数位;num:
个位数;binary:
二进制位值;
intcont=1,num,binary=1;
do
{
num=number%10;//等到个位上的数
if((num%2==0&&cont%2==0)||(num%2==1&&cont%2==1))//判断奇偶一致性
{
if(cont!
=1)
binary=pow(2,cont-1);//pow(2,3):
幂次方函数,表示2的3次方
ret+=binary;//相加每一位奇偶一致的二进制位值,得到十进制数
}
number/=10;//去掉个位上的数
cont++;
}while(number>0);
}
printf("%d",ret);
return0;
}
9.奇偶个数
题目内容:
你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。
程序输出读到的数据中的奇数和偶数的个数。
输入格式:
一系列正整数,整数的范围是(0,100000)。
如果输入-1则表示输入结束。
输出格式:
两个整数,第一个整数表示读入数据中的奇数的个数,第二个整数表示读入数据中的偶数的个数。
两个整数之间以空格分隔。
输入样例:
934257-1
输出样例:
42
#include
intmain()
{
inta,i=0,j=0;
do{
scanf("%d",&a);
if(a%2==1)
i++;
if(a%2==0)
j++;
}
while(a!
=-1);
printf("%d%d",i,j);
return0;
}
10.素数和
题目内容:
我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。
现在,给定两个整数n和m,0输入格式:
两个整数,第一个表示n,第二个表示m。
输出格式:
一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入样例:
24
输出样例:
15
时间限制:
500ms内存限制:
32000kb
#include
intmain(){
intm=0;
intn=0;
inti;
intj;
intsum=0;
intisPrime=1;
intnum=0;
scanf("%d%d",&n,&m);
for(i=2;i<=20000;i++){
for(j=2;j
if((i%j)==0){
isPrime=0;
break;
}
}
if(isPrime==1){
num++;
if(num>=n&&num<=m){
sum+=i;
}
}
if(num==m)
break;
isPrime=1;
}
printf("%d\n",sum);
return0;
}
11.念整数
题目内容:
你的程序要读入一个整数,范围是[-100000,100000]。
然后,用汉语拼音将这个整数的每一位输出出来。
如输入1234,则输出:
1.yi er san si
注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。
当遇到负数时,在输出的开头加上“fu”,如-2341输出为:
1.fu er san si yi
输入格式:
一个整数,范围是[-100000,100000]。
输出格式:
表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。
输入样例:
-30
输出样例:
fusanling
时间限制:
500ms内存限制:
32000kb
#include
intmain()
{
intx;
intnum;
scanf("%d",&x);
intlength=0;
intonum;
intnumbit=1;
intnumbox;
if(x<0)
{
printf("fu");
num=-x;
}
else
{
num=x;
}
onum=num;
while(num>9)
{
num/=10;
length++;
}
while(length>0)
{
numbit*=10;
length--;
}
num=onum;
while(numbit>0)
{
numbox=num/numbit;
switch(numbox)
{
case0:
printf("ling");
break;
case1:
printf("yi");
break;
case2:
printf("er");
break;
case3:
printf("san");
break;
case4:
printf("si");
break;
case5:
printf("wu");
break;
case6:
printf("liu");
break;
case7:
printf("qi");
break;
case8:
printf("ba");
break;
case9:
printf("jiu");
break;
default:
printf("error");
}
num%=numbit;
numbit/=10;
if(numbit>0)
{
printf("");
}
else
{
printf("\n");
}
}
return0;
}
#include
#defineARRAY_SIZE200
intmain(void){
inti,a,b,integer_part;
charresult[ARRAY_SIZE+1]={0};/*存放小数部分*/
scanf("%d/%d",&a,&b);
integer_part=a/b;/*商的整数部分*/
a=a%b;/*余数*/
for(i=0;ia*=10;/*余数乘以10作为下一轮计算的被除数*/
result[i]=(a/b)+'0';/*得到一位商*/
a%=b;/*新余数*/
if(a==0)
break;
}
result[i+1]='\0';
printf("%d.%s\n",integer_part,result);
return0;
}