C语言-习题8 指针2

1. (30分) 10-从键盘输入三个整数,按从大到小排列。

题目描述
从键盘输入三个整数,按从大到小排列。写三个函数,主函数,exchange函数和swap函数。
swap函数实现两个数排序。在exchange函数中多次调用swap(),实现三个数排序。主函数中输入数据、调用exchange()排序,输出结果。

输入描述
从键盘输入三个数

输出描述
输入三个数从大到小排列

输入样例
10 20 30

输出样例
30,20,10

用户代码

#include<stdio.h>
int main()
{
	int a,b,c;
	void swap(int *a,int *b);
	void exchange(int *a,int *b,int *c);
	scanf("%d%d%d",&a,&b,&c);
	exchange(&a,&b,&c);
	printf("%d,%d,%d",a,b,c);
	return 0;
}
void swap(int *a,int *b)
{
	int t;
	if(*a<*b)
	{t=*a;*a=*b;*b=t;}
}
void exchange(int *a,int *b,int *c)
{
	swap(a,b);
	swap(a,c);
	swap(b,c);
}

2. (30分) 10-字符复制

题目描述
有一个字符串,包含n个字符,写一个函数,将此字符串中从第m个字符开始的全部字符复制称为另一个字符串。
函数原型为void copystr(char *,char *,int );

输入描述
键盘输入分两行,第一行输入一个字符串,第二行输入一个整型数

输出描述
输出复制结果

输入样例
qwertyuiop(第一组数据)
3
qwert(第二组数据)
6

输出样例
result:ertyuiop(符号均为英文符号)
input error!

用户代码

#include<stdio.h>
#include<string.h>
int main()
{
	void copystr(char *p,char *b,int n);
	char a[13]="",b[10]="";
	char *p1=a;
	char *p2=b;
	int m,n;
	gets(a);
	scanf("%d",&n);
	m=strlen(a);
	if(n>m)
		puts("input error!");
	else
	{
		copystr(p1,p2,n);
		printf("result:%s",b);
	}
	return 0;
}
void copystr(char *p1,char *p2,int n)
{
	
	for(p1=p1+n-1;*p1!=0;p1++,p2++)
		*p2=*p1;

}

3. (40分) 10-编写把字符串string中指定字符删除的函数和主函数

题目描述
编写把字符串string中指定字符删除的函数和主函数。函数原型为:
void DeleteChar(char *string,char c);

输入描述
从键盘输入字符串

输出描述
从键盘输入要从字符串中删除的一个字符

输入样例
asdddde
d

输出样例
ase

用户代码

#include<stdio.h>
int main()
{
	void DeleteChar(char *p,char c);
	char str[10];
	char n;
	char *p=str;
	gets(str);
	n=getchar();
	DeleteChar(p,n);
	printf("%s",str);
	return 0;
}
void DeleteChar(char *p,char c)
{
	char *i;
	char t;
	for(p;*p!=0;p++)
		if(*p==c)
			for(i=p+1;*i!=0;i++)
				if(*i!=c)
				{
					t=*p;
					*p=*i;
					*i=t;break;
				}
    for(p--;*p==c;p--)
		*p=0;
}
发布了37 篇原创文章 · 获赞 10 · 访问量 739

猜你喜欢

转载自blog.csdn.net/qq_43608850/article/details/104320777
今日推荐