练习7-1
#include <stdio.h> int main(void) { int n = 1; printf("sizeof 1 : %u\n",sizeof(1)); printf("sizeof +1 : %u\n", sizeof(+1)); printf("sizeof -1 : %u\n", sizeof(-1)); printf("sizeof(unsigned)-1 : %u\n", sizeof(unsigned) - 1); printf("sizeof(double)-1 : %u\n", sizeof(double) - 1); printf("sizeof((double)-1) : %u\n", sizeof((double)-1));//将int型的-1强制转化为double型-1.0 printf("sizeof n+2 : %u\n", sizeof n+2); printf("sizeof (n+2) : %u\n", sizeof(n+2)); printf("sizeof (n+2.0) : %u\n", sizeof(n+2.0)); return 0; }
练习7-2
#include <stdio.h> #include <math.h> int main(void) { unsigned int n; int offset; printf("输入n:"); scanf("%d",&n); printf("输入左移位数offset:"); scanf("%d",&offset); printf("%u << %d = %u\n",n,offset,n<<offset); printf("%u * pow(2,%d) = %d\n",n,offset,(int)(n*pow(2.0,offset))); printf("输入n:"); scanf("%d", &n); printf("输入右移位数offset:"); scanf("%d", &offset); printf("%u >> %d = %u\n", n, offset, n >> offset); printf("%u / pow(2,%d) = %d\n", n, offset, (int)(n/pow(2.0, offset))); return 0; }
练习7-3
#include <stdio.h> unsigned rrotate(unsigned x, int n) { unsigned int y; y = x >> n; return y; } unsigned lrotate(unsigned x, int n) { unsigned int y; y = x << n; return y; } int main(void) { unsigned int x; int n; printf("输入x:"); scanf("%d",&x); printf("输入左移位数n:"); scanf("%d",&n); printf("%u << %d = %u\n",x,n, rrotate(x,n)); printf("输入x:"); scanf("%d", &x); printf("输入右移位数n:"); scanf("%d", &n); printf("%u >> %d = %u\n", x, n,lrotate(x,n)); return 0; }
练习7-4 待做
练习7-5 待做
练习7-6
#include <stdio.h> #include <limits.h> int main(void) { unsigned int x; x = UINT_MAX; printf("x = %u\n",x); printf("x + 1 = %u\n",x+1); return 0; }
练习7-7
#include <stdio.h> int main(void) { float x; double y; long double z; printf("float x = "); scanf("%f",&x); printf("x = %lf\n",x); printf("double y = "); scanf("%lf", &y); printf("y = %lf\n", y); printf("long double z = "); scanf("%lf", &z); printf("z = %lf\n", z); return 0; }
练习7-8
#include <stdio.h> int main(void) { float x; double y; long double z; printf("size of float = %u\n",sizeof(float)); printf("size of double = %u\n", sizeof(double)); printf("size of long double = %u\n", sizeof(long double)); return 0; }
练习7-9
#include <stdio.h> #include <math.h> int main(void) { double area; printf("input area of a square:"); scanf("%lf",&area); printf("each side of the square: %.2lf\n",sqrt(area)); return 0; }
练习7-10
#include <stdio.h> int main(void) { float x1 = -0.01; float x2 = 0; int i; for (i = 0;i<=100;i++) { printf("x = %f x = %f\n", x1+=0.01,(x2++)/100); } return 0; }
练习7-11
#include <stdio.h> int main(void) { float x1 = -0.01; float x2 = 0.0; int i; float sum1 = 0.0; float sum2 = 0.0; for (i=0;i<=100;i++) { printf("x = %f x = %f\n", x1+=0.01,(x2++)/100); sum1 += x1; sum2 += x2/100; } printf("sum = %f sum = %f",sum1,sum2); return 0; }