河南理工大学。
计算机科学与技术学院。
课程设计报告。
课程名称: c 语言课程设计
设计题目: 字符串类
学生姓名: 余小敏
学号: 311109040311
专业班级: 网络1103
指导教师: 刘洁
2024年6月26日。
一、设计目的。
本程序旨在训练基本编程能力,了解字符串的相关操作以及函数调用及形参传递的方法。本程序中涉及函数的定义、声明、调用,以及关于形参的传递,又涉及到指针的运用和字符串函数的使用。通过练习,对c语言中字符串的应用有更深的了解,进一步提高编程能力。
二、功能描述。
实现字符串的常用的五个功能。
1) 初始化字符串。
2) 获得字符串长度。
3) 查找字符或字符串。
4) 字符串连接。
5) 字符串比较。
三、总体设计。
功能模块设计。
1) 主控main()函数执行流程。
首先是两种字符串的初始化;然后调用测字符串长度函数;接着根据输入的需查找的字符串或字符,返回查找到的个数,从而知道是否查找到;接着执行字符串连接;最后进行两个字符串的比较。
2) 初始化字符串模块。
利用gets();语句来实现,从而初始化字符串。
源程序如下:
printf("input string1:");
gets(str1);
printf("input string2:");
gets(str2);
3)获得字符串长度。
利用strlen( )语句来实现,从而测量字符串的长度。
原程序如下:
k=strlen(str1);
printf("%d",k);
4)查找字符或字符串。
利用fun1()函数来调用,其中利用指针来依次访问要查找的字符串与原来的字符串所对应字符是否相等,若查找到,返回查找的次数;若果没有查找到,则返回0。
源程序如下:
int fun1(char *str1,char *t)
int n;char *p,*r;
n=0;while(*str1)
else break;
if(*r=='0')
n++;str1++;
return n;
5)字符串连接。
方法一:利用fun2()函数来实现。先定义两个字符串数组,然后利用for循环计算出第一个字符串的长度,再依次把第二个字符串的字符依次连接到它的后面,最后在其后加上字符串结束标志。
源程序如下:
void fun2(char p1,char p2)
int i,j;
for(i=0;p1[i]!=0';i++)
for(j=0;p2[j]!=0';j++)
p1[i++]p2[j];
p1[i]='0';
方法二:利用字符串连接函数strcat来实现。把字符串2连接到字符数组1中字符串得后面,并删去字符串1的串标志’\0’,结果字符串的长度是两个字符串长度之和。
源程序如下:
strcat(str1,str2);
puts(str1);
6)字符串比较。
方法一:利用字符串比较函数strcmp()函数来实现。函数返回值为整数:
如果字符串1=字符串2,函数返回值为0;如果字符串1>字符串2,函数返回值为一个正整数;如果字符串1《字符串2,函数返回值为一个负整数。
源程序如下:
if(d==0) printf("str1=str2");
if(d>0) printf("str1>str2");
if(d<0) printf("str1方法二:利用编写函数scmp完成字符串的比较。
形参是变量名的方法:
源程序如下:
int scmp(char s1,char s2)
int i;
for(i=0;s1[i]!=0';i++)
if(s1[i]!=s2[i]) break;
return(s1[i]-s2[i]);
形参是指针变量:
源程序如下:
int scmp(char *s1,char *s2)
for(;*s1!='0';s1++,s2++)
if(*s1!=*s2) break;
return(*s1-*s2);
四、运行结果。
如下图所示:
五、设计总结。
通过这次设计,我得到了很大的锻炼。从中发现了许多自己在编程过程中没注意的问题,通过不断的改善和总结,对编程的严谨有了更高的认识。从中吸取了血多宝贵的经验,为以后更加深入的学习,开好了头。
我发现自己有很多知识还理解的不够到位,需要自己课下好好下功夫,这样才会使自己的编程能力更上一层台阶。虽然编程的过程也许会很枯燥,但成功的喜悦能带给我们很强的成就感。我决定以后要多注意良好的编程习惯,从而使自己养成严谨的作风。
六、源程序如下。
#include<>
#include<>
void fun2(char p1,char p2)
int i,j;
for(i=0;p1[i]!=0';i++)
for(j=0;p2[j]!=0';j++)
p1[i++]p2[j];
p1[i]='0';
int fun1(char *str1,char *t)
int n;char *p,*r;
n=0;while(*str1)
else break;
if(*r=='0')
n++;str1++;
return n;
*int scmp(char s1,char s2)
int i;
for(i=0;s1[i]!=0';i++)
if(s1[i]!=s2[i]) break;
return(s1[i]-s2[i]);
int scmp(char *s1,char *s2)
for(;*s1!='0';s1++,s2++)
if(*s1!=*s2) break;
return(*s1-*s2);
main()
int k,m,d;
char str1[100],str2[40],t[50];
printf("input string1:");
gets(str1);
printf("input string2:");
gets(str2);/字符串的初始化*/
k=strlen(str1);
printf("%d",k);/侧字符串的长度*/
printf(" please enter substring t:")
gets(t);
m=fun1(str1,t);
printf(" the result is :m=%d",m);/字符串的查找*/
/*strcat(str1,str2);
puts(str1);*字符串的连接*/
printf("");
printf("invoke fun2(str1,str2):");
fun2(str1,str2);
printf("after invoking:");
printf("%s",str1);
/*d=strcmp(str1,str2);
if(d==0) printf("str1=str2");
if(d>0) printf("str1>str2");
if(d<0) printf("str1 printf("%d",scmp(str1,str2));
if(scmp(str1,str2)==0) printf("str1=str2");
else if(scmp(str1,str2)>0) printf("str1>str2");
else if(scmp(str1,str2)<0) printf("str1}
C语言课程课程设计
课程设计报告。课程名称 c语言程序设计 系别 xxx 专业班级 xxx班 学号 xxxxxxxxxx 姓名 xxx 课程题目 10或100以内儿童加减乘除算术游戏。完成日期 2013.6.14 19 指导老师 xxx 2013年 6月 21日。附件 一 程序模块图。二 源程序。include inc...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。xx xx学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 课程类别 专业基础课。制订时间 2010年11月 计算机科学与技术系制。c语言程序课程设计教学...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。珠海学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 2010级计算机科学与技术系各专业。课程类别 专业基础课。制订时间 2010年11月 计算机科学与技...