《C Primer Plus》随书习题 - C语言概述

@王松_Striker  March 6, 2017

我要开始学习C语言啦,总是断断续续的。

@周梦禹 师傅推荐我在博客写上一个C语言系列文章,然而这对于一个新手来讲,太难了。

因为知识储备太少,想系统性的写C系列的文章太难了。

所以我就来把《C Primer Plus》的课后习题做出来,然后把答案发出来吧(前面的习题简单,后面的习题不知道会不会难到我吐血 2333)。

我看的这本是《C Primer Plus》第六版中文版。(不要问我为啥不看英文版!!!)

题目

书中第37页,是第二章”C语言概述“的编程练习题。

1.编写一个程序,调用一次printf()函数,把你的姓名打印在一行。再调用一次printf()函数,把你的姓名分别打印在两行。然后再次调用两次printf()函数,把你的姓名打印在一行。输出应该如下所示(当然要把实例的内容换成你的姓名):

Gustav Mahler        <- 第一次打印的内容
Gustav               <- 第二次打印的内容
Mahler               <- 仍是第二次打印的内容
Gustav Mahler        <- 第三次和第四次打印的内容

答案:

#include <stdio.h>

int main(void)
{
    printf("Song Wang\n");
    printf("Song\nWang\n");
    printf("Song Wang\n");
    return 0;
}

输出:

Song Wang
Song
Wang
Song Wang

2.编写一个程序,打印你的姓名和地址。

答案:

#include <stdio.h>

int main(void)
{
    printf("WangSong,Chaoyang District of Beijing City\n");
    return 0;
}

输出:

WangSong,Chaoyang District of Beijing City

3.编写一个程序把你的年龄转换成天数,并显示着两个值,这里不用考虑闰年的问题。

答案:

#include <stdio.h>

int main(void)
{
    int age;
    int days;
    age = 19;
    
    days = age * 365;
    printf("I am %d years old, a total of %d days\n", age, days);
    
    return 0;
}

输出:

I am 19 years old, a total of 6935 days

4.编写一个程序,生成以下输出:

For he's a jolly good fellow!
For he's a jolly good fellow!
For he's a jolly good fellow!
Which nobody can deny!

除了main()函数以外,该程序还要调用两个自定义函数:一个名为jolly(),用于打印前3条消息,调用一次打印一条;另一个函数名为deny(),打印最后一条消息。

答案:

#include <stdio.h>

int jolly(void);
int deny(void);

int main(void)
{
    jolly();
    jolly();
    jolly();
    deny();
    return 0;
}

int jolly()
{
    printf("For he's a jolly good fellow!\n");
    return 0;
}

int deny()
{
    printf("Which nobody can deny!\n");
    return 0;
}

输出:

For he's a jolly good fellow!
For he's a jolly good fellow!
For he's a jolly good fellow!
Which nobody can deny!

5.编写一个程序,生成以下输出:

Brazil, Russia, India, China
India, China,
Brazil, Russia

除了main()函数以外,该程序还要调用两个自定义函数,一个名为br(),调用一次打印一次“Brazil,Russia”;另一个名为ic(),调用一次打印一次“India, China”。其他内容在main()函数中完成。

答案:

#include <stdio.h>

int br(void);
int ic(void);

int main(void)
{
    br();
    printf(", ");
    ic();
    printf("\n");
    ic();
    printf(",\n");
    br();
    printf("\n");
    return 0;
}

int br()
{
    printf("Brazil, Russia");
    return 0;
}

int ic()
{
    printf("India, China");
    return 0;
}

输出:

Brazil, Russia, India, China
India, China,
Brazil, Russia

6.编写一个程序,创建一个整形变量toes,并将toes设置为10.程序中还要计算toes的两倍和toes的平方。该程序应打印3个值,并分别标书以示区分。

答案:

#include <stdio.h>

int main(void)
{
    int toes;
    toes = 10;
    printf("totes is %d\n", toes);
    printf("%d times as much as two is %d\n", toes, toes * 2);
    printf("The square of toes is %d\n", toes * toes);
    return 0;
}

输出:

totes is 10
10 times as much as two is 20
The square of toes is 100

7.许多研究表明,微笑益处多多。编写一个程序,生成一下格式的输出:

Smile!Smile!Smile!
Smile!Smile!
Smile!

该程序要定义一个函数,该函数被调用一次打印一次“Smile!”,根据程序的需要使用该函数。

答案:

#include <stdio.h>

int smile(void);

int main(void)
{
    smile();
    smile();
    smile();
    printf("\n");
    smile();
    smile();
    printf("\n");
    smile();
    printf("\n");
    return 0;
}

int smile()
{
    printf("Smile!");
    return 0;
}

输出:

Smile!Smile!Smile!
Smile!Smile!
Smile!

8.在C语言中,函数可以调用另一个函数。编写一个程序,调用一个名为one_three()的函数,该函数在一行打印单词“one”,再调用第2个函数two(),然后在另一行打印单词“three”,two()函数在一行显示单词“two”。main()函数在调用one_three()函数前要打印短语"starting now:",并在调用完毕后显示短语“done!”。因此,该程序的输出应如下所示:

starting now:
one
two
three
done!

答案:

#include <stdio.h>

int one_three(void);
int two(void);

int main(void)
{
    printf("starting now:\n");
    one_three();
    printf("done!\n");
    return 0;
}

int one_three()
{
    printf("one\n");
    two();
    printf("three\n");
    
    return 0;
}

int two()
{
    printf("two\n");
    
    return 0;
}

输出:

starting now:
one
two
three
done!

英语太蹩脚了,下次里面还是直接用中文/拼音来写吧。

已有 4 条评论

  1. c语言好老的语言了啊。。。

  2. 你好博主:
    请问你博客 代码高亮用的哪个插件

  3. 60.194.128.183

  4. 哈哈哈 哈哈哈

    2-6第一行是toes不是totes

添加新评论