02-0. 整數四則運算(10)
本題要求編寫程序,計算2個正整數的和、差、積、商並輸出。題目保證輸入和輸出全部在整型范圍內。
輸入格式:
輸入在一行中給出2個正整數A和B。
輸出格式:
在4行中按照格式“A 運算符 B = 結果”順序輸出和、差、積、商。
輸入樣例:3 2
輸出樣例:
3 + 2 = 5 3 - 2 = 1 3 * 2 = 6 3 / 2 = 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)==2)
{
printf("%d + %d = %d\n",a,b,a+b);
printf("%d - %d = %d\n",a,b,a-b);
printf("%d * %d = %d\n",a,b,a*b);
printf("%d / %d = %d\n",a,b,a/b);
}
return 0;
}
02-1. 厘米換算英尺英寸(15)
如果已知英制長度的英尺foot和英寸inch的值,那么對應的米是(foot+inch/12)*0.3048。現在,如果用戶輸入的是厘米數,那么對應英制長度的英尺和英寸是多少呢?別忘了1英尺等於12英寸。
輸入格式:
輸入在一行中給出1個正整數,單位是厘米。
輸出格式:
在一行中輸出這個厘米數對應英制長度的英尺和英寸的整數值,中間用空格分開。
輸入樣例:170
輸出樣例:
5 6
#include<stdio.h>
#include<stdlib.h>
int main()
{
int cm;
while(scanf("%d",&cm)==1)
{
int foot,inch;
double m=(double)cm*1.0/100;
foot=m/0.3048;
inch=(m*1.0/0.3048-foot)*12;
printf("%d %d\n",foot,inch);
}
return 0;
}
02-2. 然后是幾點(15)
有時候人們用四位數字表示一個時間,比如1106表示11點零6分。現在,你的程序要根據起始時間和流逝的時間計算出終止時間。 讀入兩個數字,第一個數字以這樣的四位數字表示當前時間,第二個數字表示分鍾數,計算當前時間經過那么多分鍾后是幾點,結果也表示為四位數字。當小時為個位數時,沒有前導的零,即5點30分表示為530。注意,第二個數字表示的分鍾數可能超過60,也可能是負數。
輸入格式:
輸入在一行中給出2個整數,分別是四位數字表示的起始時間、以及流逝的分鍾數,其間以空格分隔。注意:在起始時間中,當小時為個位數時,沒有前導的零,即5點30分表示為530;流逝的分鍾數可能超過60,也可能是負數。
輸出格式:
輸出四位數字表示的終止時間。題目保證起始時間和終止時間在同一天內。
輸入樣例:1120 110
輸出樣例:
1310
#include<stdio.h>
#include<stdlib.h>
int main()
{
int curTime,lastTime;
while(scanf("%d%d",&curTime,&lastTime)==2)
{
int hour=curTime/100;
int minute=curTime%100;
int sumTime=hour*60+minute;
sumTime+=lastTime;
printf("%d%d",sumTime/60,sumTime%60);
if(sumTime%60==0)
{
printf("0");
}
printf("\n");
}
return 0;
}
02-3. 逆序的三位數(10)
程序每次讀入一個正3位數,然后輸出按位逆序的數字。注意:當輸入的數字含有結尾的0時,輸出不應帶有前導的0。比如輸入700,輸出應該是7。
輸入格式:
每個測試是一個3位的正整數。
輸出格式:
輸出按位逆序的數。
輸入樣例:123
輸出樣例:
321
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num;
while(scanf("%d",&num)==1)
{
int a=num%10;
int b=num%100/10;
int c=num/100;
if(a!=0)
{
printf("%d%d%d\n",a,b,c);
continue;
}
if(a==0&&b!=0)
{
printf("%d%d\n",b,c);
continue;
}
if(a==0&&b==0)
{
printf("%d\n",c);
continue;
}
}
return 0;
}
02-4. BCD解密(10)
BCD數是用一個字節來表達兩位十進制的數,每四個比特表示一位。所以如果一個BCD數的十六進制是0x12,它表達的就是十進制的12。但是小明沒學過BCD,把所有的BCD數都當作二進制數轉換成十進制輸出了。於是BCD的0x12被輸出成了十進制的18了!
現在,你的程序要讀入這個錯誤的十進制數,然后輸出正確的十進制數。提示:你可以把18轉換回0x12,然后再轉換回12。
輸入格式:
輸入在一行中給出一個[0, 153]范圍內的正整數,保證能轉換回有效的BCD數,也就是說這個整數轉換成十六進制時不會出現A-F的數字。
輸出格式:
輸出對應的十進制數。
輸入樣例:18
輸出樣例:
12
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num;
while(scanf("%d",&num)==1)
{
int a,b;
a=num/16;
b=num%16;
if(a==0)
{
printf("%d\n",b);
continue;
}
printf("%d%d\n",a,b);
}
return 0;
}
03-0. 超速判斷(10)
模擬交通警察的雷達測速儀。輸入汽車速度,如果速度超出60 mph,則顯示“Speeding”,否則顯示“OK”。
輸入格式:
輸入在一行中給出1個不超過500的非負整數,即雷達測到的車速。
輸出格式:
在一行中輸出測速儀顯示結果,格式為:“Speed: V - S”,其中V是車速,S或者是Speeding、或者是OK。
輸入樣例1:40
輸出樣例1:
Speed: 40 - OK
輸入樣例2:
75
輸出樣例2:
Speed: 75 - Speeding
#include<stdio.h>
#include<stdlib.h>
int main()
{
int speed;
while(scanf("%d",&speed)==1)
{
printf("Speed: %d - ",speed);
if(speed>60)
printf("Speeding\n");
else
printf("OK\n");
}
return 0;
}
03-1. 三天打魚兩天曬網(15)
中國有句俗語叫“三天打魚兩天曬網”。假設某人從某天起,開始“三天打魚兩天曬網”,問這個人在以后的第N天中是“打魚”還是“曬網”?
輸入格式:
輸入在一行中給出1個不超過1000的正整數N。
輸出格式:
在一行中輸出此人在第N天中是“Fishing”(即“打魚”)還是“Drying”(即“曬網”),並且輸出“in day N”。
輸入樣例1:103
輸出樣例1:
Fishing in day 103
輸入樣例2:
34
輸出樣例2:
Drying in day 34
#include<stdio.h>
#include<stdlib.h>
int main()
{
int day;
while(scanf("%d",&day)==1)
{
if(day%5==1||day%5==2||day%5==3)
{
printf("Fishing in day %d\n",day);
}
else
{
printf("Drying in day %d\n",day);
}
}
return 0;
}
03-2. 用天平找小球(10)
三個球A、B、C,大小形狀相同且其中有一個球與其他球重量不同。要求找出這個不一樣的球。
輸入格式:
輸入在一行中給出3個正整數,順序對應球A、B、C的重量。
輸出格式:
在一行中輸出唯一的那個不一樣的球。
輸入樣例:1 1 2
輸出樣例:
C
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b,c;
while(scanf("%d%d%d",&a,&b,&c)==3)
{
int res=0;
res^=a;
res^=b;
res^=c;
if(res==a)
printf("A\n");
if(res==b)
printf("B\n");
if(res==c)
printf("C\n");
}
return 0;
}
03-3. 12-24小時制(15)
編寫一個程序,要求用戶輸入24小時制的時間,然后顯示12小時制的時間。
輸入格式:
輸入在一行中給出帶有中間的“:”符號(半角的冒號)的24小時制的時間,如12:34表示12點34分。當小時或分鍾數小於10時,均沒有前導的零,如5:6表示5點零6分。
提示:在scanf的格式字符串中加入“:”,讓scanf來處理這個冒號。
輸出格式:
在一行中輸出這個時間對應的12小時制的時間,數字部分格式與輸入的相同,然后跟上空格,再跟上表示上午的字符串“AM”或表示下午的字符串“PM”。如“5:6 PM”表示下午5點零6分。注意,在英文的習慣中,中午12點被認為是下午,所以24小時制的12:00就是12小時制的12:0 PM;而0點被認為是第二天的時間,所以是0:0 AM。
21:11
輸出樣例:
9:11 PM
include<stdio.h>
#include<stdlib.h>
int main()
{
int hour,minute;
char c;
while(scanf("%d%c%d",&hour,&c,&minute)==3)
{
if(hour==12)
printf("%d:%d PM\n",hour,minute);
if(hour>=0&&hour<12)
printf("%d:%d AM\n",hour,minute);
if(hour>12&&hour<=23)
printf("%d:%d PM\n",hour-12,minute);
}
return 0;
}
03-4. 成績轉換(15)
本題要求編寫程序將一個百分制成績轉換為五分制成績。轉換規則:
輸入格式:
輸入在一行中給出1個整數的百分制成績。
輸出格式:
在一行中輸出對應的五分制成績。
輸入樣例:90 輸出樣例: A
#include<stdlib.h>
#include<stdio.h>
int main()
{
int grade;
while(scanf("%d",&grade)==1)
{
switch(grade/10)
{
case 10:
case 9:
printf("A\n");
break;
case 8:
printf("B\n");
break;
case 7:
printf("C\n");
break;
case 6:
printf("D\n");
break;
default:
printf("E\n");
break;
}
}
return 0;
}
04-0. 求符合給定條件的整數集(15)
給定不超過6的正整數A,考慮從A開始的連續4個數字。請輸出所有由它們組成的無重復數字的3位數。
輸入格式:
輸入在一行中給出A。
輸出格式:
輸出滿足條件的的3位數,要求從小到大,每行6個整數。整數間以空格分隔,但行末不能有多余空格。
輸入樣例:2
輸出樣例:
234 235 243 245 253 254 324 325 342 345 352 354 423 425 432 435 452 453 523 524 532 534 542 543
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num;
int a[4];
while(scanf("%d",&num)==1)
{
for(int i=0;i<4;i++)
{
a[i]=num+i;
}
int cnt=0;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
for(int k=0;k<4;k++)
{
if(a[i]!=a[j]&&a[i]!=a[k]&&a[j]!=a[k])
{
if(cnt%6==0)
printf("%d",a[i]*100+a[j]*10+a[k]);
else
printf(" %d",a[i]*100+a[j]*10+a[k]);
cnt++;
if(cnt%6==0)
{
printf("\n");
}
}
}
}
}
}
}
04-1. 水仙花數(20)
水仙花數是指一個N位正整數(N>=3),它的每個位上的數字的N次冪之和等於它本身。例 如:153 = 13 + 53+ 33。 本題要求編寫程序,計算所有N位水仙花數。
輸入格式:
輸入在一行中給出一個正整數N(3<=N<=7)。
輸出格式:
按遞增順序輸出所有N位水仙花數,每個數字占一行。
輸入樣例:3
輸出樣例:
153 370 371 407
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int pow(int num,int n)
{
int pro=1;
for(int i=1;i<=n;i++)
{
pro*=num;
}
return pro;
}
int main()
{
int n;
while(scanf("%d",&n)==1)
{
if(n==7)
{
printf("1741725\n4210818\n9800817\n9926315\n");
continue;
}
int a[10];
memset(a,0,sizeof(a));
int start=1,last=1;
for(int i=1;i<n;i++)
start*=10;
last=start*10;
for(int i=start;i<last;i++)
{
int temp=i,cnt=0;
while(temp)
{
a[cnt++]=temp%10;
temp/=10;
}
int sumtemp=0;
for(int j=0;j<cnt;j++)
sumtemp+=pow(a[j],n);
if(sumtemp==i)
printf("%d\n",i);
}
}
}
04-2. 打印九九口訣表(15)
下面是一個完整的下三角九九口訣表:
1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
本題要求對任意給定的1位正整數N,輸出從1*1到N*N的部分口訣表。
輸入格式:
輸入在一行中給出一個正整數N(1<=N<=9)。
輸出格式:
輸出下三角N*N部分口訣表,其中等號右邊數字占4位、左對齊。
輸入樣例:4
輸出樣例:
1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16
<span style="font-size:12px;">#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int n;
while(scanf("%d",&n)==1)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
printf("%d*%d=%-4d",j,i,j*i);
}
printf("\n");
}
}
}</span>
04-3. 統計素數並求和(20)
本題要求統計給定整數M和N區間內素數的個數並對它們求和。
輸入格式:
輸入在一行中給出2個正整數M和N(1<=M<=N<=500)。
輸出格式:
在一行中順序輸出M和N區間內素數的個數以及它們的和,數字間以空格分隔。
輸入樣例:10 31
輸出樣例:
7 143
代碼:
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
int prime(int n)
{
if(n==1) return 0;
if(n==2) return 1;
int k=floor(sqrt(n)+0.5);
for(int i=2;i<=k;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
int main()
{
int start,last;
while(scanf("%d%d",&start,&last)==2)
{
int cnt=0,sum=0;
for(int i=start;i<=last;i++)
{
if(prime(i))
{
cnt++;
sum+=i;
}
}
printf("%d %d\n",cnt,sum);
}
}
04-4. 猜數字游戲(15)
猜數字游戲是令系統隨機產生一個100以內的正整數,用戶輸入一個數對其進行猜測,需要你編寫程序自動對其與隨機產生的被猜數進行比較,並提示大了(“Too big”),還是小了(“Too small”),相等表示猜到了。如果猜到,則結束程序。程序還要求統計猜的次數,如果1次猜出該數,提示“Bingo!”;如果3次以內猜到該數,則提示“Lucky You!”;如果超過3次但是在N(>3)次以內(包括第N次)猜到該數,則提示“Good Guess!”;如果超過N次都沒有猜到,則提示“Game Over”,並結束程序。如果在到達N次之前,用戶輸入了一個負數,也輸出“Game Over”,並結束程序。
輸入格式:
輸入第一行中給出2個不超過100的正整數,分別是系統產生的隨機數、以及猜測的最大次數N。隨后每行給出一個用戶的輸入,直到出現負數為止。
輸出格式:
在一行中輸出每次猜測相應的結果,直到輸出猜對的結果或“Game Over”則結束。
輸入樣例:58 4 70 50 56 58 60 -2
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int num,n;
while(scanf("%d%d",&num,&n)==2)
{
int nu,t=0,cnt=0,flag=0,a[200];
while(scanf("%d",&nu)==1&&nu>=0)
{
a[t++]=nu;
}
for(int i=0;i<t;i++)
{
cnt++;
if(a[i]<num&&cnt<=n&&flag==0)
printf("Too small\n");
if(a[i]>num&&cnt<=n&&flag==0)
printf("Too big\n");
if(a[i]==num&&cnt<=n&&flag==0)
{
flag=1;
if(cnt==1)
printf("Bingo!\n");
if(cnt>1&&cnt<=3)
printf("Lucky You!\n");
if(cnt>3&&cnt<=n)
printf("Good Guess!\n");
return 0;
}
if(cnt>n&&flag==0)
{
printf("Game Over\n");
return 0;
}
}
if(t<n||cnt>n)
{
printf("Game Over\n");
return 0;
}
}
}
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
