清华大学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;
}

你可能感兴趣的:(清华大学2001年复试上机题 第二套 解题报告)