今天練習了一些新代碼包括
一.編寫一個函數,它從一個字符串中提取一個子字符串。
#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;
}
收穫很多,有時候還是犯一些低級錯誤。繼續努力!