#include<string.h>
#include<stdio.h>
int main()
{
int orilen=0,i=0,j=0,jlen=0;
int amletter=0,amspace=0,amdigit=0,amother=0;
char ori[1000],letters[1000];
while((ori[i]=getchar())!='\n')
{
i++;
orilen++;
}
ori[i]='\0';
for(i=0;ori[i]!='\0';i++)
{
if(ori[i]>='a'&&ori[i]<='z')
{
amletter++;
letters[j]=ori[i]-32;
j++;
jlen++;
}
else if(ori[i]>='A'&&ori[i]<='Z')
{
amletter++;
letters[j]=ori[i]+32;
j++;
jlen++;
}
else if(ori[i]>='0'&&ori[i]<='9')
{
amdigit++;
}
else if(ori[i]==' ')
{
amspace++;
}
else
{
amother++;
}
}
for(i=0;i<jlen;i++)
{
printf("%c",letters[i]);
}
printf("\nletters:%d, digits:%d, spaces:%d others:%d.",amletter,amdigit,amspace,amother);
return 0;
}
这是我的
#include<stdio.h>
int main(){
char ch1[2000],ch2[2000];
int i;
int letters = 0,digits = 0,spaces = 0, others = 0;
i = 0;
while((ch1[i] = getchar()) != '\n')
i++;
ch1[i] = '\0';
for(i = 0 ;ch1[i] != '\0'; i++){
if(ch1[i] >= 'a' && ch1[i] <= 'z'){
ch2[i] = ch1[i] - 32;
printf("%c",ch2[i]);
}
else if(ch1[i] >= 'A' && ch1[i] <= 'Z')
{
ch2[i] = ch1[i] + 32;
printf("%c",ch2[i]);
}
else
ch2[i] = ch1[i];
}
ch2[i] = '\0';
printf("\n");
for(i = 0 ;ch2[i] != '\0'; i++){
if((ch2[i] >= 'a' && ch2[i] <= 'z') || (ch2[i] >= 'A' && ch2[i] <= 'Z'))
letters++;
else if(ch2[i] >= '0' && ch2[i] <= '9')
digits++;
else if(ch2[i] == ' ')
spaces++;
else
others++;
}
printf("letters:%d, digits:%d, spaces:%d, others:%d.",letters,digits,spaces,others);
return 0;
}
这是网上找的
网上的能过pta,我的死活过不了啊啊啊啊啊啊气死我了。
感觉犯了很蠢的错误又找不出来。
letters[j],j在里面起了啥作用?
编译器的问题吧,我用vscode两个代码都能正确运行