第五章:函数(二)

时间:2024-11-19 09:42:04

作业

1> 仿照strcpy原理,手动实现 myStrcpy函数,不能使用库函数

#include<stdio.h>
void myStrcpy(char arr[],char brr[]);
int main(int argc, const char *argv[])
{
	char arr[128];
	char brr[128];
	printf("请输入一个字符串:");
	gets(arr);
	myStrcpy(arr,brr);
	printf("%s\n",brr);
	return 0;
}
void myStrcpy(char arr[],char brr[])
{
	int k = 0;
	for(int i=0;arr[i]!= '\0';i++)
	{
		brr[k] = arr[i];
		k++;
	}
	brr[k] = '\0';
}

2> 仿照strcmp原理,手动实现 myStrcmp函数,不能使用库函数

#include<stdio.h>
int myStrcmp(char arr[],char brr[]);
int main(int argc, const char *argv[])
{
	char arr[128];
	char brr[128];
	printf("请输入一个字符串:");
	gets(arr);
	printf("请输入用于比较的另一个字符串:");
	gets(brr);
	int value = myStrcmp(arr,brr);
	printf("%d\n",value);
	return 0;
}
int myStrcmp(char arr[],char brr[])
{
	int i = 0;
	for(i=0;arr[i] != '\0' && brr[i] != '\0';i++)
	{
		if(arr[i] != brr[i])
			return arr[i] - brr[i];
	}
}

3> 仿照strcat原理,手动实现 myStrcat函数,不能使用库函数

#include<stdio.h>
void myStrcat(char arr[],char brr[]);
int main(int argc, const char *argv[])
{
	char arr[128];
	char brr[128];
	printf("请输入一个字符串:");
	gets(arr);
	printf("请输入用于连接的另一个字符串:");
	gets(brr);
	myStrcat(arr,brr);
	printf("%s\n",arr);
	return 0;
}
void myStrcat(char arr[],char brr[])
{
	int i = 0,j = 0;
	for(j = 0;arr[j] != '\0';j++);
	for(i=0;brr[i] != '\0';i++)
	{
		arr[j] = brr[i];
		j++;
	}
	arr[j]='\0';
}

4> 手动实现 myStratoi函数 :字符串参数包含一个或多个数字,函数把这些数字字符转换为整数,并返回整数值。如果字符串参数包含了非数字字符,函数返回零

输入: "1234" ---> 1234

"he888lloo" ---> 0

#include<stdio.h>
int myStratoi(char arr[],int brr[],int len);
int main(int argc, const char *argv[])
{
	char arr[128];
	int brr[128];
	printf("请输入一个字符串:");
	gets(arr);
	int len = 0;
	len = myStratoi(arr,brr,len);
	for(int i = 0;i<len;i++)
	{
		printf("%d\t",brr[i]);
	}
	printf("\n");
	return 0;
}
int myStratoi(char arr[],int brr[],int len)
{
	printf("其中整形数组为:");
	for(int i=0;arr[i]!= '\0';i++)
	{
		if(arr[i] >= '0' && arr[i] <= '9')
		{
			brr[i] = arr[i] - 48;
			len++;
		}
		else
		{
			printf("0");
			return 0;
		}
	}
	return len;
}

5> 主程序中提供两个整形数组,分别初始化如下: int arr[] = {2,3,7,6,8,9,4,5,1}; int brr[] = {3,4,10,6,20,1};

定义函数传递这两个数组,并传递一个新数组

函数体内完成求出这两个数组的交集放入新数组中,并在主程序中输出新数组中的数据

#include<stdio.h>
int newarr(int arr[],int len1,int brr[],int len2,int crr[],int len3);
int main(int argc, const char *argv[])
{
	int arr[] = {2,3,7,6,8,9,4,5,1};
	int brr[] = {3,4,10,6,20,1};
	int crr[10];
	int len1 = sizeof(arr)/sizeof(arr[0]);
	int len2 = sizeof(brr)/sizeof(brr[0]);
	int len3 = sizeof(crr)/sizeof(crr[0]);
	len3 = newarr(arr,len1,brr,len2,crr,len3);
	printf("arr[] = {2,3,7,6,8,9,4,5,1};\n");
	printf("brr[] = {3,4,10,6,20,1};\n");
	printf("arr与brr数组的交集为:\n");
	for(int i=0;i<len3;i++)
		printf("%d\t",crr[i]);
	printf("\n");
	return 0;
}
int newarr(int arr[],int len1,int brr[],int len2,int crr[],int len3)
{
	int i = 0,j = 0,k = 0;
	for(i=0;i<len1;i++)
	{
		for(j=0;j<len2;j++)
		{
			if(arr[i] == brr[j])
			{
				crr[k] = arr[i];
				k++;
			}
		}
	}
	return k;
}

6> 0-C基础知识 答案 · 华清远见工作空间

上面链接上的 函数 函数小结的选择题完成

7> 思维导图