华北水利水电大学c语言期末考试题,华北水利水电大学C语言实验10.doc

C语言程序设计实验报告

实验10 使用指针的程序设计(2)

班级 2013156 学号 201315613 姓名 吴浩

一、实验目的

(1)掌握指针的概念,会定义和使用指针变量;

(2)能正确使用字符串的指针和指向字符串的指针变量。

(3)能正确使用指向函数的指针变量;

(4)了解指向指针的指针的概念及其使用方法。

二、实验内容及步骤

1.从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。(例如输入abcdef,输出fedcba)。请编写相应的程序代码,并调试运行出正确结果。

程序代码:

#include

#include

void main()

{ int i;

int length;

char str[80];

char s;

printf("请输入一个字符串:\n");

scanf("%s",str);

length=strlen(str);

printf("字符串逆序输出为:\n");

for(i=length;i>0;i--)

{ s=str[i-1]; printf("%c",s);}

printf("\n"); }

void fun (char *s )

{ int i ,length;

char temp;

length = strlen( s );

for(i = 0;i < length / 2; i++)

{ temp=s[i];

s[i]=s[length-i-1];

s[length-i-1]=temp;}

}

运行结果:

2.写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意:用****作为结束输入的标志。)

程序代码:

#include

#include

void main()

{ void MaxString(char(*p)[81],char **max,int num);

int n,i=0;

char str[10][81],*pt=NULL;

printf("请输入几个字符串,以字符串****作为结束标志!:\n");

while(!strcmp(str[i-1],"****")==0)

{gets(str[i]);

i++; }

n=i;

MaxString(str,&pt,n);

printf("在您输入的字符串中,最长的字符串为:\n");

puts(pt);

}

void MaxString(char(*p)[81],char **max,int num)//形参二维指针max用于接收main()中最长字符串指针的地址

{ *max=p[0];

for(int i=1;i

{if(strlen(p[i])>strlen(*max))

{*max=p[i];}

}

}

运行结果:

3.编写在字串str1中找出所有非数字的字符串当成一个空格,存入字符数组str2中(所有数字字符也必须依次存入str2中),str1不变仍为原字串的程序。例如,字符串str1为"$Ts!47&*s456 a23* +B9k",调用函数fun后,字符数组str2将存入" 47 456 23 9 ",str1仍然是"$Ts!47&*s456 a23* +B9k"。

程序代码:

#include

void main()

{ void fun(char str1[],char str2[]);

char str1[80],str2[80];

printf("请输入一串字符串:\n");

gets(str1); fun(str1,str2);

printf("您输入的字符串str1为:\n");

puts(str1);

printf("转换后得到的字符串str2为:\n");

puts(str2);

printf("转换后,字符串str1为:\n");

puts(str1);

}

void fun(char str1[],char str2[])

{char *p=str1;

int i=0; while(*p!='\0')

{ if(*p'9')

{ if(i==0)//当str1中第一个字符不是数字字符,并且str2中不存储任何元素时,置str2首元素为空格

{ str2[i]=' '; i++; }

else if(i>0&&str2[i-1]!=' ')//当数组str2中元素不是第一个,前一个元素的值不是空格

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值