第15周报告2之操作字符数组

本博客介绍了如何使用字符数组进行基本操作,并通过实例展示了如何计算字符串中字符的个数及各字符出现的频数。通过深入理解程序的结构与逻辑,读者能够掌握字符数组的应用技巧。
 

第15周报告2
实验目的:学会操作字符数组
实验内容:完成对字符数组的操作

/* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:函数的递归                            
* 作    者: 2011级 114-3 张宗佳                            
* 完成日期:2011年12月4日
* 版 本 号: vc.1        
     

* 对任务及求解方法的描述部分
* 输入描述:要处理的字符串在程序中通过赋初值完成
* 问题描述:求出字符数组中字符的个数及计算句子中各字符出现的频数
* 程序输出:字符数组中字符的个数和句子中各字符出现的频数
*/
#include<iostream>

using namespace std;
//函数声明
int length(char str[]);
void output_frequency(char str[]);

int main(void)  //不要对main函数有任何改动
{
	char str[] = "he threw three free throws";
 
	cout << "要处理的字符串为:" << str << endl;
 
	cout << "字符串长度为:" << length(str) << endl; 
 
	cout << "字符串中各字符出现的频数为:";
 
	output_frequency(str);
 
	cout << endl;

	return 0;
}
int length(char str[])
{
	int i = 1;

	do
	{
		i++;
	}while(str[i] != '\0');

	return i;
}
void output_frequency(char str[])
{
	int i = 0, f, n, j;

	char c;
	//l = length(str);
	//for(i = 0; i <= length(str); i++)
	while(i < length(str))
	{
		while(i >= 1)
		{
			do     //这里的do while循环是判断再此字母出现之前有没有重复的,如果重复便不再统计
			{
				j = (i - 1);
				while(j >= 0)
				{
					if(str[j] != str[i])
					{
						j--;
					}
					else
					{
						i++;
						break;
					}
				}
			}while(j > 0);

			if(j < 0) break;
		}
		c = str[i];

		n = 0;
 
		for (f = i;f < length(str); f++)  //这里的循环用来判断此字母出现的次数
		{
			if (c == str[f]) 
			{
				n = n + 1;
			}
		}
		cout << c << "-" << n << " ";

		i++;
	}
	return ;
}



经验积累:
1.本程序中运用了字符串数组,调用了两个函数,字符串数组要定义为char
2.计算字符串数组的长度,只要让str[j]不等于'\0',再定义一个累加变量就可以了
3.第二个计算频数的函数要注意避免重复计算,要判断此字母是否是第一次出现,利用循环判断,再设一个变量,判断前i-1个数内是否有相等的,如果没有,说明是第一次出现,可以计算

上机感言:

这个任务有难度啊..主要是第二个函数的定义,需要好多循环,容易搞晕,在不断调试之后,终于发现了错误,其实主要就是各个循环的嵌套,把这一点弄明白了,就好多了...终于舒了口气..

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值