清華大學2001年複試上機題 第二套 解題報告

九度OJ 題目1065:輸出梯形
時間限制:1 秒  內存限制:32 兆  特殊判題:否  提交:377  解決:183
題目描述:
    輸入一個高度h,輸出一個高爲h,上底邊爲h的梯形。
輸入:
    一個整數h(1<=h<=1000)。
輸出:
    h所對應的梯形。
樣例輸入:
    4
樣例輸出:
          ****
        ******
      ********
    **********
提示:
    梯形每行都是右對齊的,sample中是界面顯示問題
//清華2001:題目1065:輸出梯形
//輸入一個高度h,輸出一個高爲h,上底邊爲h的梯形。
//題目沒說是多組數據啊 該死 WA*n...
//#include <fstream>
#include <iostream>
using namespace std;

int main()
{
	int i, j, k, h, bottom;
	while( cin >> h ){
		bottom = h + 2*(h-1);	//bottom爲底邊*的個數
		//ofstream out("THU_1065_output.cpp");
		for( i=0; i<h; i++ ){
			for( j=0; j<bottom-h-2*i; j++ )
				cout << " ";
			for( k=0; k<h+2*i; k++ ){
				cout << "*";
				if( k==h-1+2*i )
					cout << endl;
			}
		}
	}
	return 0;
}


九度OJ 題目1066:字符串排序

時間限制:1 秒  內存限制:32 兆  特殊判題:否  提交:545  解決:212
題目描述:
     輸入一個長度不超過20的字符串,對所輸入的字符串,按照ASCII碼的大小從小到大進行排序,請輸出排序後的結果
輸入:
     一個字符串,其長度n<=20
輸出:
     輸入樣例可能有多組,對於每組測試樣例,
    按照ASCII碼的大小對輸入的字符串從小到大進行排序,輸出排序後的結果
樣例輸入:
    dcba
樣例輸出:
    abcd
//清華2001:題目1066:字符串排序
//輸入一個長度不超過20的字符串(輸入樣例可能有多組)
//對所輸入的字符串 按照ASCII碼的大小從小到大進行排序,請輸出排序後的結果 
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdio>
using namespace std;

struct LETTER{
	char a;
	int b;
};
LETTER l[20];

bool cmp( LETTER x, LETTER y ){
	return x.b < y.b;
};

int main()
{
	int i, j, k, n, length;
	char s[20];
	while ( scanf("%s",s)!=EOF ){
		length = strlen(s);
		for( i=0; i<length; i++ ){
			l[i].a = s[i];
			l[i].b = l[i].a;
		}
		sort( l, l+length, cmp );
		for( i=0; i<length; i++ ){
			printf("%c",l[i].a);
		}
		printf("\n");
	}
	return 0;
}

以上是C風格 以下是C++風格

//清華2001:題目1066:字符串排序
//輸入一個長度不超過20的字符串(輸入樣例可能有多組)
//對所輸入的字符串 按照ASCII碼的大小從小到大進行排序,請輸出排序後的結果 
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;

struct LETTER{
	char a;
	int b;
};
LETTER l[20];

bool cmp( LETTER x, LETTER y ){
	return x.b < y.b;
};

int main()
{
	int i, j, k, n, length;
	string s;
	while( cin >> s ){
		length = s.length();
		for( i=0; i<length; i++ ){
			l[i].a = s[i];
			l[i].b = l[i].a;
		}
		sort( l, l+length, cmp );
		for( i=0; i<length; i++ )
			cout << l[i].a;
		cout << endl;
	}
	return 0;
}


九度OJ 題目1067:n的階乘
時間限制:1 秒  內存限制:32 兆  特殊判題:否  提交:712  解決:252
題目描述:
    輸入一個整數n,輸出n的階乘
輸入:
    一個整數n(1<=n<=20)
輸出:
    n的階乘
樣例輸入:
    3
樣例輸出:
    6
//清華2001:題目1067:n的階乘
//輸入一個整數n,輸出n的階乘 (1<=n<=20)
#include <iostream>
using namespace std;
#define INT long long

int main()
{
	int i, j, k, n;
	INT r;	//r=result
	while( cin >> n ){
		r = 1;
		for( i=2; i<=n; i++ )
			r *= i;
		cout << r << endl;
	}
	return 0;
}
發佈了43 篇原創文章 · 獲贊 4 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章