喝汽水问题:1瓶汽水1元,2个空瓶可以换一瓶汽水,输入价钱,可以喝多少汽水。(编程实现)

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int money = 0;
	int total = 0;
	int empty = 0;
	scanf("%d", &money);
	//买回来的汽水喝掉
	total = money;
	empty = money;
	//换回来的汽水
	while (empty>=2)
	{
		total+=empty / 2;
		empty=empty / 2 + empty % 2;
	}
	printf("total=%d\n", total);
	return 0;
}

输出:
第四十一天学习记录:C语言进阶:笔试题整理Ⅱ-LMLPHP
输入一个整数数组,实现一个函数。调整数组使奇数全部都位于偶数前面。

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

void print(int arr[], int sz)
{
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d", arr[i]);
	}
	printf("\n");
}

void move(int arr[],int sz)
{
	int left = 0;
	int right = sz - 1;
	while (left<right)
	{
		//从左边找偶数
		while ((left<right)&&(arr[left] % 2 == 1))
		{
			left++;
		}
		//从右边找奇数
		while ((left<right)&&(arr[right] % 2 == 0))
		{
			right--;
		}
		if (left < right)
		{
			int tmp = arr[left];
			arr[left] = arr[right];
			arr[right] = tmp;
		}
	}
}

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	move(arr,sz);
	print(arr, sz);
	return 0;
}

输出:
第四十一天学习记录:C语言进阶:笔试题整理Ⅱ-LMLPHP
求以下代码输出:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	unsigned char a = 200;
	unsigned char b = 100;
	unsigned char c = 0;
	c = a + b;
	printf("%d %d", a + b, c);//300 44
	return 0;
}

输出:300 44

求以下代码输出:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <string.h>

int main()
{
	char a[1000] = { 0 };
	int i = 0;
	for (i = 0; i < 1000; i++)
	{
		a[i] = -1 - i;
	}
	printf("%d", strlen(a));
	return 0;
}

输出:255

打印杨辉三角形:
问:C语言 打印出来的数字格式对齐。
ChatAI答:
为了让输出的数字格式对齐,可以使用printf函数的格式控制符来实现。格式控制符的基本格式为:%[flags][width][.precision][length]specifier,其中width用于指定输出宽度,可以是一个数字表示最小宽度,如果数字不够,则会用空格填充。例如,以下代码将打印一个宽度为3的整数:

int num = 123;
printf("%3d", num);

打印结果为:

123

如果要输出多个数字,可以在格式字符串中使用多个格式控制符,这样输出的数字就会对齐:

int num1 = 123;
int num2 = 45;
printf("%3d %3d", num1, num2);

打印结果为:

123  45
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int arr[10][10] = { 0 };
	int i = 0;
	int j = 0;
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j < 10; j++)
		{
			if (j == 0)
			{
				arr[i][j] = 1;
			}
			if (i == j)
			{
				arr[i][j] = 1;
			}
			if (i >= 2 && j >= 1)
			{
				arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
			}
		}
	}
	//打印
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j <= i; j++)
		{
			printf("%3d ", arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}

输出:
第四十一天学习记录:C语言进阶:笔试题整理Ⅱ-LMLPHP

猜凶手题目:
日本某地发生了一起谋杀案,警察通过排查确定杀人凶手必为4个嫌疑人的一个。
以下为4个嫌疑犯的供词:
A说:不是我
B说:是C
C说:是D
D说:C在胡说
已知3个人说了真话,1个人说的是假话
现请根据这些信息,写一个程序来确定到底谁是凶手。

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int killer = 0;
	for (killer = 'a'; killer <= 'd'; killer++)
	{
		if ((killer != 'a') + (killer == 'c') + (killer == 'd') + (killer != 'd') == 3)
		{
			printf("killer=%c\n", killer);
		}
	}
	return 0;
}

输出结果:
第四十一天学习记录:C语言进阶:笔试题整理Ⅱ-LMLPHP

猜名次:
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:
A选手说:B第二,我第三
B选手说:我第二,E第四
C选手说:我第一,D第二
D选手说:C最后,我第三
E选手说:我第四,A第一
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int d = 0;
	int e = 0;
	for (a = 1; a <= 5; a++)
	{
		for (b = 1; b <= 5; b++)
		{
			for (c = 1; c <= 5; c++)
			{
				for (d = 1; d <= 5; d++)
				{
					for (e = 1; e <= 5; e++)
					{
						if (a*b*c*d*e == 120)
						{
							if (((b == 2) + (a == 3) == 1) &&
								((b == 2) + (e == 4) == 1) &&
								((c == 1) + (d == 2) == 1) &&
								((c == 5) + (d == 3) == 1) &&
								((e == 4) + (a == 1) == 1))
							{

								printf("a=%d b=%d c=%d d=%d e=%d\n", a, b, c, d, e);
							}
						}
					}
				}
			}
		}
	}
	return 0;
}

输出结果:第四十一天学习记录:C语言进阶:笔试题整理Ⅱ-LMLPHP

05-16 17:23