今天练习了一些新代码包括
一.编写一个函数,它从一个字符串中提取一个子字符串。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<assert.h>
int substr(char dst[], char src[], int start, int len)
{
assert(dst);
assert(src);
int i = 0;
for (i = 0; i < len; i++)
{
dst[i] = src[start - 1];
start++;
}
dst[i] = 0;
printf("\n复制的字符串为:");
for (i = 0; i < len; i++)
{
printf("%c", dst[i]);
}
return (strlen(dst));
}
int main()
{
int i = 0;
int flag = 1;
int start = 0;
int len = 0;
char dst[10], src[10];
printf("请输入字符串(小于十个字符):");
while (flag)
{
scanf("%c", &src[i]);
if (src[i] == '\n')
{
flag = 0;
}
i++;
}
printf("\n请输入从第几个字符开始复制:");
scanf("%d", &start);
printf("\n请输入要复制几个字符:");
scanf("%d", &len);
printf("\n复制的字符串长度为:%d\n", substr(dst, src, start, len));
system("pause");
return 0;
}
二.有一个分数序列 2/1+3/2+5/3+8/5+13/8+…求出这个数列前 20 项的和。
#include<stdio.h>
int main()
{
float dem = 2.0, num = 1.0, sum = 0.0;
int n = 0;
printf("请输入n=");
scanf("%d", &n);
for (num = 1; num <= n; num++)
{
sum += dem / num;
dem += num;
}
printf("%f\n", sum);
system("pause");
return 0;
}
三.一个球从 100 米高的地方自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。
求第10次落地时,共经过多少米,第 10 次反弹多高。
#include<stdio.h>
int main()
{
float high = 100.0, dis = 0.0;
int n = 10;
for (n = 0; n < 10; n++)
{
dis += high + high / 2.0;
high /= 2.0;
}
printf("high=%f\n", high*2);
printf("distance=%f\n", dis-high/2.0);
system("pause");
return 0;
}
四.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,好不过瘾,又多吃了一个。第二天早上又吃了剩下的桃子的一半,又多吃了一个。以后每天都吃了前一天剩下的一半零一个,到第 10 天早上想再吃的时候,就剩下一个桃子。求第一天共摘多少个桃子。
#include<stdio.h>
int main()
{
int num = 1;
int i = 0;
for (i = 0; i < 9; i++)
{
num = (num + 1) * 2;
}
printf("num=%d\n", num);
system("pause");
return 0;
}
五.实现一个函数,将一个数的二进制序列逆序,然后输出逆序所得二进制序列所对应的数字。
#include<stdio.h>
unsigned int reverse_bit(unsigned int num)
{
int i = 0;
unsigned int nnum = 0;
for (i = 0; i < 32; i++)
{
if (num % 2 == 1)
{
nnum=nnum << 1;
nnum = nnum | 1;
}
else
{
nnum=nnum << 1;
}
num /= 2;
}
return nnum;
}
int main()
{
unsigned int num = 0;
printf("num=");
scanf("%d", &num);
unsigned int ret = reverse_bit(num);
printf("逆序数字为:%u\n", ret);
system("pause");
return 0;
}
收获很多,有时候还是犯一些低级错误。继续努力!