C语言第三周课

news2024/11/6 7:14:32

目录

一、C语言中基本语句的分类:

二、数据的输入和输出

1.putchar函数

2.getchar函数

3.printf函数

printf() 的正常输出格式:

输出控制符大全

4.scanf函数

三、顺序结构

四、选择结构

1.if

2.switch

五、循环结构

1.for循环

2.while循环

3.do while循环


一、C语言中基本语句的分类:

(1)简单语句     形式:
①表达式语句:由表达式加上分号  ";"  组成,执行表达式语句就是计算表达式的值

例如:x=y; 赋值语句

++i;实现i的自增

②函数调用语句:由函数名,实际参数加上分号组成

例如:printf("Hello,World!");  这是一个调用库函数,输出字符串的语句。

③控制语句:控制语句用于控制程序的流程,以实现程序的各种结构方式。

C语言有九种控制语句,分为三类:

条件判断语句:if语句,switch语句

循环执行语句:do while语句,while语句,for语句

转向语句:break语句,continue语句,return语句,goto语句(少见,慎用)

(2)复合语句  把多个语句用一对花括号括起来的一个语句
一般形式:{语句1;语句2;……语句n;}

(3)空语句   只由一个分号";"组成,什么也不执行
C语言没有提供输入输出语句,所有的输入输出都是通过调用标准库函数完成,函数原型都在“stdio.h”中。
 

二、数据的输入和输出

1.putchar函数

putchar()是字符输出函数,用于在显示器输出一个字符

//例如:先后输出Bit三个字符
//输出结果为: Bit
#include<stdio.h>
int main()
{ 
	char a='B',b='i',c='t';
	putchar(a);
	putchar(b);
	putchar(c);
	putchar('\n');
	return 0;
}

运行结果

2.getchar函数

getchar()函数用于从键盘上输入一个字符,通常把输入的字符赋予一个字符变量,构成赋值语句例如:a=getchar();

说明:

(1)getchar()函数只能接收单个字符,输入数字也按字符处理。输入多于一个字符时,            只接收第一个字符

(2)getchar()函数是无参函数,后面的括号不能省略

(3)在输入时,空格,回车键都作为字符读入,且只在输入回车键时读入才开始执行

//从键盘输入Bit三个字符,输入到屏幕
#include<stdio.h>
int main()
{
	char a, b, c;
	a = getchar();
	b = getchar();
	c = getchar();
    putchar('\n');	
    putchar(a);
	putchar(b);
	putchar(c);
    putchar('\n');	
	return 0;
}

运行结果:

3.printf函数

printf函数称为格式输出函数,用于按照用户指定的格式,把指定的数据输出到显示器上

printf() 的正常输出格式:
#include <stdio.h>
int main(){
    //1.printf(“字符串\n”);
	printf("hello word!\n");
	
    //2.printf(“输出控制符”, 输出参数);
    int i = 10;
	printf("%d\n", i);//%d是输出控制符,d 表示是十进制,后面的 i 是输出参数

    //3.printf(“输出控制符1 输出控制符2…”, 输出参数1,输出参数2, …);
	int j = 20;
	printf("%d %d\n", i, j);
    printf("i = %d j = %d\n", i, j);

    //4.printf(“输出控制符 非输出控制符”,输出参数);
    printf("%x\n", i);   
    printf("%X\n", i);   
    printf("%#x\n", i);   
    printf("%#X\n", i); 

    return 0;
}

运行结果:

输出控制符大全

常用的输出控制符主要有以下几个:

4.scanf函数

scanf()函数称为格式输入函数,用于按照用户指定的格式从键盘把数据输入到指定的变量中

常用格式字符可参考printf()函数

#include<stdio.h>
int  main()
{
	float a;
	int b;
	printf("input some number\n");
	scanf("%f %d", &a,&b);
	printf("%.3f %d \n", a,b);
}

运行结果:

三、顺序结构


顺序结构:很好理解,就是自顶向下、按照书写代码的顺序执行语句,直到结束,C语言中语句块以”{}”包裹。

在以后的示例中,行号在语句尾以注释的形式给出,方便复制测试运行,语句注释是程序编写中添加的说明,以便人们看懂程序,C语言注释有两种:一是单行注释,引导符为”//”,可以在行尾,也可单独一行;二是语句块注释,用“/*”、“*/”注释,必须成对出现

