C Primer Plus(第六版)第6章 编程练习答案

题目字太多了略🤣有问题欢迎留言讨论~
IDE: Xcode


6-1

#include <stdio.h>

int main()
{
    const int SIZE = 26;
    char alphabet[SIZE];
    printf("Please enter 26 letters:");
    for(int i = 0; i < SIZE; i++){
        scanf("%c", &alphabet[i]);
    }
    getchar();
    //字符输出
    for (int i = 0; i < SIZE; i++){
        printf("%c", alphabet[i]);
    }
    printf("\n");
    return 0;
}

Output:
在这里插入图片描述
6-2

#include <stdio.h>

int main()
{
    for(int i = 1; i <= 5; i++){
        for(int j = 1; j <= i; j++){
            printf("$");
        }
        printf("\n");
    }
    return 0;
}

Output:
在这里插入图片描述
6-3

#include <stdio.h>

int main()
{
    for(int i = 1; i <= 6; i++){
        char a = 70;  //F
        for (int j = 1; j <= i; j++,a--){
            printf("%c", a);
        }
        printf("\n");
    }
    return 0;
}

Output:
在这里插入图片描述
6-4

#include <stdio.h>

int main()
{
    char a = 65;  //A
    for(int i = 1; i <= 6; i++){
        for (int j = 1; j <= i; j++,a++){
            printf("%c", a);
        }
        printf("\n");
    }
    return 0;
}

Output:
在这里插入图片描述
6-5

#include <stdio.h>

int main()
{
    int line;
    char letter;
    int i,j,k,m;
    printf("please enter a letter to build pyramid figure.\n");
    scanf("%c", &letter);
    printf("letter pyramid figure as following:\n");
    line = letter - 'A';
    for(i = 0; i <= line; i++){
        char print_letter = 'A' - 1;

        for(j = line; j > i; j--){
            printf(" ");
        }
        for(k = 0; k <= i; k++){
            printf("%c", ++print_letter);
        }
        for(m = 1; m <= i; m++){
            printf("%c", --print_letter);
        }

        printf("\n");
    }

}

Output:
在这里插入图片描述
6-6

#include <stdio.h>

int main()
{
    int row;
    printf("This table will show number's square and cube.\n");
    printf("First, please enter the number of rows in the table:");
    scanf("%d", &row);
    int table[row];
    printf("Second, please enter the numbers:");
    for(int i = 0;i < row; i++){
        scanf("%d", &table[i]);
    }
    printf("____________________________\n");
    printf("| number | square |  cube  |\n");
    printf("----------------------------\n");
    for(int i = 0; i < row; i++){
        printf("|%8d|%8d|%8d|\n", table[i], table[i] * table[i], table[i] * table[i] * table[i]);
        printf("----------------------------\n");
    }
    return 0;
}

Output:
在这里插入图片描述
6-7

#include <stdio.h>

int main()
{
    char word[40];
    int length;
    printf("Please enter a word:");
    scanf("%s", word);
    length = strlen(word);  //编译会有warning,因为strlen是unsigned long(const char*)
    printf("Now reverse the word:");
    while(length > 0){
        length--;
        printf("%c", word[length]);
    }
    printf("\n");
}

Output:
在这里插入图片描述
6-8

#include <stdio.h>

int main()
{
    float a, b;
    while(1){
        printf("Please enter two numbers (a & b):");
        if (scanf("%f %f", &a, &b)){
            printf("(a - b)/(a * b) = %f \n", (a - b)/(a * b));
        }else{
            printf("Quit.\n");
            break;  //break的使用见第七章
        }
    }
    return 0;
}

Output:
在这里插入图片描述
6-9

#include <stdio.h>

float calculate(float a, float b);

int main()
{
    float a, b;
    while(1){
        printf("Please enter two numbers (a & b):");
        if (scanf("%f %f", &a, &b)){
            printf("(a - b)/(a * b) = %f \n", calculate(a,b));
        }else{
            printf("Quit.\n");
            break;
        }
    }
}

float calculate(float a, float b)
{
    return (a - b)/(a * b);
}

Output:
在这里插入图片描述
6-10

#include <stdio.h>

int main()
{
    int upper_limit, lower_limit;

    printf("Enter lower and upper integer limits:");
    scanf("%d %d", &lower_limit, &upper_limit);

    while(lower_limit < upper_limit){
        int sum = 0;
        for(int i = lower_limit; i <= upper_limit; i++){
            sum += i * i;
        }
        printf("The sums of the squares from %d to %d is %d\n", lower_limit * lower_limit, upper_limit * upper_limit, sum);
        printf("Enter next set of limits:");
        scanf("%d %d", &lower_limit, &upper_limit);
    }

    printf("Done\n");
    return 0;
}

Output:
在这里插入图片描述
6-11

