c语言入门—选择循环结构程序设计

目录

一、选择结构程序设计 

​  二、  循环结构程序设计                               


一、选择结构程序设计 

我们在生活中经常会面临着各种选择,不同的选择有着不同的结果,c语言有两种选择语句:if语句switch语句。

 if语句          

 if(表达式 )语句;表达式为真时,执行语句,为假时,不执行。

 f-else               

 if (表达式)语句;

else  语句2;

 if -  else if  - else

 

 if(表达式1)语句1;  else if(表达式2)语句2;  ------else if(表达式m)语句m; else 语句n;

                                                         

 应用举例,实现以上函数

#include<stdio.h>
int main()
{
	int x = 0; int y = 0;
	scanf("%d", &x);
	if (x < 0)
		y = -1;
	else if (x == 0)
		y = 0;
	else
		y = 1;
	printf("%d", y);
	return 0;
}

 悬空else :else总是和它上面距离最近的没有匹配的if语句相匹配

 此代码的功能即实现上述函数,悬空else的匹配如下

注意:if(表达式);,否则即视为if(表达式)在进行判断真假之后,如果为真,执行了空语句(;)。 判断是否相等使用==,使用=为赋值操作。举例:                                                                    

#include<stdio.h>
int main()
{
	int a = 20;
	if (a = 1)
		printf("%d", a);
	return 0;
}

结果:打印1         分析,if(a=1)中不是判断a和1相等,而是将a赋值成为了1。         

switch语句   :实现多分支

 switch(表达式)  {     case 1:语句1;break;   case 2:语句2;break;   ---    default:默认语句块;       }

表达式的值没有一个可以匹配case语句,执行default。 

   switch语句的break作用:使程序跳出switch,一个break只能作用于包含这个break的switc内

#include<stdio.h>
int main()
{
	int n = 1, m = 2;
	switch (n)
	{
	case 1:n++;switch (m)
	{
	case 1:m--; break;
	case 2:m = 4;
	case 3:m++; break;
	}
	default:n++;
	}
	printf("m=%d,n=%d", m, n);
	return 0;
}

  二、  循环结构程序设计                               

 while语句

 while(表达式)      语句;表达式为真时,执行语句,为假时结束。                                                                                                                        

 代码功能:一到一百累加求和

#include<stdio.h>
int main()
{
	int i = 1;
	int sum = 0;
	while (i <= 100)
	{
		sum = sum + i;//sum累加求和 1+2+3+...+100
		i++;
	}
	printf("%d", sum);
	return 0;
}

 do-while:先执行do里面的循环体,后进行while循环的判断

#include<stdio.h>
int main()
{
	int i = 0;
	int sum = 0;
	do
	{
		sum = sum + i;//sum累加求和 1+2+3+...+100
		i++;
	} while (i <= 100);
	printf("%d", sum);
	return 0;
}

 for循环

#include<stdio.h>
int main()
{
	int i = 0;
	int sum = 0;
	for (i = 0; i <= 100; i++)
	{
		sum = sum + i;//sum累加求和 1+2+3+...+100
	}
	printf("%d", sum);
	return 0;
}

 注意;赋值还是判断

 循环里面的break和continue

 break:循环体内结束本层循环。switch内跳出本层switch语句                                 

continue:只能出现在循环体内 ,作用是提前结束本轮循环,放置在continue后面的语句被跳过,返回到循环控制部分。 

 练习:1,求n的阶乘

#include <stdio.h>
int main()
{
	int i = 1;
	int n = 0;
	int ans = 1;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
		 ans = ans * i;
	printf("%d", ans);
	return 0;
}

 2.冒泡排序:对于一组杂乱无章的数据进行排序

#include <stdio.h>
int main()
{
	int arr[10] = { 1,2,3,4,3,5,6,7,8,9 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0; int j = 0; 
	for (i = 0; i < sz - 1; i++)
	{
		int flag = 1;
		for (j = 0; j < sz - 1 - i; j++)
		{
			int t = 0;
			if (arr[j] > arr[j + 1])
			{
				t = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = t;
				flag = 0;
			}
		}
		if (flag == 1)
			break;
	}
	for (i = 0; i < sz; i++)
	{
		printf("%d", arr[i]);
	}
	return 0;
}

3.二分查找:对一排列有序的数组进行数据的查找

#include<stdio.h>
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int n = 0;
	printf("输入找的数字");
	scanf("%d", &n);
	int left = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	int right = sz - 1;
	while (left <= right)
	{
		int mid = (left + right) / 2;
		if (arr[mid] == n)
		{
			printf("找到了,下标是%d", mid);
			break;
		}
		if (arr[mid] < n)
		{
			left = mid + 1;
		}
		if (arr[mid] > n)
		{
			right = mid - 1;
		}
	}
	if (left > right)
		printf("找不到");
	return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值