c primer plus(第六版) 第十二章答案(vscode编译运行通过)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.

#include <stdio.h>

void critic(int *p);
int main(void)
{
    int units;

    printf("How many pounds to a firkin of butter?\n");
    scanf("%d",&units);
    while(units != 56)
    {
        critic(&units);
    }
    printf("You must have looked it up!\n");
    return 0;
}

void critic(int *p)
{
    printf("No luck, my friend. Try again.!\n");
    scanf("%d",p);
}
//pe12-1a.c
#include <stdio.h>
#include "pe12-1a.h"


static int mode;
static int dis;
static double fuel;

void set_mode(int flag)
{
    if(flag <= 1)
        mode = flag;
    else
    {
        printf("Invaild mode specified. mode %d(%s) used.\n",mode, (mode == 0)? "metric": "US");
    }
}

void get_info(void)
{
    if(mode == 0)
    {
        printf("Enter distance traveled in kilometers: ");
        scanf("%d",&dis);
        printf("Enter fuel consumed in liters: ");
        scanf("%lf",&fuel);
    }
    else
    {
        printf("Enter distance traveled in miles: ");
        scanf("%d",&dis);
        printf("Enter fuel consumed in gallons: ");
        scanf("%lf",&fuel);
    }
}

void show_info(void)
{
    if(mode == 0)
        printf("Fuel consumption is %.2f liters per 100 km\n",fuel / dis * 100);
    else
    {
        printf("Fuel consumption is %.1f miles per gallon\n.",dis / fuel);
    }
}
//pe12-1a.h
#ifndef __PE12_1A_H__
#define __PE12_1A_H__

void set_mode(int flag);
void get_info(void);
void show_info(void);

#endif
//pe12-1a.c
#include <stdio.h>
#include "pe12-1a.h"


static int mode;
static int dis;
static double fuel;

void set_mode(int flag)
{
    if(flag <= 1)
        mode = flag;
    else
    {
        printf("Invaild mode specified. mode %d(%s) used.\n",mode, (mode == 0)? "metric": "US");
    }
}

void get_info(void)
{
    if(mode == 0)
    {
        printf("Enter distance traveled in kilometers: ");
        scanf("%d",&dis);
        printf("Enter fuel consumed in liters: ");
        scanf("%lf",&fuel);
    }
    else
    {
        printf("Enter distance traveled in miles: ");
        scanf("%d",&dis);
        printf("Enter fuel consumed in gallons: ");
        scanf("%lf",&fuel);
    }
}

void show_info(void)
{
    if(mode == 0)
        printf("Fuel consumption is %.2f liters per 100 km\n",fuel / dis * 100);
    else
    {
        printf("Fuel consumption is %.1f miles per gallon\n.",dis / fuel);
    }
}
//pe12-1a.c
#ifndef __PE12_1A_H__
#define __PE12_1A_H__


void set_mode(int flag);
void get_info(void);
void show_info(void);

#endif
//pe12-1b.c
#include <stdio.h>
#include "pe12-1a.h"

int main(void)
{
    int mode;
    printf("Enter 0 for metric mode, 1 for US mode: ");
    scanf("%d", &mode);
    while(mode >= 0)
    {
        set_mode(mode);
        get_info();
        show_info();
        printf("Enter 0 for metric mode, 1 for US mode: ");
        printf(" (-1 to quit): ");
        scanf("%d",&mode);
    }
    printf("Done.\n");
}
#include <stdio.h>

int callFunction(void)
{
    static int count = 0;
    count++;

    return count;
}

