课程设计第一题题目要求data1.txt和data2.txt,两个文件中都有很多数字,用空格隔开。
运行程序,计算这两个文件中数字的交集,并且排好序,存放在jiao.txt中;计算这两个文件中数字的并集,并且排好序,存放在bing.txt需求分析(1)输入两组若干个int型类型的数据;(2)输出两组数据以及它们的交集和并集;(3)程序可对输入的两组数据进行交并集处理,并分别保存在文件中;(4)第一组->data1:3 67 45 2 4data2:4 76 89 125 7第二组->data1:56 78 90 3 77 18 45 3 168data2:88 4 77 35 8 46 0 85 78 99 23 1……概要设计(1)输入若干个int类型的数据给data1.txt,再随机输入若干个int类型的数据给data2.txt。
(2)程序将根据所给的data1和data2的数据通过调用jiao函数对它们的交集进行求解,通过调用save1函数将其结果保存在jiao.txt文件中。
(3)程序将根据所给的data1和data2的数据通过调用bing函数对它们的并集进行求解,通过调用save2函数将其结果保存在bing.txt文件中。
(4)在交并集保存在相应文件之前,通过调用sort函数对其进行从小到大的排序详细设计流程图:(sort函数)(save2函数)(save4函数)(fun函数)(main函数)测试结果:第一组:data1:data2:输出结果:并集:第二组:data1:data2:输出结果:并集:第三组:data1:data2:输出结果:并集:课程设计第二题题目要求文件conf.txt中保存了很多字符,如:ajgdjauqwieueuiwqwgdakdhkjduiwhdsdhkjdk.运行程序,计算这个文件中各个字母出现的频率,频率=出现的次数/总字母数。
将频率存储在文件rate.txt中。
格式为:a : 3.20%k : 3.80%……需求分析(1)从键盘键入若干小写字母组成的字符,以回车键结束字符输入;(2)计算机将输出a—z所对应的出现频率;(3)程序自动统计a—z的出现频率,并将结果保存到文本文件中;(4)测试数据:例如:输入 gsjfa fhj fh h hsdgfyuweguthfer eutguierghuerhguiergiueugtuerigi结果 a: 1.5% b: 0.0% c: 0.0% d: 1.5% e: 12.3%f: 7.7% g: 13.8% h: 10.8% i: 7.7% j: 3.1%k: 0.0% l: 0.0% m: 0.0% n: 0.0% o: 0.0%p: 0.0% q: 0.0% r: 7.7% s: 3.1% t: 4.6%u: 13.8% v: 0.0% w: 1.5% x: 0.0% y: 1.5%z: 0.0%……概要设计(1)从键盘键入小写字母所组成的字符串,通过count来记录实际键入的字符个数。
(2)通过调用save1函数将输入的字符串保存到conf.txt文件中。
(3)调用search函数计算出各个字母所出现的频率,同时将其频率分别存放在WORD 的数组中。
(4)在通过调用save2函数将字母及其频率保存在rate.txt文件中。
详细设计流程图:(search函数)(save1函数)(save2函数)(main函数)测试结果第一组:输入字符:输出结果:统计结果:第二组输入字符:输出结果:统计结果:参考文献《C语言程序设计》(谭浩强著)用到的软件:Visual C++ 6.0 C-Free 4.0 C流程图生成器课程设计总结一周的课程设计已经结束了。
回想学习C语言的过程中,既有快乐又有烦恼。
从领到书的那一刻,我就很郁闷,《C 语言程序设计》到底事学什么的,有什么用。
刚开始上课时,还在迷茫这门课程是用来做什么的。
不过,这些感受都是在对这门课程不了解的情况下产生的。
后来慢慢的接触多了,听老师讲的多了,了解多了,渐渐的产生了兴趣。
尤其是学到语句和函数时,上机操作程序,经过编译,调试和运行后,出现界面,当时觉得很好奇,想真正的学好这门课程。
通过半个学期的学习,我掌握了基本知识。
下学期开始时,被通知要进行一周的课程设计当时有点懵,感觉学的东西很少,很零散,不知该怎么练到一起,就要课程设计,是不是太难为我们了。
第一天基本上都是在看书,把基本知识再熟悉一边。
到了下午的时候,老师发过来四道练习题,从这几道练习题上我得到了不少启发,然后我们组把整个程序的思路理清了,开始着手写程序。
第一天结束的时候,我感觉自己收获挺大的,从一开始的迷茫,不知道从何下手到把程序中的几个模块编写出来,心里挺开心的。
但是,到了第二天,我们由不得不再次陷入困境。
在整个程序的编写过程中。
最难的就是修改和删除这两个模块,这也是我们第二天要解决的重点问题。
开始编写修改和删除时,很头疼,去向其他人寻求帮助,在别人的帮助和提示下,我编完了修改程序,但编译时老出错,修改后的内容将文本内的信息全部覆盖了。
困难之时,我们组的其他人,帮助了我,完成了修改和删除。
这样的话,整个程序基本上全部完成了,就剩下完善工作了。
我们组写了两个程序,最后,两个程序相互组合,互补,大功告成虽然设计时完成了,但是我觉得其中还是有一些不足:* 1.警告句。
程序中缺少一些警告句,例如:“是否真的删除(y/n)”;* 2. 重名的情况。
由于考虑的不周全,没有设计遇到重名的情况该怎么处理;* 3. 选择单一。
我们设计的程序中,只设计了按名字选择,进行操作,忽略了重名的情况。
整个程序完成了,还有很多不完善的地方,希望自己以后办事的时候要认真,仔细,考虑周全。
短短的一周课程设计结束了,但是这段时间里我又学到了更多C 知识,如:对象数组,string类,文件流等,同时我也被提醒以后办事的时候要认真,仔细,考虑周全。
也看到了团队精神和互帮互助的重要性。
这一点会让我终生受益。
通过一周的课程设计,我觉得自己肚子里的墨水多了,收获也挺大的,这一周过的挺充实!通过这次实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习c语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
附录:第一题源程序#include<stdio.h>#include<stdlib.h>#define N 100int del(int *a,int n){int count=1;int i,j;for(i=1;i<n;i++){for( j=0;j<count;j++){if(a[i]==a[j]) break;}if(j==count){if(i>count) a[count]=a[i];count++;}}return count;}void sort(int b[],int k) /*排序*/ {int i,j,t,flag;for(j=0;j<k-1;j++){flag=0;for(i=0;i<k-j-1;i++)if(b[i]>b[i+1]){t=b[i];b[i]=b[i+1];b[i+1]=t;flag=1;}if(flag==0)break;}}void save1(int num[],int a) /*建立data1.txt*/{int i,*p;FILE *fp;p=num;if((fp=fopen("data_1.txt","w"))==NULL){printf("Can't open this flie\n");exit(0);}for(i=0;i<a;i++){fprintf(fp,"%4d",*(p+i));}fclose(fp);}void save2(int num[],int b) /*建立data2.txt*/ {int i,*p;FILE *fp;p=num;if((fp=fopen("data_2.txt","w"))==NULL){printf("Can't open this flie\n");exit(0);}for(i=0;i<b;i++){fprintf(fp,"%4d",*(p+i));}fclose(fp);}void save3(int num[],int k) /*建立jiao.txt*/{int i,*p;FILE *fp;p=num;if((fp=fopen("Jiao.txt","w"))==NULL){printf("Can't open this flie\n");exit(0);}for(i=0;i<k;i++){fprintf(fp,"%4d",*(p+i));}fclose(fp);}void save4(int num[],int k) /*建立bing.txt*/{int i,*p;FILE *fp;p=num;if((fp=fopen("Bing.txt","w"))==NULL){printf("Can't open this flie\n");exit(0);}for(i=0;i<k;i++){fprintf(fp,"%4d",*(p+i));}fclose(fp);}void fun(int num1[],int num2[],int a,int b) /*求交并集*/ {int i,j,k,m=0,n=0,jiao[N],bing[4*N];for(i=0;i<a;i++)for(j=0;j<b;j++)if(num1[i]==num2[j])jiao[m++]=num1[i];sort(jiao,m);printf("\ndata1与data2的交集:\n");for(i=0;i<(k=del(jiao,m));i++){printf("%5d",jiao[i]);if((i+1)%10==0)printf("\n");}printf("\n");save3(jiao,k);for(i=0;i<a;i++)bing[n++]=num1[i];for(i=0;i<b;i++)bing[n++]=num2[i];sort(bing,n);printf("\ndata1与data2的并集:\n");for(i=0;i<(k=del(bing,n));i++){printf("%5d",bing[i]);if((i+1)%10==0)printf("\n");}printf("\n");save4(bing,k);}main(){int i,j=1,a,b,num1[N],num2[N];printf("输入data1的个数->");scanf("%d",&a);if(a>N)goto stop;printf("\n输入data1的数据:\n");for(i=0;i<a;i++){scanf("%d",&num1[i]);}printf("\n输入data2的个数->");scanf("%d",&b);if(b>N)goto stop;printf("\n输入data2的数据:\n");for(i=0;i<b;i++){scanf("%d",&num2[i]);}printf("\ndata1:\n");for(i=0;i<a;i++){printf("%3d",num1[i]);if((i+1)%10==0)printf("\n");}save1(num1,a);printf("\ndata2:\n");for(i=0;i<b;i++){printf("%3d",num2[i]);if((i+1)%10==0)printf("\n");}save2(num2,b);fun(num1,num2,a,b);if(a>N||b>N)stop: printf("错误!输入的数据过多\n");}第二题源程序#include<stdio.h>#define N 100float search(char str[],float count,char word) /*查询待查字符*/ {int ji;float num=0;char *cp;cp=str;for(ji=0;ji<count;ji++){if(*(cp+ji)==word)num++;}num=num/count*100;return num;}void save1(char str[],int count) /*建立conf.txt*/ {int i;char *p;FILE *fp;p=str;if((fp=fopen("conf.txt","w"))==NULL){printf("Can't open this flie\n");exit(0);}for(i=0;i<count;i++){fprintf(fp,"%c",*(p+i));}fclose(fp);}void save2(float WORD[],int count) /*建立rate.txt*/ {int i;float *p;char a=97;FILE *fp;p=WORD;if((fp=fopen("rate.txt","w"))==NULL){printf("Can't open this flie\n");exit(0);}for(i=0;i<count;i++){fprintf(fp,"%c:%5.1f%% ",a+i,*(p+i));}fclose(fp);}main(){char str[N],*cp,word;int ji;float a,count=0,WORD[26];cp=str;word='a';printf("Enter the string:\n");gets(str);for(ji=0;ji<N;ji++) /*用count统计字符的长度*/ {if(*(cp+ji)!='\0'){count++;}else break;}save1(str,count);for(ji=0;ji<26;ji++){WORD[ji]=search(str,count,(word+ji));}save2(WORD,26);for(ji=0;ji<26;ji++){printf("%c:%5.1f%% ",word+ji,WORD[ji]);if((ji+1)%6==0)printf("\n");}printf("\n");}。