发布于2024-12-31 阅读(0)
扫一扫,手机访问
#include
#define N 100
void count(char str[],int times[]) //统计小写字符出现次数
{
int i;
for(i=0;str[i]!='\0';i++)
{
if(str[i]>='a' & str[i]<'a'+26) //只统计小写字符
times[str[i]-97]++; //字符a的ascii码为97,str[i]-97正好将26个字母对应在times数组的26个位置上。
}
}
int main()
{
char str[N];
int i,times[26]; //time数组中每一个元素代表一个小写字符,其值代表字符的出现次数
for(i=0;i<26;i++) //初始化,所有字符次数置0
times[i]=0;
scanf("%s",str); //读入字符串
count(str,times); //调用函数统计次数,让times装载统计结果
for(i=0;i<26;i++) //输出结果,小写字符a的ascii码为97.
{
printf("%c\t%d\n",i+97,times[i]);
}
return 0;
}
可以参考下面的代码:
#include
#include
voidmain()
{charc,s[80];inti,k=0;
gets(s);/*输入字符串*/
printf("Pleaseinputacharacter:");c=getchar();
for(i=0;s[i]!='\0';i++)
{if(s[i]==c)
k++;
}
printf("%cisfound%dtimes",c,k);
}
C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
扩展资料:
C语言参考函数
C语言labs()函数:整数的绝对值(针对long类型)
C语言isgraph()函数:判断一个字符是否是图形字符
C语言isdigit()函数:判断一个字符是否为数字
C语言iscntrl()函数:判断一个字符是否为控制字符
C语言isalpha()函数:判断一个字符是否是字母
C语言isalnum()函数:判断一个字符是否是字母或者数字
C语言frexp()函数:提取浮点数的尾数和指数部分
参考资料来源:百科-c语言
大部分错误都集在中stat方法中,如下:
1
2
3
4
5
6
7
8
9
10
voidstat(char*s,int*num) {
inti;
charch;
ch=s[i]; //你上面只是定义了i,从未赋值,i的值就是一个随机数
while((ch=getchar())!='\n') { //你前面的indata就已经读入数据到s中了,这里只应该从s中读取并比较它是不是\0就可以了,而不应该是getchar
if(ch>='0'&ch<='9')
num[ch-'0']+=1;
}
}
另外一个很重要的错误,你的num数组在使用前也并未初始化,会导至num中的数字也全部是随机的
修改如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include
#define M 10
#define N 10
voidindata(char*s) {
inti;
for(i=0; i s[i]=getchar(); } voidstat(char*s,int*num) { inti=0; charch; ch=s[i];//取第一个元素 for(; i i=0; while(ch!='\0') { if(ch>='0'&ch<='9') num[ch-'0']++; ch=s[++i];//取下一元素 } } voidoutdata(int*num) { inti; for(i=0; i printf("%d : %d\n",i,num[i]); } main() { intnum[N]; chars[M]; indata(s); stat(s,num); printf("Output the result:\n"); outdata(num); } //当然stat也可以进一步简化,变为 voidstat(char*s,int*num) { inti=0; charch; for(; i i=0; while((ch=s[i++])!='\0') { if(ch>='0'&ch<='9') num[ch-'0']++; } } 我写的:避免双重循环: #include "stdio.h" #define N 100 int main() { char s[N]; printf("Input a string:\n"); scanf("%s",s); int i,up[26]={0},down[26]={0}; for(i=0;i if(s[i]>='A' & s[i]<='Z') // 大写字母 up[ s[i]-'A' ]++; else if(s[i]>='a' & s[i]<='z') //小写字母 down[ s[i]-'a' ]++; else { // 其它 出错 printf("What you input is not a valid string,error--> %c\n",s[i]); return 0; } } printf("The result is as follows:\n"); for(i=0;i<26;i++) { if(up[i]!=0) printf("%c----%d\n",i+'A',up[i]); if(down[i]!=0) printf("%c----%d\n",i+'a',down[i]); } return 0; }助:用c语言编程统计输入的一个字符串中各字母出现的次数
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店