C语言-分支语句和循环

news2024/12/28 1:58:07

目录

【1】字符输入输出

【2】C语言下的垃圾字符回收

【3】分支语句

【4】循环

练习:


【1】字符输入输出

按字符的输入输出

int getchar(void);
功能:从终端输入一个字符
参数:无
返回值:输入字符的ASCII值

int putchar(int c);
功能:向终端输出一个字符
参数:c:要输出的字符
返回值:输出字符的ASCII值

练习:实现大写字母转换成小写字母

#include <stdio.h>
int main() {
    char ch;
    printf("请输入一个大写字母:");
    ch = getchar();
    if (ch >= 'A' && ch <= 'Z') {
        ch = ch + ('a' - 'A');
        printf("转换后的小写字母为:%c\n", ch);
    }
    else {
        printf("输入不是大写字母!\n");
    }

    return 0;
}

【2】C语言下的垃圾字符回收

1.通过空格回收
scanf(" %c", &ch);
scanf("%*s%c", &ch);	//回收一个或多个空格、tab、\n

2.%*c
scanf("%*c%c", &ch);	//只能回收任意一个字符

3.getchar
ch = getchar();

【3】分支语句

》1.if-else

基本结构:
if(表达式)
{
    语句块1;
}
else
{
    语句块2;
}

分层结构:
if(表达式1)
{
    语句块1;
}
else if(表达式2)
{
    语句块2;
}
else
{
    语句块3;
}

嵌套结构:
if(表达式1)
{
    if(表达式2)
    {
        语句块1;//表达式1成立,表达式2成立
    }
    else
    {
        语句块2;//表达式1成立,表达式2不成立
    }
}
else
{
    语句块3;//表达式1不成立
}

总结:

1) if后面可以没有else,else前面必须有if

2) if和else后面的{}可以省略,但是省略后只会匹配后面的第一条语句

练习:实现大小写转换(用getchar、putchar实现)

输入大写字母输出小写字母,

输入小写字母输出大写字母,

输入的不是字母,提示输入错误。

#include <stdio.h>

int main() {
  char ch;

  printf("请输入一个字母:");
  ch = getchar();
  if (ch >= 'A' && ch <= 'Z') {
    ch = ch + 32; // 转换为小写字母
    putchar(ch);
  } else if (ch >= 'a' && ch <= 'z') {
    ch = ch - 32; // 转换为大写字母
    putchar(ch);
  } else {
    printf("输入错误,请输入一个字母。\n");
  }

  return 0;
}

练习:从终端输入一个学生的成绩,判断学生成绩,打印成绩级别

【90 - 100】 A

【80 - 89】 B

【70 - 79】 C

【60 - 69】 D

< 60 sorry you lost

#include <stdio.h>

int main() {
    int score;
    printf("请输入学生的成绩:");
    scanf("%d", &score);
    if (score >= 90 && score <= 100) {
        printf("成绩级别:A\n");
    } else if (score >= 80 && score < 90) {
        printf("成绩级别:B\n");
    } else if (score >= 70 && score < 80) {
        printf("成绩级别:C\n");
    } else if (score >= 60 && score < 70) {
        printf("成绩级别:D\n");
    } else {
        printf("成绩级别:Sorry you lost\n");
    }
    return 0;
}

》2.switch_case

基本结构:
switch(变量或表达式)
{
	case 常量1:语句块1;break;
	case 常量2:语句块2;break;
	case 常量3:语句块3;break;
	....
	default:语句块n+1;
}

执行顺序:

判断表达式或变量的值,和case后面的常量进行匹配,如果能匹配上就执行后面的语句块,遇到break就结束switch,当case都不匹配,直接执行default后面的语句块

注意:

1. 表达式不能是浮点型或字符串

2. case 后面的break可以省略,省略时代码会顺序执行,直到遇到break退出

练习:从终端输入一个学生的成绩,判断学生成绩,打印成绩级别