四、选择结构

选择结构:通过某个给定条件进行判断,条件为真或假时分别执行不同的程序内容,选择结构分if语句和switch语句两种(就像人生不是一帆风顺,直线往前走。比如今天出门看到外面下雨了就会带伞,没有下雨就不用带伞一样进行判断)

1.if

if语句(只会匹配一个表达式对应内容)
语法结构(主要分为三种,下面会一 一举例):
说明:以 ; 结尾是一条语句,

1. 1 第一种
if(表达式)
  执行语句;

#include <stdio.h>
int main(void) {
	int age = 0;
	printf("请输入你的年龄:>");
	scanf("%d", &age);
	if (age >= 18)  //当if括号内表达式为真时(即非0),才会执行紧接if的第一条语句
		printf("成年\n");
	return 0;
}

代码块: 一对大括号 { }包裹的语句叫做代码块
在if语句中如果不使用代码块则只会执行紧接if的第一条语句,后面语句与if表达式判断无关。如果想当if表达式为真时执行多条语句,需要将多条语句包裹在代码块内,下面将举例说明:

//程序本意是当用户输入年龄大于等于18时,输出成年并可以谈恋爱。小于18时则什么都不输出
//但是if表达式后面有两条语句,但没有使用代码块包裹,则不管用户输入什么都会输出 可以谈恋爱
#include <stdio.h>
int main(void) {
	int age = 0;   
	printf("请输入你的年龄:");
	scanf("%d", &age);
	if (age >= 18) 
		printf("成年\n");
		printf("可以谈恋爱了");
	return 0;
}

运行结果:

使用代码块执行多条语句

//用户输入大于等于18输出成年并可以谈恋爱,小于18则什么都不输出
#include <stdio.h>
int main(void) {
	int age = 0;
	printf("请输入你的年龄:>");
	scanf("%d", &age);
	if (age >= 18) {
		printf("成年\n");
		printf("可以谈恋爱了");
	}
	return 0;
}

运行结果:

1.2 第二种
if(表达式)
  执行语句1;
else
  执行语句2;

//当用户输入年龄大于等于18时输出成年可以谈恋爱,否则输出未成年不可以谈恋爱
#include <stdio.h>
int main(void) {
	int age = 0;
	printf("请输入你的年龄:>");
	scanf("%d", &age);
	if (age >= 18)
	{
		printf("成年\n");
		printf("可以谈恋爱\n");
	}
	else
	{
		printf("未成年\n");
		printf("不可以谈恋爱\n");
	}
	return 0;
}

运行结果:

第三种(多分枝选择)
if(表达式1)
  执行语句1;
else if(表达式2)
  执行语句2;
else
  执行语句3;

//根据用户输入年龄,输出所处年龄段
#include <stdio.h>
int main(void) {
	int age = 0;
	printf("请输入你的年龄:");
	scanf("%d", &age);
	if (age <= 12)   //当if表达式为真,输出童年并退出整个if语句,否则继续向下判断
	{
		printf("童年\n");
	}
	else if (age < 18)  //当年龄大于12小于18此表达式为真,输出青少年,
	{
		printf("青少年\n");
	}
	else if (age < 60) //当年龄大于等于18小于60此表达式为真,输出壮年,
	{
		printf("壮年\n");
	}
	else      //当上面多个表达式都不匹配时最后会匹配else对应语句,即输出老年
	{
		printf("老年\n");
	}
	return 0;
}

运行结果:

2.switch

当分支条件过多时使用if会十分的不方便,上面例子中判断年龄段的程序,如果再判断的精细些(加上青少年、青年、中老年等),则整个if语句会十分臃肿且难以维护。使用switch就能很好解决这种问题。

语法( 下面[ ]内代表可选参数):

