C语言练习1

前言

从0开始记录我的学习历程,我会尽我所能,写出最最大白话的文章,希望能够帮到你,谢谢。


提示:文章作者为初学者,有问题请评论指正,感谢。

题目 1:

已有定义:char a[]="xyz",b[]={'x','y','z'}; 比较两者谁更大(长度使用sizeof比较)

解答:

1.a 数组:

  • a 是一个以字符串字面量 "xyz" 初始化的字符数组。
  • 字符串字面量 "xyz" 实际上包含4个字符:‘x’、‘y’、‘z’ 和一个隐含的空字符 ‘\0’ 作为字符串的结束标志。
  • 因此
  • sizeof(a) 将返回4,因为它包括了结尾的空字符。

2.b 数组

  • b数组就很简单了撒 它三个字母sizeof(a) 就返回3。

题目 2:

C语言中, 表达式 (4 << 2 | 3) 的结果是______

解答:

  • 题目中的表达式 (4 << 2 | 3) 使用了位左移运算符 << 和按位或运算符 
  • 位左移运算符 << 的优先级高于按位或运算符 |,因此先计算左移部分。
  • 计算过程:

    • 首先,计算 4 << 2
      • 数字4的二进制表示是 100
      • 向左移动2位后,得到 10000,即十进制中的16。
    • 然后,计算 16 | 3
      • 数字3的二进制表示是 11
      • 按位或运算是对每一位分别进行,如果两个数中至少有一个是1,则结果位是1,否则是0。
      • 因此,10000 | 11 的结果是 10011,即十进制中的19。

 题目3:

问输出结果是什么

#include <stdio.h>
int main() {
char str[]="ABCD", *p = str;
printf("%d\n", *(p + 4));
return 0;
}  

解答:

char str[]=”ABCD”相当于 str[0]='A'; str[1]='B'; str[2]='C'; str[3]='D'; str[4]='\0'; 而*(p+4)==str[4]; '\0'的ASCII为0 故输出0。

题目4:

以下程序运行时,若输入1abcedf2df<回车>输出结果是?

#include <stdio.h>
int main() {char a = 0, ch;while ((ch = getchar()) != '\n') {if (a % 2 != 0 && (ch >= 'a' && ch <= 'z'))ch = ch - 'a' + 'A';a++;putchar(ch);}printf("\n");return 0;
}

解答:

总的简答

  1. while ((ch = getchar()) != '\n'):这是一个循环,它会不断读取输入的字符,直到遇到换行符为止。
    • getchar() 函数用于从标准输入读取一个字符,并将其赋值给变量 ch
    • 循环条件 (ch = getchar()) != '\n' 表示只要输入的字符不是换行符,就继续执行循环体。
  2. if (a % 2 != 0 && (ch >= 'a' && ch <= 'z')):这是一个条件判断。
    • a % 2 != 0 检查 a 是否为奇数(即,是否是第奇数个字符)。
    • (ch >= 'a' && ch <= 'z') 检查输入的字符是否是小写字母。
  3. 如果满足上述两个条件,执行以下操作:
    • ch = ch - 'a' + 'A':将小写字母转换为对应的大写字母。
  4. putchar(ch):将处理后的字符输出到终端。

getchar() 函数:

getchar() 函数实际上是逐个字符地读取这个字符串的。这是因为在C语言中,标准输入(stdin)是一个缓冲区,当您输入一串字符并按下回车键时,这些字符都会被存储在缓冲区中。

这里是详细的运行过程:

  1. 当 while 循环开始时,程序执行 getchar() 函数,等待用户输入。
  2. 当您开始输入并按下回车键时,您输入的所有字符都会被放入标准输入的缓冲区。
  3. while 循环会继续调用 getchar() 函数,getchar() 函数它会从缓冲区中读取下一个字符,直到遇到换行符 '\n',直到缓冲区中的所有字符都被读取完毕。

这就是为什么您感觉像是只输入了一次,但实际上 getchar() 在内部是逐个读取字符的。

总结