【90 - 100】 A

【80 - 89】 B

【70 - 79】 C

【60 - 69】 D

< 60 sorry you lost

#include <stdio.h>

int main() {
    int score;

    printf("请输入学生的成绩:");
    scanf("%d", &score);

    switch (score / 10) {
        case 10:
        case 9:
            printf("成绩级别:A\n");
            break;
        case 8:
            printf("成绩级别:B\n");
            break;
        case 7:
            printf("成绩级别:C\n");
            break;
        case 6:
            printf("成绩级别:D\n");
            break;
        default:
            printf("成绩级别:Sorry you lost\n");
            break;
    }

    return 0;
}

练习:从终端输入一个日期

scanf ("%d %d %d "; &year,&mon,&day),判断这是这一年的第几天

提示:判断闰年还是平年,闰年且闰年二月份以上比平年多一天。

#include <stdio.h>
int main(int argc, char const *argv[])
{
    int year, mon, day, sum=0;
    scanf("%d %d %d", &year, &mon, &day);
    switch (mon)
    {
        case 12:sum+=30;
        case 11:sum+=31;
        case 10:sum+=30;
        case 9:sum+=31;
        case 8:sum+=31;
        case 7:sum+=30;
        case 6:sum+=31;
        case 5:sum+=30;
        case 4:sum+=31;
        case 3:sum+=28;
        case 2:sum+=31;
        case 1:sum+=day;break;
    default:
        printf("err\n");
        return -1;
    }
    //闰年并且大于2月sum++
    if ((year % 100 != 0 && year % 4 == 0 || year % 400 == 0) && mon > 2)
        sum++;
    printf("sum=%d\n", sum);
    return 0;
}

练习:

1.从终端输入3个整数;从大到小排序

#include <stdio.h>

void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

void sortDescending(int *a, int *b, int *c) {
    if (*a < *b) {
        swap(a, b);
    }
    if (*a < *c) {
        swap(a, c);
    }
    if (*b < *c) {
        swap(b, c);
    }
}

int main() {
    int a, b, c;

    printf("请输入三个整数:");
    scanf("%d %d %d", &a, &b, &c);
    sortDescending(&a, &b, &c);
    printf("从大到小排序的结果为:%d %d %d\n", a, b, c);
    return 0;
}

2.写程序实现功能:读入两个整数(data1和data2)和一个运算符(op),计算表达式data1 op data2 的值.其中op可以为+、-、*、/四个符号中的任一种(用switch语句实现)

#include <stdio.h>

int main() {
    int data1, data2;
    char op;
    float result;

    printf("请输入两个整数以及运算符(格式:data1 op data2):");
    scanf("%d %c %d", &data1, &op, &data2);

    switch (op) {
        case '+':
            result = data1 + data2;
            printf("结果:%d %c %d = %.2f\n", data1, op, data2, result);
            break;
        case '-':
            result = data1 - data2;
            printf("结果:%d %c %d = %.2f\n", data1, op, data2, result);
            break;
        case '*':
            result = data1 * data2;
            printf("结果:%d %c %d = %.2f\n", data1, op, data2, result);
            break;
        case '/':
            if (data2 != 0) {
                result = (float) data1 / data2;
                printf("结果:%d %c %d = %.2f\n", data1, op, data2, result);
            } else {
                printf("除数不能为0!\n");
            }
            break;
        default:
            printf("无效的运算符!\n");
            break;
    }
    return 0;
}

【4】循环

》1.for循环

1.基本结构
for(表达式1;表达式2;表达式3)
{
	语句块;
}
表达式1:赋初值
表达式2:循环终止条件
表达式3:增值或减值语句

执行顺序:

首先执行表达式1给循环变量赋初值,判断表达式2是否成立,

如果成立就进入循环执行循环语句,

执行完语句块再执行表达式3进行增值或减值,

