PTA 团队程序设计天梯赛 练习集 L1

L1-001

题目: Hello World

题意:

只需要打印Hello World!

分析:

注意点:

L1-002

题目: 打印沙漏

题意:

给出n个字符数与一种字符,要求用n个给定字符打印出一个沙漏,使未使用的字符尽可能少

分析:

进行基础的数学运算可以算出n个字符最多的沙漏行数,迭代输出即可。

注意点:

注意不要在字符后多打印空格。

L1-003

题目: 个位数统计

题意:

给定一个k位整数(k<=1000),判断k位整数各位出现数字的次数,要求按0到9的升序输出。

分析:

用一个b[10]数组储存出现次数,从i=0到9循环判断b[i]是否为0,不为0则输出。

注意点:

L1-004

题目: 计算摄氏温度

题意:

给定公式计算数

分析:

直接公式输出就可以了

注意点:

L1-005

题目: 考试座位号

题意:

给出准考证号、试机座位号、考试座位号,让你输出指定试机座位号的准考证号和考试座位号

分析:

用几个数组分别储存输入数据,对比输出就可以了

注意点:

L1-006

题目: 连续因子

题意:

对一个给定的N分解因子,升序输出最长的连续因子序列和序列长度(不包括1)

分析:

用整形start和len来表示因子序列的起点与长度,两层循环,外层为起点,内层求乘积,每次遇到长度大于当前len的序列就更新start与len。特殊情况为n为素数,此时len未被更新,保持初始化的值0。

注意点:

要将n与乘积product设为longlong类型,否则设为int则连续因子的乘积可能会溢出,造成最后一个测试点浮点错误卡住。

代码:

#include 
using namespace std;

int main(){
	long long n,product;
	int start,len;
	scanf("%lld",&n);
	start=len=0;
	for(int i=2;i<=sqrt(n);i++){
		product=1;
		for(int j=i;j*product<=n;j++){
			product*=j;
			if(n%product==0&&j-i+1>len){
				start=i;
				len=j-i+1;
			}
		}
	}
	if(len==0)
		printf("1\n%lld\n",n);
	else{
	printf("%d\n",len);
	printf("%d",start);
	for(int i=start+1;i<=len+start-1;i++)
		printf("*%d",i);
   }
	return 0;
}

L1-007

题目: 念数字

题意:

输入一个整数,输出对应的拼音。当整数为负数时,先输入fu字。拼音之间用空格隔开,最后一个拼音后没有空格。

分析:

用一个字符数组储存输入的整数,一个二维字符数组储存相应的拼音。

注意点:

注意输出格式。

代码:

#include 
using namespace std;

int main(){
	char a[100];
	char b[15][10];
	strcpy(b[0],"ling");
	strcpy(b[1],"yi");
	strcpy(b[2],"er");
	strcpy(b[3],"san");
	strcpy(b[4],"si");
	strcpy(b[5],"wu");
	strcpy(b[6],"liu");
	strcpy(b[7],"qi");
	strcpy(b[8],"ba");
	strcpy(b[9],"jiu");
	scanf("%s",a);
	if(a[0]=='-'){
		printf("fu");
		for(int i=1;a[i]!='\0';i++){
			printf(" %s",b[a[i]-'0']);
		}
	}
	else{
		printf("%s",b[a[0]-'0']);
		for(int i=1;a[i]!='\0';i++)
			printf(" %s",b[a[i]-'0']);
	}
	return 0;
}

L1-008

题目: 求整数段和

题意:

输入一个a和b,−100≤A≤B≤100,顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。

分析:

唯一注意的是输出格式,一是宽度对齐%md,二是换行。

注意点:

注意输出格式。当一共输出的个数正好是五的倍数时不需在最后输出换行符。

代码:

#include 
using namespace std;

int main(){
	int a,b,sum=0;
	scanf("%d %d",&a,&b);
	for(int i=a;i<=b;i++){
		printf("%5d",i);
		sum+=i;
		if((i-a+1)%5==0)
			printf("\n");
	}
	if((b-a+1)%5!=0)
		printf("\n");
	printf("Sum = %d",sum);
	return 0;
}

你可能感兴趣的:(PTA)