当前位置: 首页 > news >正文

C语言复习二(2025.11.7)

C语言复习二(2025.11.7)

位运算

<<:左移,按位左移

说明:原操作数所有二进制位数向左整体移动指定位。(小端模式:低补)

. >>:右移,按位右移

说明:原操作数所有二进制位数据整体向右移动指定位,移除的数据舍弃(高舍低补)

程序的三种基本结构

程序基本的三种结构:顺序结构,分支结构(条件结构、选择结构),循环结构(重复结构)

顺序结构

特点:各操作都是按顺序执行,这个结构是程序默认的。

在这里插入图片描述

分支结构

特点:根据是否满足条件而从一组、两组、多组操作中选择一种去执行。

在这里插入图片描述

P条件成立,则会去执行A操作,否则跳出结构。

分支结构分为:单分支结构、双分支结构、多分支结构。

循环结构

特点:当满足一定条件下,反复执行某一操作,有两种类型:

当型循环

在这里插入图片描述

说明:当P条件成立时,执行S操作,然后再去判断P条件是否成立,如果依然成立,再执行S操作,然后…,如此往复,直到P条件不成立此时不再执行S,结束循环。

举例

while 、for()

特点

先判断,后执行。循环体S有可能一次也不执行。

直到型循环

在这里插入图片描述

说明:首先先执行操作,再去执行P条件是否成立,如果成立再去执行S操作,然后再去判断…,如此反复,如果P条件不成立,结束循环。

举例

do…while

特点

先执行,后判断,循环体S至少执行一次。

用if实现分支结构

单分支:if…

语法

if(条件表达式)
{语句;
}
如果是单语句可以省略{}

代码

#include <stdio.h>int main(int argc, char *argv[])
{int x,y =-2;printf("请输入一个数字:");scanf("%d",&x);if(x >= 0){y = 2;}printf("x=%d,y=%d",x,y);return 0;
}

案例:

需求:有a,b,c三个数,要求从控制台输入,并求出它们中最大数和最小数。

#include <stdio.h>int main(int argc, char *argv[]) {int max, min, a, b, c;printf("请输入三个数:\n");scanf("%d%d%d", &a, &b, &c);max = a;min = a;if (max < b)max = b;if (max < c)max = c;if (min > b)min = b;if (c < min)min = c;printf("最大值是:%d,最小值是:%d", max, min);return 0;
}
双分支:if…else…
if (条件表达式)
{
语句1;
}
else
{
语句2;
}
// 如果是单语句,可以省略{},以下两种写法等价
if (条件表达式) 语句1;
else 语句2;
if (条件表达式)
语句1;
else
语句2

注意:else语句不能单独存在,必须和最近的未配对的if配对

代码

#include <stdio.h>int main(int argc, char *argv[])
{int x,y;printf("请输入一个数:");scanf("%d",&x);if(x < 0){y = -2;}else{y = 2;}printf("x=%d,y=%d",x,y);return 0;}

案例

需求:输入一个年份,判断这个年份是闰年还是平年

#include <stdio.h>int main(int argc, char *argv[])
{int x;printf("请输入一个年份:\n");scanf("%d",&x);if(x % 4 ==0 && x%100 !=0 ||x%400 ==0){printf("%d是闰年",x);}else{printf("%d是平年",x);}return 0;
}
双分支:三目运算符

语法

表达式1 ?表达式2:表达式3;

说明

如果表达式1的值为真,就执行表达式2,否则执行表达式3。

案例:

通过控制台输入a,b,c三个数,求出最大值

#include <stdio.h>int main(int argc, char *argv[])
{int a,b,c,min,max;printf("请输入三个数字\n");scanf("%d%d%d",&a,&b,&c);max =(a > b)?(a > c ? a : c):(b > c ? b : c);min =(a < b)?(a < c ? a : c):(b < c ? b : c);printf("最大值是%d,最小值是%d",max,min);return 0;
}

循环结构

分类:

无限循环:死循环

有限循环:循环限定循环次数(for)或者终止循环的条件(while,do…while)

循环的构成

循环条件:循环次数或者循环的出口

循环体:需要重复执行的代码

当型循环的实现

特点:先判断,后执行,如果条件不满足一次也不执行。

代表:while、for

while循环

语法

1】循环变量
while(【2】循环条件)
{3】循环语句;4】更新循环变量;
}
// 注意:如果循环语句是单语句,可以省略{}
while (循环条件) 循环单语句;
while (循环条件)
循环单语句;
// 注意:有些特殊场景下,循环体语句糅合到了循环条件中,所以省略掉循环体
while (循环条件); // int i = 1; while(i++ <= 5); printf("%d\n",i);

案例

需求:求1~100的累加和(例如:1+2+3+4+…+100)

#include <stdio.h>int main(int argc, char *argv[])
{int i=1,sum=0;while(i <= 100){sum += i;i++;}printf("1~100的累加和是%d",sum);return 0;
}

案例

需求:求1~100以内的偶数和

#include <stdio.h>int main(int argc, char *argv[])
{int i = 2,sum = 0;while(i <= 100){if(i % 2 == 0){sum += i;}i++;}printf("1~100偶数累加和是:%d",sum);return 0;
}

案例

需求:通过键盘录入一个整数,判断这个整数是否是水仙花数。

比如一个三位数:

