C语言 -- 分支语句与循环语句经典题目示例(1)

  1. 判断某一年某一个月的天数是多少
  2. 判断一个数是否为奇数
  3. 输出1-100之间的奇数
  4. 利用循环语句打印数组元素
  5. 字符的输入与输出
  6. 计算n的阶乘
  7. 计算1!+2!+...+10!的阶乘
  8. 在一个有序数组中查找具体的某个数字
  9. 编写代码,演示多个字符从两端移动,向中间汇聚
  10. 编写代码实现,模拟用户登录情景,并且只能登录三次

1、判断某一年某一个月的天数是多少
1.1 使用switch-case语句

bool isLeap(int year) //判断是否是闰年的函数
{
	return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
}

void main()
{
	int year, month;
	int days = 0;
	printf("请输入年份和月份:\n");
	scanf("%d %d", &year, &month);

	switch (month)
	{
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:
		days = 31;
		break;
	case 4:
	case 6:
	case 9:
	case 11:
		days = 30;
		break;
	case 2:
		if (isLeap(year))
			days = 29;
		else
			days = 28;
		break;
	default:
		printf("月份输入错误!\n");
		break;
	}
	printf("%d年%d月有%d天。\n", year, month, days);


	return 0;
}

1.2 使用if-else语句

bool isLeap(int year) //判断是否是闰年的函数
{
	return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
}

void main()
{
	int year, month;
	int days[13] = { 29,31,28,31,30,31,30,31,31,30,31,30,31 };
	printf("请输入年份和月份:\n");
	scanf("%d %d", &year, &month);

	printf("%d年%d月", year, month);
	if (isLeap(year) && month == 2)
	{
		month = 0;
    }

	printf("有%d天。\n", days[month]);


	return 0;
}

2、判断一个数是否为奇数

/*判断一个数是否为奇数*/
void main()
{
	int num;
	printf("请输入一个数:\n");
	scanf("%d", &num);
	if (num % 2) //奇数取余2为1,偶数取余2为0
	{
		printf("%d是一个奇数。\n", num);
}
	else
	{
		printf("%d是一个偶数。\n", num);
	}
	return 0;
}

3、输出1-100之间的奇数

/*输出1-100之间的奇数*/
void main()
{
	for (int i = 1; i <= 100; i++)
	{
		if (i % 2)
			printf("%d\n", i);
	}
	return 0;
}

4、利用循环语句打印数组元素

/*循环语句*/
void main()
{
	int arr[] = { 1,2,3,4,5,6,7 };
	int n = sizeof(arr) / sizeof(arr[0]); //数组元素个数=数组总空间/单个元素空间
	//for循环打印数组元素
	for (int i = 0; i < n; i++)
	{
		printf("%d\n", arr[i]);
	}
	printf("------------------\n");

	//while循环打印数组元素
	int i = 0;
	while (i < n)
	{
		printf("%d\n", arr[i]);
		i++;
	}
	printf("------------------\n");

	//do-while循环打印数组元素
	int i1 = 0;
	do
	{
		printf("%d\n", arr[i1]);
		i1++;
	} while (i1 < n);
	return 0;
}

5、字符的输入与输出

void main()
{
	int ch = 0;
	while ((ch = getchar()) != EOF) //EOF=end of file 文件结束  CTRL+Z退出
		putchar(ch);
	return 0;
}

6、计算n的阶乘

/*计算n的阶乘*/
void main()
{
	int n;
	int result = 1;
	printf("请输入要计算阶乘的整数:\n");
	scanf("%d", &n);
	
	for (int i = 0; i < n; i++)
	{
		result *= (i+1);
	}
	printf("%d! = %d\n", n, result);
	return 0;
}

7、计算1!+2!+...+10!的阶乘

代码1:

/*计算1!+2!+...+10!的阶乘*/
void main()
{
	int sum = 0;
	int res = 1;

	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < (i + 1); j++)
		{
			res *= (j + 1);
		}
		sum += res;
		res = 1;
	}
	printf("1!+2!+...+10! = %d\n", sum);
	return 0;
}

代码2:

/*计算1!+2!+...+10!的阶乘*/
int result(int n)
{
	int res = 1;
	for (int i = 0; i < n; i++)
	{
		res *= (i + 1);
	}
	return res;
}

void main()
{
	int sum = 0;
	
	for (int i = 0; i < 10; i++)
	{
		sum += result(i + 1);
	}
	printf("1!+2!+...+10! = %d\n", sum);
	return 0;
}

8、在一个有序数组中查找具体的某个数字

/*在一个有序数组中查找具体的某个数字x*/
int binsearch(int x, int v[], int n)
{
	int max = n - 1;
	int min = 0;
	int i;

	while (min <= max)
	{
		i = (max + min) / 2;
		if (x > v[i])
		{
			min = i + 1;
		}
		else if (x < v[i])
		{
			max = i - 1;
		}
		else
		{
			return i;
		}
	}

	return -1;

}
void main()
{
	int v[] = { 1,2,3,4,5,6 };
	int n = sizeof(v) / sizeof(v[0]);
	int x;
	printf("请输入要查找的数字:\n");
	scanf("%d", &x);
	int i;
	i = binsearch(x, v, n);
	if (i == -1)
	{
		printf("数组中没有此数\n");
	}
	else
	{
		printf("此数在数组中%d个位置\n", i + 1);
	}
	return 0;
}

9、编写代码,演示多个字符从两端移动,向中间汇聚

/*编写代码,演示多个字符从两端移动,向中间汇聚*/
void main()
{
	char str[] = { 'a','b','c','d',' ',' ',' ',' ',' ',' ',' ',' ',' ','e','f','g','h' };
	int n = sizeof(str) / sizeof(str[0]);
	int mid = n / 2;
	for (int j = 0; j < mid; j++)
	{
		for (int i = mid - 1; i > -1; i--)
		{
			str[i + 1] = str[i];
		}
		for (int i = mid + 2; i < n; i++)
		{
			str[i - 1] = str[i];
		}
		str[0] = ' ';
		str[n - 1] = ' ';
		for (int i = 0; i < n; i++)
		{
			printf("%c ", str[i]);
		}
		printf("\n");
	}
	return 0;
}

10、编写代码实现,模拟用户登录情景,并且只能登录三次

/*编写代码实现,模拟用户登录情景,并且只能登录三次*/
bool isTrue(char pw[], int pn, char inp[], int inn)
{
	if (pn != inn)
	{
		return 0;
	}
	else
	{
		for (int i = 0; i < pn; i++)
		{
			if (pw[i] == inp[i])
			{
				continue;
			}
			else
			{
				return 0;
			}
		}
		return 1;
	}
}

void main()
{
	char pw[] = { '1','2', '3', '.', 'w', 'w', 'w' };
	int pn = sizeof(pw) / sizeof(pw[0]);
	for (int i = 0; i < 3; i++)
	{
		char inp[10];
		printf("请输入密码,您总共有三次机会(密码不超过10位),这是第%d次机会:\n", i + 1);
		int j = 0;
		for (j = 0; j < 10; j++)
		{
			scanf("%c", &inp[j]);
			if (inp[j] == '\n')
				break;
		}
		int inn = j;
		
		/*do
		{
			scanf("%c", &inp[j]);
			j++;
		} while (inp[j - 1] != '\n');
		int inn = j - 1;*/
		
		
		if (isTrue(pw, pn, inp, inn))
		{
			printf("登陆成功!\n");
			break;
		}
		else
		{
			printf("密码错误!!请重新尝试。\n");
		}

	}
	return 0;
}

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值