标签:
例题 1-4 鸡兔同笼
已知鸡和兔的总数量为n, 总腿数为m。输入 n 和 m,依次输出鸡的数目和兔的数目。如果无解,输出No answer
样例输入:
14 32
样例输出:
12 2
样例输入:
10 16
样例输出:
No answer
【分析】
简单的数学问题,设鸡的数量为a, 兔的数量为b。则 a+b = n, 2*a + 4*b = m;联立方程组 a=(4n - m)/2, b=n-a;结合实际a,b的值必须是非负整,而且 m 必为偶数。
程序 1-11 鸡兔同笼
1 #include<stdio.h> 2 int main() 3 { 4 int n, m; //总只数与总腿数 5 scanf("%d %d", &n, &m); 6 int a, b; //a代表的是鸡的数量,b代表兔的数量 7 a = (4 * n - m) / 2; 8 b = n - a; 9 10 if (m % 2 == 1 || a < 0 || b < 0) //当m为奇数,鸡兔的数量小于0时输出No answer 11 printf("No answer"); 12 else //否则解符合实际输出a,b的值 13 printf("%d %d", a, b); 14 }
这里 || 是 逻辑或 运算符,真值表在高中学集合就知道了。
C系列中的逻辑运算符都是短路运算符,一旦可以确定表达式的值,后面的内容就不再计算,被短路了。比如 || ,当a为真,就可以断定 a||b 为真,无需判定b是否为真。这样做的唯一优点就是速度快。
例题 1-5 三整数排序
输入3个整数,从小到大排序后输出。
样例输入:
20 7 33
样例输出:
7 20 33
1 #include<stdio.h> 2 int main() 3 { 4 int a, b, c, t; 5 scanf("%d %d %d", &a, &b, &c); 6 if (a > b){t = a, a = b, b = t;}//执行完毕后a <= b 7 if (a > c){t = a, a = c, c = t;}//执行完毕后a <= c,且a <= b仍然成立 8 if (b > c){t = b, b= c, c = t;} 9 printf("%d %d %d",a, b, c); 10 11 return 0; 12 }
简单,就不多说了。
最后抛一个简单的问题。如何连续输出“%”和“d”两个字符?
答案: 用 “%%” 输出字符 “%” 。。。。
标签:
原文地址:http://www.cnblogs.com/Traim304/p/4614899.html