简约型网站设计,石药网站,太原网站推广服务,贵阳微信网站制作1.通过这个例题#xff0c;我们可以知道*p.a是无法打印99的#xff0c;因为.的优先级比解引用*高#xff1b;
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我们可以知道*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循环里面的emptyempty/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都要求leftright;
(5if语句就是让前面的偶数和后面的奇数交换位置
6因为这样一次只能交换一组数据所以外面又加上一个while循环知道全部遍历才结束
7最后使用for循环对重新排列的数组进行打印。
CCCCCCCCCCCCCCCCCCCCCCCCCC