12-20學習記錄

  今天練習了一些新代碼包括

  一.編寫一個函數,它從一個字符串中提取一個子字符串。

#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;
}

  收穫很多,有時候還是犯一些低級錯誤。繼續努力!

發佈了47 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章