P106 第6章 循环控制参考答案
编程题
1. 参考程序:
#include <stdio.h>
main( )
float max, min, score, average;
int i,j;
printf("Please input score:");
scanf("%f", &score);
while(score<0)
{
printf("Please input score:");
scanf("%f", &score);
}
max = min = average = score;
for ( i=1,j=1; ; i++)
{
printf("Please input score:");
scanf("%f", &score);
if(score>=0)
{
if (score < min ) min =score;
if (score > max ) max =score;
average+=score;
j++;
}
else break;
}
average /= j;
printf("max=%g,min=%g,average=%g\n", max, min, average);
}
2.最大公约数和最小公倍数参考程序:
/* 此程序的功能是通过辗转相除法求两数的最大公约数,然后再求最小公倍数。 */
#include<stdio.h>
main()
int number1,number2, m,n,w;
printf("请输入两个正整数:");
scanf("%d,%d",&number1,&number2);
if(number1<number2)
{
w=number1;
number1=number2;
number2=w;
}
m=number1;
n=number2;
while(n)
{
w=m%n;
m=n;
n=w;
}
printf("最大公约数为:%d\n",m);
printf("最小公倍数为:%d\n",number1*number2/m);
3.韩信点兵参考程序:
#include<stdio.h>
main()
int m;
for(m=1;;m++)
{
if(m%3==1&&m%5==2&&m%7==4&&m%13==6)
break;
}
printf("韩信士兵数最少为:%d\n",m);
4.投掷硬币参考程序:
#include<stdio.h>
#include<math.h>
main()
int m=0,n=0,i;
for(i=1;i<=1000;i++)
{
if(rand()%2==0) /*rand()函数返回随机整数*/
m++; /*m统计0面出现的次数,n统计1面出现的次数*/
else n++;
}
printf("%f,%f\n",m/1000.0,n/1000.0); /*m和n分别除以投掷的次数即为概率*/
P115 第7章 数组参考答案
编程题
1. 参考程序:
#include<stdio.h>
main()
float a[30],sum=0,ave;
int n=0,i,k=0;
printf("please input score:");
for(i=0;i<30;i++)
{
scanf("%f",&a[i]);
if(a[i]<0)
break;
n++;
}
for(i=0;i<n;i++)
sum=sum+a[i];
ave=sum/n;
printf("pinjunfenwei:%f\n",ave);
for(i=0;i<n;i++)
if(a[i]>ave)
k++;
printf("renshuwei:%d\n",k);
2.数组逆序排列参考程序:
#include <stdio.h>
#define N 10
main( )
{
int a[N], temp, i;
for (i = 0 ; i < N; i++)
{ printf(“Please input NO %d:”, i+1);
scanf(“%d”, &a[i]);
}
for (i = 0 ; i <= N/2 -1; i++)
{
temp = a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
for (i = 0 ; i < N; i++)
printf(“%3d”, a[i]);
3.打印杨辉三角前十行参考程序:
#include <stdio.h>
#define N 10
main( )
int a[N][N];
int i, j;
for (i = 0 ; i < N; i++)
{
a[i][i] = 1;
a[i][0] = 1;
}
for (i = 1 ; i < N; i++)
for (j = 1 ; j <= i; j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for (i = 0 ; i < N; i++)
{
for (j = 0 ; j <= i; j++)
printf("%5d", a[i][j]);
printf("\n");
}