内容发布更新时间 : 2024/11/10 4:08:40星期一 下面是文章的全部内容请认真阅读。
上机实验8 指针与数组
一.实验目的
1. 掌握用下标、数组名或指针等不同方式引用数组元素; 2. 掌握数组名作函数参数的方法;
3.掌握常用的字符串处理函数和字符处理函数; 4.掌握用指针处理字符串的方法;
二.实验内容
【实验题1】程序填空:自定义函数del(s), 功能是删除字符串s中的数字字符, 要求使用字符处理函数isdigit()和字
符串处理函数strcpy()。 在主函数中输入1个字符串,然后调用函数del(), 用于删除其中的数字字符,并输出处理后的字符串。
提示:从字符串s的首字符开始, 到结束符’\\0’之前为止,逐个检查第i个字符是否是数字字符,是则删除该字符——使用字符判别函数 isdigit(s[i]), 如果s[i]是数字字符,该函数返回1,否则返回0. 难点: 如何删除s的第i个字符?——使用字符串复制函数strcpy(), 将子串s+i+1(从字符s[i+1]开始的子串)复制到给s+i (从字符s[i]开始的子串),即strcpy(s+i, s+i+1)。
#include
char str[80];
gets( str); //输入字符串str
del( str ); //调用函数del(),删除str中的数字 puts(str); //输出字符串str }
void del(char *s) //line 12 函数定义 { int i=0; while(s[i]!='\\0')
if( isdigit(s[i]) ) strcpy( s+i, s+i+1) ; // 如果字符s[i]是数字,用函数strcpy删除它 else i++; // 否则,继续查看下一个字符 }
运行程序,输入字符串\,输出结果是: ab 语句行line 4和line 12分别是函数声明和函数定义首部,其中的参数采用了指针的形式,此外,还可采用数组名的形式,即亦可写为 void del( char s[] ) void del( char *s); //line 4 函数声明 【实验题2】分析程序运行结果,源程序如下 #include void main() { char *s1=\ while (*s2!='\\0') { puts(s1+strlen(s2)-1 ); s2++; } } 运行程序运行时,共循环4次,每次输出一行字符串,其中 1)第1行输出:* ,此时,字符串s2= \ , strlen(s2)= 4 , s1+strlen(s2)-1= s1+ 3 ; 2) 第2行输出:** ,此时,字符串s2= \ , strlen(s2)= 3 , s1+strlen(s2)-1= s1+ 2 ; 3) 第3行输出:*** ,此时,字符串s2= \ , strlen(s2)= 2 , s1+strlen(s2)-1= s1+ 1 ; 4) 第4行输出:**** ,此时,字符串s2= \ , strlen(s2)= 1 , s1+strlen(s2)-1= s1+ 0 . 【实验题3】程序填空:用选择法将5个字符串“Zhao”、“Qian”、“Sun”,“Li”,“Wang”按降序排序,并输出(要 求:使用字符型指针数组) #include #include 运行程序,结果显示为: ——如果删除语句行Line2,程序是否能正常编译?为什么?--不能,因为要使用字符串比较函数strcmp,必须要包含string.h 【实验题4】程序设计:在主函数中输入一段你或者你们组最想说的话(英文),以这句 话作为字符串,编写函数1:输出本字符串并,计算字符串长度;函数2:找出期中大写字母、小写字母、空格、数字,以及其他字符各有多少。 #include void length(char *p); void check(char *p); char *str=\length(str);//输出长度 check(str);//检测字符串字符类型个数 return 0; } void length(char *p) //输出长度函数 {int n=0; printf(\ while (*p!='\\0') {n++; p++; } printf(\} void check(char *p)//检测字符串字符个数函数 { int upper=0,lower=0,digit=0,space=0,other=0,i=0; while (*p!='\\0') {if (('A'<=*p) && (*p<='Z')) ++upper; else if (('a'<=*p) && (*p<='z')) ++lower; else if (*p==' ') ++space; else if ((*p<='9') && (*p>='0')) ++digit; else ++other; p++; } printf(\printf(\} 【实验题5】程序设计:编写一个程序,输入组号,输出该组的组名。例如,输入“9”, 则输出“开心小团体”,要求用指针处理。 #include {char *group_name[11]={\六只老虎\第三组\ \铠甲勇士\农夫山泉\学霸6+1\开心小团体\小霸王\int n; printf(\scanf(\ if ((n<=10) && (n>=1)) printf(\else printf(\return 0; }