#include
#include
int main(){
int i=0,zf=0,sz=0,fh=0;
char a[15]={0};
printf("请输入一组以'#'结尾的字符:");
for(i=0;i<15;i++){
scanf("%c",&a[i]);
}
i=0;
while(a[i]!= '#'){
if(a[i]>'a' && a[i]<'z' || a[i]>'A' && a[i]<'Z'){
zf=zf+1;
}
else if(a[i]>'0' && a[i]<'9'){
sz=sz+1;
}
else{
fh=fh+1;
}
i++;
}
printf("数字:%d字母:%d符号:%d",sz,zf,fh);
return 0;
}
我想问一下这串代码哪里错了,输出要按好几次回车,而且输出的结果是错的
参考GPT和自己的思路:
这段代码有几个问题:
下面是修正后的代码:
#include <string.h>
#include <stdio.h>
int main(){
int i=0,zf=0,sz=0,fh=0;
char a[1000] = {0};
printf("请输入一组以'#'结尾的字符:");
getchar(); // 清空输入缓存区中的换行符
while((a[i] = getchar()) != '#'){
if((a[i]>='a' && a[i]<='z') || (a[i]>='A' && a[i]<='Z')){
zf++;
}
else if(a[i]>='0' && a[i]<='9'){
sz++;
}
else{
fh++;
}
i++;
}
printf("数字:%d, 字母:%d, 符号:%d", sz, zf, fh);
return 0;
}
参考GPT和自己的思路:
这段代码有几个问题需要修改:
以下是修改后的代码:
#include <string.h>
#include <stdio.h>
int main(){
int i=0,zf=0,sz=0,fh=0;
char a[100]={0};
printf("请输入一组以'#'结尾的字符:");
for(i=0;i<100;i++){
scanf("%c",&a[i]);
if(a[i]=='#'){
break;
}
}
i=0;
while(a[i]!= '#'){
if((a[i]>='a' && a[i]<='z') || (a[i]>='A' && a[i]<='Z')){
zf=zf+1;
}
else if(a[i]>='0' && a[i]<='9'){
sz=sz+1;
}
else{
fh=fh+1;
}
i++;
}
printf("数字:%d 字母:%d 符号:%d\n",sz,zf,fh);
return 0;
}
这里将数组的大小改为100,保证能够容纳输入的字符串;修改了输入和判断条件,使程序能够正确处理输入的字符;在输出中加入换行符,使结果输出更加清晰。