C语言谭浩强第四版例题 联系客服

发布时间 : 星期日 文章C语言谭浩强第四版例题更新完毕开始阅读e3e54770783e0912a2162ae4

例7.8 Hanoi(汉诺)塔问题。古代有一个梵塔,塔内有3个座A、B、C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从A座移到C座,但规定每次只允许移动一个盘,且在移动过程中在3个座上都始终保持大盘在下,小盘在上。在移动过程中可以利用B座。要求编程序输出移动一盘子的步骤。 编写程序:

#include int main() {

void hanoi(int n,char one,char two,char three); // 对hanoi函数的声明 int m;

printf(\ scanf(\

printf(\ hanoi(m,'A','B','C'); }

void hanoi(int n,char one,char two,char three) // 定义hanoi函数 // 将n个盘从one座借助two座,移到three座 {

void move(char x,char y); // 对move函数的声明 if(n==1)

move(one,three); else {

hanoi(n-1,one,three,two); move(one,three);

hanoi(n-1,two,one,three); } }

void move(char x,char y) // 定义move函数 {

printf(\ }

例7.9 输入10个数,要求输出其中值最大的元素和该数是第几个数。 编写程序:

#include int main()

{int max(int x,int y); int a[10],m,n,i;

printf(\ for(i=0;i<10;i++) scanf(\ printf(\

for(i=1,m=a[0],n=0;i<10;i++)

{ if (max(m,a[i])>m) // 若max函数返回的值大于m {m=max(m,a[i]); // max函数返回的值取代m原值 n=i; // 把此数组元素的序号记下来,放在n中 } }

printf(\ }

int max(int x,int y) { return(x>y?x:y); }

例7.10 有一个一维数组score,内放10个学生成绩,求平均成绩。 编写程序:

#include int main()

{ float average(float array[10]); // 函数声明 float score[10],aver; int i;

printf(\ for(i=0;i<10;i++)

scanf(\ printf(\

aver=average(score); // 调用average函数 printf(\ return 0; }

float average(float array[10]) // 定义average函数 {int i;

float aver,sum=array[0]; for(i=1;i<10;i++)

sum=sum+array[i]; // 累加学生成绩 aver=sum/10; return(aver); }

例7.11 有两个班级,分别有35名和30名学生,调用一个average函数,分别求这两个班的学生的平均成绩。 编写程序:

#include int main()

{float average(float array[ ],int n); float score1[5]={98.5,97,91.5,60,55};

float score2[10]={67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5}; printf(\ printf(\ return 0; }

float average(float array[ ],int n) {int i;

float aver,sum=array[0]; for(i=1;i

sum=sum+array[i]; aver=sum/n; return(aver); }

例7.12用选择法对数组中10个整数按由小到大排序。 编写程序:

#include int main()

{void sort(int array[],int n); int a[10],i;

printf(\ for(i=0;i<10;i++)

scanf(\ sort(a,10);

printf(\ for(i=0;i<10;i++) printf(\ printf(\ return 0; }

void sort(int array[],int n) {int i,j,k,t;

for(i=0;i

for(j=i+1;j

例7.13 有一个3×4的矩阵,求所有元素中的最大值。 编写程序:

#include int main()

{ int max_value(int array[][4]);

int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}}; printf(\ return 0; }

int max_value(int array[][4]) {int i,j,max;

max=array[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++)

if(array[i][j]>max)max=array[i][j]; return (max); }