这是真的太为难人了,想了半天没有个思路,程序牛人们看一下吧吧内容如下:
编写一个对字符串处理的程序,要求能够识别字符串中大写字母、小写字母以及数字的个数并输出,识别“L”、“o”、“v”、“e”四个字符的位置,如果有,将四个字符和对应的ASC-II分别存储在字符和int数组中并显示;如果没有,能够通过提示缺失那个字符,并要求手动输入并存储在字符和int数组中并更上述字符一并显示。
我有点没看懂这个题目的意思,所以我不知道我的回答对不对?
我的做题思路是:
首先获取一个字符串存入字符数组,
然后遍历数组,统计大写字母,小写字母和数字的个数,然后把字符串里的'L', 'o', 'v', 'e'字分别存入字符数组和int数组,然后打印统计结果,
再用另外一个循环遍历字符数组和int数组,如果里面存入了'L', 'o', 'v', 'e'四个字符,就打印其字符和对应的ASIII码,
再用第三个循环,寻找缺失的字符,并要求手动输入,并存入字符数组和int数组,
最后打印用字符串形式打印字符数组。
#include <stdio.h>
char findLove(char * love,int len){
int i=0;
char ch = love[i] ;
while(i<len){
if(i==0&&ch=='\0'){
return 'L';
}else if(i==1&&ch=='\0'){
return 'o';
}else if(i==2&&ch=='\0'){
return 'v';
}else if(i==3&&ch=='\0'){
return 'e';
}
i++;
ch=love[i];
}
return '\0';
}
int main(void){
char str[100];
int cap=0;
int lower=0;
int num=0;
int i=0;
char Love[5]={'\0'};
int iLove[5]={0};
printf("请输入一个字符串:\n");
gets(str);
char ch = str[i];
while(ch!='\0'){
if(ch>='A'&&ch<='Z'){ //统计大写字母个数
cap++;
if(ch=='L'){ //存储'L'
Love[0]='L';
iLove[0]='L';
}
}else if(ch>='a'&&ch<='z'){ //统计小写字母个数
lower++;
if(ch=='o'){//存储'o'
Love[1]='o';
iLove[1]='o';
}else if(ch=='v'){ //存储'v'
Love[2]='v';
iLove[2]='v';
}else if(ch=='e'){ //存储'e'
Love[3]='e';
iLove[3]='e';
}
}else if(ch>='0'&&ch<='9'){//统计数字个数
num++;
}
i++;
ch=str[i];
}
// 打印结果
printf("字符串有大写字母%d个,小写字母%d个,数字%d个。\n",cap,lower,num);
i=0;
//输出数组里存在的Love的某个字符及其ASCII码
while(i<4){
if(Love[i]!='\0'){
printf("%c:%d\n",Love[i],iLove[i]);
}
i++;
}
i=0;
//查询缺失的字符,并要求输入并存入数组
while(i<4){
if(Love[i]=='\0'){
printf("缺失字符%c,请手动输入这个字符:\n",findLove(Love,4));
scanf("%c",&Love[i]);
while(getchar()!='\n')
continue;
iLove[i] = Love[i];
}
i++;
}
//打印Love
printf("%s",Love);
return 0;
}
前面的都有了,后面的没有啥的,自己加个判断吧,对应字母的数量if (numLetter[i]==0)
#include<stdio.h>
#define MaxSize 100
int main()
{
char words[MaxSize];
int nA=0,na=0,n0=0;
char Letter[4] = {'L','o','v','e'};
int numLetter[4]={0,0,0,0};
int arrLetter[MaxSize][4];
scanf("%s", words);
for(int i=0;i<MaxSize && words[i]!='\0';i++){
if(words[i]>='A'&&words[i]<='Z') nA++;
if(words[i]>='a'&&words[i]<='z') na++;
if(words[i]>='0'&&words[i]<='9') n0++;
for(int j=0;j<4;j++)
if(words[i]==Letter[j])
arrLetter[numLetter[j]++][j]=i;
}
printf("\n大写:%d 小写:%d 数字:%d",nA,na,n0); //三种类型的数量
for(int i=0;i<4;i++) {
printf("\n%c个数:%d 索引号:",Letter[i],numLetter[i]); //四种字母的数量
for(int j=0;j<numLetter[i];j++)
printf("%d ",arrLetter[j][i]);
}
return 0;
}