1. 程式人生 > >[c語言]codeday15找出陣列中出現一次的兩個值以及喝汽水模擬實現strcpy和

[c語言]codeday15找出陣列中出現一次的兩個值以及喝汽水模擬實現strcpy和

1.一個數組中只有兩個數字是出現一次,
其他所有數字都出現了兩次。
找出這兩個數字,程式設計實現

#include<stdio.h>
void find(int arr[],int len,int *m,int *n)
{
	int s = 0;
	int i = 0;
	int j = 0;
	int k = 0;
	for(i=0; i<len; i++)
	{
		s ^=arr[i];
	}
	for(k=1;;k = k << 1)
	{
		if(((k & s) != 0))
		{
			break;
		}
	}
	for(j=0; j<len;
j++) { if((arr[j] & k) != 0) { *m ^= arr[j]; } } *n = s^*m; } int main() { int arr[10] = {1,1,2,3,3,4,4,5,7,7}; int len = sizeof(arr)/sizeof(arr[0]); int m = 0; int n = 0; find(arr,len,&m,&n); printf("%d,%d",m,n); return 0; }

2.喝汽水,1瓶汽水1元,2個空瓶可以換一瓶汽水,
給20元,可以多少汽水。
程式設計實現。

#include
<stdio.h>
int drink_sodawater(int total) { int bottle = total;//初始總瓶數 int remainder = 0;//餘數 while(bottle > 1) { total += bottle / 2; remainder = bottle % 2; bottle = bottle/2 + remainder; } return total; } int main() { int money; printf("請輸入錢數:>"); scanf("%d",&money); printf
("能喝%d瓶\n",drink_sodawater(money)); return 0; }

3.模擬實現strcpy

#include<stdio.h>
#include<assert.h>
char *my_strcpy(char *dest,const char *str)
{
	char *p = dest;
	assert(dest);
	assert(str);
	while(*dest++ = *str++)
	{
		;
	}
	return p;
}
int main()
{
	char *arr1 = "abcdefg";
	char arr2[10] = {0};
	my_strcpy(arr2,arr1);
	printf("%s\n",arr2);
	return 0;
}

4.模擬實現strcat

#include<stdio.h>
#include<assert.h>
char *my_strcat(char *dest,const char *str)
{
	char *p = dest;
	assert(dest);
	assert(str);
	//跳到最後一個字元
	while(*dest != '\0')
	{
		dest++;
	}
	//拷貝
	while(*dest++ = *str++)
	{
		;
	}
	return p;
}
int main()
{
	char arr1[30] = "i am a";
	char arr2[30] = " student";
	my_strcat(arr1,arr2);
	puts(arr1);
	return 0;
}