指针、数组与函数例题3

1、字符串复制

题目描述

设计函数实现字符串复制功能,每个字符串长度不超过100,不要使用系统提供的strcpy函数

输入要求

从键盘读入一个字符串到数组b中,以换行符结束

输出要求

将内容复制到另一个数组a中,并分别输出数组a和数组b中的内容

输入样例

Frank comes from Thailand

输出样例

String a is:Frank comes from Thailand.

String b is:Frank comes from Thailand.

代码示例

#include 
char mystrcpy(char a[101],char b[101])
{
	int i;
	for(i=0;b[i]!='\0';i++)
	{
		a[i]=b[i];
	}
	a[i]='\0';  //以\0结尾,很重要
}
int main() 
{ 
	char a[101],b[101],*p1,*p2;
	int i;
	gets(b);
	//调用复制函数   
	mystrcpy(a,b);  
	    
	printf("String a is:%s\n",a);    
	printf("String b is:%s\n",b);
	return 0;
}

2、比较串的大小

题目描述

设计函数,比较两个字符串的大小,每个字符串长度不超过50,不要使用系统提供的库函数

输入要求

从键盘分别读入两个字符串,每个字符串以换行符结束

输出要求

比较两个字符串的大小,输出相应的结果。

输入样例

Hello

hi

输出样例

Hello

代码示例:

#include
char mystrcmp(char *s1,char *s2)
{
	int i,c;
	for(i=0;s1[i]||s2[i];i++)
	{
		if(s1[i]!=s2[i])
		{
			c=s1[i]-s2[i];
			break;
		}
	}
	if(s1[i]=='\0'&&s2[i]=='\0')
	{
		c=0;
	}
	return c;
}
int main()
{
	char s1[51],s2[51];
	int k;
	gets(s1);
	gets(s2);
	k=mystrcmp(s1,s2); 
	if(k>0)           
		printf("%s > %s\n",s1,s2);
	else if(k==0)       
		printf("%s = %s\n",s1,s2);
	else              
		printf("%s < %s\n",s1,s2);
	return 0;
}

3、正数的平均值

题目描述

输入10个实数,计算并输出所有大于0的数的平均值

输入要求

输入10个实数

输出要求

计算大于0的数的平均值

输入样例

-5 2 -6 9 -4 -2 0 6 1 10

输出样例

5.60

代码示例

#include
#define N 10
double ave(double a[],int n)
{
	int i,count=0;
	double sum=0;
	for(i=0;i0)
		{
			sum+=a[i];
			count++;
		}
	}
	return sum/count;
}
int main()
{
	double a[N],res;
	int i;
	for(i=0;i

4、数组中对应元素相减

题目描述

设计函数,实现两个一维数组的对应元素相减

输入要求

在主函数中各输入10个整数到数组a和数组b中

输出要求

设计函数计算并输出a-b的结果

输入样例

28 65 78 4 3 2 1 21 -9 -19

3 4 56 -81 8 1 0 10 8 -21

输出样例

25 61 22 85 -5 1 1 11 -17 2

代码示例

#include
int sub(int a[],int b[],int n)
{
	int i;
	for(i=0;i

5、无序数组的查找

题目描述

已知一维数组中的10个元素各不相同,查找数组中是否存在值位key的数组元素。如果有,输出相应的下标,否则输出not found。已知数组无序排列

输入要求

先从键盘输入10个整数。然后再输入一个待查找的数据key

输出要求

若存在,则输出该数所在位置的下标,若不存在,则输出not found

输入样例

6 70 -9 80 83 54 3 88 10 2

80

输出样例

3

代码示例

#include
int main()
{
	int a[10],key,k=0,set=0;
	int i;
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
	}
	
	scanf("%d",&key);
	
	for(i=0;i<10;i++)
	{
		if(a[i]==key)
		{
			k=i;
			set=1;
		}
	}
	if(set)
		printf("%d\n",k);
	else
		printf("not found\n");
	return 0;
}

你可能感兴趣的:(算法)