这个个练习题要求读取两个整数值,然后计算他们之间所有的整数之和, 对于我这种编程小萌新,其实 是真不会编写的 ,脑子里想了很多 ,比如怎么使用if来完成,实际上 还是做不出来,只好去CSDN借鉴下别人的。图灵写下文章 剖析 时不时拿出来看看,希望以后看到这种脑子里有思路。
// 源代码如下:
include
int main(void)
{
int a, b, sum=0, min, max;
puts("请输入两个整数。");
printf("整数a:"); scanf("%d",&a);
printf("整数b:"); scanf("%d",&b);
(a>b)?(max = a)&&(min = b):(min = a)&&(max = b);
do {
sum+=min;
} while(min++ != max);
(a>b)?(max = a)&&(min = b):(min = a)&&(max = b);
printf("大于等于%d小于等于%d的所有整数的和是%d",min,max,sum);
return 0;
}
作者:VividColors
来源:CSDN
原文:https://blog.csdn.net/VividColors/article/details/80554311
版权声明:本文为博主原创文章,转载请附上博文链接!
Blockquote
(a>b)?(max = a)&&(min = b):(min = a)&&(max = b);
这里使用了条件运算符【三目运算符】a>b如果成立则是 (max = a)&&(min = b) 这个值,不成立则是(min = a)&&(max = b); 一句话 解读这个就是判定 a和b谁大谁小,且将大小对应的值赋给 max/min。
Blockquote
do的循环体
do {
sum+=min;
}
,这句只定义了一个加法循环,大家看明解这本书可能没提到+=这个概念,很好理解 比如 a+=b相当于a=a+b。sum+=min 通俗易懂 就是 sum=sum+min 和 =和+最小值,有朋友会说这也不对啊,别急继续往下看。
while 条件1→while(min++ != max);,while 的第一句又看不懂了,对于完全萌新来说CSDN的答案,确实是有些是超纲的也仅限明解这本书,谭浩强的我记得在开头就将了这个 。不要紧认真看分分钟明白。 ++! 是先自增再参与运算,!++是先运算再自增是不是 超级绕口 ,这里开个车,俩人那啥不可描述那啥时候,成年小朋友都懂😁【 ++!】是自己先爽了,再去找女孩子;【!++】是先服务女孩子,后边自己自然也更爽,这里落到运算上就是 min最小数+1 然后再加, 那么加到什么时候停止呢 ,来人都有感觉 次数够了,max就是最大值,加到max停止。 这样逻辑上就通了 1+2+3。。。
while 条件2 →(a>b)?(max = a)&&(min = b):(min = a)&&(max = b);
这句好理解 了 好像是没必要了 ,讲真,我在dev上删除了这个 照样结果正确 ,
CSDN这个作者的解决方法应该是基于有语言基础的,不晓得 看过明解C 的大佬有木有更合适的源码 案例,最后仍然感谢csdn作者的思路。
别死扣这个问题啦 ,直接往下看书,下边基本就提到了这个 复合赋值运算