switch(整形表达式)
{
  case 整数常量表达式1 :
   语句1_1
   语句1_2
   [break]
   …
  case 整数常量表达式2 :
   语句2_1
   语句2_2
   …
   [break]
  …
  [default
   语句n_1
    [break]
}

说明:

1.当case后面常量表达式值等于switch的整数表达式时,执行该case后面的语句,但不退出switch,而是一直执行下去,直到整个switch结束,所以case只是switch的入口,这跟if匹配到某个表达式执行对应语句后就退出不一样
2.case后面的常量表达式的值不能相同,例如出现多个 case 1:
3.在switch中遇到break会退出整个switch
4.当switch的整数表达式与所有case都没匹配上时,则执行default对应语句

此时用户输入除了1-7以外的值,整个switch没有匹配到,程序不会输出什么,此程序对用户不够友好。我们无法预测用户输入的所有可能值,但我们可以对不符合规则的输入进行提醒,此时会用到default关键字,即case都没有匹配到,则执行default对应语句

示例代码:

//当用户输入1-7时输出对应星期几
#include <stdio.h>
int main()
{
    int day = 0;
    printf("请输入今天是星期几:  ");
    scanf("%d", &day);
    switch (day)   
    {
    case 1:       
        printf("星期一\n");
        break;  //遇到break跳出对应switch
    case 2:
        printf("星期二\n");
        break;
    case 3:
        printf("星期三\n");
        break;
    case 4:
        printf("星期四\n");
        break;
    case 5:
        printf("星期五\n");
        break;
    case 6:
        printf("星期六\n");
        break;
    case 7:
        printf("星期天\n");
        break;
    default:
        printf("输入错误,请输入1-7范围内的数字\n");
        break;
    }
    return 0;
}

当想多个case执行相同语句时

//当用户输入1-5时输出工作日,输出6-7时输出休息日
#include <stdio.h>
int main()
{
    int day = 0;
    printf("请输入今天是星期几:");
    scanf("%d", &day);
    switch (day)
    {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        printf("工作日\n");
        break;
    case 6:
    case 7:
        printf("休息日\n");
        break;
    default:
        printf("输入错误,请输入1-7范围内的数字\n");
        break;
}
    return 0;

}

五、循环结构

循环结构:当条件为真时反复执行,直到条件为假则跳出(《围城》里面说到,有的人想进去,有的人却想出去,就像人生一样好像一直循环着)

1.for循环

语法:
for(表达式1;表达式2;表达式3)
  循环语句;

说明:
表达式1:初始化部分,用于初始化循环变量,整个for循环只会执行1次
表达式2:条件判断部分,用于判断循环终止
表达式3:调整部分,用于循环条件的调整

建议:不要在循环体内修改循环变量,防止for循环失控

//输出数组所有元素
#include <stdio.h>
int main() {
	int arr[] = {1,2,3,4,5,6,7,8,9,10};
	int i;
	//第一次循环首先将i初始化为0,这个初始化部分只会执行1次,此时i<10(只有判断条件为真才会进入循环)
	//执行循环语句输出arr[0],然后进入调整部分让变量i加1,此时i=1;
	//第二次循环,首先进入判断部分进入判断;此时i<10 即 1<10为真,执行循环语句输出arr[1],然后进入调整部分
	//让变量i+1,此时i=2;后续循环跟第二次循环类似
	//注意:初始化部分在整个for循环只执行1次,判断部分会比循环语句多1次
	for (i = 0; i < 10; i++) 
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

输出: 1 2 3 4 5 6 7 8 9 10

break:循环中遇到break直接终止整个循环(while、do while中也一样)

//在1-10中输出小于5的数
#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5) //当i == 5时,if条件为真,执行break,跳出整个for循环,所以数字5及后续数字不会打印
			break;
		printf("%d ", i);
	}
	return 0;
}

输出: 1 2 3 4

continue:循环中遇到continue会终止本次循环,也就是本次循环continue后面代码不会执行(while、do while中也一样)

#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5) //当i == 5时,if条件为真,执行continue,终止本次循环后面代码(即5不会打印)。直接跳到调整部分,i++后i为6,进行下一次循环的判断
			continue;
		printf("%d ", i);
	}
	return 0;
}

输出:1 2 3 4 6 7 8 9 10

2.while循环

语法:
while(表达式)
  循环语句

当表达式为真时执行循环语句,然后再次判断…

#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10) //当表达式为真执行里面{ }内循环语句
	{
		if (i == 5) //当i==5时执行continue,终止本地循环continue后面部分,
           continue; //i++不会执行,所以进入判断部分i还是5,导致死循环
		printf("%d ", i);  
		i++;   //调整部分,使i变量逐渐大于10后终止循环,没有调整部分将会是死循环
	}
	return 0;
}

