资源描述
C技能训练3 运用字符串和指针进行程序设计
一、要求:掌握运用字符串和指针结合编程的基本技能。
二、内容:
(1)编写函数slength(char *s),函数返回指针s所指字符串的长度。
(2)编写函数scopy(char *s,char *t),将指针t所指的字符串复制到指针s所指存储空间中。
(3)编写函数scomp(char *s1,char *s2),将两个字符串s1和s2进行比较,若s1>s2,函数返回值为正数;若s1=s2,函数返回值为0;若s1<s2,函数返回值负数。
第一题:
例一:编写函数slength(char *s),函数返回
#include "stdio.h"
slength(char *);
main()
{char str[]="ABCDEF";
int len1,len2;
len1=slength("");
len2=slength(str);
printf("len1=%d,len2=%d\n",len1,len2);
getchar();
}
slength(char *s)
{int n=0;
while(*(s+n)!='\0')n++;
return (n);
}
例二:编写函数scopy(char *s,char *t),将指针t所指的字符串复制到指针s所指的存储空间
#include "stdio.h"
void scopy(char *s,char *t)
{int i;
i=0;
while((s[i]=t[i])!='0') i++;
}
void scopy(char *s,char *t)
{
while ((*s=*t)!='\0'){s++;t++;}
}
main()
{char str1[20],str2[]="ABCDEFGH";
scopy(str1,str2);
puts(str1);
}
例三:编写函数scomp(char *s1,char *s2),将两个字符串进行比较,若串s1>s2,函数返回值为正数;若串s1==s2,函数返回值为0;若串s1<s2,函数返回值为负数。即相当于库函数strcmp的功能。
#include "stdio.h"
scomp(char *s1,char *s2)
{int i;
i=0;
while(s1[i]==s2[i] && s1[i])i++;
return(s1[i]-s2[i]);
}
main()
{char str1[]="ABC",str2[10];
gets(str2);
if(scomp(str1,str2)>0) printf("str1>str2\n");
else if(scomp(str1,str2)<0) printf("str1<str\n");
else printf("str1=str2\n");
}
(4)编写程序从输入的若干字符串中找出最小的串进行输出。编写如下函数完成操作。
①getstr(char (*p)[]):输入M个不超过N个字符的字符串存放到p所指的二维数组中;
②int *findmin(char (*p)[]):找出最小串所在的位置;
③outstr(char (*p)[]):输出所有字符串;
④outmin(int (*sp)[],int n):输出最小串。
#include "stdio.h"
#include "string.h"
#define N 20
#define M 81
getstr(char p[][M])
{char t[M],n=0;
printf("Enter string.a empty string to end\n");
gets(t);
while(strcmp(t,""))
{strcpy(p[n],t);
n++;gets(t);
}
return n;
}
char *findmin(char (*a)[m],int n)
{char *q;int i;
q=a[0];
for(i=1;i<n;i++)
if(strcmp(a[i],q)<0)
q=a[i];
return q;
}
main()
{char s[N][M],*sp;
int n,i;
n=getstr(s);
sp=findmin(s,n);
puts(sp);
}
展开阅读全文