---
# System prepended metadata

title: 程式設計(期中測驗)

---

# 程式設計(期中測驗)
## 第一題：吉祥數字 
### 題目:
有一個小村落認為 7 是一個非常吉祥的數字，所以他們的數字比較皆 環繞在 7的身上。 
● 今天若有兩數字，則兩數字中可以被 7 整除的比較大，如 140 比 52大，140為最吉祥數字 
● 可以被 7 整除的數字中取 70 的餘數較大的比較大，如 28 會比 14 大，28為最吉祥數字 
● 不能被 7 整除的數字中取 77 的餘數較小的比較大，如 15 會比 16 和 68 大，15為最吉祥數字 
寫一個程式，求出這些數字中的最吉祥數字 
輸入格式： 
輸入為一連串的數字,範圍介在 1 至 1000 之間，以數字 0 代表這一串 數字的尾端，最多不超過 10 個數字，且 0 不列入須比較的範圍。 
輸出格式： 
依照該村落的數字比較大小規則，輸出給定數列中最大的數字，若有 多個最大的數字，請輸出最前面那一個。 
範例： 
輸入　7 14 28 0 ⇒輸出　28 
輸入　7 77 777 0　⇒輸出　7 
輸入　52 140 0 ⇒ 輸出 140 
輸入 15 16 68 0 ⇒ 輸出 15
### 程式:
```cpp=
#include<iostream>
using namespace std;
int main(){
	int k,n=0,tag=0;
	cin>>k; k=7;
	n=k;
	while(k!=0){
		if(k%7==0)
		{
			if(tag==0) n=k;
			else if(k%70>n%70)
					n=k;
			tag=1;
		}
		else if (tag==0)
				if(k%77<n%77)
					n=k;
		cin>>k;
	}
		cout<<n;

}

```

## 第二題：超級細菌繁殖 
### 題目:
超級細菌王每過一天就會分裂出一個超級細菌，而分裂出來的超級細跟超 級細菌王一樣，每過一天也會再分裂出另一個超級細菌。 
假設原先有一個超級細菌王，過了一天之後，就會變成一個超級細菌王以 及一個超級細菌； 
過了兩天之後，超級細菌王會再分裂出一個超級細菌，另一個超級細菌也 會再產生另一個超級細菌，所以過了兩天之後，就會有一個超級細菌王以 及三個超級細菌。 
寫一個程式，給定現在超級細菌王跟超級細菌的比例，計算出從開始到現 到現在，經過了幾天？ 
輸入格式： 
輸入有一行，含有兩個整數 �� 和 ��，以一個空白隔開， 代表超級細菌王的數量：超級細菌的數量為=> N：T 
輸出格式： 
推算經過了幾天. 
範例： 
輸入　1 3 ⇒輸出　2 
輸入　4 28　⇒輸出　3
### 程式:
```cpp=
#include<iostream>
using namespace std;
int main(){
	int n=0,t=0;
	cin>>n>>t;
	int ans=0;
	int total=0;
	while(total<t)
	{
	 total=total*2+n;
	 ans+=1;
	}
	cout<<ans;
}

```

## 第三題：神奇數字 
### 題目:
使用者輸入一個四位數字，請你幫他計算出屬於他的神奇數字。 條件如下： 
● 如果是奇數，那麼千位數字和個位數字相加總和，再乘以百位數 字和十位數字相加總合。 
● 如果是偶數，那麼千位數字和百位數字相乘，以及個位數字與十 位數字相乘，最後把二個相乘結果相加。 
○ 若此條件有任一相乘結果為0，則神奇數字為所有數字相 加. 
神奇數字不可以超過三位數字，即以上條之超過三位數字的話，只取 後面二位數字（十位字數和個位數字），神奇數字可以是二位數或一位 數。 
若使用者輸入數字不是四位數字，必須重新輸入，直到輸入正確四位 數字為止，即只可以輸入1000 ~9999之間的數字，程式必須加以判斷 並要求輪入正確為止。 
例如: 1746 : (1x7)+(4x6)=7+24=31 
1745：(1+5)x(7+4)=6x11=66 
9999：(9+9)x(9+9)=18x18=324 %100 =24 
1000：1+0+0+0=1 
2002：2+0+0+2=4 
請你幫忙計算以下情況的神奇數字： 

輸入格式： 1000 
1746 
1745 
2002 
9999 
輸出格式： 1 
31 
66 
4 
24
### 程式:
```cpp=
#include<iostream>
using namespace std;
int main(){
	int n,a,b,num;
	cin>>n;
	while(n>9999||n<1000)
	{
		cin>>n;
	}
	if (n%2!=0)
		{
			a=n/1000+n%10;
			b=n%1000/100+n/10%10;
			num=a*b;
		}
	else
		{
			a=(n/1000)*(n%1000/100);
			b=(n%10)*(n/10%10);
			if(a==0||b==0)
			{	
				a=n/1000+n%10;
				b=n%1000/100+n/10%10;
				num=a+b;
			}
			else num=a+b;
		}
		num=num%100;
		cout<<num;
	}

```

## 第四題：青蛙跳躍 
### 題目:
有一隻青蛙每次可以跳躍不一樣的距離， 
假設一次可以跳躍的距離為 5 或 8，若目的地距離 97，那麼它可以藉 由跳五次距離 5 和九次距離 8 ，剛好到達目的地； 
但若牠的目的地距離在11 則無法順利到達目的地（無法剛好跳躍到剛 好的目的地） 
輸入格式 
輸入只有一行，包含三個整數 N、M 和 D 。 
N 和 M 表示青蛙可以跳躍的距離，D 表示目的地和牠的距離 
輸出格式 
若青蛙可以剛好到達目的地則輸出 YES，否則輸出NO 
範例： 
輸入　5 8 97 ⇒輸出　YES 
輸入　5 4 1　⇒輸出　NO 
輸入　17 31 147　⇒輸出　NO
### 程式:
```cpp=
#include<iostream>
using namespace std;
int main()
{
	int N,M,D;
	
	int temp,flag=0;
	
	cin>>N>>M>>D;
	
	for(int i=0;i<=(D/N);i++)
	{
		int remain=D-i*N;
		if(remain%M==0)
		{
		  flag=1;
		  break;
		}
	}
		if(flag==1)
			cout<<"Yes"<<endl;
		else
			cout<<"No"<<endl;
	
}
```

## 第五題：ASCII 編碼計算 
### 題目:
一個文字統計器，希望能統計出文章中的英文字母大小寫各有 多少？請你寫一個程式，幫忙計算。 
輸入格式： 
由使用者一一輸入文字訊息，包含各種特殊符號、英文字母和阿拉伯數字 ，最後輸入’=’鍵後結束。 
輸出格式： 
依序輸出英文字母（大小寫要分開計算，前面為大寫，後面小寫），各有多 少。 
範例： 
輸入 
We are Rssh Senior High School students.= 
輸出 5 28 
輸入 
1234+*5678ab= 
輸出 0 2 
輸入 
There are 45 cars ,18 motors and 100 biks.= 
輸出 1 24
### 程式:
```cpp=
#include <iostream>
using namespace std;
int main()
{ 
  int A_count=0,a_count=0,n_count=0;

  char i;
  
  cin>>i;

  for(;;) 
  {
  	if(i=='=') break;
  	if(i>='A'&&i<='Z')
  		A_count++;
  	else if (i>='a'&&i<='zFFDFY')
  		a_count++;
  	else if  (i>='0'&&i<='9')
  		n_count++;
  		
  	cin>>i;
  }
  cout<<A_count<<" "<<a_count<<" "<<n_count;
  
    return 0;
}

```

