703 找零錢

1. 請撰寫一程式,製作販賣機找零系統,讓使用者輸入一個正整數,代表需要找零的金額,請依照面額大至小輸出找零結果,不同面額請用半形空格隔開。
2. 販賣機找零規則:只有50元、10元、5元及1元四種面額的硬幣,請使用最少的硬幣數目找零。

輸入說明 一個正整數
輸出說明 找零結果

範例輸入1 32
範例輸出1 3*$10 2*$1
範例輸入2 78
範例輸出2 1*$50 2*$10 1*$5 3*$1

#include <stdio.h>
#include <string.h>
#define N 7
int main(){
	int x;
	scanf("%d", &x);
	int y[] = {x/50, (x%50)/10, (x%10)/5, x%5};
	char s1[50]={'\0'}, s2[N]={'\0'}, s3[N]={'\0'}, s4[N]={'\0'};
	if (y[0]) sprintf(s1, "%d*$50 ", y[0]);
	if (y[1]) sprintf(s2, "%d*$10 ", y[1]);
	if (y[2]) sprintf(s3, "%d*$5 ", y[2]);
	if (y[3]) sprintf(s4, "%d*$1 ", y[3]);
	strcat(s1,s2);
	strcat(s1,s3);
	strcat(s1,s4);
	s1[strlen(s1)-1]='\0';
	printf("%s", s1);
}

705 庫存函數

請撰寫一程式,讓使用者先輸入三組字串及其相對應的庫存量做為比對標準,接著再輸入五個字串,若這五個字串與任一比對標準相同,則加上庫存量,最後輸出庫存量總合。

提示1:字串長度皆不超過20字元且庫存量皆為整數。
提示2:大小寫視為不同的字串。

輸入說明 三組字串及其相對應的庫存量、五個字串
輸出說明 庫存量總和

範例輸入
Apple 100
Asus 90
Acer 80
Msi
Apple
Lenovo
Asus
Dell
範例輸出 190

#include <stdio.h>
#include <string.h>
#define N 3
int main(){
	int num[N], sum=0;
	char x[N][20], y[5][20];
	for (int i=0; i<N; ++i)
		scanf("%19s%d", x[i], &num[i]);
	for (int i=0; i<5; ++i){
		scanf("%19s", y[i]);
		for (int j=0; j<N; ++j)
			if (!strcmp(y[i], x[j]) )
				sum+=num[j];
	}
	printf("%d", sum);
}

707 動態記憶體配置

請撰寫一程式,製作矩形面積計算機,讓使用者輸入一個正整數n,代表有n個矩形,接著依序輸入n個矩形的長、寬(皆為正整數),計算各個矩形的面積並由小而大輸出。

輸入說明 一個正整數n及n個矩形的長、寬(皆為正整數)
輸出說明 由小而大的矩形面積計算結果

範例輸入1
3
8 3
9 4
5 5
範例輸出1
8x3=24
5x5=25
9x4=36
範例輸入2
5
5 5
10 5
5 20
7 3
4 6
範例輸出2
7x3=21
4x6=24
5x5=25
10x5=50
5x20=100

#include <stdio.h>
void sort(int* x, int size, int* y){
	int max;
	for (int k=0; k<size-1; ++k){
		for (int i=0; i<size-1; ++i){
			if (x[i]>x[i+1]){
				max = x[i]; x[i] = x[i+1]; x[i+1] = max;
				max = y[i]; y[i] = y[i+1]; y[i+1] = max;
			}
		}
	}
}
int main(){
	int n, a;
	scanf("%d", &n);
	int m[n][2], Area[n], index[n];
	for (int i=0; i<n; ++i){
		scanf("%d%d", &m[i][0], &m[i][1] );
		Area[i] = m[i][0]*m[i][1];
		index[i] = i;
	}
	sort(Area, n, index);
	for (int i=0; i<n; ++i){
		a = index[i];
		printf("%dx%d=%d\n", m[a][0], m[a][1], Area[i] );
	}
}


//暫存(備用)
void swap(int* x, int* y){
	int temp = *x;
	*x = *y;
	*y =temp;
}

709 圓面積計算

請撰寫一程式,讓使用者輸入一個正整數n以及n個圓心座標(x,y)和不重複的半徑,計算並輸出圓面積總和至小數點後第二位,以及最大圓的x、y座標與半徑。

提示:圓周率請使用3.14159進行運算。

輸入說明 一個正整數n以及n個圓心座標(x,y)和不重複的半徑
輸出說明 圓面積總和以及最大圓的x、y座標與半徑

範例輸入
3
0 0 4
8 5 7
7 9 6
範例輸出
Sum = 317.30
x: 8, y: 5
radius: 7
#include <stdio.h>
#define PI 3.14159
void sort(int* x, int size, int* y){
	int max;
	for (int k=0; k<size-1; ++k){
		for (int i=0; i<size-1; ++i){
			if (x[i]>x[i+1]){
				max = x[i]; x[i] = x[i+1]; x[i+1] = max;
				max = y[i]; y[i] = y[i+1]; y[i+1] = max;
			}
		}
	}
}
int main(){
	int n, a;
	scanf("%d", &n);
	int m[n][2], radius[n], index[n];
	float sum=0;
	for (int i=0; i<n; ++i){
		scanf("%d%d%d", &m[i][0], &m[i][1], &radius[i] );
		index[i] = i;
		sum += PI * radius[i] * radius[i];
	}
	sort(radius, n, index);
	a = index[n-1];
	printf("Sum = %.2f\n", sum);
	printf("x: %d, y: %d\n", m[a][0], m[a][1]);
	printf("radius: %d", radius[n-1]);
}