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

C语言-----习题

1.通过这个例题,我们可以知道*p.a是无法打印99的,因为.的优先级比解引用*高;

​
struct S
{int a;int b;
};
int main()
{struct S a, * p = &a;//可以分为两部分理解//struct S a;//struct S *p = &a;a.a = 99;printf("%d\n", a.a);printf("%d\n", *p.a);//printf("%d\n", (*p).a);printf("%d\n", p->a);return 0;
}​

2.买水问题,1元1瓶水,2空瓶换1瓶水:

int main()
{int money = 0;int total = 0;int empty = 0;scanf("%d", &money);total = money;empty = money;while (empty >= 2){total = total + empty / 2;empty = empty / 2 + empty % 2;}printf("%d", total);return 0;
}

(1)对于这个问题,我们要考虑喝完之后剩下的空瓶,和原本就有的空瓶,

(2)而while循环里面的empty=empty/2(喝完之后又换的)+empty%2(原来剩下的)就是所有的空瓶子的个数;

(3)刚开始是喝的总瓶数等于钱数,空瓶数等于钱数,接下来通过循环不断地累加;

(4)循环的条件就是空瓶的个数大于2瓶,每次循环都要计算喝的总瓶数和新的空瓶子的个数;

(5)跳出循环后的total就是喝的总数

3.输入一串数字,通过编程实现----------这串数字的前面是奇数,后面是偶数:

int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9 };int sz = sizeof(arr) / sizeof(arr[0]);int left = 0;int right = sz - 1;//奇数符合条件,偶数找出来while (left < right){while ((left < right) && (arr[left] % 2 == 1)){left++;}while ((left < right) && (arr[right] % 2 == 0)){right--;}if (left < right){int temp = arr[left];arr[left] = arr[right];arr[right] = temp;left++;right--;}}int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}

(1)这个代码的整体逻辑就是把前面的偶数和后面的奇数进行对调;

(2)第二个while循环就是找出偶数,奇数符合条件,所以取余后是1的代表是奇数,让下标加1,当我们找到偶数的时候,就会跳出循环,并且记下这个时候的left;

(3)第二个while循环就是找奇数,取余是0就代表是偶数,让下标减去1,知道找到奇数,这个时候跳出循环,记下这个时候的right;

(4)为了防止越界,因为可能全部是奇数或者全部是偶数,所以第二个第三个while都要求left<right;

(5)if语句就是让前面的偶数和后面的奇数交换位置;

(6)因为这样一次只能交换一组数据,所以外面又加上一个while循环,知道全部遍历才结束;

(7)最后使用for循环对重新排列的数组进行打印。

CCCCCCCCCCCCCCCCCCCCCCCCCC

相关文章:

  • Bee+SpringBoot稳定的Sharding、Mongodb ORM功能(同步 Maven)
  • django中配置使用websocket
  • 009集——磁盘详解——电脑数据如何存储在磁盘
  • 第8讲项目整合SpringSecurity
  • Qt:自定义信号,信号emit,传参问题,信号槽与moc
  • 蓝桥杯刷题--python-6
  • 【后端高频面试题--Nginx篇】
  • OpenCV-36 多边形逼近与凸包
  • 【C++】C++11上
  • OCP的operator——(4)用户任务:使用Operator创建etcd集群
  • ubuntu屏幕小的解决办法
  • ES实战--集群扩展
  • 专业140+总分420+东北大学841通信专业基础考研经验东大电子信息与通信工程,真题,大纲,参考书。
  • 【Spring面试题】
  • 跟着pink老师前端入门教程-day26
  • Brief introduction of how to 'Call, Apply and Bind'
  • CSS实用技巧干货
  • exif信息对照
  • github从入门到放弃(1)
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Node 版本管理
  • Redis在Web项目中的应用与实践
  • 警报:线上事故之CountDownLatch的威力
  • 设计模式 开闭原则
  • 用Python写一份独特的元宵节祝福
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • (14)Hive调优——合并小文件
  • (二十四)Flask之flask-session组件
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (循环依赖问题)学习spring的第九天
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)winform之ListView
  • .Net 4.0并行库实用性演练
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .net 提取注释生成API文档 帮助文档
  • /dev下添加设备节点的方法步骤(通过device_create)
  • /run/containerd/containerd.sock connect: connection refused
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [Android Studio 权威教程]断点调试和高级调试
  • [C\C++]读入优化【技巧】
  • [C++]命名空间等——喵喵要吃C嘎嘎
  • [cb]UIGrid+UIStretch的自适应
  • [Java]深入剖析常见排序
  • [Linux]文件基础-如何管理文件
  • [NOIP2018 PJ T4]对称二叉树
  • [PTP][1588v2] Follow_Up消息
  • [python]mysqlclient常用命令
  • [Reprinted] 使用Spring Data Redis操作Redis(一) 很全面
  • [ruby on rails] ruby使用vscode做开发
  • [SpringBoot系列]消息中间件解决方案
  • [THUPC 2024 初赛] 二进制 (树状数组单点删除+单点查询)(双堆模拟set)
  • [Vue] TodoList 案例
  • [第二章—Spring MVC的高级技术] 2.2 置multipart解析器