在分支语句和循环语句里面,有几个经典的练习题,接下来给大家来分享一下。
1:周末周内的判断 2:年龄的判断 3:判断是否为奇数 4:计算一个数的阶乘
5:阶乘相加 6:输出1—100之间的奇数 7:登录验证 8:二分法查找
9:getchar用于读取多个字符 10:关机程序 接下来开始吧!!!
在这个代码里面运用了switch语句,注意break是结束循环的标志。
#include
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;
}
在这个代码里面运用了if else if语句。注意他们的用法。
#include
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;
}
在这个代码里面,我们要注意的是,if条件判断的时候,不能写一个“=”。这样代表的是赋值给一个值,因此判断的时候用的是“==”。 判断一个数是否是奇数,那么则用的就是取余。余数是0的话则说明是一个偶数;余数是1的话就是奇数。
#include
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;
}
在这个代码里面,我们用到的是for循环,注意因为是阶乘,所以执行的部分选择的是“*=”;当然也可以写成“ c = c * b; ”。
#include
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;
}
在这个代码我们里面要注意,虽然说的是阶乘相加。但是我们需要注意的是,这里面用到的是一个for循环的嵌套。最里面的一个for循环完成的是计算阶乘。最外面的一个for循环计算的则是将这些阶乘相加。
注意,在最外面的一个for循环的执行部分,有一个“c=1”;这样做的目的则是每次完成循环将其设置回原来的值,要么在接下来的循环当中多加。
#include
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;
}
在这个代码里面同样也是使用了嵌套。
#include
int main ()
{
int a = 0;
for ( a=0 ; a <= 100 ; a++ )
{
if ( a % 2 == 1 )
printf("%d\n",a);
}
return 0;
}
在这个代码里面,我们起初设置的原始密码就是“123456”。
注意的就是,字符的判断不在使用“==”。而是使用strcmp。
也是一个嵌套。
#include
#include
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;
}
在这个代码里面,我们在一组数组中找到所对应的值的时候,一个挨着一个去寻找,这样是比较浪费的,因此使用的是二分法查找。运用的就是最左边的数组的下标,和最右边数组的下标,和除以二。得到相应下标的数字,所对应的值,与我们所找的值相比较,两种情况:
第一:如果是这个新得到的值小于我们所找的。那么就是用这个新得到的下标加一,在与最右边的下标继续和除以二,再去比较,这样一直循环。
第二:如果是这个新得到的值大于我们说找的。那么就是用这个新得到的下标减一,在与最左边的下标继续和除以二,再去比较,这样一直循环。
#include
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)
{
right= mid-1;
}
else
{
printf("找到了,下标是:%d\n",mid);
break;
}
}
if(left>right)
{
printf("找不到了\n");
}
return 0;
}
C语言——分支语句和循环语句(循环语句)_致未来的你。的博客-CSDN博客
看这个博客的最后,我已经讲得很清楚了。接下来是代码:
#include
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;
}
在这个代码里面,我们要知道的是shutdown -s -t 60—代表的是剩余60秒自动关机
shutdown -a—表示的是取消以上的操作。
system代表C语言让计算机执行的命令。
goto语句的使用。
#include
#include
#include
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;
}