day=9; y=1;
while(day>0) { x=(y+1/)2;
y=x; day--; }
printf(“totall=%d\\n”,x); }
实验七 参考答案:
一.1、 1
2 2 3 3 3
4 4 4 4 5 5 5 5 5
2、k=2 3、m=3 二.
1、 for( k = 0;k<=100;k++) 10*k+20*i+50*j==100 2、m=n; m=m/10;
三.1、错误在 7 行应改为:if (i==100)break;
2、错误在 3 行应改为:for(j=1;j<=5;j++) 3、第3行改为for(; i<=20;i++)
第6行改为printf(\(1) 若i>20,j>3,则不循环
若i=20,j>3,则外循环1次,不进入内循环 若i=20,j=3,则内外循环各1次
若i=20,j=2,则外循环1次,内循环2次 若i=19,j=3,则外循环2次,内循环1次 若i=2,j=1,则外循环19次,内循环3次 若i=1,j=2,则外循环20次,内循环2次 若i=0,j=1,则外循环21次,内循环3次 (2)外循环20次,内循环3次
(4) 第3行改为for(i=1; i<=20;i++)
第7行改为sum=sum+(i+1)*(i+1)*k ;
第9行改为printf(\没有变化
四.1、
main()
{ float sn=80,hn=sn/2;
int n;
for(n=2;n<=10;n++) { sn=sn+2*hn; hn=hn/2; }
printf(\}
2、main()
{ int i;
double m=100000,n,s; n=0.01; s=0;
for(i=1;i<=30;i++)
{
s+=n; n=n*2;
}
printf(\ %f\\n\ }
实验八 参考答案: 一.1、s=12345
2、7, 5, 3, 3、<1,2>=6
二.1、% for(j=k;j>0;j--)
2、 a[i]%2==0 a[i]
三.1、 错在第1行应改为: int a [ 4] = { 0 } ;:
2、 错在第2,3,4行应改为: for ( i =1 ; i <=10 ; i + +)
{ scanf ( “%d “, &a[i]) ;
a [0] = a [ 0] + a[ i ] ; }
3、第二行改为int i,n=10,a[10],av=0 ; 第4行改为scanf(\; 第12行改为printf(\;
四.1、 分析:C中数组长度必须是确定大小,即指定N的值。排序的方法有多种,取出其中两种作为参考。 方法一:起泡排序
从第一个数开始依次对相邻两数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。第一遍的(N-1)次比
较后,最大的数已放在最后,第二遍只需考虑(N-1)个数,以此类推直到第(N-1)遍比较后就可以完成排序。
源程序如下: #define N 10
#include\main() {
int a[N],i,j,temp;
printf(\ for(i=0;i scanf(\for(i=0;i for(j=0;j if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } printf(\for(i=0;i printf(\ } 方法二:选择排序 首先找出值最小的数,然后把这个数与第一个数交换,这样值最小的数就放到了第一个位置;然后,在从剩下的数中找值最小的, 把它和第二个数互换,使得第二小的数放在第二个位置上。以此类推,直到所有的值从小到大的顺序排列为止。 #include\#define N 10 main() { int a[N],i,j,r,temp;