个位的3次幂 + 十位的3次幂 + 百位的3次幂 = 这个数本身

#include <stdio.h>
#include <math.h>int main(int argc, char *argv[])
{int num,n = 0,sum = 0;printf("请输入一个数:");scanf("%d",&num);int originalnum = num;while(num != 0){num /=10;n++;}num = originalnum;while(num != 0){int digit=num % 10;sum += pow(digit,n);num /=10;}if(sum ==originalnum){printf("%d是水仙花数",originalnum);}else{printf("%d不是水仙花数",originalnum);}return 0;
}
for循环

for循环结构清晰,非常适合直到循环次数的循环。

语法:

for (1】循环变量;2】循环条件;4】更新循环变量)
{3】循环语句;
}
// 如果循环体语句是单语句,也是可以省略{}
for (1】循环变量;2】循环条件;4】更新循环变量)3】循环语句;
for (1】循环变量;2】循环条件;4】更新循环变量)3】循环语句;

特点:先判断后执行,有可能一次都不执行。

案例

需求:计算1~100以内的偶数和

#include <stdio.h>int main(int argc, char *argv[])
{int sum = 0;for(int i = 1;i <= 100;i++){if( i % 2 ==0){sum += i;}}printf("1~100以内的偶数和是%d",sum);return 0;
}

案例

需求:用户通过键盘输入一个整数n,求n的阶乘。例如:n = 4,n的阶乘 1 * 2 * 3 * 4

#include <stdio.h>int main(int argc, char *argv[])
{int num,sum = 1;printf("请输入一个数\n");scanf("%d",&num);for(int i = 1;i <= num;i++){sum *= i;}printf("%d的阶乘是%d",num,sum);return 0;
}   

案例

需求:求斐波拉契数列前20个

分析:

斐波拉契数列指的是是符合一定规则的数列,举例:1,1,2,3,5,8…

斐波拉契数列的特点:第3个数等于前两个数之和,最开始的第1,2个数是固定

的,都是1

#include <stdio.h>int main(int argc, char *argv[])
{	int a,b;a = 1;b = 1;int i = 1;for(;i <= 10;i++){printf("%d,%d\n",a,b);a += b;b += a;}return 0;
}

直到型循环的实现

特点:先执行,后判断,至少执行一次。

代表:do…while

do…while循环

语法:

1】循环变量;
do
{2】循环体语句;3】更新循环变量;
} while(4】循环条件);

案例

需求:求1~100 以内的偶数和

 #include <stdio.h>int main(int argc, char *argv[])
{int sum = 0,i = 1;do{if(i % 2 == 0)sum += i;i++	;}while(i <= 100);printf("1~100偶数和是:%d",sum);return 0;
}

案例

需求:九九乘法表

#include <stdio.h>int main(int argc, char *argv[])
{printf("-------九九乘法表----------\n");for(int i =1; i <= 9;i++){for(int j = 1; j <= i;j++ ){printf("%d * %d = %d  ",j,i,i*j);}printf("\n");}printf("\n");return 0;
}

案例

需求:求100~200之间的所有的素数(素数又被称作质数)

#include <stdio.h>int main(int argc, char *argv[])
{int num = 100;int i ;int flag;for(;num <= 200;num++){flag =1;for(int i = 2;i <num / 2;i++){if(num % i ==0){flag = 0;break;}}if(flag){printf("%d ",num);}}printf("\n");return 0;
}
http://www.dtcms.com/a/583218.html

相关文章:

  • Android Studio 多语言助手插件:让多语言管理变得简单高效
  • 京东的网站建设拓和科技有限公司网站
  • 中国铁路建设监理协会官方网站公司想建个网站
  • 凯里网站建设济宁市兖州区建设局网站
  • 北京网站建站系统平台新时代文明实践站网址
  • 如何更改网站源码用dw做的网站怎样弄上网上
  • 如何在局域网内做网站WordPress使用两个模板
  • 宝马itms做课网站老闵行小学排名
  • 天津建站费用企业网站设计目的和意义
  • 网站快速备案价格中国交通建设网官方网站
  • wordpress登录网站网站建设公司怎么找渠道
  • 网页的创新型网站策划无锡网站建设哪家公司比较好
  • 网站维护要多久微信小程序制作多少钱一个
  • 从美拉德大片到《龙骨焚箱》:武者周小飞的柔与刚
  • 电影网站如何做seowordpress简约新闻自媒体主题
  • 解决SGIP1.2无心跳问题的思路
  • 家具品牌网站怎么做js 网站首页下拉广告
  • 内蒙古住房与城乡建设部网站网站毕业设计图怎么做
  • 公司做企业网站的哪家好做a图片视频在线观看网站
  • 广州网站建设选哪家网站开发和运行模式的搭建
  • 门户网站都有哪些内容建网站的大公司
  • GMSL 的 Deskew 偏斜矫正
  • 如何寻找做企业网站的注册公司网站源码
  • 天津企业设计网站建设适合广告公司的名字
  • node.js网站开发医院有关页面设计模板
  • 性价比高的建筑设备监控管理系统供应商
  • 网站的项目建设周期品牌推广是什么工作
  • 百捷网站建设工资信息服务类网站怎么做
  • 用Python来学微积分35-变上限定积分
  • 设备如何“开口说话”?