大小寫互換-"數字字串"轉換成數字

weixin_33831673發表於2014-08-30

今天穿著hacker渾濁馬甲在百度程式設計課堂實訓習題中發現了這個很簡單的問題,就做了下。

為了考慮輸入的是否是數字,結果寫好後竟然超時了。

不過裡面用到的將字串裝換成數字的方法,感覺是個收穫,因此在此做下筆記。

大小寫互換
時間限制:1000 ms | 記憶體限制:65535 KB
難度:0
描述
現在給出了一個只包含大小寫字母的字串,不含空格和換行,要求把其中的大寫換成小寫,小寫換成大寫,然後輸出互換後的字串。
輸入
第一行只有一個整數m(m<=10),表示測試資料組數。
接下來的m行,每行有一個字串(長度不超過100)。
輸出
輸出互換後的字串,每組輸出佔一行。
樣例輸入
2
Acm
ACCEPTED

 

樣例輸出
aCM
accepted

超時解題報告:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
    char *n,m,s[27];
    int a,i,len;
    scanf("%s",&m);    
    n=&m;
    a=atoi(n);
    if(a)//輸入的是數字
    {
        while(a--)
        {
            scanf("%s",s);
            len=strlen(s);
            for(i=0;i<len;i++)
            {
                if(s[i]>=65&&s[i]<=90)//大寫時候
                {
                    printf("%c",s[i]+32);
                }
                else 
                    if(s[i]>=97&&s[i]<=122)//小寫時候
                        printf("%c",s[i]-32);
                    else
                        printf("\nerror!\n");            
            }
            printf("\n");
        }
    }
    else //輸入的不是數字
    {
        printf("data error!\n ");
    }
    return 0;
}

程式截圖:

如果我按照一般思路來這樣寫,雖然結果不超時但是感覺不夠嚴謹誒。

#include<stdio.h>
#include<string.h>
int main()
{
    int m,i,len;
    char s[101];
    scanf("%d",&m);    
    while(m--)
    {
        scanf("%s",s);
        len=strlen(s);
        for(i=0;i<len;i++)
        {
            if(s[i]>=65&&s[i]<=90)//大寫時候
            {
                printf("%c",s[i]+32);
            }
            else 
                if(s[i]>=97&&s[i]<=122)//小寫時候
                    printf("%c",s[i]-32);
                else
                    printf("\nerror!\n");            
        }
        printf("\n");
    }    
    return 0;
}

程式截圖:

 

相關文章