《C Primer Plus》(第6版)中文版
第二章 C语言概述
2.12编程练习
1、编写一个程序,调用一次printf()函数,把你的名和姓打印在一行。再调用一次printf()函数,把你的名和姓分别打印在两行。然后,在调用两次printf()函数,把你的铭和姓打印在一行。输出如下所示(当然要把示例的内容换成你的名字):
Gustav Mahler <——第1次打印的内容
Gusta <——第2次打印的内容
Mahler <——仍是第2次打印的内容
Gustav Mahler <——第3次和第4次打印的内容
//《C primer plus》2.12练习题第一题
//时间:2021年3月20日18:58:06
#include<stdio.h>
#define NAME "Gustav"
#define SURNAME "Mahler"
int main(void)
{
//第一题(自己做)
/*
printf("Gustav Mahler\n");
printf("Gustav\nMahler\n");
printf("Gustav ");
printf("Mahler\n");
*/
//第一题优化(参考答案)
printf("%s %s\n", NAME, SURNAME);
printf("%s\n%s\n", NAME, SURNAME);
printf("%s ", NAME);
printf("%s\n", SURNAME);
return 0;
}
2、编写一个程序,打印你的姓名和地址。
//《C primer plus》2.12第二题
//时间:2021年3月20日19:07:32
#include<stdio.h>
#define NAME "fu" //注意:“NAME”和“"fu"”之间要用空格
#define ADDRESS "guangzhou"
int main(void)
{
printf("My name is %s.\n", NAME);
printf("%s\n", ADDRESS);
return 0;
}
3、编写一个程序把你的年龄转换成天数,并显示这两个值。这里不用考虑闰年的问题。
//《C primer plus》第三题:把年龄转换成天数,并显示两个值,不用考虑闰年的问题
//时间:2021年3月20日19:13:09
#include<stdio.h>
#define DAYS_PER_YEAR 365 //优化(参考答案)
int main(void)
{
//自己做的
/*
int age, year, days;
age = 20;
year = age;
days = 365* age;
printf("May age is %d\n", age);
printf("%d days\n", days);
*/
//优化(参考答案)
int age, days;
age =20;
days = age* DAYS_PER_YEAR;
printf("You age is %d, and It is %d days.\n", age, days);
return 0;
}
4、编写一个程序,生成以下输出:(好长,不想写了…)
//《C primer plus》第四题
//时间:2021年3月20日19:22:42
#include<stdio.h>
int jolly(void); //这里是有分号的,不要漏了
int deny(void);
int main()
{
jolly();
jolly();
jolly();
deny();
return 0;
}
int jolly(void) //原来自己写的是:void jolly(void),参考答案是:int jolly(void)
{
printf("For he's a jolly good fellow!\n");
return 0; //自己写的漏了,参考答案有,下同
}
int deny(void)
{
printf("Which nobody can deny!\n");
return 0;
}
5、编写一个程序,生成以下输出:(好长,不想写了…)
//《C primer plus》第五题
//时间:2021年3月20日19:31:58
#include<stdio.h>
int br(void);
int ic(void);
int main()
{
br();
printf(", ");
ic();
printf("\n");
ic();
printf("\n"); //答案这里:printf(", \n");,但看题目,这里应该是没有逗号的。研究了一下,答案本的题目确实比教材本题目多了个逗号
br();
printf("\n");
return 0;
}
int br(void)
{
printf("Brazil, Tussia");
return 0;
}
int ic(void)
{
printf("India, China");
return 0;
}
6、编写一个程序,创建一个整型变了toes,并将toes设置为10。程序中还要计算toes的两倍和toes的平方。该程序应打印3个值,并分别描述以示区分。
//《C primer plus》第六题
//时间:2021年3月20日19:45:31
#include<stdio.h>
int main(void)
{
//自己做的
/*
int toes, toes2, toes3;
toes = 10;
toes2 = 2* toes;
toes3 = toes* toes;
printf("toes is %d\ntoes2 is %d\ntoes3 is %d\n", toes, toes2, toes3);
*/
//优化(参考答案)
int toes;
toes = 10;
printf("The Variable toes = %d.\n", toes);
printf("double toes = %d.\n", 2* toes);
/*计算并打印toes的两倍,也可以先计算再打印,例如:
int d_toes = 2* toes;
printf("double toes = %d.\n", d_toes);
但最好不要写成:
toes = 2* toes;
这样会修改toes的职,并影响到toes的平方的计算
*/
printf("toes' square = %d.\n", toes* toes);
return 0;
}
7、许多研究表明,微笑益处多多。编写一个程序,生成以下格式的输出:(好长,不想写了…)
//《C primer plus》第七题
//时间:2021年3月20日20:00:03
#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(void)
{
printf("Smile!");
return 0;
}
8、…(好长,不想写了…)
//《C primer plus》第八题
//时间:2021年3月20日20:04:55
#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(void)
{
printf("one\n");
two();
//printf("\n");
printf("three\n");
return 0;
}
int two(void)
{
printf("two\n");
return 0;
}