C++分支和循环语句怎么使用
本篇内容介绍了“C++分支和循环语句怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创新互联专业为企业提供西岗网站建设、西岗做网站、西岗网站设计、西岗网站制作等企业网站建设、网页设计与制作、西岗企业网站模板建站服务,10年西岗做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
生活中存在三种语言结构
(1)顺序结构
(2)选择结构<——>分支语句:if switch
(3)循环结构<——>循环语句:while for do while goto
C语言中0表示假,非0表示为真。(比如说-1表示为真)
if 语句
语法结构:
if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
if (表达式1)
语句1;
else if(表达式2)
语句2;
else // 最后一个else语句借以省略,根据需要写
语句3;
如果if 或者else想要控制多条语句,必须要用大括号括起来,整体形成一个代码块。
以上程序的输出结果不是“hahahah”也不是“hehhehe”,结果是什么也不输出。else是和最近的 if匹配,所以都是属于第一个if的代码块内容。
else是和它离得最近的那个没有匹配的if 是一对。
如果常量和变量做比较的时候,我们可以把常量写在前面,这样能够避免出现错误如:5==num;
练习
1.判断一个数是否为奇数?
#include
int main()
{
int num=0;
printf("请输入一个数:\n");
scanf("num=%d\n",&num);
if (num%2==1)
{
printf("该数字为奇数");
}
else
{
printf("该数字为偶数");
}
return 0;
}
2.且输出1-100之间的奇数。
#include
int main()
{
int a=1;
while (a<=100)
{
if(a%2==1)
{
printf("%d\n",a);
a++;
}
else
a++;
}
return 0;
}
Switch语句
Switch语句的一般形式:
Switch(语句1)
{
case(语句2):
内容;
break;
case (语句3):
内容;
break;
case(语句4):
内容;
break;
……
default;// 可有可无
内容;
break;
}
Switch语句是从case进入,从break出来,只有当case后面的语句与Switch后面的语句匹配上的时候才会执行。
注意:Switch语句里面必须是整型表达式,case后面必须是整型常量表达式。
while循环
while 语法结构:
while (表达式)
循环语句;
只有在表达式为真的时候,才会执行循环语句,知道发现表达式为假的时候,表达式便不再执行,结束循环。
continue的作用是终止本次循环中,也就是说continue后面的代码不再执行,直接跳转到while的判断部分,判断是否需要进入下一次循环。
只要循环中遇到break,就停止后期的所有的循环,直接终止循环,所以:while中的break是用于永久终止循环的。
getchar 是输入字符,putchar() 是输出字符。putchar(变量名)的含义类似于printf(“%c”,变量名);
EOF——表示的end of file 是文件的结束标志。
int main()
{
int ch=0;
while((ch=getchar()!=EOF)
{
putchar(ch);
}
return 0;
}
当你输入EOF的时候,循环并不会终止,只有当你输入Ctrl+z时,才会终止。
getchar与scanf的区别:
scanf是把你所输入的内容放到一个缓冲区中,最后的回车键作为结束标志,在最终显示的时候不会显示出\n。但是getchar首先是去输入缓冲区中看是否有内容,不管里面的内容是否是自己所需要的,都会被读走。所以,一般我们在使用getchar()输入的时候,前面一般加上一句getchar();不用给他赋予返回值,因为我们此时的目的就是清空数据缓冲区中的内容,让getchar获取我们想要的内容。
getchar函数是一位一位的读取字符的。
#include
int main()
{
while ((ch=getchar())!=EOF)
{
if(ch<'0'||ch>'9')
continue;
putchar(ch);
}
return 0;
}
以上代码的意思是只有在输入字符0-9之间的字符,包含0和9,才会有输出,否则就不输出。
for循环
语法:for (表达式1;表达式2;表达式3)
{
循环语句;
}
表达式 1为初始化部分,用于初始化循环变量的。表达式2 为条件判断部分,用于判断循环时候终止。表达式3位调整部分,用于循环条件的调整。
break和continue的用法和在while语句中的用法一致。
有一个小区别:
#include
int main()
{
int i=0;
for(i=1;i<=10;i++)
{
if (i==5)
continue;
printf("%d",i);
}
return 0;
}
此结果的输出是1 2 3 4 6 7 8 9 10 因为在i=5的时候遇到了continue之后直接跳转到了变量调整部分i++那里,所以,这个时候变量的值变为了6,继续输出。
#include
int main()
{
int i=1;
while (i<=10)
{
if(i==5)
continue;
printf("%d",i);
i++;
}
}
此代码的结果是1 2 3 4 最后是一个死循环,因为当i=5的时候,遇到了continue,后面的部分不再执行,直接跳过了变量调整部分,一直在判断i=5。
for语句循环控制变量的一些建议:
不可在for循环体内修改循环变量,防止for循环失去控制。
建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
当for循环的表达式2,即判断语句不写的时候,就意味着这个判断条件恒为真,那么就进入了死循环。
请问一下代码循环了多少次?
#include
int main()
{
int i=0;
int k=0;
for (i=0,k=0;k=0;i++,k++)
k++;
return 0;
}
答案是循环了0次,就是根本就没有进入循环,因为判断语句处是一个赋值语句,赋值表达式的结果是0,为假,那么就不进入循环。
do while 循环
语法:do
{
循环;
}
while()
练习题
1. 从键盘输入一个数n,并且求n!
#include
int main()
{
int n=0;
int i=1;
int sum=1;
printf("请输入n:\n");
scanf("%d",&n);
while (i<=n)
{
sum=sum*i;
i++;
}
printf("sum=%d\n",sum);
return 0;
}
2.求1!+2!+3!+4!+……n!
[x]
#include
int main()
{
int n=0;
int i=1;
int sum=1;
int get=0;
printf("请输入n:\n");
scanf("%d",&n);
for (n=1;n<=10;n++)
{
sum=1;
while (i<=n)
{
sum=sum*i;
i++;
}
get=get+sum;
}
printf("get=%d\n",get);
return 0;
}
[x]
#include
int main()
{
int n=0;
int i=1;
int sum=1;
int get=0;
printf("请输入n:\n");
scanf("%d",&n);
for (n=1;n<=10;n++)
{
sum=sum*n;
get=get+sum;
}
printf("get=%d\n",get);
return 0;
}
3.在一个有序数组中查找具体的某个数字n,编写int binsearch(intx, int v[],int n);功能:在v[0]<=v[1]<=v[2]<=……v[n-1]的数组中查找x。
[x]
#include
int main()
{
int i=1;
int k=7;
int arr[]={1,2,3,4,5,6,7,8,9,10};
int lgth=sizeof(arr)/sizeof(arr[0]) ;
for(i=0;i { if(k==arr[i]) { printf("找到了,下标为%d\n",i); break; } } if (i==lgth) printf("没有找到"); return 0; } [x]二分查找法 #include int main() { int k=7; int arr[]={1,2,3,4,5,6,7,8,9,10}; int i=0; int legth=sizeof(arr)/sizeof(arr[0]); int right=legth-1; int left=0; while(left<=right) { int mide=(right+left)/2; if(k>arr[mide]) { left=mide+1; } else if(k { right=mide-1; } else { printf("找到了,下标为%d\n",mide); break; } } if(left>right) { printf("找不到"); } return 0; } 4.编写代码,演示多个字符从两端移动,向中间汇聚。 #include #include #include #include int main() { char arr1[]="Welcome to DongHua!!!!"; char arr2[]="######################"; int left =0; int right=strlen(arr1)-1; while (left { arr2[left]=arr1[left]; arr2[right]=arr1[right]; printf("%s\n",arr2); Sleep(1000);//表示在输出的时候停留1000毫秒 system("cls");//表示在输出一次结果后清屏 left++; right--; } return 0; } 5.编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确就提示登录成功,如果三次均输入错误,则退出程序) strcmp(A,B)是比较字符串A和字符串B,如果字符串A>B,那么会返回一个大于0的数字,如果A #include #include int main() { int i=0; char password[20]={0};//不能写成password[]={0},这样定义的话,就不知道数组的长度是多少结果就会出错 for (i=0;i<3;i++) { printf("请输入密码:\n"); scanf("%s",password); if(strcmp(password,"123456")==0)//在比较两个字符串是否相等的时候,不能直接用==来判断,要用strcmp函数,它在string.h函数库中 { printf("密码正确,登陆成功\n"); break; } else { printf("密码错误\n"); } } if (i==3) { printf("三次密码错误,退出程序\n"); } return 0; } goto 语句 在一般编写程序的时候很少使用goto语句,因为它会破坏程序的逻辑性,它所使用的场景是跳出多层循环嵌套。 分支和循环的作业和练习 1.输入三个数,按照从大到小的顺序输出。 #include int main() { int a=0; int b=0; int c=0; printf("请输入三个数:\n"); scanf("%d%d%d",&a,&b,&c); if (a { int temp=a;//在此注意,不能直接将b赋值给a,因为这样a的值容易丢失 a=b; b=temp; } if(a { int temp=a; a=c; c=temp; } if(b { int temp=b; b=c; c=temp; } printf("由大到小的顺序为:%d %d %d\n",a,b,c); return 0; } 2.写一个代码打印1-100之间的所有的3的倍数的数字 #include int main() { int i=0; for (i=0;i<100;i++) { if (i%3==0) { printf("%d",i); } } return 0; } 3.给定两个数,求这两个数的最大公倍数. 辗转相除法比如说24和18,首先看24%18余数是否为0,如果不为0的话,再用除数与余数相除,直到余数为0为止,此时最后的除数就是公倍数。 #include int main() { int a = 0; int b = 0; int temp = 0; printf("请输入两个数字:\n"); scanf_s("%d %d", &a, &b); while(temp = a % b)//只要结果为非0,就进入循环。 { a = b; b = temp; } printf("公倍数为:%d", b); return 0; } 4.打印1000年到2000年之间的闰年 #include int main() { int year = 0; for (year = 0; year <= 2000; year++) { //判断year是否为闰年 //1.能被4整除并且不能被100整除 //2.能被400整除是闰年 if (year % 4 == 0 && year % 100 != 0) { printf("闰年为:%d\n", year); } else if(year%400==0) { printf("闰年为:%d\n", year); } } return 0; } 5.打印100-200之间的素数 #include int main() { int count = 0; int i = 0; for (i = 100; i <= 200; i++) { int j = 0; for (j = 2; j < i ; j++) { if (i%j == 0) { break; } } if (j == i) { count++; printf("%d\n", i); } } printf("count=%d\n", count); return 0; } 优化程序:首先偶数肯定不是素数,所以先产生100-200之间的奇数。根据c=a*b,那么a或者b中必有一个小于c开平方 #include # include int main() { int count = 0; int i = 0; for (i = 101; i <= 200; i+2) { int j = 0; for (j = 2; j <= sqrt(i) ; j++) { if (i%j == 0) { break; } } if (j >sqrt(i)) { count++; printf("%d\n", i); } } printf("count=%d\n", count); return 0; } 6.编写程序数一下1-100之间所有的整数中出现了多少个数字9 #include int main() { int count = 0; int i = 0; for (i = 1; i <= 100; i++) { if (i % 10 == 9) { count++; } if (i / 10 == 9) { count++; } } printf("%d\n", count); return 0; } 7.计算1/1-1/2+1/3+1/4+1/5+……+1/99+1/100的值,打印出结果 #include int main() { int i = 0; double sum = 0.0; int flag = 1; for (i = 1; i <= 100; i++) { sum += flag*(1.0 / i);//此处必须是1.0,否则结果都是不对的 flag = (-flag); } printf("%lf\n", sum); return 0; } 8.求10个整数中的最大值 #include int main() { int i = 0; int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; int sz = sizeof(arr) / sizeof(arr[0]); int max = arr[0]; for (i = 0; i <= 10; i++) { if(max max = arr[i]; } printf("%d\n", max); return 0; } 输入10个数字,并且找出其中的最大值 #define _CRT_SECURE_NO_WARNINGS #include int main() { int i = 0; int arr[10] = { 0 }; printf("请输入数字:"); for (i = 0; i < ; i++) { scanf("%d", &arr[i]);//切勿忘记加上取地址运算符 } int max = arr[0]; for (i = 1; i < 10; i++) { if (arr[i]>max) { max = arr[i]; } } printf("max=%d\n", max); return 0; } 9.输出乘法口诀表 #define _CRT_SECURE_NO_WARNINGS #include int main() { int i = 0; int j = 0; for (i = 1; i < 10; i++) { for (j = 1; j < i+1; j++) { printf("%d*%d=%2d ", i, j, i*j);//输出为%2d表示的是输出为两个字符,不够两个字符的,自动补一个空格。%-2d是输出左对齐 } printf("\n"); } return 0; } 10.设计一个猜数字游戏 #define _CRT_SECURE_NO_WARNINGS//scanf所在的头文件 #include #include #include void menu() { printf("********************************************\n"); printf("*** 1.play 0.exit ***\n"); printf("********************************************\n"); } void game() { //时间戳:当前时间-1970年1.1 0:0:0 时间差换算成秒后的数字。 int ret = 0; int guess = 0; printf("猜数字\n"); ret = rand()%100+1;//生成随机数,生成随机数的范围是0-0x7fff,即转换为十进制是32767,对100取余,使其输出1-100以内的随机数 while (1) { scanf("%d", &guess); if (guess < ret) { printf("猜小了\n"); } else if (guess > ret) { printf("猜大了\n"); } else if (guess == ret) { printf("恭喜你,猜对了\n"); break; } } } int main() { //猜数字游戏 //1.电脑会生成一个随机数 //2.猜数字 int input = 0; srand((unsigned int)time(NULL));//设置时间起点 do { menu(); printf("请选择:"); scanf("%d", &input); switch (input) { case 1: printf("开始游戏\n"); game(); break; case 0: printf("退出游戏\n"); break; default: printf("您输错了,请重新输入\n"); break; } } while (input); return 0; } 11.一个关机程序 #define _CRT_SECURE_NO_WARNINGS #include #include #include int main() { char input[20] = { 0 }; system("shutdown -s -t 60");//此处一定要注意,命令的格式,空格键不能敲错 again: printf("提示!!!您的电脑将在1分钟后关机,如果您输入“我是猪”可以取消关机\n"); scanf("%s", input); if (strcmp(input, "我是猪") == 0) { system("shutdown -a"); } else { goto again; } return 0; } “C++分支和循环语句怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
分享题目:C++分支和循环语句怎么使用
分享地址:http://pwwzsj.com/article/gjdjep.html