题目链接:https://www.patest.cn/contests/gplt
所有一区的题都是用c语言编写的,都通过了,有的可能设计的比较复杂。仅供参考,同时也感谢网上的一些大佬们提供的思路。如果有疑问,每题详解可以点击http://www.cnblogs.com/czlm520/category/1148999.html查看。那是我做每一题完后写的一些注意点和思路。
L1-001Hello World
#include<stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
L1-002打印沙漏
#include<stdio.h>
#include<math.h> //无论是否剩余,都要输出剩余数。。。。。加判断输入是否满足要求???
int main()
{
int N,n;
char ch;
scanf("%d %c",&N,&ch);
n=sqrt((N+1)/2);
for(int i=n;i>=-n;i--)
{
for(int j=1;j<=n-abs(i);j++)
printf(" ");
for(int j=1;j<=2*abs(i)-1;j++)
printf("%c",ch);
printf("\n");
if(i==1) //当i减到1时跳到-1
i-=2;
}
// if(N-2*n*n+1 && N) 未剩余,仍要打印剩余数。
printf("%d\n",N-2*n*n+1);
return 0;
}
L1-003 个位数统计
#include<stdio.h>
#include<string.h>
int main()
{
char ch[1000];
int N[10]={0};
scanf("%s",&ch);
for(int i=0;i<strlen(ch);i++)
N[ch[i]-48]++;
for(int i=0;i<10;i++)
{
if(N[i])
printf("%d:%d\n",i,N[i]);
}
return 0;
}
L1-004 计算摄氏温度
#include<stdio.h>
int main()
{
int F;
scanf("%d",&F);
printf("Celsius = %d\n",5*(F-32)/9);
return 0;
}
L1-005 考试座位号
#include<stdio.h>
int main()
{
int N,n;
int cx[1000],sj[1000],ks[1000];
char str[1000][14+1];
scanf("%d",&N);
for(int i=0;i<N;i++)
{
scanf("%s %d %d",&str[i],&sj[i],&ks[i]);
}
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&cx[i]);
}
for(int i=0;i<n;i++)
{
for(int j=0;j<N;j++)
{
if(cx[i]==sj[j])
printf("%s %d\n",str[j],ks[j]);
}
}
return 0;
}
L1-006. 连续因子
#include<stdio.h>
#include<math.h>
int main()
{
int n,i;
scanf("%d",&n);
int max_length,max_start;
max_length=0,max_start=0;
for(i=2;i<=sqrt(n)+1;i++)
{
if(n%i==0) //找到第一个被能被整除的数
{
int j,nn,start,length;
nn=n;
start=i;
j=i;
length=0;
while(nn%j==0)
{
nn/=j; //新的被除数
j++; //新的除数
length++; //长度加一
}
if(length>max_length) //找到更长的连续因子
{
max_length=length;
max_start=start;
}
}
}
if(max_length==0) //素数;
{
max_start=n;
max_length=1;
}
printf("%d\n",max_length);
printf("%d",max_start);
for(i=max_start+1;i<max_start+max_length;i++)
printf("*%d",i);
printf("\n");
return 0;
}
L1-007. 念数字
#include<stdio.h>
#include<string.h>
int main()
{
char num[100];
int i;
scanf("%s",&num);
if(num[0]=='-')
printf("fu "),i=1;
else
i=0;
for(i;i<strlen(num);i++)
{
switch(num[i]-48)
{
case 0:printf("ling");break;
case 1:printf("yi");break;
case 2:printf("er");break;
case 3:printf("san");break;
case 4:printf("si");break;
case 5:printf("wu");break;
case 6:printf("liu");break;
case 7:printf("qi");break;
case 8:printf("ba");break;
case 9:printf("jiu");break;
default:break;
}
if(i<strlen(num)-1) printf(" ");
}
return 0;
}
L1-008. 求整数段和
#include<stdio.h>
int main()
{
int A,B,Sum=0;
scanf("%d %d",&A,&B);
for(int i=1;i<=B-A+1;i++)
{
Sum+=i+A-1;
printf("%5d",i+A-1);
if(!(i%5)) printf("\n");
}
if(((B-A+1)%5)) printf("\n"); //数未排满, 转行
printf("Sum = %d",Sum);
return 0;
}
L1-009. N个数求和
#include<stdio.h>
#include<math.h>
struct fengshu{
long long fz;
long long fm;
};
struct fengshu sum(struct fengshu fs[],int n)
{
struct fengshu sum;
sum.fz=0,sum.fm=1;
for(int i=0;i<n;i++)
{
sum.fz=sum.fz*fs[i].fm +sum.fm*fs[i].fz;
sum.fm=sum.fm*fs[i].fm;
}
return sum;
}
long long gy(long long a,long long b) //求最大公约数的递归函数
{
return b == 0 ? a : ( gy(b, a%b) );
}
int main()
{
int N;
struct fengshu fs[100];
scanf("%d",&N);
for(int i=0;i<N;i++)
scanf("%lld/%lld",&fs[i].fz,&fs[i].fm); // a/b格式化输入
struct fengshu s;
s=sum(fs,N);
long long g=gy(s.fm,s.fz);
s.fm/=g,s.fz/=g;
if(s.fz==0) printf("%lld",0);
else if(abs(s.fz)<s.fm) printf("%lld/%lld\n",s.fz,s.fm);
else if(abs(s.fz)>s.fm) printf("%lld %lld/%lld\n",s.fz/s.fm,s.fz%s.fm,s.fm);
return 0;
}
L1-010. 比较大小
#include<stdio.h>
int main()
{
int