简单开发过程介绍(C语言)

来源:互联网 发布:文化部网络歌曲黑名单 编辑:程序博客网 时间:2024/06/06 09:10

本文通过将文本文件中的字符串进行排序,给出一个基本分析问题,解决问题通用方法。希望通过解决一个简单问题(比如:字符串排序),让大家了解如何分析和解决类似研发中遇到的问题。


= 需求分析 =



将文本文件中的字符串按照ASCII码进行排序。


= 功能分析 =



# 支持文件操作
# 支持字符排序


= 详细设计 =



* a) 文件读取:
  int FILE_Read(char * file_name, char * buf, int size)
* b) 文件保存: 
  int FILE_Save(char * file_name, char * buf, int size)
* c) 字符排序:  
  int CHAR_Sort(char * buf, int size)


= 使用方法 =



* 第一步:读取文件,调用FILE_Read
* 第二步:字符排序,调用CHAR_Sort
* 第三步:排序结果输出到文件,调用FILE_Save


= 编码实现 =

#include <stdio.h>//a) 文件读取: int FILE_Read(char * file_name, char * buf, int size)int FILE_Read(char * file_name, char * buf, int size){int ch, cnt;FILE * fp = NULL;if (NULL == file_name || NULL == buf){return -1;}fp = fopen(file_name, "r");if (NULL == fp){return -2;}cnt = 0;ch = fgetc(fp);while(ch != EOF){*(buf + cnt) = (char)ch;cnt++;//printf("char[%d] = %c\n", cnt, ch);ch = fgetc(fp);}fclose(fp);return cnt;}//b) 文件保存:  int FILE_Save(char * file_name, char * buf, int size)int FILE_Save(char * file_name, char * buf, int size){int ret, cnt;FILE * fp = NULL;if (NULL == file_name || NULL == buf){return -1;}fp = fopen(file_name, "w");if (NULL == fp){return -2;}cnt = 0;while(cnt < size){ret = fputc(*(buf + cnt), fp);if (EOF == ret){return -3;}cnt++;}fclose(fp);return cnt;}//c) 字符排序:  int CHAR_Sort(char * buf, int size)int CHAR_Sort(char * buf, int size){char ch;int i, j;for (i = size; i > 0; i--){for (j =  size -1; j > size - i; j--){if ( *(buf + j) < *(buf + j - 1)){ch =  *(buf + j);*(buf + j) = *(buf + j - 1);*(buf + j - 1) = ch;}else{// do nothing}}}return 0;}#define MAX_BUF 512int main(){int ret, size;char buf[MAX_BUF];size = FILE_Read("a.in", buf, MAX_BUF);if (0 > size){printf("FILE_Read error! size = %d\n", size);return size;}printf("FILE_Read size = %d\n", size);ret = CHAR_Sort(buf, size);printf("CHAR_Sort ret = %d\n", ret);ret = FILE_Save("test1.out", buf, size);printf("FILE_Save ret = %d\n", ret);return 0;}


= 功能测试 =


1) 输入“aghyckt” --> 输出“acghkty”

2) 输入“This is a 78903471 really combined test with digits and alphabet. 100  3000 489103476” --> 输出“              .000000011133344467778899Taaaaabbcdddeeeeghhhiiiiiilllmnnoprsssstttttwy”

3) 输入“8609835” --> 输出“0356889”


= 总结报告 =



知识点,涉及:


* 文件的打开、关闭、字符读取,字符保存操作
* 冒泡算法
* 问题的分析,归纳整理,和处理流程
* 详细设计
* C语言编码、调试能力
* 系统测试能力


= 参考资料 =



* C程序设计(第二版) 7-302-03806-06-6/TP.2205

0 0
原创粉丝点击