1.一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字,编程实现。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int arr[] = {4, 8, 8, 4, 5, 9, 3, 5};
int count = 0;
int sz = sizeof(arr)/sizeof(arr[0]) - 1;
int i = 0, j = 0;
for (i=0; i<sz; i++)
{
count = 0;
for (j=0; j<sz+1; j++)
{
if (arr[i] == arr[j])
{
count ++;
}
}
if (count == 1)
{
printf("%d ", arr[i]);
}
}
system ("pause");
return 0;
}
/*
运行结果:
9 3 请按任意键继续. . .
*/
2 .喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现。
//喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现。
#include <stdio.h>
#include <stdlib.h>
int num (int n)
{
if (n != 0)//零元返回零瓶
{
if (n != 1)//一元返回一瓶
{
if (n%2 == 0)//偶数
{
return n + num(n/2);//偶数直接返回第n行的个数加第n-1行的个数
;
}
else//奇数
{
return (n - 1) + num((n/2) + 1);//奇数时吧第n行余下的一个挪到第n-1行,按n-1行的进行计算
}
}
else
{
return 1;
}
}
else
{
return 0;
}
}
int main()
{
int n = 0;
printf ("请输入钱数:\n");
scanf ("%d", &n);
printf ("%d元可以喝%d瓶汽水!!\n", n, 2*n-1);//方法一:找规律,规律刚好是n元钱能喝2*n-1瓶水;
printf ("%d元可以喝%d瓶汽水!!\n", n, num(n));//方法二:用递归的方法计算;
system ("pause");
return 0;
}
/*
运行结果:
请输入钱数:
20
20元可以喝39瓶汽水!!
20元可以喝39瓶汽水!!
请按任意键继续. . .
*/
3.模拟实现strcpy
//strcpy(s1, s2)函数的意思是:把字符串s2拷贝到s1中,连同字符串结束标志也一同拷贝。
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
char* my_strcpy(char* dest, const char* str)
{
const char* ret = str;
assert (str);
while (*dest++ = *str++)
{
;
}
*dest = *str;//最后把‘\0’赋给*dest
}
int main ()
{
char arr1[] = "abcde";
char arr2[10] = {'0'};
my_strcpy (arr2, arr1);
printf ("%s\n", arr2);
system ("pause");
return 0;
}
/*
运行结果:
abcde
请按任意键继续. . .
*/
4.模拟实现strcat
//char *strcat(char *dest, const char *str);
//strcat() 会将参数 str 字符串复制到参数 dest 所指的字符串尾部;
//dest 最后的结束字符 NULL 会被覆盖掉,并在连接后的字符串的尾部再增加一个 NULL。
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
char* my_strcat (char* dest, const char* str)
{
const char* ret = str;
assert (str);
while (*dest)//dest 指向'\0'
{
dest++;
}
while (*dest++ = *str++)//给dest从\0开始赋值,到str的\0时循环结束
{
;
}
*dest = *str;//*dest = '\0';
return (char *)ret;
}
int main()
{
char arr1[] = "fdaifnd";
char arr2[10] = "bc";
my_strcat (arr2, arr1);
printf ("%s\n", arr2);
system ("pause");
return 0;
}
/*
运行结果:
bcfdaifnd
请按任意键继续. . .
*/