明解C语言 入门篇 第七章答案

练习7-1

#include <stdio.h>

int main() {
    int n;
    printf("%d\t%d\t%d\n", sizeof 1,sizeof(unsigned)-1,sizeof n+2 ); //此行显示结果为 4 3 6 因为1的字节就是为4,而-1的字节也是4再减去-1所以显示为3,最后是n+2为6
    printf("%d\t%d\t%d\n", sizeof +1, sizeof(double) - 1, sizeof(n + 2));//此行显示结果是 4 7 4 因为1的字节是4,double的字节长是8 -1是7,把(n+2)括起来之后使其为一个值,所以是4;
    printf("%d\t%d\t%d\n", 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=%f\n",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=%f\n",m,x);
        m += 0.01;
        sum1 += m;
        sum2 += x;
    }
    printf("%f,%f", sum1, sum2);
    return 0;
}

原文地址:https://www.cnblogs.com/nightswatch-candle/p/11877302.html

时间: 2024-10-30 07:07:55

明解C语言 入门篇 第七章答案的相关文章

明解C语言 中级篇 第三章答案

练习3-1 /* 猜拳游戏(其四:分割函数/显示成绩)*/ #include <time.h> #include <stdio.h> #include <stdlib.h> int human; /* 玩家的手势 */ int comp; /* 计算机的手势 */ int win_no; /* 胜利次数 */ int lose_no; /* 失败次数 */ int draw_no; /* 平局次数 */ char* hd[] = { "石头", &q

明解C语言 中级篇 第四章答案

练习4-1 /* 珠玑妙算 */ #include <time.h> #include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <string.h> /*--- 生成4个不同数字的组合并存入数组x ---*/ void make4digits(int x[]) { int i, j, val; for (i = 0; i < 4; i++) { do { val =

明解C语言 入门篇 第二章答案

练习2-1 1 #include <stdio.h> 2 3 int main() { 4 int x; 5 int y; 6 int percent; 7 8 puts("请输入两个整数"); 9 printf("整数x:"); 10 scanf("%d", &x); 11 printf("整数y:"); 12 scanf("%d", &y); 13 percent = (x

明解C语言 入门篇 第十二章答案

练习12-1 /* 用表示学生的结构体来显示高尾的信息 */ #include <stdio.h> #define NAME_LEN 64 /* 姓名的字符数 */ /*=== 表示学生的结构体 ===*/ struct student { char name[NAME_LEN]; /* 姓名 */ int height; /* 身高 */ float weight; /* 体重 */ long schols; /* 奖学金 */ }; int main(void) { struct stud

明解C语言 中级篇 第一章答案

练习1-1 #include <stdio.h> #include<stdlib.h> int main() { srand(time(0)); int anw = rand() % 7; printf("您的签运是:"); switch (anw) { case 0:printf("大吉"); break; case 1:printf("吉"); break; case 2:printf("小吉");

【three.js详解之一】入门篇

[three.js详解之一]入门篇 开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的原生接口从这款框架入手是一个不错的选择. 博主目前也在学习three.js,发现相关资料非常稀少,甚至官方的api文档也非常粗糙,很多效果需要自己慢慢敲代码摸索.所以我写这个教程的目的一是自己总结,二是与大家分享. 本篇是系列教程的第一篇:入门篇.在这篇文章中,我将以一个简单的demo为例,阐述thre

明解C语言,练习13-3,从文件中读入个人信息,按身高排序后显示

#include <stdio.h> #define NUMBER 6 #define F_PATH "D:\\C_C++\\ec13-3\\hw.dat" typedef struct { char name[20]; int height; float weight; } student; void swap(student *x,student *y) { student tmp = *x; *x = *y; *y = tmp; } void sort(student

【Android的从零单排开发日记】之入门篇(七)——Android数据存储(上)

在讲解Android的数据源组件——ContentProvider之前我觉得很有必要先弄清楚Android的数据结构. 数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也是开发平台必须提供的基础功能.不光是在Android平台上,在其他的平台上,数据的存储永远是不可缺少的一块.Android的数据存储是构建在Linux的文件系统上,它充分利用Linux的账号系统来限定应用对数据的访问,部署了一套安全和灵活并重的数据存储解决方案.Android的文件框架,以及各种数据

明解C语言pdf

下载地址:网盘下载 <明解C语言>图文并茂,示例丰富,设有190段代码和164幅图表,对C语言的基础知识进行了彻底剖析,内容涉及数组.函数.指针.文件操作等.对于C语言语法以及一些难以理解的概念,均以精心绘制的示意图,清晰.通俗地进行讲解. 柴田望洋(Shibata Bouyou) 1963年出生,日本福冈工业大学信息工程学院副教授.在日本IT界家喻户晓,编写了一些列极富影响力的计算机教材和参考书,如<明解C++>.<明解Java>等,本书于2000年荣获日本工学教育协