C语言课程设计实验报告.docx
《C语言课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《C语言课程设计实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
C语言课程设计实验报告
C语言课程设计
实验报告
姓名:
高峰
学号:
0909120614
指导教师:
郭克华
专业:
电气信息类
班级:
1206班
2013年1月4号
目录
一·课程设计的目的
二·实验内容
1·实验一
2·实验二
三·详细设计
1·实验前的分析及设计思想。
2·程序流程。
3·具体程序及解析。
4·测试结果。
四·设计总结
1·认识错误及纠正。
2·对C语言的认识。
一·课程设计的目的
1·使自己进一步理解和掌握课堂上所学的各种内容,以及它们在程序中的使用方法。
2·使自己掌握软件设计的基本内容和设计方法,并培养自己进行规范化软件设计的能力。
3·使自己掌握使用各种计算机资料和有关参考资料,提高自己进行课程设计的基本能力。
二·实验内容
1·实验一:
统计字符出现的频率
文件conf.txt中保存了很多字母,如:
akdsjfkasdfjaksfjdaksdfjaskldjfaieakjdkfkadsjfiwejfkasdjf
运行程序,计算这个文件中各个字母出现的频率,频率=出现的次数/总字母数。
将频率存储在文件rate.txt中。
格式为:
a:
3.2%
k:
3.8%
……
2·实验二:
文字替换
在文件content.txt中有一些内容。
编写程序,输入字符串1和字符串2,能将content.txt中
字符串1替换成字符串2,保存为newContent.txt。
三·详细设计
1·实验前的分析及设计思想。
1》实验一:
1·分析:
a·怎么统计字符串长度及各字符的数目。
b·怎么区分字母的大小写与非字母的区分。
C·取出文件和存放文件。
2·设计思想:
第一步:
为统计字符的数目而引用string函数;
第二步:
构造两个分别存放26个字母(一个大写、一个小写)的数组,和两个足够大的数组用于存放从文件取出来的字符(即字母)。
第三步:
读出文件的字符串,记长度以及把分开的大小写字母分别存放已构建的数组中。
第四步:
用循环统计字母出现的个数,并分别求它们的频率。
第五步:
将其运行后的结果放进指定的文件中。
2》实验二:
1·分析:
a·怎么替换原有文件中的字符串。
b·在文件中怎么找出要替换的字符串。
C·替换后怎么将其替换后的字符串放进文件中。
2·设计思想:
第一步:
打开文件,将字符串取出来。
第二步:
用循环找出要替换的字符串,将其前面的字符串放进指定的文件中。
第三步:
将替换成的字符串放进指定的文件中。
第四步:
再将要替换后的字符串放进文件中。
第五步:
关闭文件。
实验一:
引用string函数,以计算字符串长度。
程序流程图:
开始
打开文件并读出字符串。
结束
关闭文件。
建立足够大的数组存放大写字母。
建立足够大的数组存放小写字母。
源代码及解析:
#include
#include
main(){
FILE*fp1,*fp2;
inti,j=0,n1,n2,k,e=0;
floatcount1[26]={0},count2[26]={0};
floatrate[26]={0};
chara[100000],s[101],m[100000];
charb[27]="abcdefghijklmnopqrstuvwxyz";
charc[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
fp1=fopen("e:
\\conf.txt","r");
fp2=fopen("e:
\\rate.txt","w");
while(!
feof(fp1))
{
fgets(s,100,fp1);
k=strlen(s);
for(i=0;i{if(s[i]>='a'&&s[i]<='z')
{a[j++]=s[i];}/*把小写字母放到a数组中*/
elseif(s[i]>='A'&&s[i]<='Z')
{m[e++]=s[i];}/*把大写字母放到m数组中*/
}
}
printf("%s\n",a);
printf("%s\n",m);
n1=strlen(a);
n2=strlen(m);
printf("%d%d",n1,n2);
for(i=0;i<(n1+n2);i++)
for(j=0;j<26;j++)
if(a[i]==b[j])
count1[j]++;//给字母排序并计算个数。
for(j=0;j<26;j++)
{
rate[j]=100*count1[j]/(n1+n2);//计算小写字母频率并放入文件中。
if(rate[j]!
=0)
fprintf(fp2,"%c:
%0.1f%%%\n",b[j],rate[j]);
}
for(i=0;i<(n1+n2);i++)
for(e=0;e<26;e++)
if(m[i]==c[e])
count2[e]++;//printf("%s",count[1]);//给字母排序并计算个数。
for(e=0;e<26;e++)
{
rate[e]=100*count2[e]/(n1+n2);//计算大写字母频率并放入文件中。
if(rate[e]!
=0)
fprintf(fp2,"%c:
%0.1f%%%\n",c[e],rate[e]);
}fclose(fp1);fclose(fp2);
}
测试结果:
源文件:
实验二:
程序流程图:
主要流程模块
写入新的字符串。
输入要替换的字符。
文本关闭模块。
输入被替换的字符。
文本打开模块。
源
代码及解析:
#include
#include
main()
{inti,k1,k2,k,flag,j,n;
chars[100],a[50],b[50];
FILE*fp1,*fp2;
fp1=fopen("c:
\\content.txt","r");
fp2=fopen("c:
\\newContent.txt","a");
printf("请输入要替换的字符串:
");
scanf("%s",a);
k1=strlen(a);
printf("请输入替换后的新字符串:
");
scanf("%s",b);
while(fscanf(fp1,"%s",s)!
=EOF)/*用fscanf读fp指向的文件,要读的内容是一个字符串%s,
把字符串读到s数组指向的空间里,如果读成功,fscanf返回成功读取的字符的个数,
如果失败,返回EOF。
*/
{
k=strlen(s);
for(i=0;i{
if(s[i]==a[0])
{n=i;
flag=1;
for(j=1;jif(s[++i]!
=a[j]){flag=0;break;}/*寻找与a数组相同的字符串*/
if(flag==1)/*找到后要进行的循环*/
{
for(i=0;ifprintf(fp2,"%c",s[i]);
fprintf(fp2,"%s",b);
for(i=n+k1;ifprintf(fp2,"%c",s[i]);
}
}
}
fprintf(fp2,"\n");/*换行*/
}fclose(fp1);
fclose(fp2);}
测试结果:
四:
设计总结
1》认识错误及纠正:
1.首先不知道怎样打开文件,然后通过查资料才基本了解怎样打开文件。
2.不知道数组的读写函数,通过看书和请教同学算是可以用了。
3.不了解一些数组的运用,然后很多运用到数组的程序不懂编,幸好同学指导了一下,还算勉强懂运用了。
4.重返文件函数一点也不懂,然而这在编程中运用很大,所以很难下手编程,后来请教同学后,算是可以模仿一点啦。
但是很多还不是很深刻的了解,希望假期好好读书,把它理解透,并灵活运用。
2》对C语言的认识:
C语言并非是“difficult”的,只要你能理清思路,掌握它的精髓,那么自学C语言是一件非常容易又其乐无穷的事。
C语言的优点很多:
1.兼备高级语言与低级语言的优点,属于一种中间语言。
2.它是一种结构化程序设计语言,非常适合结构化程序设计。
3.有较丰富的数据类型、运算符以及函数供以选用。
4.直接与内存打交道,使修改、编辑其他程序与文档变得轻松、简单。
因此,要想学好C语言,首先要有缜密的思维,对于任何程序来说,不是说看懂了就行啦,要明白一个程序的算法,这个算法的来源是什么,这样对自己在以后的程序设计中会有很多的帮助。
附注:
1.《C语言程序设计》(第二版)李丽娟,马淑萍;
2.《C程序设计》(第四版)谭浩强;
3.《C程序设计思想与方法》尹宝林;
4.《C语言课程设计案例精编》(第二版)吴启武刘勇王俊峰薛欣;