C语言程序设计算法题 -- lab05(R-W)
R 估算身高
#include<stdio.h> int main() { char sex; double bone; scanf("%c %lf", &sex, &bone); printf("%.1lf", (sex == M) ? bone * 1.88 + 32 : bone * 1.94 + 28.7); }
S 实数除法
两个实数 a 和 b的除法运算: 如果 b 是接近0(绝对值小于等于 )的数,则输出divisor near zero,否则输出 a/b 的结果值,结果保留小数点后十位。
#include<stdio.h> #include<math.h> int main() { double a,b; scanf("%lf %lf", &a, &b); if(fabs(b) < 10e-8)//不是<=是< printf("divisor near zero"); else printf("%.10lf", a / b); return 0; }
T 位求反
#include<stdio.h> int main() { unsigned int inte; int p, n; scanf("%d %d %d", &inte, &p, &n); unsigned int change = 1 << p + 1; //需要注意这里当位变化大于31的时候 //设置为int会出现溢出问题 int nn = change >> n; change -= nn ? nn : 1; int temp = inte; temp &= ~change; //temp 保留不变化的位 inte &= change; inte = ~inte; inte &= change; // inte用于变化 inte |= temp; printf("%u", inte); return 0; }
U 位运算与逻辑运算
#include<stdio.h> int main() { int a,b; scanf("%d %d", &a, &b); printf("%d %d ", a && b, a & b); unsigned c = a; if(b >= 0 && b < 32) printf("%d %d", a >> b, c >> b); }
V 位运算
#include<stdio.h> int main() { int x, i, j; scanf("%d %d %d", &x, &i, &j); int tempi = 1 << i; int tempj = 1 << j; int temp = x; temp &= ~tempi; temp &= ~tempj; //将i和j位归零 tempi &= x; tempj &= x; int i2 = tempi && 1; int j2 = tempj && 1; //判断i和j是否需要互换 if((i2 && j2) || (!i2 && !j2)) printf("%d", x); else { i2 <<= j; j2 <<= i; temp |= j2; temp |= i2; printf("%d", temp); } }
W 平均数
Input two integers a and b of type int, and output average integer of them. Test the program with data in range from INT_MIN to INT_MAX.
Note: only type int can be used in the program.
#include<stdio.h> //虽然用longlong可以直接秒 //但是只能用int就考虑一下不同情况即可 int main() { int a, b; scanf("%d %d", &a, &b); int res ; int posa = a >= 0; int posb = b >= 0; if(!(posa ^ posb)) { res = a/2 + b/2; if(a&1 && b&1) { if(posa) res++; else res--; } } else { res = (a + b) / 2; } printf("%d", res); }
下一篇:
C++归并排序(注释超详细)