不明白为什么没有输出。
#include
int main() {
char a[3][80];
int i,j,d=0,x=0,n=0,k=0,q=0;
for(i=0;i<3;i++)
for(j=0;j<80;j++){
scanf("%c",a[i][j]);}
scanf("\n");
for(i=0;i<3;i++){
for(j=0;j<80;j++)
if(a[i][j]>='A'&&a[i][j]<='Z')
d+=1;
else if(a[i][j]>='a'&&a[i][j]<='z')
x+=1;
else if(a[i][j]>='0'&&a[i][j]<='9')
n+=1;
else if(a[i][j]=' ')
k+=1;
else
q+=1;}
printf("upper case:%d",d);
printf("\n");
printf("lower case:%d",x);
printf("\n");
printf("digit:%d",n);
printf("\n");
printf("space:%d",k);
printf("\n");
printf("other:%d",q);
return 0;
}
题目如下
1、输入少了取地址符号&
2、scanf("\n")去掉
3、else if(a[i][j]=' ')改为:else if(a[i][j]==' ')
其他问题等
#include<stdio.h>
int main() {
char a[3][80];
int i,j,d=0,x=0,n=0,k=0,q=0;
for(i=0;i<3;i++){
gets(a[i]);
}
for(i=0;i<3;i++){
for(j=0;a[i][j]!='\0';j++)
if(a[i][j]>='A' && a[i][j]<='Z')
d+=1;
else if(a[i][j]>='a' && a[i][j]<='z')
x+=1;
else if(a[i][j]>='0' && a[i][j]<='9')
n+=1;
else if(a[i][j]==' ')
k+=1;
else
q+=1;
}
printf("upper case:%d",d);
printf("\n");
printf("lower case:%d",x);
printf("\n");
printf("digit:%d",n);
printf("\n");
printf("space:%d",k);
printf("\n");
printf("other:%d",q);
return 0;
}
代码有多个问题,输入语句要加&符号,scanf("\n")不需要,最大问题是数组长度80,题目你没有给清楚,80应该是最大长度,不是肯定有80个字符。所以应该按照字符串来接收,不能按字符逐个接收的。
另外字符串为何是3个?题目指定的?一定是三行字符串吗???
基本修改如下:把题目详细内容贴出来后可能还需要修改
#include<stdio.h>
int main() {
char a[80];
int i,j,d=0,x=0,n=0,k=0,q=0;
for(i=0;i<3;i++)
{
gets(a);
d=x=n=k=q=0;
for(a[j] != '\0')
{
if(a[j]>='A'&&a[j]<='Z')
d+=1;
else if(a[j]>='a'&&a[j]<='z')
x+=1;
else if(a[j]>='0'&&a[j]<='9')
n+=1;
else if(a[j]==' ')
k+=1;
else
q+=1;
j++;
}
printf("upper case:%d\n",d);
printf("lower case:%d\n",x);
printf("digit:%d\n",n);
printf("space:%d\n",k);
printf("other:%d\n",q);
}
return 0;
}