团体程序设计天梯赛-练习集-L1区001——048C语言全解

题目链接:https://www.patest.cn/contests/gplt

所有一区的题都是用c语言编写的,都通过了,有的可能设计的比较复杂。仅供参考,同时也感谢网上的一些大佬们提供的思路。如果有疑问,每题详解可以点击http://www.cnblogs.com/czlm520/category/1148999.html查看。那是我做每一题完后写的一些注意点和思路。

L1-001Hello World

#include
 int main()
 {
     printf("Hello World!\n");
     return 0;
}

L1-002打印沙漏

#include   
#include    //无论是否剩余,都要输出剩余数。。。。。加判断输入是否满足要求???
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
#include
int main()
{
    char ch[1000];
    int N[10]={0};
    scanf("%s",&ch);
    for(int i=0;i

L1-004 计算摄氏温度

#include
int main()
{
    int F;
    scanf("%d",&F);
    printf("Celsius = %d\n",5*(F-32)/9);
    return 0;
}

L1-005 考试座位号

#include      
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

L1-006. 连续因子

#include
#include 
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

L1-007. 念数字

#include
#include
int main()
{
    char num[100];
    int i;
    scanf("%s",&num);
    if(num[0]=='-')
       printf("fu "),i=1;
    else
       i=0;
    for(i;i

L1-008. 求整数段和

#include
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
#include
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;is.fm) printf("%lld %lld/%lld\n",s.fz/s.fm,s.fz%s.fm,s.fm);
    return 0;
}

L1-010. 比较大小

#include
int main()
{
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    a>b?a>c?b>c?printf("%d->%d->%d",c,b,a):printf("%d->%d->%d",b,c,a):printf("%d->%d->%d",b,a,c):b>c?c>a?printf("%d->%d->%d",a,c,b):printf("%d->%d->%d",c,a,b):printf("%d->%d->%d",a,b,c);
    return 0;
}

L1-011. A-B

#include
#include
int main()
{
    char strA[105],strB[105];
    gets(strA);
    gets(strB);
    for(int i=0;i

L1-012. 计算指数

#include
int main()
{
    int n,s=1;
    scanf("%d",&n);
    if(n>0 && n<=10)
    for(int i=0;i

L1-013. 计算阶乘和

#include      //段错误??????????? 
int js(int n)
{
    if(n==1||n==0) return 1;
    else return n*js(n-1);
}
int main()
{
    int n,s=0;
    scanf("%d",&n);   //忘记加&O.O 
    for(int i=1;i<=n;i++)s+=js(i);
    printf("%d",s);
    return 0;
}

L1-014. 简单题

#include
int main()
{
    printf("This is a simple problem.");
    return 0;
}

L1-015. 跟奥巴马一起画方块

#include
int main()
{
    int N,n;
    char C;
    scanf("%d %c",&N,&C);
    if(N>=3 && N<=21)
    {
        if(N%2==0) n=N/2;   //四舍五入 
        else n=N/2+1;
        for(int j=0;j

L1-016. 查验身份证

#include
int main()
{
    int N;
    char id[100][20];
    scanf("%d",&N);
    int i;
    for(i=0;i57)
            {
                er++;
                printf("%s\n",id[i]);
                goto next;
            }
        }
        sum=(id[i][0]-48)*7+(id[i][1]-48)*9+(id[i][2]-48)*10+(id[i][3]-48)*5+(id[i][4]-48)*8+(id[i][5]-48)*4+(id[i][6]-48)*2+(id[i][7]-48)*1+(id[i][8]-48)*6+(id[i][9]-48)*3+(id[i][10]-48)*7+(id[i][11]-48)*9+(id[i][12]-48)*10+(id[i][13]-48)*5+(id[i][14]-48)*8+(id[i][15]-48)*4+(id[i][16]-48)*2;
        //sum=sum/100;
        switch((sum%11))
        {
            case 0:
                if(id[i][17]!='1')
                {
                    printf("%s\n",id[i]);
                    er++;
                }
                break;
            case 1:
                if(id[i][17]!='0')
                {
                    printf("%s\n",id[i]);
                    er++;
                }
                break;
            case 2:
                if(id[i][17]!='X')
                {
                    printf("%s\n",id[i]);
                    er++;
                }
                break;
            case 3:
                if(id[i][17]!='9')
                {
                    printf("%s\n",id[i]);
                    er++;
                }
                break;
            case 4:
                if(id[i][17]!='8')
                {
                    printf("%s\n",id[i]);
                    er++;
                }
                break;
            case 5:
                if(id[i][17]!='7')
                {
                    printf("%s\n",id[i]);
                    er++;
                }
                break;
            case 6:
                if(id[i][17]!='6')
                {
                    printf("%s\n",id[i]);
                    er++;
                }
                break;
            case 7:
                if(id[i][17]!='5')
                {
                    printf("%s\n",id[i]);
                    er++;
                }
                break;
            case 8:
                if(id[i][17]!='4')
                {
                    printf("%s\n",id[i]);
                    er++;
                }
                break;
            case 9:
                if(id[i][17]!='3')
                {
                    printf("%s\n",id[i]);
                    er++;
                }
                break;
            case 10:
                if(id[i][17]!='2')
                {
                    printf("%s\n",id[i]);
                    er++;
                }
                break;
        }
        next:;
    }
    if(er==0)printf("All passed\n");
    return 0;
}

L1-017. 到底有多二

#include
int main()
{
    char str[51];
    int i,num,n;
    num=0,i=0;
    while(1)
    {
        scanf("%c",&str[i]);
        if(str[i]=='\n')break;
        if(str[i]=='2')num++;
        i++;
    }
    n=i;                   
    float er;
    if(str[0]=='-')n--,er=1.5;             
    else er=1;
    er*=(float)num/n;
    if((str[i-1]-48)%2==0)er=2*er;
    printf("%.2f%%\n",er*100);
    return 0;
 }

L1-018. 大笨钟

#include
int main()
{
    char h1,h2,m1,m2;
    scanf("%c%c:%c%c",&h1,&h2,&m1,&m2);
    if(h1=='0'||h1=='1'&&h2=='1'||h1=='1'&&h2=='2'&&m1=='0'&&m2=='0')
        printf("Only %c%c:%c%c.  Too early to Dang.",h1,h2,m1,m2);
    else 
    {
        int i,n;
        n=(h1-48)*10+h2-48;
        for(i=0;i

L1-019. 谁先倒

#include
int main(){
    int a,b,n,i,j;
    scanf("%d %d",&a,&b);  //二人酒量
    scanf("%d",&n);
    i=0,j=0;
    while(i<=a&&j<=b)
    {
        int a1,a2,b1,b2,h;
        scanf("%d %d %d %d",&a1,&a2,&b1,&b2);
        h=a1+b1;
        if(a2==h){
            if(b2!=h)i++;
        }
        else{
            if(b2==h)j++;
        }
    }
    if(i>a){
        printf("A\n");
        printf("%d\n",j);
    }
    else
    {
        printf("B\n");
        printf("%d\n",i);
    }
    return 0;
}

L1-020. 帅到没朋友

#include  
int main()  
{  
    int id[100000];  
    int n;  
    scanf("%d",&n);  
    int j;  
    while(n)  
    {  
        int nn,a;  
        scanf("%d",&nn);  
        if(nn==1)  
        {  
            scanf("%d",&a);  
            goto next;  
        }  
        else  
        {  
            for(j=0;j

L1-021. 重要的话说三遍

#include
int main(){
    for(int i=0;i<3;i++)
        printf("I'm gonna WIN!\n");
    return 0;
}

L1-022. 奇偶分家

#include
int main(){
    int N,js,ou;
    scanf("%d",&N);
    js=0,ou=0;
    while(N){
        int a;
        scanf("%d",&a);
        if(a%2)js++;
        else ou++;
        N--;
    }
    printf("%d %d\n",js,ou);
    return 0;
}

L1-023. 输出GPLT

#include
#include
int main(){
    char str[10000];
    scanf("%s",str);
    int i,n,ng,np,nl,nt;
    n=strlen(str);
    ng=0,np=0,nl=0,nt=0;
    for(i=0;i

L1-024. 后天

#include
int main(){
    int d;
    scanf("%d",&d);
    if(d<=5)printf("%d\n",(d+2));
        else printf("%d\n",(d+2)%7);
    return 0;
}

L1-025. 正整数A+B

#include
#include
int main(){
    char str[10000];
    gets(str);
    int i,j,A,B;
    i=0,A=0;
    while(str[i]!=' '){
        if(str[i]>47&&str[i]<58)  //数字 
             A++;
        else A=0;
        i++;
    }
    if(A1000)A=0;
    B=0;
    for(j=i+1;j57){
            B=0;
            break;
        }
        else B=B*10+str[j]-48;
    }
    if(str[i+1]=='0')B=0;
    if(B>1000)B=0;
    if(A==0)printf("?");
    else printf("%d",A);
    printf(" + ");
    if(B==0)printf("?");
    else printf("%d",B);
    printf(" = ");
    if(A&&B)printf("%d\n",A+B);
    else printf("?\n");
    return 0;
}

L1-026. I Love GPLT

#include
int main(){
    char str[]={"I Love GPLT"};
    int i;
    i=0;
    while(str[i]!='\0')
    {
        printf("%c\n",str[i]);
        i++;
    }
    return 0;
}

L1-027. 出租

#include
int main(){
    char str[12];
    int i,j,arr[10]={0},index[12],num;
    scanf("%s",&str);
    for(i=0;i<11;i++)arr[str[i]-48]++;
    printf("int[] arr = new int[]{");
    num=0;
    int zf[10];
    for(i=9;i>=0;i--)
        if(arr[i])zf[num]=i,num++;
    for(i=0;i

L1-028. 判断素数

#include
#include
int main(){
    int n,i,j,num[10];
    scanf("%d",&n);
    for(i=0;i

L1-029. 是不是太胖了

#include
int main(){
    int h;
    scanf("%d",&h);
    printf("%.1f\n",(h-100)*0.9*2);
    return 0;
}

L1-030. 一帮一

#include
int main()
{
    struct student{
        int ge;
        char na[10];
    };
    struct student st[50];
    int n,i,j;
    scanf("%d",&n);
    for(i=0;ii;j--){
            if(st[i].ge!=st[j].ge&&st[j].ge!=2){
                printf("%s %s\n",st[i].na,st[j].na);
                st[j].ge=2;
                goto next;
            }
        }
        next:;
    }
    return 0;
}

L1-031. 到底是不是太胖了

#include
#include
int main()
{
    int n,i,h[21][2];
    scanf("%d",&n);
    for(i=0;i

L1-032. Left-pad

#include
 #include
 int main()
 {
     int n,i;
     char c,str[1000000],sout[1000000];
     scanf("%d %c",&n,&c);
     getchar();
     gets(str);
     if(strlen(str)>n)        //字符串长度大于n
    {
        for(i=0;i

L1-033. 出生年

#include
#include
int judge(int a)          //判断年份中不同数的个数 
{
    int i,j,n,num[4];
    n=4;
    for(i=0;i<4;i++){
        if(a/pow(10,4-i-1)){
            num[i]=a/pow(10,4-i-1);
            a=a%(int)pow(10,4-i-1);
        }    
        else num[i]=0;
    }
    for(i=0;i<4;i++){
       for(j=i+1;j<4;j++){
           if(num[i]==num[j]){
               n--;
           }
       }
   }
    switch(n){
        case -2:return 1;
        case 1:return 2;
        case 2:return 2;
        case 3:return 3;
        case 4:return 4;
    }
}
int main(){
    int nn,y;
    scanf("%d %d",&y,&nn);
    int old;
    old=0;
    while(judge(y)!=nn)
    {
        old++;
        y++;
    }
    printf("%d %04d\n",old,y);
    return 0;
}

L1-034. 点赞

#include
int main(){
    int N,i,bel[1000]={0};
    scanf("%d",&N);
    for(i=0;i

L1-035. 情人节

#include
int main(){
    char str[10000][11];
    int i,num;
    i=0;
    while(1){
        scanf("%s",str[i]);
        if(str[i][0]=='.')break;
        i++;
    }
    num=i;
    if(num<2)printf("Momo... No one is for you ...");
    else if(num<14)printf("%s is the only one for you...",str[1]);
    else printf("%s and %s are inviting you to dinner...",str[1],str[13]);
    return 0;
}

L1-036. A乘以B

#include
int main(){
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d\n",a*b);
    return 0;
}

L1-037. A除以B

#include
int main()
{
    int fz,fm;
    scanf("%d %d",&fz,&fm);
    if(fm<0)printf("%d/(%d)=%.2f\n",fz,fm,(float)fz/fm);
    else if(fm==0)printf("%d/%d=Error\n",fz,fm);
    else printf("%d/%d=%.2f",fz,fm,(float)fz/fm);
    return 0;
}

L1-038. 新世界

#include
int main()
{
    printf("Hello World\n");
    printf("Hello New World\n");
    return 0;
}

L1-039. 古风排版

#include
 int main()
 {
    int n,i,j,len;
    char str[2000];
    scanf("%d",&n);
    getchar();
    i=0;
    while(1)
    {
        scanf("%c",&str[i]);
        if(str[i]=='\n')break;
        i++;
    }
    len=i;      //长度
    if(len%n)    //有余数 
    {
        for(i;i<(len/n+1)*n;i++)
            str[i]=' ';
        len=len/n;
    }
    else len=len/n-1;
    for(i=0;i=0;j--)
            printf("%c",str[j*n+i]);
        printf("\n");
    } 
    return 0;
 }

L1-040. 最佳情侣身高差

#include
int main()
{
    double f[10];
    char c[10];
    int n,i;
    scanf("%d",&n);
    getchar();
    for(i=0;i

L1-041. 寻找250

#include
int main()
{
    int a,i;
    i=0;
    while(1)
    {
        scanf("%d",&a);
        if(a==250)break;
        i++;
    }
    printf("%d\n",i+1);
    return 0;
}

L1-042. 日期格式化

#include
int main()
{
    int y,m,d;
    scanf("%d-%d-%d",&m,&d,&y);
    printf("%d-%02d-%02d\n",y,m,d);
    return 0;
}

L1-043. 阅览室

#include
int main()
{
    struct day{
        int num;
        int time;
    };
    struct day dy[10];
    int N;
    scanf("%d",&N);
    int d;
    for(d=0;d

L1-044. 稳赢

#include
#include
int main()
{
    int k,i,n;
    char str[10000][10];
    scanf("%d",&k);
    i=0;
//    getchar();
    while(1)
    {
        scanf("%s",str[i]);
        if(strcmp(str[i],"End")==0)break;
        i++;
    }
    n=i;
//    for(i=0;i

L1-045. 宇宙无敌大招呼

#include
int main()
{
    char str[8];
    scanf("%s",str);
    printf("Hello %s\n",str);
    return 0;
}

L1-046. 整除光棍

#include
#include
int main()
{
    int N;
    scanf("%d",&N);
    int i,x,n;
    i=1,n=N,x=1;;
    while(n/10)
    {
        n/=10;
        x+=pow(10,i);
        i++;
    }
    if(N==x)
    {
        printf("1 %d\n",i);
        return 0;
    }
    x+=pow(10,i);   //比N多一位的光棍数 
    while(x%N)
    {
        printf("%d",x/N);
        x=(x%N)*10+1;
        i++;
    } 
    printf("%d %d\n",x/N,i+1);
    return 0;
}

L1-047. 装睡

#include
int main()
{
    struct people{
        char name[4];
        int fx;
        int mb;
    };
    struct people peo[100];
    int N,i;
    scanf("%d",&N);
    for(i=0;i20)||(peo[i].mb<50||peo[i].mb>70))
            printf("%s\n",peo[i].name);
    }
    return 0;
}

L1-048. 矩阵A乘以B

#include
int main()
{
    int a1,b1,i,j;
    int jz1[1000][1000],jz2[1000][1000];
    scanf("%d %d",&a1,&b1);   //读入行与列 
    for(i=0;i

总结

这48道题,都是用的以前学的c语言基础,根本没有用到,数据结构,很多题目的情况考虑的都不大全,所以很少一次性通过。总的来说,还是比较简单的,做了这些才发现细心很重要,情况要考虑完,C语言编程能力感觉并没有提升多少,所以决定先去学一遍数据结构,再来做新的题目。

你可能感兴趣的:(团体程序设计天梯赛-练习集-L1区001——048C语言全解)