再次判断表达式2是否成立如果成立继续进入循环,

直到表达式2不成立,循环结束

2.嵌套结构
for(表达式1;表达式2;表达式3)
{
	for(表达式4;表达式5;表达式6)
{
		语句块;
}
}

练习:打印所有的水仙花数

水仙花数:一个三位数,百位立方+十位立方+个位立方 = 原数

#include<stdio.h>
int main(int argc, char const *argv[])
{
    int s,g,b,i;
    for ( i = 100; i <= 999; i++)
    {
        b = i/100;
        s = i/10%10;
        g = i%10;
        if (b*b*b + s*s*s + g*g*g == i )//水仙花数
            printf("%d\n",i);  
    }
    return 0;
}

》2.while循环

1.基本结构
while(终止条件)
{
	语句块;
	增值减值语句;
}

执行顺序:先定义循环变量并赋初值,判断条件是否成立,

如果成立就进入循环执行语句块,然后执行增值减值语句,

继续判断终止条件是否成立,直到不成立循环结束。

2.do_while
do
{
	语句块;
	增值减值;
}while(终止条件);

执行顺序:先执行后判断

练习:

1.从终端上输入一个字符并在终端上输出这个字符,当输入字符为‘q’时,程序结束。

#include <stdio.h>
int main() {
    char ch;
    do {
        printf("请输入一个字符(输入 'q' 结束): ");
        scanf(" %c", &ch);
        printf("输入的字符是: %c\n", ch);
    } while (ch != 'q');
    printf("程序结束。\n");
    return 0;
}

2.打印以下图案:要求行数从终端输入

#include <stdio.h>

int main() {
    int rows, i, j;

    printf("请输入行数:");
    scanf("%d", &rows);

    // 打印上半部分图案
    for (i = 1; i <= rows; i++) {
        for (j = 1; j <= i; j++) {
            printf("*");
        }
        printf("\n");
    }
    // 打印下半部分图案
    for (i = 1; i <=rows; i++) {
        for (j = 1; j < i; j++) {
            printf(" ");
        }
        for (j = i; j <= rows; j++) {
            printf("*");
        }
        printf("\n");
    }

    return 0;
}

3.打印9*9乘法表

#include <stdio.h>

int main() {
    int i, j;

    // 外层循环控制行数
    for (i = 1; i <= 9; i++) {
        // 内层循环控制列数
        for (j = 1; j <= i; j++) {
            printf("%d x %d = %2d\t", j, i, i * j);
        }
        printf("\n");
    }
    return 0;
}

4. 循环输入一个5位数,判断它是不是回文数。当输入0时循环结束。即12321是回文数,个位与万位相同,十位与千位相同。

#include <stdio.h>

int main() {
    int num;

    while (1) {
        printf("请输入一个5位数(输入0结束):");
        scanf("%d", &num);

        if (num == 0) {
            break;
        }
        int originalNum = num;
        int reversedNum = 0;
        int *ptr = #   
        // 反转数字
        while (*ptr != 0) {
            reversedNum = reversedNum * 10 + *ptr % 10;
            *ptr /= 10;
        }
        // 判断是否是回文数
        if (originalNum == reversedNum) {
            printf("%d 是一个回文数\n", originalNum);
        } else {
            printf("%d 不是一个回文数\n", originalNum);
        }
    }
    return 0;
}

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

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

相关文章

pandas常用方法

一、提要 pandas对于处理表格类数据来说是非常方便的模块&#xff0c;同时也是做数据分析绕不开的第三方库。这里将工作中常用到的各种处理方法记录下来二、常用方法 接下来的以 df 表示我们要处理的 dataframe 表格数据 1、取值 # 循环遍历取值 for i in range(len(df)):y…

Spring Cloud之Gateway网关应⽤