以上就是今天要讲的内容,本文仅仅简单讲解了一下C语言的几个小练习,祝愿你我的朋友在学习的路上一帆风顺,也祝愿我会成为一个优秀的嵌入式工程师。 

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

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

相关文章

BI平台概述

随着数字化浪潮的推进&#xff0c;企业对于数据驱动决策的需求日益增长。纷享销客作为一款领先的CRM平台&#xff0c;一直致力于帮助企业实现销售管理的高效与智能。纷享销客一体化BI智能分析平台作为CRM平台中的重要一环&#xff0c;旨在为企业提供更加全面、深入的数据分析能…

【EBS】通过SQL查找所有的定时请求

--查找所有定时请求。 --也可以登录系统&#xff0c;在系统管理员下查找特定请求&#xff0c;状态设置为Scheduled进行查询 SELECT DISTINCT USER_CONCURRENT_PROGRAM_NAME, B.RESUBMIT_INTERVAL, B.RESUBMIT_INTERVAL_UNIT_CODE FROM FND_CONCURRENT_PROGRAMS_TL A, FND_…

HBuilderX编写APP一、获取token

一、新建项目 二、从onenet获取key.js 1、下载之后的压缩包&#xff0c;解压2、关键就是找到key.js 3、将这个key.js复制到刚才的目录下面去 4、这个key.js文件就是生成token的代码 5、只要调用createCommonToken(params)这个函数&#xff0c;就可以实现生成token了 其中onload…

Vue Router源码分析

摘要&#xff1a;最近项目中遇到了点Vue Router的问题&#xff0c;发现有些只是没理清楚&#xff0c;再次复习了下Vue Router的源码&#xff0c;记录下... Vue-Router的能力十分强大&#xff0c;它支持hash、history、abstract 3种路由方式&#xff0c;提供了<router-link&g…

Java多线程核心工具类

1.Thread类&#xff1a;代表一个线程。你可以通过继承Thread类或实现Runnable接口来创建线程。 2.Executor框架&#xff1a;java.util.concurrent.Executors和java.util.concurrent.Executor接口提供了一种创建和管理线程池的方法&#xff0c;可以减少在创建和销毁线程上的开销…

【TB作品】msp430g2553单片机,OLED,PCF8591,ADC,DAC

硬件 OLED PCF8591 /** OLED* VCC GND* SCL接P2^0* SDA接P2^1*//** PCF8591* VCC GND* SCL接P1^4* SDA接P1^5*//* 板子上按键 P1.3 *//* 单片机ADC输入引脚 P1.1 *//* 说明&#xff1a;将PCF8591的DAC输出接到单片机ADC输入引脚 P1.1&#xff0c;单片机采集电压并显示 */功能…

Docker run 命令常用参数详解

Docker run 命令提供了丰富的参数选项&#xff0c;用于配置容器的各种设置。以下是docker run命令的主要参数详解&#xff0c; 主要参数详解 后台运行与前台交互 -d, --detach: 在后台运行容器&#xff0c;并返回容器ID。-it: 分配一个伪终端&#xff08;pseudo-TTY&#xff0…

python字典用法

有dict和defaultdict两种字典。 defaultdict 是 Python 标准库中 collections 模块提供的一个类&#xff0c;它是 dict 的一个子类&#xff0c;具有与普通字典相同的接口和功能&#xff0c;但在某些方面表现出不同的行为。 与普通的字典相比&#xff0c;defaultdict 的一个主要…

RGB转LAB,HSV

Excel如下 目标 代码&#xff08;改下两个地址就可以&#xff09; import pandas as pd import colorspacious import colorsys# 读取Excel文件 df pd.read_excel(未分类output.xlsx)# 定义RGB到LAB和HSV的转换函数 def rgb_to_lab(rgb):lab colorspacious.cspace_convert(r…

Linux开发:tmpfs文件系统

通过df可以查看当前挂载的文件系统的使用情况: $ df文件系统 1K的块 已用 可用 已用% 挂载点 tmpfs 812364 3016 809348 1% /run /dev/sda3 526802392 16562608 483406276 4% / tmpfs 4061816 0 …

