[二級C]專題習題-字符數組

初學C語言,程序代碼只是單純的實現功能,並未考慮Bug問題。

--------------------------------------------------------------------------------------------------------------

1. 編寫程序統計輸入的一串字符中大寫字母和小寫字母的個數。

   

#include<stdio.h>
#include<string.h>
int main()
{
    char a[100];
    int i,num[2]={0};
    gets(a);
    for(i=0;a[i]!='\0';i++)
    {
        if(a[i]>='a'&&a[i]<='z')
            num[0]++;
        if(a[i]>='A'&&a[i]<='Z')
            num[1]++;
    }
    printf("\n大寫字母有%d個\n小寫字母有%d個",num[0],num[1]);
return 0;
}

2.寫一程序實現將一個字符串的所有數字字符順序前移,其他字符順序後移,輸出處理後的字符串。

   例如:字符串:asd123fgh543df

         處理後的字符串:123543asdfghdf

#include<stdio.h>
#include<string.h>
int main()
{
    char a[100],b[100];
    int i,j=0,k=0;
    gets(a);
    for(i=0;a[i]!='\0';i++)
    {
        if(a[i]>='0'&&a[i]<='9')
            a[j++]=a[i];
            else  b[k++]=a[i];
    }
    a[j]=b[k]='\0';
    strcat(a,b);
   puts(a);
return 0;
}


3.寫一程序將s字符串中下標爲偶數同時ASCII爲奇數的字符刪除,s串中剩餘的字符形成的新串放到t字符數組中。

例如:s:ABCDEFG12345

      t:BDF12345

   
#include<stdio.h>
#include<string.h>
int main()
{
    char s[100],t[100];
    int i,k=0;
    gets(s);
    for(i=0;s[i]!='\0';i++)
    {
        if(i%2==0&&s[i]%2==1)
                i++;
                t[k++]=s[i];
}
    t[k]='\0';
    puts(t);
        return 0;
}

寫一程序,統計輸入的一行字符串中單詞的個數。規定所有單詞由小寫字母組成,單詞之間有若干個空格隔開,一行的開始沒有空格。

#include<stdio.h>#include<stdlib.h>int main(){    char s[100],t[100];    int i,j,k=0;    gets(s);    for(i=0;s[i]!='\0';i++)    {        if(s[0]==' ')            {            printf("The line 1 can't have the blanket\n");           exit(0);            break;            }        else if(s[i]>='A'&&s[i]<='Z')           {               printf("can't have the Capital letters!\n");               exit(0);                break;           }            else if(s[i]==' ')                    j=0;                    else    if(j==0)                 {                        j=1;                        k++;                 }        }        printf("\nThere have %d words",k+1);        return 0;}

5. 寫一程序,將輸入一個英文文本行中的每個單詞的第一個字母改成大寫,然後輸出此文本行(這裏“單詞”是指由空格隔開的字符串)。

例如,若輸入:I am a student to take the examination

則應輸出:I Am A Student To Take The Examination

#include<stdio.h>
#include<stdlib.h>

int main()
{
    char s[100];
    int i;
    gets(s);
    for(i=0;s[i]!='\0';i++)
    {
        if(s[i]==' ')
            s[i+1]-=32;
       }
       puts(s);
        return 0;
}



6. 寫一程序,輸入若干個字符串(用****作爲線束輸入的標誌),找出最長的一個字符串並輸出。

#include<stdio.h>
#include<string.h>

int main()
{
    char s[10][20];
    int i,j;
    int max;
    do
    {
        i++;
        gets(s[i]);
    }
   while(strcmp(s[i],"****")!=0);

    j=i;
    max=s[0];
    for(i=0;i<j;i++)
    {
        if(strlen(max)<strlen(s[i]))
            max=s[i];
    }
        printf("max is :%s",max);
        return 0;
}


7.寫一程序,刪除輸入字符串的所有空格。

例如,輸入:asd af aa z67

      輸出:asdafaaz67

#include<stdio.h>
#include<string.h>

int main()
{
    char a[100],b[100];
    int i,j=0;
    gets(a);
    for(i=0;a[i]!='\0';i++)
    {
        if(a[i]!=' ')
            b[j++]=a[i];
    }
    b[j]='\0';
    puts(b);
        return 0;
}


8.寫一程序,判斷輸入的字符串是否爲迴文,若是,輸出“YES”,否則輸出“NO”。

迴文是指順讀和反讀都一樣的字符串。

#include<stdio.h>
#include<string.h>

int main()
{
    char a[100],b[100];
    int i,j=0,n;
    gets(a);
    n=strlen(a);
    for(i=0;i<n/2;i++)
    {
        if(a[i]!=a[n-i-1])
     {
                printf("NO");
                j=0;
                break;
     }else j=1;

    }
        if(j!=0)
            printf("YES");
        return 0;
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章