c语言求数字、字母和其他字符出现的个数,然后把这个字符串逆序
问题描述:
c语言求数字、字母和其他字符出现的个数,然后把这个字符串逆序
答
用gets输入字符串,遍历判断字符的值范围
#include <stdio.h>
#include <string.h>
int main()
{
int i,n,na=0,n1=0,np =0;
char s[1000];
gets(s);
n = strlen(s);
for(i=0;i<n;i++)
{
if(s[i]>='0' && s[i] <='9')
n1++;
else if((s[i] >='A' && s[i]<='Z') || (s[i]>='a' && s[i] <='z'))
na++;
else
np++;
}
for(i=n-1;i>=0;i--)
printf("%c",s[i]);
printf("\n");
printf("数字%d个,字母%d个,其它%d个",n1,na,np);
return 0;
}
答
#include<stdio.h>
void Reverse(char str[]){
int n=strlen(str);
int i;
char temp;
for(i=0;i<(n/2);i++){
temp=str[i];
str[i]=str[n-i-1];
str[n-i-1]=temp;
}
int main(int arge,char *argv[])
{
char chs[2048];
char ch;
scanf("%s", chs);
int alp=0,num=0,oth=0,len,alp_start,num_start,oth_start,i;
int len = strlen(chs);
int i = 0;
while(i < len)
{
ch=chs[i];
if(ch>='0'&&ch<='9') num++;
else if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
alp++;
else
oth++;
i ++;
}
len=alp>num?(alp>oth?alp:oth):(num>oth?num:oth);
alp_start=len+1-alp;
num_start=len+1-num;
oth_start=len+1-oth;
printf("alp: %d num: %d oth: %d\n",alp,num,oth);
printf("%5s%8s%5s%8s%5s\n","alp"," ","num"," ","oth");
Reverse(chs);
printf("%s\n",chs);
return 0;
}