使⽤⽹关对静态化微服务进⾏代理&#xff08;添加在它的上游&#xff0c;相当于隐藏了具体微服务的信息&#xff0c;对外暴露的是⽹关&#xff09;。 1. 右键⽗⼯程【 yx-parent 】选择【 New 】 - 【 Module 】选项&#xff0c;然后选择创建【 Maven 】类型项⽬&#xff08;不…

以高质量产业载体为底色,绘就珠海高新区产业发展新图景

【作者】珠海高新招商 “珠海高新招商”以招商运营为核心&#xff0c;聚焦珠海工业园区、珠海5.0产业园等招商引资工作&#xff0c;依托专业的招商团队和丰富的创新资源&#xff0c;为企业提供产业园入驻、平台搭建、产业政策咨询、科技服务等全流程专业服务。推动高新区招商引…

17 数组动态初始化

动态初始化&#xff1a;初始化时只指定数组长度&#xff0c;由系统为数组分配初始值。 格式&#xff1a;数据类型[] 数组名 new 数据类型[数组长度] package demo;public class Demo11 {public static void main(String[] args) {// 动态初始化数组&#xff1a;数据类型[] 数…

日撸java三百行day77-80

文章目录 说明GUI1. GUI 总体布局2. GUI 代码理解2.1 对话框相关控件2.1.1 ApplicationShowdown.java&#xff08;关闭应用程序&#xff09;2.1.2 DialogCloser.java&#xff08;关闭对话框&#xff09;2.1.3 ErrorDialog.java&#xff08;显示错误信息&#xff09;2.1.4 HelpD…

深度学习模型量化、剪枝、压缩

fp16是指采用2字节(16位)进行编码存储的一种数据类型&#xff1b; fp32是指采用4字节(32位)&#xff1b; fp16和fp32相比对训练的优化&#xff1a; 1.内存占用减少&#xff1a;应用fp16内存占用比原来更小&#xff0c;可以设置更大的batch_size 2.加速计算&#xff1a;加速…

CentOS5678 repo源 阿里云/腾讯云开源镜像站 repo 地址

CentOS5678 repo 地址 阿里云开源镜像站 https://mirrors.aliyun.com/repo/ CentOS5678 repo 地址 腾讯云开源镜像站 http://mirrors.cloud.tencent.com/repo/ CentOS-5.repo https://mirrors.aliyun.com/repo/Centos-5.repo [base] nameCentOS-$releasever - Base - mirror…

DuDuTalk :做4G智能工牌领域标杆品牌,用语音智能构建完美沟通

数字经济高速发展&#xff0c;AI 成为数字经济时代的核心生产力&#xff0c;驱动数字经济纵深发展&#xff0c;在此情境下&#xff0c;作为AI基石的语音数据价值也在不断释放。企业纷纷加强对客服、营销等服务和销售资源部门的投入&#xff0c;试图从语音数据入手&#xff0c;利…

如何使用windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】

文章目录 windows搭建WebDAV服务&#xff0c;并内网穿透公网访问【无公网IP】1. 安装IIS必要WebDav组件2. 客户端测试3. 使用cpolar内网穿透&#xff0c;将WebDav服务暴露在公网3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访问测试 4. 安装Raidrive客户…

NodeJS实现支付宝沙箱支付 ②③

文章目录 前言版权声明Alipay SDK 沙箱环境简介Node环境要求沙箱环境配置下载所需模块准备前端静态页面以及Node服务器文件夹规范AlipaySdk 配置准备AlipaySdk 代码演示 Alipay实例化 ~ alipay.sdk 文件 AlipayForm ~ alipayForm文件 AlipayFormStatus ~ alipayForm文件 …

deeplabv3+源码之慢慢解析 第四章network文件夹(1)backbone文件夹(a1)hrnetv2.py--4个函数和可执行代码

