内容发布更新时间 : 2025/11/4 9:12:41星期一 下面是文章的全部内容请认真阅读。
上机实验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; }