int main(void)
{
    int i;
    printf("Enter a num, and input -1 to quit: ");
    while((scanf("%d", &i) == 1) && i != -1)
    {
        printf("The function has called %d.\n",callFunction());
        printf("Enter a num, and input -1 to quit: ");
    }
    printf("The function has called %d.\n",callFunction());
    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 100

void geneRandNum(int arr[],int size)
{
    srand((unsigned int)time(0));
    for(int i = 0; i < size; i++)
    {
        arr[i] = rand() % 10 + 1;
    } 
}

void rank(int arr[],int size)
{
    for(int i = 0; i < size - 1; i++)
    {
        for(int k = i + 1; k < size; k++)
        {
            if(arr[i] < arr[k])
            {
                int temp;
                temp = arr[i];
                arr[i] = arr[k];
                arr[k] = temp;
            }
        }
    }
}

void show(int arr[],int size)
{
    for(int i = 0; i < size; i++)
    {
        printf("%2d ", arr[i]);
        if(i % 10 == 9)
            printf("\n");
    }
}

int main(void)
{
    int arr[SIZE];

    geneRandNum(arr, SIZE);
    printf("Befor sqrt: \n");
    show(arr, SIZE);
    printf("After sqrt:\n");
    rank(arr, SIZE);
    show(arr, SIZE);
    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 11

void geneRandNum(int arr[],int size)
{
    srand((unsigned int)time(0));
    for(int i = 0; i < size; i++)
    {
        arr[i] = rand() % 10 + 1;
    } 
}

void rank(int arr[],int size)
{
    for(int i = 0; i < size - 1; i++)
    {
        for(int k = i + 1; k < size; k++)
        {
            if(arr[i] < arr[k])
            {
                int temp;
                temp = arr[i];
                arr[i] = arr[k];
                arr[k] = temp;
            }
        }
    }
}

void show(int arr[],int size)
{
    for(int i = 1; i < size; i++)
    {
        printf("num %d has appeared %2d\n",i, arr[i]);
    }
    printf("\n");
}

int main(void)
{
    int arr[SIZE];
    for(int i = 1 ; i < SIZE; i++)
    {
        arr[i] = 0;
    }
    for(int i = 1; i < SIZE; i++)
    {
        srand((unsigned int)time(0));
        for(int k = 0; k < 1000; k++)
            arr[rand() % SIZE+1]++;
        printf("on the %d try:\n",i);
        show(arr, SIZE);
        for(int i = 1 ; i < SIZE; i++)
        {
            arr[i] = 0;
        }
    }
    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int rollem(int sides, int dices)
{
    int sum = 0;

    for(int i = 0; i < dices; i++)
    {
        sum += rand() % sides + 1;
    }
    return sum;
}

int main(void)
{
    int sets;
    int sides,dices;
    srand((unsigned int)time(0));
    printf("Enter the number of sets; enter q to stop: ");
    while(scanf("%d", &sets) == 1)
    {
        printf("How many sides and how many dice?");
        scanf("%d %d",&sides, &dices);
        printf("Here are %d sets of %d %d-sided throws.\n",sets,dices,sides);
        for(int i = 0; i < sets; i++)
        {
            printf("%2d ", rollem(sides, dices));
            if(i % 15 == 14)
                printf("\n");
        } 
        printf("\n");
        printf("How many sets? Enter q to stop: "); 
    } 
    return 0;
}
#include <stdio.h>
#include <stdlib.h>

int *make_array(int elem, int val);
void show_array(const int ar[], int n);

int main(void)
{
    int *pa;
    int size;
    int value;

    printf("Enter the number of elements: ");
    while(scanf("%d", &size) == 1 && size > 0)
    {
        printf("Enter the initialization value: ");
        scanf("%d", &value);
        pa = make_array(size, value);
        if(pa)
        {
            show_array(pa, size);
            free(pa);
        }
        printf("Enter the number of elements (<1 to quit): ");
    }
    printf("Done.\n");
    return 0;
}

int *make_array(int elem, int val)
{
    int *pt = *(int *)malloc(sizeof(int) * elem);
    for(int i = 0; i < elem; i++)
    {
        pt[i] = val;
    }
    return pt;
}

void show_array(const int ar[], int n)
{
    for(int i = 0; i < n; i++)
    {
        printf("%2d ",ar[i]);
        if(i % 8 == 7)
        {
            printf("\n");
        }
    }
    printf("\n");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 第七主要介绍了C语言中的函数,包括函数的定义、调用、参数传递、返回值等方面的内容。具体内容包括: 1. 函数的定义和调用:介绍了如何定义函数以及如何调用函数,包括函数的返回类型、函数名、参数列表和函数体等。 2. 函数的参数传递:介绍了C语言中的参数传递方式,包括值传递和地址传递,以及如何在函数中使用参数。 3. 函数的返回值:介绍了函数的返回值类型和返回值的作用,以及如何在函数中使用返回值。 4. 函数的声明和定义:介绍了函数的声明和定义的区别,以及如何在不同的文件中使用函数。 5. 函数的递归:介绍了递归函数的概念和使用方法,以及递归函数的优缺点。 6. 函数指针:介绍了函数指针的概念和使用方法,以及如何在程序中使用函数指针。 总的来说,第七C语言中非常重要的一,对于理解和使用函数有很大的帮助。 ### 回答2: 《C Primer Plus》第六版第七主要介绍了C语言中的输入和输出函数。这的内容包括标准I/O库、`printf()`、`scanf()`等函数以及文件输入输出等。 在这一中,首先讲解了如何使用标准I/O库进行输入输出。标准I/O库提供了一组函数,可以用于从键盘读取输入,或将结果输出到屏幕上。`printf()`函数可以用于格式化输出,可以控制输出的格式,比如输出特定长度的整数、浮点数等。`scanf()`函数可以用于从键盘读取输入,并将其存储到变量中,也可以使用特定的格式来读取特定类型的数据。 接下来,讲解了如何使用`getchar()`和`putchar()`函数。`getchar()`函数用于从键盘读取单个字符,`putchar()`函数用于向屏幕输出单个字符。 此外,还介绍了文件的输入输出。通过使用`fopen()`函数打开文件,可以读取或写入文件的内容。使用`fprintf()`函数可以将数据写入文件中,使用`fscanf()`函数可以从文件中读取数据并存储到变量中。同时还介绍了如何使用`fclose()`函数关闭文件。 最后,本还讲解了格式化输出的一些高级特性,比如控制字段宽度、对齐方式以及使用转换说明符等。 通过学习《C Primer Plus》第六版第七,我们能够了解C语言中输入输出的基本概念和原理,掌握使用输入输出库函数进行读写操作的方法,以及如何进行文件的读写操作。这对于日后编写C语言程序以及处理文件输入输出都有着重要的作用。 ### 回答3: C Primer Plus第六版第七主要介绍了C语言中的函数。函数是一段完成特定任务的可重复使用的代码块,它可以接收输入参数并返回一个值。 在这一中,我们学习了如何定义函数并明确函数的返回类型、函数名和参数列表。通过使用函数,我们可以将程序中的代码划分为更小、更可管理的部分。函数的主要好处之一是提高了代码的可读性和可维护性。 我们还学习了传递参数的不同方式,包括按值传递、按地址传递以及传递指针。这些方法允许我们在函数之间传递数据,并在函数内部对数据进行修改。 此外,我们还研究了递归函数的概念。递归函数是指可以调用自身的函数。使用递归可以通过将问题划分为更小的子问题来解决复杂的问题。 在这一中,我们还学习了函数的作用域和生命周期。函数的作用域定义了函数内部和外部变量的可见性。函数的生命周期指的是函数在程序运行期间的保持状态的时间。 最后,我们还讨论了函数的多文件组织和调用。通过将函数定义和函数声明分离到不同的文件中,我们可以更好地组织和管理大型项目的代码。 通过学习C Primer Plus第六版第七,我们可以更好地理解和应用函数在C语言中的重要性。掌握函数的知识将有助于我们编写更模块化、可读性更强、可维护性更高的代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值