系列文章目录&#xff08;更新中&#xff09; 第一章deeplabv3源码之慢慢解析 根目录(1)main.py–get_argparser函数 第一章deeplabv3源码之慢慢解析 根目录(2)main.py–get_dataset函数 第一章deeplabv3源码之慢慢解析 根目录(3)main.py–validate函数 第一章deeplabv3源码之慢…

使用NRF52840 USB Dongle进行Wireshark蓝牙抓包

一、搭建软硬件环境 1.1、准备NRF52840 USB Dongle一个&#xff1a; 1.2、下载Wireshark软件 https://2.na.dl.wireshark.org/win64/Wireshark-win64-4.0.7.exe 1.3、下载Nodic官方解析工具包 nRF Sniffer for Bluetooth LE - Downloads - nordicsemi.com 1.4、下载Python P…

中文数据下载

研究AI离不开数据&#xff0c;数据库可以说是AI的半壁天下。有链接的数据库下载是很nice的。 语音数据集整理 目录 1.Mozilla Common Voice. 2 2.翻译和口语音频的大型数据库Tatoeba. 2 3.VOiCES Dataset 3 4. LibriSpeech. 4 5.2000 HUB5 English&#xff1a;... 4 6.…

Java文件流和网络流的原理以及流解析过程

流我们可以理解为水流&#xff0c;流的传输就相当于在水管里传输&#xff0c;本篇博客主要介绍流的原理和解析过程&#xff0c;学疏才浅&#xff0c;抛砖引玉&#xff0c;大佬勿喷。 文件流 假设我们收到了一个以Unicode编码的文件流&#xff0c;对于该文件流所表示的内容我们…

Java显示日期和时间中间的CST表示什么意思

例如&#xff0c;用Java代码System.out.println(new Date())语句打印出了当前的日期和时间信息&#xff0c;结果显示&#xff1a;Tue Jul 18 18:42:57 CST 2023 package com.thb;import java.util.Date; import java.util.Locale; import java.util.TimeZone;public class Tes…

Office史上最大升级!GPT-4接入Office全家桶!Excel到PPT动嘴就能做!

3月17日&#xff0c;微软宣布将GPT-4融入了Office全家桶。 这意味着&#xff0c;不管是Word、PPT、Excel&#xff0c;还是Outlook、Teams、Microsoft Viva、Power Platform&#xff0c;所有这些办公软件&#xff0c;通通都会得到GPT-4的加持&#xff01; 直接改名吧&#xff0…

this指针/闭包及作用域(进阶)

一.作用域链 1.通过一个例子 let aglobalconsole.log(a);//globalfunction course(){let bjsconsole.log(b);//jssession()function session(){let cthisconsole.log(c);//Windowteacher()//函数提升function teacher(){let dstevenconsole.log(d);//stevenconsole.log(test1,…

Ae 效果:CC Kaleida

风格化/CC Kaleida Stylize/CC Kaleida 万花筒是一种装置或玩具&#xff0c;通过多次反射和镜像&#xff0c;将图像分割成多个对称和重复的图案。CC Kaleida&#xff08;CC 万花筒&#xff09; 效果通过类似的方式在图像上创建镜像和对称的视觉效果。 提示&#xff1a; 由于 CC…

SpringBoot项目中WEB页面放哪里--【JSB系列之008】

SpringBoot系列文章目录 SpringBoot知识范围-学习步骤【JSB系列之000】 文章目录 SpringBoot系列文章目录Resources目录Resources子目录实操一个helloworld!总结作业&#xff08;难度★✰✰✰✰ &#xff09;配套资源题外话 本系列环境 环境win11工具idea 2017jdk1.8数据库my…

AD导入封装以及器件(立创)

这里我们以立创商城为例 https://www.szlcsc.com/?cBD&sdclkidA5f6152zxrDiArD6A52&bd_vid12150450211089112893 1&#xff09;先搜索&#xff0c;然后点击数据手册&#xff1b; ​ 2&#xff09;出现如下界面&#xff0c;点击立即打开&#xff1b; ​ 3&#xff…