今天我们要学的是c语言中的分支和循环语句_do~while循环语句(中)
目录
一.练习(1)
二.练习(2)
三.goto语句
四.本节重点
下面我们正式开始学习c语言中的分支和循环语句_do~while循环语句(中)
一.练习(1)
编写代码,演示多个字符从两端移动,向中间汇聚
#include <stdio.h>
#include <string.h>
#include <windows.h>
int main()
{
char num1[]={"hello world"};
char num2[]={"###########"};
int left=0;
int right=strlen(num1)-1;
while(left<=right)
{
num2[left]=num1[left];
num2[right]=num1[right];
printf("%s\n",num2);
Sleep(1000);
left++;
right--;
}
return 0;
}
代码解析:
1.由于本代码用到printf,所以要声明<stdio.h>头文件
2.由于本代码用到了strlen,所以要声明<string.h>头文件
3.由于本代码用到了Sleep(注意大写),所以要声明<windows.h>头文件
4.Sleep括号内的单位是毫秒,其作用是让代码在其位置停止一段时间,1000毫秒等于一秒
5.strlen的作用是查看字符数组中有效元素的个数,它不会把\0计入,由于数组下标是从零开始的所以要减一,如果用sizeof(num2)/sizeof(num2[0])则需要减二,因为sizeof会把\0计入
运行结果:
二.练习(2)
编写代码实现,模拟用户登录场景,并且只能登陆三次(只允许输入三次密码,如果密码正确则提示登陆完成,如果三次均输入错误,则退出程序
#include <stdio.h>
#include <string.h>
int main()
{
//假设密码为123456
char num1[]={"123456"};
char num2[20];
int a=1;
for(; a<=3;a++)
{
printf("请输入密码\n");
scanf("%s",num2);
if(0==strcmp(num1,num2))
{
printf("输入正确,登陆成功\n");
break;
}
else
printf("输入错误\n");
}
if(a==4)
printf("三次均输入错误,退出登录程序");
}
代码解析:
1.本程序需要用到字符串比较函数strcmp函数,所以需要声明头文件<string.h>
2.由于本程序最多能登录三次,所以a=1,a<=3,a++
3.由于本程序要求当三次登陆中有一次答对后就退出程序,所以要用到break
4.strcmp函数是字符串比较函数,主要比较ascll码值,其中如果num1==num2,则strcmp的值为零 ,因为srcmp函数是将字符串的每个元素挨个比较。当字符串长度相同字符不同时,遇到字符不同的元素的时候,则返回num1中这个元素与num2中这个元素之间的差值,当遇到相同元素的时候则一直往下走,直到双方都达到\0;当字符串长度不同时,多余的字符会与\0进行比较,因为数组多余的元素会被当成‘\0'或0来对待。
代码结果:
三.goto语句
goto一般不经常被使用,因为它能够很容易地被其他函数所代替,它经常用于复杂的嵌套的循环语句中,例如:
#include <stdio.h>
int main()
{
for(int a=0;a<=4;a++)
{
for(int b=0;b<=3;b++)
{
for(int c=0;c<=2;c++)
{
if(2==a&&3==b)
goto age;
}
}
}
age:printf("程序结束");
return 0;
}
在上述代码中goto语句是程序执行直接从goto age跳到age那一段程序中,从而结束了整个复杂的for循环,这就是goto语句的主要作用(能被break函数来平替,但是break函数太过于麻烦)
练习:
使用goto语句制作一个恶搞关机小游戏
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char num1[20];
age:
system("shutdown -s -t 60");
printf("请输入 i am dog 来结束程序");
scanf("%s",num1);
if(strcmp(num1,"i am dog")==0)
system("shutdown -a");
else
goto age;
}
代码解析
1. system就是windows电脑中的cmd,使用它之前需要引入头文件<stdlib.h>
2.shutdown -s -t 60的作用是电脑60秒后关机s
3.shutdown -a的作用是停止电脑重启
4.strcmp函数用于字符串之间的大小比较
5. age:和goto age 构成了简单的循环
四.本节重点
1.Sleep函数的作用及其头文件
2.strlen函数的作用及其头文件
3.strlen函数的作用效果和sizeof的作用效果的区别
3.strcmp函数的作用及其头文件
4.strcmp函数的作用流程
明天我们学习c语言中的分支和循环语句_do~while循环语句(下)