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("%dn", a.a);
printf("%dn", *p.a);//
printf("%dn", (*p).a);
printf("%dn", 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
(1)这个代码的整体逻辑就是把前面的偶数和后面的奇数进行对调;
(2)第二个while循环就是找出偶数,奇数符合条件,所以取余后是1的代表是奇数,让下标加1,当我们找到偶数的时候,就会跳出循环,并且记下这个时候的left;
(3)第二个while循环就是找奇数,取余是0就代表是偶数,让下标减去1,知道找到奇数,这个时候跳出循环,记下这个时候的right;
(4)为了防止越界,因为可能全部是奇数或者全部是偶数,所以第二个第三个while都要求left
(5)if语句就是让前面的偶数和后面的奇数交换位置;
(6)因为这样一次只能交换一组数据,所以外面又加上一个while循环,知道全部遍历才结束;
(7)最后使用for服务器托管网循环对重新排列的数组进行打印。
CCCCCCCCCCCCCCCCCCCCCCCCCC
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
Monorepo:是管理项目代码的一个方式,指在一个项目仓库(repo)中管理多个模块/包(package) vue3源码采用Monorepo管理项目 vue3项目架构 搭建Monorepo环境 1.全局安装pnpm npm install pnpm -g #…