新生月赛第一次被坑题~~

原题:


说明:上面题写的n的范围是0-1000,后台数据有很大的数,所以一直找不到错误致错,现从写支持Int范围的代码


#include <stdio.h>
#include <string.h>
int a[1000];
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n=0,i=0,j=0;
        scanf("%d",&n);
        while(n>=10)
        {
            a[i]=n%10;
            n/=10;
           // printf("当前的n值为:%d,a[%d]=%d\n",n,i,a[i]);
            i++;
        }
        a[i]=n;
        int sum=0;
        //printf("%d\n",n);
        for(j=0;a[j]!='\0';j++)
        {
            sum+=a[j];
            //printf("a[%d]=%d\n",j,a[j]);
        }
       // printf("              j=%d\n",j);
       memset(a,'\0',sizeof(a));
        j=0;
        //j代表位数
        int a1,a2;
        if(sum<10)
        {
            printf("%d\n",sum);
        }
        else
        {
            a1=sum%10;
            a2=sum/10;
            if(a1+a2>9)
            {
                int b1,b2,b=a1+a2;
                b1=b%10;
                b2=b/10;
                printf("%d\n",b1+b2);
            }
            else
            printf("%d\n",a1+a2);
        }
    }
    return 0;
}


---------------------------------------------------------------分割线---------------------------------------------------

B - lzq的大风车

时间限制:1秒 内存限制:128兆

198 次提交 30 次通过
题目描述

大风车吱呀吱悠悠的转
这里的风景啊真好看
天好看,地好看
还有一群快乐的小伙伴
。。。。。。
不知道你对小时候经常看的大风车栏目是否怀念,现在要求的是打印这样的风车:

*****      *

  ****    **

    ***  ***

      ******

*********

******   

***  ***  

**    **** 

*      *****

 

输入

多组输入输出,每行输入一个n(3<=n<=60),表示要输入一个边长为2*n-1的风车。

输出

对于每组数据输出一个边长为2*n-1的风车(即2*n-1行,每行2*n-1个字符)。每两个风车之间应空上一行,显然最后一个风车后面没有空行。

样例输入
5
3
样例输出
*****   *
 ****  **
  *** ***
   ******
*********
******   
*** ***  
**  **** 
*   *****

*** *
 ****
*****
**** 
* ***
原因:没有注重空格的输出,空格也是一个字符,没有对是否完成数据输入作出判断致错,以下是修改过的代码

#include <stdio.h>
int main()
{
    int n;
    int q=0;
    while(~scanf("%d",&n))
    {
        if(q!=0)
            printf("\n");
        q++;
 
        int h=1,k1=0,m1=0,k2=0,m2=0;
        k1=h-1;
        m1=n;
        k2=n-2;
        m2=h;
        for(int i=1; i<n; i++)
        {
            for(int j1=0; j1<k1; j1++)
                printf(" ");
            for(int j2=0; j2<m1; j2++)
                printf("*");
            for(int j3=0; j3<k2; j3++)
                printf(" ");
            for(int j4=0; j4<m2; j4++)
                printf("*");
            printf("\n");
            k1++;
            m1--;
            k2--;
            m2++;
        }
        for(int i=1; i<=2*n-1; i++)
        {
            printf("*");
        }
        printf("\n");
        int h2=1,m_1=0,k_1=0,m_2=0,k_2=n-2;
        m_1=n-1;
        k_1=0;
        m_2=h+1;
        for(int i=1; i<n; i++)
        {
            for(int j1=0; j1<m_1; j1++)
            {
                printf("*");
            }
            for(int j2=0; j2<k_1; j2++)
            {
                printf(" ");
            }
            for(int j3=0; j3<m_2; j3++)
            {
                printf("*");
            }
            for(int j4=0; j4<k_2; j4++)
            {
                printf(" ");
            }
            printf("\n");
            m_1--;
            k_1++;
            m_2++;
            k_2--;
        }
 
    }
 
    return 0;
}

--------------------------------------------------------分割线----------------------------------------------------------------------------------

G - 这是一道简单题!

时间限制:1秒 内存限制:128兆

329 次提交 30 次通过
题目描述

小红最近又遇到了个棘手的问题,他有一个字符串里面有括号(‘(’)和(‘)’)还有大小写英文字母他想知道在括号里的小写字母有几个,你能帮帮他么?


输入

输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个字符串,(字符串的长度小于1000);

输出

对于每组字符串输出括号内小写字母的个数;

样例输入
1AbcdB(abcABC)efg
样例输出
3
提示

不会出现括号内包含括号的现象如:abcd(abcd(abcd))

原因:审题不清,只考虑了一组括号,最终修改代码如下

#include<stdio.h>
#include<string.h>
int main()
{
    int nn;
    char a[1010];
    scanf("%d",&nn);
    while(nn--)
    {
        scanf("%s",a);
        int l=0,s=0,i,j,k;
        for(i=0; a[i]!='\0'; i++)
        {
           // printf("i的值为%d\n",i);
            if(a[i]=='(')
            {
                for(j=i+1; a[j]!='\0'; j++)
                {
                    if(a[j]==')')
                    {
                        for(k=i+1; k<j; k++)
                        {
                            if(a[k]>='a'&&a[k]<='z')
                                s++;
                        }
                        i=j;
                        break;
                    }
                }
            }
        }

        printf("%d\n",s);
    }
    return 0;
}



ps:存存代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值