黑马程序员技术交流社区
标题:
【白菜求助贴】帮帮俺,村子里不好上网,跪求帮助
[打印本页]
作者:
2014世界杯
时间:
2014-7-12 19:03
标题:
【白菜求助贴】帮帮俺,村子里不好上网,跪求帮助
从键盘输入一大堆字符串,统计A、B、C、D的出现次数,最后出现次数由高到低输出字母和出现次数。(c语言)
作者:
为梦想挺身而出
时间:
2014-7-12 19:47
你是要代码 还是要思路
作者:
2014世界杯
时间:
2014-7-12 19:57
先来段代码,非常感谢,
作者:
2014世界杯
时间:
2014-7-12 19:58
为梦想挺身而出 发表于 2014-7-12 19:47
你是要代码 还是要思路
先来代码,我看看,
作者:
温天恩
时间:
2014-7-12 20:30
#import <stdio.h>
int main()
{
// 定义一个数组array用来存放输入的字符串
char array[100];
// 提示输入一个字符串
printf("请输入一串字符串:\n");
// 接收输入的字符串,并赋值给数组array
scanf("%s",array);
// 定义两个变量用于for循环条件变量
int i,j;
// 定义四个变量用来存放ABCD出现的次数
int a = 0;
int b = 0;
int c = 0;
int d = 0;
// 定义变量length用来存放输入字符串的长度
unsigned long length = strlen(array);
// 定义for循环,当i小于字符串长度时,执行循环体,i加1
for (i = 0; i<length; i++) {
// 统计A出现的次数
if (array[i] == 'A') {
a++;
}
// 统计B出现的次数
else if (array[i] == 'B'){
b++;
}
// 统计C出现的次数
else if (array[i] == 'C'){
c++;
}
// 统计D出现的次数
else if (array[i] == 'D'){
d++;
}
}
// 定义一个数组x用来存放ABCD出现的次数
int x[4] = {a,b,c,d};
// 定义temp用于冒泡排序标记排序趟数
int temp;
// 冒泡排序 将a,b,c,d降序排序,i表示排序的趟数,j表示每趟排序的比较次数
for (i = 0; i<3; i++)
{
for(j = 0;j<3-i;j++)
{
if (x[j] < x[j+1])
{
// 当前一个元素小于后一个元素时,交换它们的位置
temp = x[j];
x[j] = x[j+1];
x[j+1] = temp;
}
}
}
// 定义一个数组y用来存放ABCD标志
char y[4];
// 将数组x与数组y的出现次数和标志一一对应
for (i = 0; i<4; i++)
{
// 如果出现a次,则y[i]='A'
if(x[i] == a && y[0] != 'A' && y[1] != 'A' && y[2] != 'A' && y[3] != 'A')
{
y[i] = 'A';
}
// 如果出现b次,则y[i]='B'
else if(x[i] == b && y[0] != 'B' && y[1] != 'B' && y[2] != 'B' && y[3] != 'B')
{
y[i] = 'B';
}
// 如果出现c次,则y[i]='C'
else if(x[i] == c && y[0] != 'C' && y[1] != 'C' && y[2] != 'C' && y[3] != 'C')
{
y[i] = 'C';
}
// 如果出现d次,则y[i]='D'
else
{
y[i] = 'D';
}
}
// 降序打印输出每个字母出现的次数
for (i = 0; i<4; i++)
printf("%c出现%d次\n",y[i],x[i]);
return 0;
}
作者:
努力微笑
时间:
2014-7-12 20:47
{:3_64:}LS厉害 学习了~
作者:
为梦想挺身而出
时间:
2014-7-12 20:49
#include <stdio.h>
#include <string.h>
int main()
{
char str1[100];
printf("请输入字符串,字符串之间用逗号隔开,以回车结束\n");
scanf("%s", str1);
// 定义变量用来计算出现的次数
int A = 0, B = 0, C = 0, D = 0;
// 计算每个字母出现的次数
for (int i = 0; i<strlen(str1); i++)
{
if ( str1[i] == 'A')
{
A++;
}
else if (str1[i] == 'B')
{
B++;
}
else if (str1[i] == 'C')
{
C++;
}
else if (str1[i] == 'D')
{
D++;
}
}
// 定义一个整型数组
int str2[] = {A, B, C, D};
// 定义一个变量用来对值的互换
int temp;
int a = 1, b = 1, c = 1, d=1; // 用来防止字母数相同输出错误
for (int j = 3; j>=0; j--)
{
for (int g = 0; g<3; g++)
{
if (str2[g] > str2[g+1])
{
// 如果第一个数大于第二个数就与第二个数互换
temp = str2[g];
str2[g] = str2[g+1];
str2[g+1] = temp;
}
}
if (str2[j] == A && a == 1)
{
a++;
printf("出现字母A的次数为%d\n", A);
}
else if (str2[j] == B && b == 1)
{
b++;
printf("出现字母B的次数为%d\n", B);
}
else if (str2[j] == C && c == 1)
{
c++;
printf("出现字母C的次数为%d\n", C);
}
else if (str2[j] == D && d == 1)
{
d++;
printf("出现字母D的次数为%d\n", D);
}
}
return 0;
}
复制代码
作者:
2014世界杯
时间:
2014-7-13 09:30
温天恩 发表于 2014-7-12 20:30
#import
int main()
不好意思,可以是我基础不扎实吧,冒泡有点略蒙,我再好好看看,但非常的感谢哈
作者:
2014世界杯
时间:
2014-7-13 10:42
温天恩 发表于 2014-7-12 20:30
#import
int main()
#include <string.h>
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2