明解C语言 入门篇 第七章答案
标签:scan 最大 char pre putc float main class style
练习7-1
#include <stdio.h> int main() { int n; printf("%dt%dt%dn", sizeof 1,sizeof(unsigned)-1,sizeof n 2 ); //此行显示结果为 4 3 6 因为1的字节就是为4,而-1的字节也是4再减去-1所以显示为3,最后是n 2为6 printf("%dt%dt%dn", sizeof 1, sizeof(double) - 1, sizeof(n 2));//此行显示结果是 4 7 4 因为1的字节是4,double的字节长是8 -1是7,把(n 2)括起来之后使其为一个值,所以是4; printf("%dt%dt%dn", sizeof - 1, sizeof((double)-1), sizeof (n 2.0) );//此行结果是 4 8 8 因为1的字节是4,把double-1都括起来之后,就是double类型字节为8,同理最后也是8 }
练习7-2
#include <stdio.h> #include<math.h> int main() { unsigned int number; int x; int i; int number1; printf("请输入初始值:" ); scanf("%d", &number); number1 = number; printf("左移多少位:"); scanf("%d", &x); number <<= x; printf("左移后的值:%d",number); putchar(‘n‘); for (i = 0; i < x; i ) { number1 *= 2; } printf("乘以2的指数幂的值:%d", number1); }
#include <stdio.h> #include<math.h> int main() { unsigned int number; int x; int i; int number1; printf("请输入初始值:" ); scanf("%d", &number); number1 = number; printf("右移多少位:"); scanf("%d", &x); number >>= x; printf("右移后的值:%d",number); putchar(‘n‘); for (i = 0; i < x; i ) { number1 /= 2; } printf("除以2的指数幂的值:%d", number1); }
练习7-3
#include <stdio.h> #include<math.h> unsigned rrotate(unsigned x,int n){ x >>=n; return x; } int main() { unsigned int number; int x; printf("请输入初始值:"); scanf("%d", &number); printf("右移多少位:"); scanf("%d", &x); printf("右移后的值:%d", rrotate(number, x)); }
#include <stdio.h> #include<math.h> unsigned lrotate(unsigned x,int n){ x <<=n; return x; } int main() { unsigned int number; int x; printf("请输入初始值:"); scanf("%d", &number); printf("左移多少位:"); scanf("%d", &x); printf("左移后的值:%d", lrotate(number, x)); }
练习7-4
unsigned set(unsigned x, int pos) { unsigned mask = (1u << pos); x = (mask | x); return x; } //将第pos位设置为1
unsigned reset(unsigned x, int pos) { unsigned mask = 1u; if (x & (1u<<pos)) return (x ^ (1u << pos)); else return x; } //将第pos为设置为0
unsigned inverse(unsigned x, int pos) { unsigned mask = 1u << pos; x = (x ^ mask); return x; } //将第pos位取反
练习7-5
unsigned set_n(unsigned x, int pos, int n) { int i; for (i = 0; i < n - pos; i ) { unsigned mask = (1u << (pos i)); x = (mask | x); } return x; } //一个位段都设置为1
unsigned reset_n(unsigned x, int pos, int n) { unsigned mask = 1u; int i; for (i = 0; i < n-pos; i ) { if (x & (1u<<pos i)) x= (x ^ (1u << pos i)); } return x; } //一个位段都设置为0
unsigned inverse_n(unsigned x, int pos, int n) { int i; unsigned mask = 1u; for (i = 0; i < n - pos; i ) { x = (x ^ (mask << pos i)); } return x; } //一个位段都取反
练习7-6
#include <stdio.h> // 显示unsigned类型的值最大值,同时验证最大值 1是0. int main() { unsigned a = 0; while ( a > 0); printf("%u", a - 1); putchar(‘n‘); printf("%u", a); }
练习7-7
#include <stdio.h> int main() { float a; double b; long double c; scanf("%f",&a); printf("a=%f", a); putchar(‘n‘); scanf("%lf", &b); printf("b=%f", b); putchar(‘n‘); scanf("%lf", &c); printf("c=%f", c); }
练习7-8
#include <stdio.h> int main() { float a; double b; long double c; printf("%d,%d,%d",sizeof(a), sizeof(b), sizeof(c)); }
练习7-9
#include <stdio.h> #include<math.h> int main() { double m; double x; printf("正方形的面积是:"); scanf("%lf", &m); printf("边长是:%.2f", sqrt(m)); }
练习7-10
#include <stdio.h> int main(void) { float x; int i; float m = 0.0; for (i = 0; i <= 100; i ) { x = i / 100.0; printf("x=%f x=%fn",m,x); m = 0.01; } return 0; }
练习7-11
#include <stdio.h> int main(void) { float x; int i; float m = 0.0; float sum1 = 0; float sum2 = 0; for (i = 0; i <= 100; i ) { x = i / 100.0; printf("x=%f x=%fn",m,x); m = 0.01; sum1 = m; sum2 = x; } printf("%f,%f", sum1, sum2); return 0; }
明解C语言 入门篇 第七章答案
标签:scan 最大 char pre putc float main class style
温馨提示: 本文由杰米博客推荐,转载请保留链接: https://www.jmwww.net/file/biancheng/12281.html