Layui:一款强大的前端UI框架

随着互联网技术的快速发展&#xff0c;前端技术也在不断更新和演进。前端工程师们面临着越来越多的挑战&#xff0c;需要在短时间内构建出高质量、高效率的网页应用。为了提高开发效率和降低开发难度&#xff0c;许多前端UI框架应运而生。在这些框架中&#xff0c;Layui凭借其优…

Git-lfs入门使用教程

在备份我的毕设到github私有库的时候&#xff0c;发现git对于单文件大于100MB的会限制上传&#xff0c;一番折腾一下发现了git-lfs [Git LFS&#xff08;Large File Storage,大文件存储&#xff09;是 Github 开发的一个Git 的扩展&#xff0c;用于实现 Git 对大文件的支持]。 …

揭秘Linux启动的层层面纱,一文看懂从黑屏到界面的精彩之旅

从按下开机键到Linux系统界面显示&#xff0c;这中间究竟经历了怎样的过程?本文将为您一一揭开Linux启动的神秘面纱&#xff0c;详细剖析每个环节的工作原理&#xff0c;让你从内核出生到系统服务启动&#xff0c;一路见证这个过程的壮阔与精彩。 一、概述 Linux系统的启动过…

【场景题】如何排查CPU偏高的问题

为了解决CPU偏高的问题&#xff0c;我们首先看一下每一个进程的CPU占用情况&#xff0c;使用命令Top 可以看见是进程id为2266的进程里面的java程序&#xff0c;占用了CPU90%使用情况 所以我们需要找到是哪一个代码导致的这样的情况&#xff0c;由于代码是线程执行的&#xff…

测绘GIS和遥感领域比较好的公众号有哪些

测绘GIS和遥感领域&#xff0c;微信公众号作为信息传播和知识分享的重要渠道&#xff0c;为从业者提供了一个快速获取行业动态、技术进展和职业发展机会的平台。分享一些在测绘GIS和遥感领域表现突出的公众号推荐&#xff1a; 1. 慧天地&#xff1a;慧天地是一个知名的测绘公众…

Webrtc源码编译之个人仓库

FGYP_GENERATORSGoogle官方文档参考&#xff1a;https://webrtc.github.io/webrtc-org/native-code/development/# 安装VS ​ VS 必须安装在C盘&#xff0c;负责后续需要修改很多文件 ​ 1、Desktop development with C ​ 2、MFC and ATL support ​ 3、Windows10SDK ​ 选…

Potsdam、Toronto、Vaihingen数据集

Potsdam、Toronto、Vaihingen数据集 前言原始数据集详情 Vaihingen是一个相对较小的村庄&#xff0c;有许多独立的建筑和小的多层建筑。 标签类别对照表 前言 原始数据集详情 Vaihingen是一个相对较小的村庄&#xff0c;有许多独立的建筑和小的多层建筑。 KeyValue卫星类型未…

【数据结构】穿梭在二叉树的时间隧道:顺序存储的实现

专栏引入 哈喽大家好&#xff0c;我是野生的编程萌新&#xff0c;首先感谢大家的观看。数据结构的学习者大多有这样的想法&#xff1a;数据结构很重要&#xff0c;一定要学好&#xff0c;但数据结构比较抽象&#xff0c;有些算法理解起来很困难&#xff0c;学的很累。我想让大家…

CDN(Content Delivery Network)内容分发网络原理、组成、访问过程、动静态加速、作用详解

CDN简介 什么是CND CDN&#xff08;Content Delivery Network&#xff09;的缩写&#xff0c;是一种利用分布式节点技术&#xff0c;在全球部署服务器&#xff0c;即时地将网站、应用视频、音频等静态或动态资源内容分发到用户所在的最近节点&#xff0c;提高用户访问这些内容…

.Net 基于MiniExcel的导入功能接口示例

/// <summary>/// 导入/// </summary>/// <param name"formFile"></param>/// <returns></returns>[HttpPost("Import")]public async Task<ExecResult> Import(IFormFile formFile){try{if (formFile null) t…