Bootstrap

C语言Day06(c程序设计小红书+pta)

1.猴子吃桃问题:猴第一天摘下若干个桃子,当即吃一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上再想吃时,见只剩一个桃子。求第一天共摘了多少桃子。

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
	int n;/*猴子第一天摘得桃子数量*/
	int m;/*最后剩下的桃子数量*/
	scanf("%d", &m);
	for (int i = 1; i <10; i++)
	{
		n = (m + 1) * 2;
		m = n;
	}
	printf("%d", n);
	return 0;
}

注:关键点在于循环了几次,可以在纸上模拟一下两次,三次是什么样子的,就可以判断十天是循环几次。

2.两个乒乓球队进行比赛,各出3人。甲队为 ABC 3人,乙队为 XYZ 3人。巳抽签决定比赛名单 。 有人向队员打听比赛的名单,A说他不和X比,C说他不和X,Z比,请编程序输出3对赛手的名单

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
    
	char i,j,k;
	for ( i='x'; i <= 'z'; i++)
	{
		for (j = 'x'; j <= 'z'; j++)
		{
			if (i != j)
			{
				for (k = 'x'; k <= 'z'; k++)
				{
					if (k != i && k != j)
					{
						if (i != 'x' && k != 'x' && k != 'z')
						{
							printf("a-%c b-%c c-%c", i, j, k);
						}
					}
				}
			}
		}
	}
	return 0;
}

3.数组

多个同类型的数据时用数组。

定义:类型   数组名【长度】

初始化:在定义的同时,赋值。如果对一数组只初始化一部分,那么剩下的就是0.

定义时不明写数组的长度,但是赋值,可以自动推导长度,即为刚好放下所有元素的长度。

int a[]={1,2,3};(这是可以的)

不明写数组长度也不赋值,是错误的。

数组长度为变量是不可以的。

数组的编号是从0开始的,所以最后一个数字不要越界溢出。

想要输入和输出整个数组都要用循环.

sizeof(arr)就是整个数组所占的字节。sizeof(arr[0])是一个数字的字节。所以sizeof(arr)/sizeof(arr[0])就可以得到数组的长度了。

4.斐波那契数列(用数组来实现)

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
	int arr[20] = { 1,1 };
	for (int i = 2; i < sizeof(arr) / sizeof(arr[0]); i++)
	{
		arr[i] = arr[i - 2] + arr[i - 1];
	}
	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
	{
		printf("%4d", arr[i]);
	}
}

注:1.i < sizeof(arr) / sizeof(arr[0])用这样的式子控制循环次数,一定要重点关注

5.冒泡排序(非常重要)

从头到尾,两两比较,大的往后,小的往前(从小到大排序)

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
	int arr[] = { 2,3,5,6,4,9,8,1,0,7 };
	int len = sizeof(arr) / sizeof(arr[0]);/*数组长度*/
	for (int i = 0; i < len - 1; i++)/*循环的趟数*/
	{
		for (int j = 0; j + 1 < len - i; j++)/*每一趟是从头到尾的,但是不包括已经有序的数据*/
		{
			if (arr[j] > arr[j + 1])
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
	for (int i = 0; i < len; i++)
	{
		printf("%d", arr[i]);
	}
}

6.二维数组:

定义:类型 数组名【行】【列】

行数和列数可以不写其中一个,但是不能两个都不写。

访问:通过行列下标,下标从0开始。

7.矩阵逆置

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
	int a[2][3] = { 1,2,3,4,5,6 };
	int b[3][2];
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			b[j][i] = a[i][j];
		}
	}
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 2; j++)
		{
			printf("%d", b[i][j]);
		}
		printf("\n");
	}
	return 0;
}

;