C语言入门教程(4) CSDN花神生涯


循环结构程序的设计

goto语句和if语句构成循环

  • goto 语句标号;
  • 注意:语句标号与goto语句同处与一个函数中,但可以不在同一个循环层
#include <studio.h>
main()
{
	int i,sum=0;
	i=1;
loop: //语句标号:
	if(i<=100)
	{
		sum=sum+1;
		i++;
		goto loop;//跳转到语句标号处
	}
	printf("%d\n",sum);
}

while语句构成循环

while(循环条件)
循环体
  • break:直接跳出循环体,永久终止循环 ,对用if和goto语句构成的循环不起作用,
  • 若为多层循环,则执行一次break,只能向外跳一层
  • continue:跳出本次尚未执行的语句,进入下次循环判断条件

计算1-10的值

#include <studio.h>
main()
{
	int i,sum=0;//循环变量初始化
	i=1;
	while(i<=10)//只要表达式为真,就继续循环
	{
	sum=sum+1;
	i++;
	}
	printf("%d\n",sum);
}

输出从0开始的偶数

#include <studio.h>
main()
{
	int i=0,n;
	printf("请输入数字:");
	scanf("%d",&n);
	while(n--)
	printf("%d",i++*2)
}

密码输入和确认
死循环判断输入缓冲区为空

#include <studio.h>
main()
{
	int ret=0;
	char password[20]={0}
		printf("请输入密码:");
	scanf("%s",password);//输入函数 123456回车确认,在输入缓冲区取走123456,剩下\n
		printf("请确认密码(Y/N)")//未等待
	ret=getchar();//输入函数,在输入缓冲区取走\n
	if(ret=='Y')
	{
		printf("确认成功")
	}
	else
	{
		printf("确认失败")//于是打印出\n的ACLLa码10
	}
}

修改后
#include <studio.h>
main()
{
	int ret=0;
	int ch=0;
	char password[20]={0}
		printf("请输入密码:");
	scanf("%s",password);//输入密码存放在password函数中123456 ABCD回车确认,在输入缓冲区取走123456,剩下\nABCD\n
	while(nr=getchar()!='\n');
	{
	//不需要做事情,只需循环判断等待为\n
	}
		printf("请确认密码(Y/N)")//等待中
	ret=getchar();//重新输入密码
	if(ret=='Y')
	{
		printf("确认成功")
	}
	else
	{
		printf("确认失败")
}

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

#include <studio.h>
#include <string.h>
main()
{
char arr1[]="hello word"
char arr2[]="##########"
int left=0;//左下标
int right =strlen(arr1)-1 //右下标
 while(left<=right)
	{
	arr2[left] =arr1[left];
	arr2[right] =arr1[right];
		printf("%s\n",arr2);
	left++;
	right--
	}
}

do-while语句构成循环

先执行循环体中的语句,然后判断表达式是否为真,如果为真,继续循环,如果为假,则终止循环
打印1-10 的值

#include <studio.h>
main()
{
	int i=0;
	do
 	 {
  		printf("%d\n",i);
  		i++;
 	 }
  while(i<=10);
}

for语句构成循环

for(表达式1初始化循环变量;表达式2条件判断部分;表达式3循环条件的调整)
循环语句;

注意情况:

  • 表达式1和表达式2和表达式3均可以省略,但“;”不能省略
  • 省略表达式1;表示不对循环控制变量赋初值
  • 省略表达式2:若不做其他处理,则成为死循环
  • 省略表达式3,则表示不对循环控制变量进行操作

简单打印1-10的值

#include <studio.h>
main()
{
	int i=0;
	for(i=1;i<=10 ;i++)//for语句
  {
  		printf("%d\n",i);
  }
  return 0;
}

变种情况1缺少表达式1

#include <studio.h>
main()
{
	int i=0;
	int j=0;
	for(;i<=10;i++)//for语句
  {
  //当i从0 → 1时,j循环10次,此时j=10
  //当i从1 → 2时,j由于省略循环变量赋初值,无法从10初始为0,故无法循环
 		 for(;j<=10;j++)
  		{
  			printf("你好\n");
  		}
  }
  return 0; 
}
//当省略表达式1(循环变量赋初值)时,只能输出10次

变种情况2,表达式2(循环条件的缺失)

for(i=0,j=0;j=0;i++,j++)
{
//不循环,j=0意思为j为假
//死循环。当j=!0时j为真
}

计算n的阶乘

#include <studio.h>
int i;
int sum=1main()
{
	printf("请输入n的数字")
	scanf("&d",sum)
	for(i=1;i<=sum;i++)//for语句
  {
  		sum=sum*i
  }
	printf("%d\n",sum);
	return 0}

在一个有序数组中查找具体的某些数字的下标

#include <studio.h>
main()
{
	int arr[] ={1,2,3,4,5,6,7,8,9,10}
	int m=5;
	int changdu=sizeof(arr)/sizeof(arr[0]);//求数组长度
	for(i=1;i<changdu;i++)
  {
  	  if(m==arr[i])//当数组元素和m相等时
  	  {
  	  	printf("找到了。下标是;%d\n",i);
  	  }
  }
    if(i==arr[i])//当循环次数等于数组长度时
		printf("未找到\n");
	return 0}

折半查找完成上题

#include <studio.h>
main()
{
	int arr[] ={1,2,3,4,5,6,7,8,9,10}
	int m=6;
	int changdu=sizeof(arr)/sizeof(arr[0]);//求数组长度
	int left =0;//左下标
	int right=changdu -1;//右下标
	for(i=1;i<changdu;i++)
	int changdu =(left+right)/2
  {
  	  if(arr[changdu]>m)//当数组元素和m相等时
  	  {
  		 right =changdu -1;
  	 //假设查询范围为1~10,下标中间值8大于6,
  	 //当中间值大于查询值时,就相当于8~10绝对不可能有,
  	 //接下来该查询,左下标~查询中间值+1的距离 
  	  }
  	  else if(arr[changdu]<m)
  	  {
  		 left =changdu+1
  	 //假设查询范围为1~10,下标中间值4小于6,
  	 //当中间值小于查询值时,就相当于1~4绝对不可能有,
  	 //接下来该查询,查询中间值+1~右下标的距离 
  	  }
  	 	 printf("找到了\n",changdu);
  	 	 break;
  	   }
  }
  if(left>right)
  {
  }
	return 0;
}

花神博客生涯之C语言(4)结束了哦~
接下来会持续更新(⊙o⊙)!
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值