输出:1 2 3 4  //死循环,后面光标一直闪烁,程序没有停止运行
 

3.do while循环

语法
do
  循环语句
while(表达式)

do while与while基本相同,表达式为真才会执行循环语句。但是do while第一次执行时不会判断表达式。即就算表达式为假也会执行一次循环语句
do while 适用场景:某个功能必须执行一次,后续是否执行通过是否满足条件判断

//输出1-4
#include <stdio.h>
int main()
{
	int i = 1;
	do
	{
		if (i == 5)
			break;
		printf("%d ", i);
		i++;
	} while (i <= 10); 
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2181082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【读书笔记-《网络是怎样连接的》- 1】Chapter1-从Web浏览器开始

网络之旅的第一章&#xff0c;我们从在浏览器中输入url开始。本章主要介绍三部分内容。首先是在Web浏览器中输入URL后&#xff0c;浏览器是如何解析URL并生成HTTP请求消息的。生成请求消息后&#xff0c;浏览器需要将请求发送给Web服务器&#xff0c;需要知道Web服务器的IP地址…

2024年必考这个人工智能AI大模型证书!

2024必考这个人工智能AI大模型证书&#xff1a;名额有限&#xff0c;报满截止&#xff01; Chat GPT 的发布&#xff0c;让大语言模型成了人工智能的焦点。尤其近期发布的大模型各业务场景应用应接不暇&#xff0c;为行业带来新的发展机遇&#xff0c;甚至将重构AI行业。AI行业…

C语言系列4——指针与数组(1)

我们开始C语言的指针与数组 这部分开始进阶了&#xff0c;得反复学习 在开始正题之前&#xff0c;写说一下我们都知道当写一个函数的时候需要进行传参&#xff0c;当实参传递给形参的时候&#xff0c;形参是有独立空间的&#xff0c;那么数组传参又是怎么样的呢&#xff0c;我…

Docker的入门详解

What is docker&#xff1f; Docker是一个开源的应用容器引擎&#xff0c;它基于Go语言开发&#xff0c;并遵从Apache2.0协议。Docker允许开发者将他们的应用以及依赖包打包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的Linux或Windows操作系统的机器上&am…

MySQL高阶2004-职员招聘人数

目录 题目 准备数据 分析数据 实现 题目 一家公司想雇佣新员工。公司的工资预算是 70000 美元。公司的招聘标准是&#xff1a; 雇佣最多的高级员工。在雇佣最多的高级员工后&#xff0c;使用剩余预算雇佣最多的初级员工。 编写一个SQL查询&#xff0c;查找根据上述标准雇…

【Spring基础3】- Spring的入门程序

目录 3-1 Spring的下载3-2 Spring的 jar 包3-3 第一个 Spring程序第一步&#xff1a;添加spring context的依赖&#xff0c;pom.xml配置如下第二步&#xff1a;添加junit依赖第三步&#xff1a;定义bean&#xff1a;User第四步&#xff1a;编写spring的配置文件&#xff1a;bea…

Qt开发第一讲

一、Qt项目里面有什么&#xff1f; 对各个文件的解释&#xff1a; Empty.pro文件 QT core gui # 要引入的Qt模块&#xff0c;后面学习到一些内容的时候可能会修改这里 #这个文件相当于Linux里面的makefile文件。makefile其实是一个非常古老的技术了。 #qmake搭配.pr…

【C++篇】启航——初识C++(下篇)

接上篇【C篇】启航——初识C&#xff08;上篇&#xff09; 目录 一、引用 1.引用的概念 2.引用的基本语法 3.引用的特点 3.1 别名 3.2 不占用额外内存 3.3 必须初始化 3.4 不能为 NULL 4.引用的使用 4.1 函数参数传递 4.2 返回值 4.3 常量引用 5.引用和指针的关…

从数字化到智能化,智慧园区让管理更高效

在当今科技飞速发展的时代&#xff0c;园区管理也正经历着从数字化到智能化的深刻变革。智慧园区的建设&#xff0c;让管理变得更加高效、便捷和智能。 数字化是智慧园区建设的基础。通过物联网、大数据、云计算等技术&#xff0c;园区内的各种设施、设备和系统实现了互联互通…

基于Java的建筑节能监测系统+能源管理+公共建筑能耗监测系统+建筑能耗监测系统+节能监测系统+能源管理系统

介绍 建筑节能监测系统是基于计算机网络、物联网、大数据和数据可视化等多种技术融合形成的一套节能监测系统 系统实现了对建筑电、水、热&#xff0c;气等能源、资源消耗情况的实时监测和预警、动态分析和评估&#xff0c;为用户建立了科学、系统的节能分析方法&#xff0c;…

【Python|接口自动化测试】使用requests库发送HTTP请求

1.requests模块介绍 Python的requests模块是一个非常流行的第三方库&#xff0c;用于发送HTTP请求。它简化了与Web服务进行交互的过程&#xff0c;使得开发人员可以更方便地处理HTTP请求和响应。 本篇文章需要对HTTP和Python有一定的了解&#xff0c;只会解释关键性的操作 安…

【刷点笔试面试题试试水】找错—使用strlen()函数代替sizeof计算字符串长度

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: #include <iostream> using namespace std;void UpperCase(ch…

【2024工业3D异常检测文献】CMDIAD: 基于跨模态蒸馏驱动的多模态工业异常检测

Incomplete Multimodal Industrial Anomaly Detection via Cross-Modal Distillation 1、Background 近年来&#xff0c;基于3D点云和RGB图像的多模态工业异常检测(IAD)研究强调了利用模态间的冗余性和互补性对于精确分类和分割的重要性。 在项目中&#xff0c;提出了CMDIAD方…

20240930编译orangepi5的Android12使用HDMI0输出

20240930编译orangepi5的Android12使用HDMI0输出 2024/9/30 9:44 缘起&#xff0c;3月份的时候&#xff0c;看PDD拼多多的优惠券给力&#xff01; 就入手了香橙派Orange Pi 5。 自从制作TF卡的启动卡的时候&#xff0c;坏了一张SanDisk的32GB的TF卡。 从此就对TF卡启动无比抵触…

【微信小程序前端开发】入门Day01 —— 小程序页面组成、组件使用及协同开发发布指南

小程序的项目结构 pages 用来存放所有小程序的页面 utils 用来存放工具性质的模块&#xff08;例如&#xff1a;格式化时间的自定义模块&#xff09; app.js 小程序项目的入口文件 app.json 小程序项目的全局配置文件 app.wxss 小程序项目的全局样式文件 project.config.json 项…

理解线程库和线程排斥(锁)

理解线程库 线程要有独立属性 a.独立栈结构 b.寄存器中的上下文 在进程地址库内&#xff0c;维护栈的设备只有一套&#xff0c;如何保证线程都有独立栈&#xff1f; 每个新线程的栈由库维护&#xff0c;库会在堆上开辟一段空间。 默认地址空间的栈由主线程使用 如何理解pt…

SpringBoot框架下体育馆管理系统的构建

1引言 1.1课题背景 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理&#xff0c;这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制&#xff0c;不仅提高了工作效率&#xff0c;而且大大的提高了其…

被Karpathy誉为“蕴藏着类似ChatGPT的机会的AI产品Notebook LM”,它到底做对了什么?

就在昨天&#xff0c;Karpathy在X上连续发布了多条安利帖&#xff0c;强烈地给大家推荐一个AI产品NotebookLM。 嘶&#xff5e;给周围人疯狂种草并不稀奇&#xff0c;但Karpathy的推荐理由给NotebookLM戴了一个高帽子-他提到这款产品让人联想到ChatGPT。 这种就令人好奇&#…

线性模型到神经网络

&#x1f680; 在初始神经网络那一节&#xff08;链接如下&#xff1a;初始神经网络&#xff09;的最后&#xff0c;我们通过加大考虑的天数使得我们最后得到的模型Loss最终停留在了0.32k&#xff0c;当我们在想让模型更加准确的时候&#xff0c;是做不到的&#xff0c;因为我们…

论文的研究工具有什么?推荐5款AI论文写作网站

在当今的学术研究和写作领域&#xff0c;AI工具已经成为不可或缺的助手。这些工具不仅能够提高写作效率&#xff0c;还能帮助研究者生成高质量的论文。以下是一些值得推荐的AI论文写作工具&#xff1a; 千笔-AIPassPaper 千笔-AIPassPaper是一款基于深度学习和自然语言处理技…