发布时间 : 星期日 文章C语言谭浩强第四版例题更新完毕开始阅读e3e54770783e0912a2162ae4
例7.8 Hanoi(汉诺)塔问题。古代有一个梵塔,塔内有3个座A、B、C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从A座移到C座,但规定每次只允许移动一个盘,且在移动过程中在3个座上都始终保持大盘在下,小盘在上。在移动过程中可以利用B座。要求编程序输出移动一盘子的步骤。 编写程序:
#include
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 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
{ 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
{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 {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 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); }