一道统计字符的作业题
139443[/#include <stdio.h>int main()
{
int A = 0;
char x;
while(x != '\n')
{
scanf("%c",x);
switch(x)
{
case'a':
case'A':
A++;
break;
}
}
printf("%d",A);
return 0;
}
attachimg]
我的一道作业题,上面这个程序是我写的,想先实现统计A,a的数量,但是程序出了问题,统计不出来,求大佬帮忙,如果不想看我的代码直接看图就行,图就是题目 输出的0是什么意思 本帖最后由 jackz007 于 2021-2-2 22:00 编辑
#include <stdio.h>
int main(void)
{
int d = {0} , i ;
for(char c ; (c = getchar()) != '\n' ;) {
if(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z') {
if(c >= 'A' && c <= 'Z') c += ' ' ;
d ++ ;
}
}
printf("%d" , d) ;
for(i = 1 ; i < 26 ; i ++) printf(" %d" , d) ;
}
编译、运行实况
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
abcABCxyzZ
2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2
D:\00.Excise\C> 本帖最后由 小甲鱼的铁粉 于 2021-2-3 09:14 编辑
{:10_297:} 本帖最后由 李京 于 2021-2-2 22:50 编辑
你的程序的问题,我给你写好了,你自己对比一下
#include <stdio.h>
int main()
{
int A = 0;
char x='a';//x未初始化 ,我随便给了个值
while(x != '\n')
{
scanf("%c",&x);//没有用取地址符号
switch(x)
{
case 'a':A++;break;//为什么这里不A++呢
case 'A':A++;break;
}
}
printf("%d",A);
return 0;
}
下面是我把你的题目写了,做好了注释,看你能不能看懂吧
#include <stdio.h>
int main(void)
{
int a={0},i=0;//a用来存放对应字母的个数
char str;//存放输入的字符串
scanf("%s",str);//字符串不需要取地址符号
while(str!= '\0')//判断是否到了字符串的末尾,'\0'是字符串的结束标志 从这里开始,我不知道str【i】为什么全都变成了str
{
if( str >= 'A' && str <= 'Z'])//判断是否是大写的字母
{
a-'A']++;//字母对应的个数加1
}
if( str >='a'&& str <=' z')
{
a-'a']++;
}
i++;
}
for(i=0;i<26;i++)
{
printf("%d ",a);//这里a【i】也是一样的
}
printf("\n");
return 0;
} 本帖最后由 人中仙 于 2021-2-3 10:24 编辑
思路都差不多,我也来一个
#include <stdio.h>
int main(){
int charCounts = {0}; //存放字母个数
char temp = '\0'; //临时存放输入的字符
while((temp=getchar()) != '\n'){ //输入至换行符结束
temp |= 32; //将输入字符的第5位置1,将大小写字符全转换为小写
if(temp<='z' && temp >= 'a'){ //判断是不是字母
charCounts++; //对应位置加1
}
}
for (int i = 0; i < 26; ++i) { //打印输出
printf("%d ",charCounts);
}
putchar('\n');
return 0;
}
页:
[1]