open上的一道题 1.7字符串 最后一题 感觉可以了 但是给了八分 是在看不出来了 求助大佬

2019-01-02 20:17发布

#include<stdio.h>
#include<string.h>
int main()
{
  int i,j,k,l,m,n,o,p,q;
  char a[1100];
  scanf("%d %d %d",&o,&p,&q);
  scanf("%s",a);
  l=strlen(a);
  for(i=0;i<l;i++)
    {
      if(a[i]!='-')
         {
           printf("%c",a[i]);
         }
      else
         {
         if(a[i+1]!='-'&&a[i+1]!='\0')
         {
            if(a[i-1]>=a[i+1])
              {
                printf("%c",a[i]);
              }
            else
              {
                if((a[i-1]>='a'&&a[i-1]<='z'&&a[i+1]>='a'&&a[i+1]<='z')||(a[i+1]>='0'&&a[i+1]<='9'&&a[i-1]>='0'&&a[i-1]<='9')&&a[i+1]>a[i-1])
                   {
                       m=a[i+1]-a[i-1];
                       if(q==1)
                          {
                             if(o==1)
                              {
                                for(j=0;j<m-1;j++)
                                  {
                                     for(k=0;k<p;k++)
                                       {
                                         printf("%c",a[i-1]+j+1);
                                       }
                                  }
                              }
                             else if(o==2)
                              {
                                for(j=0;j<m-1;j++)
                                  {
                                    if(a[i-1]>='0'&&a[i-1]<='9')
                                        {
                                             for(k=0;k<p;k++)
                                               {
                                                 printf("%c",a[i-1]+j+1);
                                               }
                                        }
                                   else
                                        {
                                             for(k=0;k<p;k++)
                                                {
                                                 printf("%c",a[i-1]+j-31);
                                                }
                                        }

                                  }
                              }
                            else
                            {
                                  for(j=0;j<m-1;j++)
                                    {
                                      for(k=0;k<p;k++)
                                       {
                                         printf("%c",'*');
                                       }
                                    }
                            }
                         }
                    if(q==2)
                      {
                             if(o==1)
                              {
                                for(j=m-2;j>=0;j--)
                                  {
                                     for(k=0;k<p;k++)
                                       {
                                         printf("%c",a[i-1]+j+1);
                                       }
                                  }
                              }
                             else if(o==2)
                              {
                                for(j=m-2;j>=0;j--)
                                  {
                                    if(a[i-1]>='0'&&a[i-1]<='9')
                                        {
                                             for(k=0;k<p;k++)
                                               {
                                                 printf("%c",a[i-1]+j+1);
                                               }
                                        }
                                   else
                                        {
                                             for(k=0;k<p;k++)
                                                {
                                                 printf("%c",a[i-1]+j-31);
                                                }
                                        }

                                  }
                              }
                            else
                            {
                                  for(j=0;j<m-1;j++)
                                    {
                                      for(k=0;k<p;k++)
                                       {
                                         printf("%c",'*');
                                       }
                                    }
                            }
                         }
                }
             else
                printf("%c",a[i]);
           }
        }
        if(a[l-1]=='-')
        {
         printf("%c",a[l-1]);
        }
      }
    }
}

标签: 求助 紧急
1条回答
呛了眼睛熬了心
2楼-- · 2019-01-02 20:53

如果输入二维字符数组,那么最好的输入方式是这样的:

char a[1005][1005];
for(int i = 0;i<1005;i++)
{
   scanf("%s",a[i]);
}

至于你的scanf("%c",&a[i][j])出问题是因为,输入数据是有换行的,%c 会把换行读入进去,所以会读入有错误。

查看更多
登录 后发表回答