资源描述
C语言专业课程设计报告字符串处理
课程设计报告
课程设计题目:研究生初试录取
学生姓名 :李俊
专 业 :计算机应用技术
班 级 : 1140302
指导教师 : 宋文琳
2012年 06 月 23日
目录
一)实验题目........................................3
二)实验目的........................................3
三)实验要求........................................3
四)实验思路........................................4
五)实验过程........................................6
六)实验调试和结果...............................9
七)实验小结.....................................13
实验题目
字符串处理
(1)不使用系统库函数,编写多个函数实现;
(2)定义字符数组存放字符串,从键盘输入;
(3)调用不同的函数,实现字符串的连接、拷贝、比较、求字符串长度、对字符串内字符进行排序、查找字符串中某个字符是否存在;
(4)分别输出以上字符串处理的结果。
二)实验目的
本次课程设计的主要目的是综合运用所学的C语言知识解决一个比较实际的简单问题,侧重对数组、函数、指针、结构体等相关内容的综合应用,使学生能进一步熟悉掌握C语言的基本语法,进一步提升编程能力并逐步培养编程思维,进而不断提高学生解决问题的能力,并为以后的语言学习打下良好的基础。
三) 实验要求
1. 学生独立完成课程设计的主要内容;
2. 按照实验课表安排进行,不得无故旷课;
3.按照选题规则确定课程设计题目,不可随意更换,但可在完成规定的任务之后,根据
个人兴趣选做其它题目;
4.严格按照报告格式撰写课程设计报告;
5.程序实现方式可以自选,可采用指针、数组或其任意组合方式完成。
四)实验思路
1)整体思路
操作3:
比较
输入需要操作的字符串str1、str2(查找操作另输入需查找的字符)
操作4:
求字符串长度
操作5:
对字符串内字符进行排序
操作6:
查找某个字符是否存在
其它操作:
显示出错
操作2:
拷贝
操做1:
连接
运用if函数选择进行不同操作
引用各操作的自定义函数(结果输出在引用函数中)
五)实验过程
代码:
#include<>
void main()
{void lianjie(char a[],char b[]);
void kaobei(char a[],char b[]);
void bijiao(char a[],char b[]);
void qiuchangdu(char a[],char b[]);
void paixu(char a[],char b[]);
void chazhao(char a[],char b[],char c);
char str1[50],str2[40];
char t;
int i;
printf("需要进行的操作:;;;;;\n");
scanf("%d",&i);
if(i==1)
{printf("要连接的字符串1:");
scanf("%s",str1);
printf("要连接的字符串2:");
scanf("%s",str2);
lianjie(str1,str2);}
else if(i==2)
{printf("拷贝的字符串1:");
scanf("%s",str1);
printf("要拷贝的字符串2:");
scanf("%s",str2);
kaobei(str1,str2);}
else if(i==3)
{printf("要比较的字符串1:");
scanf("%s",str1);
printf("要比较的字符串2:");
scanf("%s",str2);
bijiao(str1,str2);}
else if(i==4)
{printf("要求长度的字符串1:");
scanf("%s",str1);
printf("要求长度的字符串2:");
qiuchangdu(str1,str2);}
else if(i==5)
{printf("要排序的字符串1:");
scanf("%s",str1);
printf("要排序的字符串2:");
scanf("%s",str2);
paixu(str1,str2);}
else if(i==6)
{printf("要查找的字符串1:");
scanf("%s",str1);
printf("要查找的字符串2:");
scanf("%s",str2);
printf("输入要查找的字符:");
t=getchar();
printf("\n");
chazhao(str1,str2,t);}
else
printf("没有此操作\n");
}
void lianjie(char a[],char b[])
{
int i=0,j=0;
while(a[i]!='\0')i++;
while(b[j]!='\0')a[i++]=b[j++];
a[i]='\0';
printf("连接结果为:%s\n",a);
}
void kaobei(char a[],char b[])
{
int i=0;
for(i=0;i<11;i++)
a[i]=b[i];
a[i]='\0';
printf("拷贝结果为%s;\n",a);
}
void bijiao(char a[],char b[])
{
int i=0;
while(a[i]==b[i]&&a[i]!='\0')
i++;
if(a[i]==b[i])
printf("两个字符串相等;\n");
else if(a[i]>b[i])
printf("第一个字符串大;\n");
else
printf("第二个字符串大;\n");
}
void qiuchangdu(char a[],char b[])
{
scanf("%s",b);
int i=0,j=0;
while(a[i]!='\0')
i++;
printf("第一个字符串的长度为:%d\n;",i);
while(a[j]!='\0')
j++;
printf("第二个字符串的长度为:%d\n",j);
}
void paixu(char a[],char b[])
{
int i=0,j=0,n=0,m=0;
char t;
while(a[n]!='\0')
n++;
for(i=0;i<n-1;i++)
for(j=0;j<n-1;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
printf("第一个字符串排序结果为:");
for(i=0;i<n;i++)
printf( "%c",a[i]);
while(b[m]!='\0')
m++;
for(i=0;i<m-1;i++)
for(j=0;j<m-1;j++)
if(b[j]>b[j+1])
{t=b[j];b[j]=b[j+1];b[j+1]=t;}
printf("第二个字符串排序结果为:");
for(i=0;i<m;i++)
printf( "%c",b[i]);
printf("\n");
}
void chazhao(char a[],char b[],char c)
{
int i=0,j=0;
while(a[i]!='\0')
i++;
for( j=0;j<i;j++)
{
if(a[j]!=c) ;
else
break;}
if(j<i) printf("第一个字符串有字符 %c\n;",c);
else
printf("第一个字符没有字符%c;",c);
i=0;j=0;
while(b[i]!='\0')
i++;
for( j=0;j<i;j++)
{
if(b[j]!=c) ;
else
break;}
if(j<i) printf("第二个字符串有字符 %c\n",c);
else
printf("第二个字符没有字符%c\n",c);
}
六)实验调试和结果
输入界面:
操作结果:
调试中出现的错误和改正:
定义过程中出现未将引用函数放入主程序中,定义的数组开始没有放在主程序里,而是在引用函数中,引用函数有少数不能自己写出来,在通过多次尝试之后终于得出正确的程序代码,在输入字符时未加取地址符,加入之后又遇到不能输入字符的情况。
七) 实验小结
在自主编程的过程中认识到自己在拓宽思维方面的缺陷,程序的大体能够自己掌握,但在细节部分缺陷太多。对数组、函数已基本掌握,但对指针和结构体的掌握不到位,没有能够将指针和结构体运用进去。在编写程序方面已经能够达到熟练运用,没有犯低级错误。通过C语言程序设计课程学习,已经学习到了自己编程,自己调试,不足的方面能自己上网自学。在之后的C语言学习中,一定会加深对C语序的学习,使自主编程能力更进一步。
展开阅读全文