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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值