【试题061】C语言之字符输出/输入函数putchar()/getchar()

  1. 格式:putchar( 参数 );
  2. 参数:可以是整型,字符型,转义字符或表达式

注:参数不可以为字符串

  1. 功能:输出单个字符
  2. printf("%c")可替代putchar()
  3. PS:字符加单引号原样输出,不加单引号输出值
  • 举栗子:putchar('B'); //输出B         putchar(B);//输出66
  • 若单引号中是转义字符,则转化成ASCII对应的字符输出:

        -putchar('\101');//101是八进制,转化成十进制=65→A

  1. 所需要用到的文件命令是:#include <stdio.h>
  2. 例题:键入一串字符,以回车换行符为结束标志,统计并输出其中数字字符的个数。

#include<stdio.h>

void main()

{ char ch; int n=0;

ch=getchar();

while(ch!='\n') {

if (     ) n++;// 第一空*/

                      ; } / 第二空 */

printf("n=%d\n",              );/ 第三空 */ }

  • 代码写法1:
#include<stdio.h>
int main() {
  char ch; int n = 0;
//在主函数中声明了两个变量,ch 是用来存储用户输入的字符,n 是用来保存数字字符的数量,初始值为0
  ch = getchar(); //从标准输入中获取一个字符并将其赋值给变量 ch
  while (ch != '\n') {
    //直到用户输入的字符是换行符 '\n' 停止循环
    if (ch>='0'&& ch<='9')   n++;// 判断变量 ch 是否是数字字符
    ch = getchar();//获取下一个字符,继续循环,n++
  } // 第二空 * /
    printf("n=%d\n", n); //第三空
}
//问题1:1.ch = getchar();和ch = getchar();不会重复吗
//回答问题1:第一个getchar()只获取首个字符,第二个getchar()获取下一个也就是后边的字符
//注意2个getchar的位置:第一个getchar在循环外面,只执行一次
//第2个getchar在循环内部,它获取了循环每一轮迭代中的字符
//问题2:ch = getchar()只读取一个字符,如果我输入一串字符那么其他的字符不会丢失吗?
//回答问题2:不会丢失,当你读取第一个字符时,其他字符都在缓冲区等待
  • 流程分析:如果我从键盘输出一串字符串为:AC5
  • ch = getchar()会读取第一个字符 'A' 并将其存储在变量 ch
  • 由于 ch 包含的字符是 'A' 而不是换行符 '\n',所以条件为真,循环会继续执行
  • 条件判断检查字符 'A' 是否是数字, 'A' 不是数字,所以 n 的值仍为 0
  • ch = getchar() 它会读取 'C' 并将其存储在变量 ch 中......
  • 直到读取'5' 是数字,n 才=1
  • 按下回车键时,getchar() 会获取换行符 '\n',循环条件将不再为真,循环终止

注:在程序执行过程中,当执行 getchar() 获取字符时,会等待输入。当你输入字符(例如,'A')并按下回车键时,输入字符会被缓存,等待程序读取。 在这个过程中,输入字符并不会丢失,而是存储在输入缓冲区中等待程序读取getchar() 函数实际上会读取输入缓冲区中的下一个字符,并将其返回给程序。如果程序不立刻读取输入缓冲区中的字符,它们会一直等待,直到被读取为止。 所以,在你输入 'A' 后,其他字符 'C', '5', 都会在输入缓冲区中等待,程序将依次读取它们,一个字符一个字符地进行处理。

  • 代码写法2:
#include <stdio.h>

int main() {
    char ch;
    int n = 0;
    
    while ((scanf_s("%c", &ch)) == 1) {
//判断条件变成:scanf_s 函数返回成功读取的项目数。
//如果成功读取了一个字符,它会返回 1;如果没有成功读取,它会返回 0
//如果成功读取了一个字符并将其分配给变量 ch,则条件为真,即返回值为 1
        if (ch >= '0' && ch <= '9')
            n++;
    }
    
    printf("n=%d\n", n);
    
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值