_实验8 字符数组与字符串(学号_姓名)
一、实验目的:
1、掌握字符串的输入、输出的多种方法;
2、熟悉字符串处理的主要环节——用循环处理字符数组中的元素,并考虑串结束标志的作用。能根据实际需要,有效处理字符串;
3、掌握字符串常用处理函数的用法;
4、熟悉字符串的比较、交换、排序等算法。
二、实验内容
1、(基础
)编程实现:先定义三个元素个数同为21的字符数组str1、str2、str3,之后分别用getchar()/putchar()、带“%s”
符的scanf()/printf()、gets()/puts()实现输入、输出功能,如下图所示:
程序代码:
#include
#include
int main()
{
char str1[21],str2[21],str3[21];
printf("请?输º?入¨?一°?个?长¡è度¨¨不?超?过y20的Ì?字Á?符¤?串ä?(用®?getchar()实º¦Ì现?): \n");
int i=0;
while ((str1[i]=getchar())!='\n')
i++;
printf("请?输º?入¨?一°?个?长¡è度¨¨不?超?过y20的Ì?字Á?符¤?串ä?(用®?gets()实º¦Ì现?): \n");
gets(str2);
printf("请?输º?入¨?一°?个?长¡è度¨¨不?超?过y20的Ì?字Á?符¤?串ä?(用®?带ä?\"%%s\"scanf()实º¦Ì现?): \n");
scanf("%s",str3);
printf("\n输º?出?结¨¢果?:\n");
printf("用®?putchar()实º¦Ì现?: ");
int j=0;
while (j表符)、标点符号的个数并输出。如下图所示:
程序代码:
#include
#include
int main()
{
char str[201];
printf("请?输º?入¨?一°?个?长¡è度¨¨不?超?过y200的Ì?字Á?符¤?串ä?: \n");
gets(str);
int n1,n2,n3,n4;
n1=n2=n3=n4=0;
for(int i=0;str[i];i++)
{
if (isalpha(str[i]))
n1++;
else if (isdigit(str[i]))
n2++;
else if (isspace(str[i]))
n3++;
else if (ispunct(str[i]))
n4++;
}
printf("该?字Á?符¤?串ä?的Ì?字Á?母?个?数ºy:êo%d,ê?数ºy字Á?个?数ºy:êo%d, 空?格?个?数ºy:êo%d,ê?标À¨º点Ì?个?数ºy:êo%d\n\n",n1,n2,n3,n4);
return 0;
}
3、(基础题)编写程序实现如下功能:先定义两个长度为31的字符数组str1、str2,然后输入两个字符串保存到str1、str2中;现调用字符串处理函数分别进行以下处理:
(1)分别计算两个字符串的长度并输出;
(2)输出两个字符串中的较大值;
(3)再定义一个字符数组str,将str1、str2两个字符串连接存至str中并输出。
如下图所示:
程序代码:
#include
#include
int main()
{
char str1[31],str2[31],str[61];
printf("请?输º?入¨?str1(长¡è度¨¨不?超?过y30):");
gets(str1);
printf("请?输º?入¨?str2(长¡è度¨¨不?超?过y30):");
gets(str2);
printf("\nstr1的Ì?长¡è度¨¨:êo%d,str2的Ì?长¡è度¨¨:êo%d \n",strlen(str1),strlen(str2));
printf("两¢?个?字Á?符¤?串ä?的Ì?较?大䨮值¦Ì为a:êo%s\n",strcmp(str1,str2)>=0? str1:str2);
strcpy(str,str1);
strcat(str,str2);
printf("连¢?接¨®后¨®的Ì?字Á?符¤?串ä?:êo%s\n\n",str);
return 0;
}
4、(基础题)下面程序的功能是:将一个字符串str的内容以反序方式存储,请填写所缺程序代码:
(1):string.h
(2):strlen(str)-1
(3):i<=j
(4):str[j]
(5):str