#include "stdio.h"
main()
{ int i,j,k,m;
char a[i];
m=i-1;
printf("请输入一个字符串:\n");
scanf("%s",&a[i]);
for(i=0;i<=m;i++)
{ if(a[i]>'a'&&a[i]<'z')
j++;
else if(a[i]>'A'&&a[i]<'Z')
j++;
else
k++;
}
printf("字母有%d个,非字母有%d个",j,k);
}
我想写一个"输入一个字符串,统计字母与非字母的个数”的代码,上面的代码没有报错就是计算错误,是哪里错了吗,欢迎提供一些建议
字符串的读取不能这么读,其次j k需要初始化为0,再有,判断时的if需要取等号
#include "stdio.h"
#include "string.h"
main()
{ int i,j=0,k=0,m;
char a[i];
printf("请输入一个字符串:\n");
scanf("%s",a); //读取字符串a
m=strlen(a); //获取字符串a的长度
for(i=0;i<m;i++) //此处不能等于m
{ if(a[i]>='a'&&a[i]=<'z') //此处需加上=
j++;
else if(a[i]>='A'&&a[i]=<'Z') //此处需加上=
j++;
else
k++;
}
printf("字母有%d个,非字母有%d个",j,k);
}
#include<iostream>
#include "stdio.h"
#include<string>
using namespace std;
int main()
{
int j=0, k=0, m;
string a;
printf("请输入一个字符串:\n");
cin>>a;
m = a.size();
for (int i = 0; i <= m; i++)
{
if (a[i] >= 'a'&&a[i] <= 'z')
j++;
else if (a[i] >= 'A'&&a[i] <= 'Z')
j++;
else
k++;
}
printf("字母有%d个,非字母有%d个", j, k);
}
修改如下,供参考:
#include "stdio.h"
int main()
{
int i, j, k, m;
char a[1024]; //char a[i]; 修改
//m = i - 1; 修改
printf("请输入一个字符串:\n");
scanf("%[^\n]", a); //scanf("%s", &a[i]);修改
j = 0; k = 0; //修改
for (i = 0; a[i]; i++) //for (i = 0; i <= m; i++) 修改
{
if (a[i] >= 'a' && a[i] <= 'z') //(a[i] > 'a' && a[i] < 'z') 修改
j++;
else if (a[i] >= 'A' && a[i] <= 'Z') // (a[i] > 'A' && a[i] < 'Z') 修改
j++;
else
k++;
}
printf("字母有%d个,非字母有%d个", j, k);
return 0;
}
1.大于等于,小于等于,你少了等于,否则A和Z不被计数
2.j,k没有初始化为0
3.scanf("%s",a);,你要写a[i]那就需要循环读
#include <stdio.h>
int main()
{
char c;
int j = 0, k = 0;
printf("请输入一个字符串:\n");
while((c=getchar())!='\n')
{
if((c>='a' && c<='z') || (c>='A' && c<='Z'))
j++;
else
k++;
}
printf("字母有%d个,非字母有%d个",j,k);
return 0;
}