第十五周实验报告2

 

实验目的:学会操作字符数组
实验内容:完成对字符数组的操作

* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:                             
* 作    者:     徐嘉健                            
* 完成日期:     2011    年     12  月        04 
* 版本号:       number one 

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



#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, j;
    for(i = 0, j = 0; str[i] != '\0'; i++)
    {
         j = j + 1;
    }

    return j;
}

void output_frequency(char str[])
{
    int i, j, k, l;
    for(l = 0, k = 0; l < length(str); k++)
   { 
       for(i = 0, j = 0; i < length(str); i++)
       {
           if(str[k] == str[i])
               if(i < k)
                   break;
              else
                  if(i >= k)
                  { 
                      j = j + 1;
                  }
                  else
                      continue;
        }
        if(j == 0)
            cout;
        else
        {
            cout << str[k] << "-" << j << ";" << " ";
        }
        l++;
    }
}

 

 

运行结果(贴图):




#include <iostream>

using namespace std;   //函数声明

int length(char str[]);

void output_frequency(char str[]);

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

 return 0;
}

int length(char str[])
{
    int i, j;
    for(i = 0, j = 0; str[i] != '\0'; i++)
    {
         j = j + 1;
    }

    return j;
}

void output_frequency(char str[])
{
    int i, j, k, l;
    for(l = 0, k = 0; l < length(str); k++)
   { 
       for(i = 0, j = 0; i < length(str); i++)
       {
           if(str[k] == str[i])
               if(i < k)
                   break;
              else
                  if(i >= k)
                  { 
                      j = j + 1;
                  }
                  else
                      continue;
        }
        if(j == 0)
            cout;
        else
        {
            cout << str[k] << "-" << j << ";" << " ";
        }
        l++;
    }
}

 

运行结果:(贴图)

 



经验积累:
1.清晰的思路是解决问题的第一步。

2.计算字符串的长度时,注意字符串末尾的'\0',在计数时是可以利用的条件。

3.在处理各个字符的频数时,我用的方法是当现在要计数的字符以前出现过时,几跳出循环体,和老师的思路有所不同,不同的人有不同的见解嘛!注意随机应变,采用自己熟悉的方法解决问题。

上机感言:

开始时想用strlen直接计数字符串的长度的,可是却被老师禁用了,不过还好,实验指导上有提示,所以也没费太大的功夫。可是却被接下来的问题绊住了,以我开始的思路,结果是26个字符的频数全部输出一次,当然频数还是对的,还算稍微有点安慰,接下来就是和怎样不重复打交道了,经过许久的思索也算是顺利解决了,综上所述,结果还算让人满意,信心实力总体有所增加,阿弥陀佛。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值