#include <stdio.h>
#define LENGTH 8

int main()
{
    int array[LENGTH];
    int i;
    printf("Please enter %d integers:", LENGTH);
    for(i = 0; i < LENGTH; i++){
        scanf("%d", &array[i]);
    }
    printf("Reverse these integers:");
    for(i = LENGTH; i > 0; ){
        i--;
        printf("%d ", array[i]);
    }
    printf("\n");
    return 0;
}

Output:
在这里插入图片描述
6-12

#include <stdio.h>

int main()
{
    int n;
    printf("please enter the length of the sequence:");
    scanf("%d", &n);

    while (n > 0) {
        int symbol = -1;
        double sequence_a = 0, sequence_b = 0;
        for(int i = 1; i <= n; i++){
            symbol *= -1;
            sequence_a += 1.0 / i;
            sequence_b += symbol * 1.0 / i;
        }
        printf("1.0 + 1.0/2.0 + 1.0/3.0 + 1.0/4.0 +... + 1.0/%d.0 = %f\n", n, sequence_a); //趋近于ln(N)
        printf("1.0 - 1.0/2.0 + 1.0/3.0 - 1.0/4.0 +... + 1.0/%d.0 = %f\n", n, sequence_b);
        printf("please enter the length of the sequence:");
        scanf("%d", &n);
    }
    printf("done.\n");
    return 0;
}

Output:
在这里插入图片描述
6-13

#include <stdio.h>

int main()
{
    int i;
    int a[8];
    a[0] = 1;
    for(i = 1; i < 8; i++){
        a[i] = a[i-1] * 2;
    }
    i = 0;
    do{
        printf("2^%d = %d\n", i, a[i]);
        i++;
    }while(i < 8);
    return 0;
}

Output:
在这里插入图片描述
6-14

#include <stdio.h>

int main()
{
    double element[8],sum[8];
    int i, j;
    sum[0] = 0;
    printf("Please enter 8 element:");
    for(i = 0; i < 8; i++){
        scanf("%lf", &element[i]);
        if(i == 0)
            sum[i] = element[i];
        else
            sum[i] = sum[i - 1] + element[i];
    }
    for(j = 1; j <= 2; j++){  //两行输出
        for(i = 0; i < 8; i++){
            if(j == 1)
                printf("%6.2f", element[i]);
            else
                printf("%6.2f", sum[i]);
        }
        printf("\n");
    }
    return 0;
}

Output:
在这里插入图片描述
6-15

#include <stdio.h>

int main()
{
    int i = 0;
    char enter[255];
    printf("please enter:\n");
    scanf("%c", &enter[i]);
    while('\n' != enter[i]){ //检查到输入换行符,就退出scanf
        i++;
        scanf("%c", &enter[i]);
    }
    for( ; i > 0; ){ //倒序打印
        i--;
        printf("%c", enter[i]);
    }
    printf("\n");
    return 0;
}

Output:
在这里插入图片描述
6-16

#include <stdio.h>

int main()
{
    double deirdre, daphne;
    int i;
    deirdre = 100;
    daphne = 100;
    i = 0;
    while (deirdre <= daphne){
        i++;
        daphne += 100 * 0.1;
        deirdre *= 1.05;
    }
    printf("after %d years, Deirdre's investment amount is %.2lf dollars, which overnumbers Daphne's. ", i, deirdre);
    printf("Daphne's investment amount is %.2lf dollars.\n ", daphne);
    return 0;
}

Output:
在这里插入图片描述
6-17

#include <stdio.h>

int main()
{
    int i = 0;
    double money = 100;
    while(money > 0){
        i++;
        money = money * 1.08 - 10;
    }
    printf("After %d years, Chucke Lucky will take all the money.\n", i);
    return 0;
}

Output:
在这里插入图片描述
6-18

#include <stdio.h>
#define DUNBAR_NUM 150
int main()
{
    int friend = 5;
    int i = 0;
    printf("week    friends' num\n");
    while(friend <= DUNBAR_NUM){
        i++;
        friend = (friend - i) * 2;
        printf("%-8d   %d\n", i, friend);
    }
    printf("\n");
    return 0;
}


#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>
#define STOP '|'

int main()
{
    char c;
    char prev;
    long n_chars = 0;
    int n_line = 0;
    int n_word = 0;
    int p_lines = 0;
    bool inword = false;

    prev = '\n';
    while((c = getchar()) != STOP ){
        n_chars++;
        if (c == '\n')
            n_line++;
        if (!isspace(c) && !inword){
            inword = true;
            n_word++;
        }
        if (isspace(c) && inword)
            inword = false;
        prev = c;
    }
    if(prev != '\n')
        p_lines =1;
    printf("%ld %d %d %d",n_chars, n_word, n_line, p_lines);

    return 0;
}

Output:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值