題目:
2、寫一個程序,統計字符串的大寫字母個數、小寫字母個數、數字個數和其它字符個數。用函數func實現功能,在main中,至少使用10個字符串對函數進行測試。(30分)
提示:
函數名:func3
入口參數:一個字符串
返回結果:一個結構體(包括大寫字母個數、小寫字母個數、數字個數和其它字符個數)
提示:
如果輸入字符串爲:"123abcABC1 45#"
返回結構體的結果爲:{upper:3,lower:3,digits:6,others:2}
注:本題把字符型m[i](char)的元素賦值給整型 k(int)得到字符的ASCII碼值,每個字符的ASCII碼值是唯一的.在根據ASCII碼值找到對應的M[]數組單元進行累加
代碼:
#include <stdio.h>
#include <stdlib.h>
void func(char *m,int len)
{
int i,k;
int M[5]={0};//將M[]數組每個單元都置爲零;
for(i=0;i<len;i++)
{
k=m[i];//將數組m中的字符元素一個一個提取出來賦值給整型k,k接收的是字符的ASCII碼值;(ASCII碼值是唯一的)
if(k>=48&&k<=57)
M[2]++;
else if(k>=65&&k<=90)
M[0]++;
else if(k>=97&&k<=122)
M[1]++;
else
M[3]++;
}
for(i=0;i<4;i++)//輸出K;
{
if(i==2)
printf("digits:%d,",M[i]);
if(i==0)
printf("upper:%d,",M[i]);
if(i==1)
printf("lower:%d,",M[i]);
if(i==3)
printf("others:%d",M[i]);
}
}
int main()
{
char *m;
int len;
m=(char *)malloc(sizeof(char)*20);//動態分配空間
gets(m);
len=strlen(m);
func(m,len);
return 0;
}