C语言——分支语句循环语句练习题(10个)

在分支语句和循环语句里面,有几个经典的练习题,接下来给大家来分享一下。

1:周末周内的判断        2:年龄的判断        3:判断是否为奇数        4:计算一个数的阶乘

5:阶乘相加        6:输出1—100之间的奇数        7:登录验证        8:二分法查找

9:getchar用于读取多个字符        10:关机程序        接下来开始吧!!!

1:周末周内的判断

在这个代码里面运用了switch语句,注意break是结束循环的标志。

#include <stdio.h>
int main ()
{
	int day = 0;
	scanf("%d",&day);
	switch (day)
	{
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			printf("周内\n");
			break;
		case 6:
		case 7:
			printf("周末\n");
			break;
	}
	return 0;
}

 

2:年龄的判断 

在这个代码里面运用了if  else if语句。注意他们的用法。

#include <stdio.h>
int main()
{
	int age = 0;
	scanf("%d",&age);
	if (age < 18)
		printf("少年\n");
	else if (age >=18 && age<26)
		printf("青年\n"); 
	else if (age >=26 && age<40)
		printf("青年\n"); 
	else if (age >=40 && age<60)
		printf("青年\n"); 
	else if (age >=60 && age<100)
		printf("青年\n"); 
	else
		printf("成精了\n");
	return 0;
}

 

3:判断是否为奇数

在这个代码里面,我们要注意的是,if条件判断的时候,不能写一个“=”。这样代表的是赋值给一个值,因此判断的时候用的是“==”。  判断一个数是否是奇数,那么则用的就是取余。余数是0的话则说明是一个偶数;余数是1的话就是奇数。

#include <stdio.h>
int main ()
{
	int shuzi = 0;
	int b = 0;
	printf("请输入一个数字:>");
	scanf("%d",&shuzi);
	b = shuzi % 2;
	if  (b == 0)
		printf("不是奇数\n");
	else
		printf("是奇数\n");
	 
	return 0;
 } 

 

4:计算一个数的阶乘

在这个代码里面,我们用到的是for循环,注意因为是阶乘,所以执行的部分选择的是“*=”;当然也可以写成“ c = c * b; ”。

#include <stdio.h>
int main()
{
	int a=0;
	printf("请输入操作数:",a);
	scanf("%d",&a);
	int b=0;
	int c=1;
	for(b=1;b<=a;b++)
	{
		c*=b;
	}

	printf("阶乘是:%d",c);
	return 0;
	
}



 

5:阶乘相加

在这个代码我们里面要注意,虽然说的是阶乘相加。但是我们需要注意的是,这里面用到的是一个for循环的嵌套。最里面的一个for循环完成的是计算阶乘。最外面的一个for循环计算的则是将这些阶乘相加。

注意,在最外面的一个for循环的执行部分,有一个“c=1”;这样做的目的则是每次完成循环将其设置回原来的值,要么在接下来的循环当中多加。

#include <stdio.h>
int main () 
{
	int a=0;
	printf("请输入操作数:",a);
	scanf("%d",&a);
	int b=0;
	int c=1;
	int d=0;
	int e=0;
	e=a;
	for(a=1;a<=e;a++)
	{
		c=1;
			for(b=1;b<=a;b++)
		{
			c*=b;
		}
		d+=c;
	}
	printf("阶乘是:%d\n",c);
	printf("阶乘相加是:%d",d);
	return 0;
}

 

6:输出1—100之间的奇数

在这个代码里面同样也是使用了嵌套。

#include <stdio.h>
int main ()
{
	int a = 0;
	for ( a=0 ; a <= 100 ; a++ )
		{
			if ( a % 2 == 1 )
				printf("%d\n",a);
		}
	return 0;
}

 

7:登录验证

在这个代码里面,我们起初设置的原始密码就是“123456”。

注意的就是,字符的判断不在使用“==”。而是使用strcmp。

也是一个嵌套。

#include <stdio.h>
#include <string.h>
int main ()
{
	int i = 0;
	//  假设正确的密码是字符“123456”
	
	char password[20] = {0};
	for (i= 0; i < 3; i++)
	{
		printf("请输入密码:>");
		scanf("%s",password);
		//if (password == '123456' ) // 书写是错误的,不能使用 == ,应该使用,strcmp
		 if (strcmp(password,"123456") == 0)
		 {
		 	printf("登录成功\n");
		 	break;
		 }
		 else
		 {
		 	printf("密码错误,重新输入!\n");
		 }
	 } 
	return 0;
 } 

 

8:二分法查找

在这个代码里面,我们在一组数组中找到所对应的值的时候,一个挨着一个去寻找,这样是比较浪费的,因此使用的是二分法查找。运用的就是最左边的数组的下标,和最右边数组的下标,和除以二。得到相应下标的数字,所对应的值,与我们所找的值相比较,两种情况:

第一:如果是这个新得到的值小于我们所找的。那么就是用这个新得到的下标加一,在与最右边的下标继续和除以二,再去比较,这样一直循环。

第二:如果是这个新得到的值大于我们说找的。那么就是用这个新得到的下标减一,在与最左边的下标继续和除以二,再去比较,这样一直循环。

#include <stdio.h>
int main ()
{
	int arr[] = {1,2,3,4,5,6,7,8,9,10};
	int k = 7;  //要查找的数字
	//在arr这个有序的数组中查找 k (7)的值
	int sz = sizeof(arr) / sizeof(arr[0]);//数组的元素个数
	
	int left = 0;
	int right = sz - 1;
	
	while (left<=right)
	{
		int mid = (left + right) / 2 ;
		if (arr[mid]<k)
		{
			left = mid + 1;
		}
		else if(arr[mid]>k)
		{
			right= mid-1;
		}
		else 
		{
			printf("找到了,下标是:%d\n",mid); 
			break;
		}
	 } 
	 if(left>right)
	 {
	 	printf("找不到了\n");
	 }
	 return 0;
 } 

 

9:getchar用于读取多个字符

C语言——分支语句和循环语句(循环语句)_致未来的你。的博客-CSDN博客

看这个博客的最后,我已经讲得很清楚了。接下来是代码:

#include <stdio.h>
int main ()
{
	char password[20] = {0}; 
	printf("请输入密码:");
	scanf("%s",password);
	printf("请确认密码(Y或N):");
	//清理缓冲区
	//getchar()
	//清理缓冲区的内容(多个字符)
	int tmp = 0;
	while((tmp = getchar()) != '\n')
	{
		;//空字符 
	 } 
	 int ch=getchar() ;
	if(ch = 'Y') 
	{
		printf("确认成功");
	}
	else
	{
		printf("确认失败");
	 } 
	 return 0; 
	
}

 

10:关机程序

在这个代码里面,我们要知道的是shutdown -s -t 60—代表的是剩余60秒自动关机

shutdown -a—表示的是取消以上的操作。

system代表C语言让计算机执行的命令。

goto语句的使用。

#include <stdio.h>
#include <stdlib.h>
#include <string.h> 
int main()
{
	char input[10] = {0};
	system("shutdown -s -t 60");
	
	again:
	printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
	scanf("%s", input);
	if(0 == strcmp(input, "我是猪"))
 	{
		system("shutdown -a");
	}
	else
	{
		goto again;
	}
	return 0;
}
  • 7
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LJ小番茄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值