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

来源:互联网 发布:我的世界手机版天堂js 编辑:程序博客网 时间:2024/06/18 07:58
 

第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个数内是否有相等的,如果没有,说明是第一次出现,可以计算

上机感言:

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