本帖最后由 joykerl 于 2014-11-18 23:34 编辑
#include <stdio.h>
int sequence_size(int sequence_array[],int length,char *putc[]);
int main(void)
{
//定义一个字符变量
char ch,putc[4]= {'A','B','C','D'};
int sumaa = 0,sumbb = 0,sumcc = 0,sumdd = 0;
//输入一个字符串
//判断是否存在A,B,C,D
while ((ch = getchar()) != '\n')
{
if (ch == 'A')
//如果存在指定字符,则放进一个变量里存储
sumaa = sumaa + 1;
else if (ch == 'B')
//如果存在指定字符,则放进一个变量里存储
sumbb = sumbb + 1;
else if (ch == 'C')
//如果存在指定字符,则放进一个变量里存储
sumcc = sumcc + 1;
else if (ch == 'D')
//如果存在指定字符,则放进一个变量里存储
sumdd = sumdd + 1;
}
//定义一个新的数组,并调用出A-D的输入次数,赋值到数组的元素中
int sequence_array[4] = {sumaa,sumbb,sumcc,sumdd};
//计算出数组的总长度
int length = sizeof(sequence_array)/sizeof(int);
//定义一个新的函数,使用冒泡算法对数组元素的大小值进行排序
sequence_size(sequence_array,length,&putc);
//遍历数组所有元素
for (int count = 0;count < length;count++)
{
printf ("%c = %d\n",putc[count],sequence_array[count]);
}
return 0;
}
//使用冒泡算法对数组元素进行比较并按照从小到大进行排序
int sequence_size(int sequence_array[],int length,char *putc[])
{
int i,j,k;
//根据main函数里定义的数组:遍历遍历数组
for (j = 1;j < length;j++)
{
//逐个循环遍历相邻的两个数
for (i = 0;i < length - j;i++)
{
//比较相邻两个数值的大小并进行交换
if (sequence_array < sequence_array[i + 1])
{
k = sequence_array;
sequence_array = sequence_array[i + 1];
sequence_array[i + 1] = k;
}
if (sequence_array < sequence_array[i + 1])
{
*putc = sequence_array;
sequence_array = sequence_array[i + 1];
sequence_array[i + 1] = *putc;
}
}
}
return 0;
}
---------------------------------------------------
该程序首先是要求用户输入A,B,C,D 四个字母进行统计各个字母输入的数量,然后再进行从小到大排序。 这两个功能以上代码都已经实现了,现在关键是:排序出来只有各字母的数量,没有对应哪个字母数量是谁的
例如运行该程序,输入:AAAABBBDDC 结果输出: 1 2 3 4 现在我需要输出结果对应的数量,是哪个字母的? 刚刚接触函数和数组,想了很久,不知道怎么样输出数字的同时,也可以输出字母。好像函数只能返回一个值的,尝试了用指针从函数里调用,也找不到思路 麻烦大家帮帮忙,谢谢了
|