《C语言程序设计基础》教材参考答案-20140211 下载本文

《C语言程序设计基础》教材参考答案

{

printf(\请输入三角形三边长:\ scanf(\ if(a+b>c&&b+c>a&&a+c>b) { s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(\三角形的面积为:%.2f.\\n\

}

printf(\注意:不能构成合法三角形.\\n\ else

printf(\按任意键继续,按q退出.\\n\\n\ ch=getch(); if(ch=='q'||ch=='Q') }

break; //或exit(0); }

实训指导【2】

1.按照图5-7所示效果,输出九九乘法表。

#include void main() { int i,j;

for(i=1;i<=9;i++) {

for(j=1;j<=i;j++)

printf(\ printf(\ } }

2.用循环结构输出几何图形:

* *** ***** ******* ********* ***********

提示:输出简单的几何图形(如图),是循环结构的典型应用之一。对于这一类型的题目,初学者往往直接采用一条或若干条输出语句printf完成,这样虽然可以完成题目要求,但是很显然缺乏灵活性,不符合程序设计的思想。按照正常的程序设计思想,应该先分析图形的

40

《C语言程序设计基础》教材参考答案

构成,找出其中的规律。如图中的实心三角形,每一行由若干个空格、星号和一个回车换行符构成,将行号、空格数和星号数分别定义为i、m和n, 对于行i,相应的空格数m为6-i,星号数n为2*i-1。

#include

void main() { }

3.百元百鸡问题。我国古代数学家张丘键在《算经》中出了一道题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?这是一个古典数学问题,意思是说用一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少只。

提示:设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,问题化为三元一次方程组:

?5x?3y?z/3?100(百钱)??x?y?z?100(百鸡)

int i,m,n; { }

for(m=1;m<=6-i;m++) putchar(' ');

putchar('*');

for(i=1;i<=6;i++)

for(n=1;n<=2*i-1;n++)

putchar('\\n');

这里x,y,z为正整数,且z是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z的取值范围:

1) x的取值范围为1~20 2) y的取值范围为1~33

3) z的取值范围为3~99,步长为3

对于这个问题我们可以用穷举的方法,遍历x,y,z的所有可能组合,最后得到问题的解。

#include

void main() { int x,y,z;

for(x=1;x<=20;x++) for(y=1;y<=33;y++)

for(z=3;z<=99;z+=3) {

41

《C语言程序设计基础》教材参考答案

if((5*x+3*y+z/3==100)&&(x+y+z==100))/*是否满足百钱和百鸡的条件*/ printf(\ }

程序运行结果如下: cock=4,hen=18,chicken=78 cock=8,hen=11,chicken=81 cock=12,hen=4,chicken=84

}

42

《C语言程序设计基础》教材参考答案

单元六 数组的使用

一. 随堂练习

【随堂练习6-1】

1. 完成【引例】中的题目(1)。 float score[40]; 2.有数组定义double p[8],数组中每个元素占用 8 字节,整个数组占用 64 字节, p 可以代表数组在内存中存放的首地址。 【随堂练习6-2】

1. 将【例6-3】中的一维数组中各元素的值逆序输出。

#include

void main() { }

【随堂练习6-3】

1.判断如下二维数组的定义方式是否正确? (1)float b[10][10]; 正确 (2)#define N 20 正确

int s[N][N];

(3)int n=20; int array[n][10]; 不正确 (4)double a[4,5]; 不正确

int a[10]={0,1,2,3,4,5,6,7,8,9};

printf(\

for(int i=9;i>=0;i--)

【随堂练习6-4】

1.将一个二维数组行和列的元素互换,存到另一个二维数组中,即矩阵的转置。

#include

void main() {

int a[2][3],b[3][2]; int i,j;

printf(\原矩阵为:\\n\

43