实验七 循环结构程序设计(2)
班级______________姓名___________指导老师_____________成绩___________
第_____________机房___________号机器 时间:________________________
实验目的:1,进一步掌握三种循环语句。
2,掌握循环嵌套的执行过程。
3,熟练使用循环语句、循环嵌套编写程序。
实验要求:每次实验前,学生要先预习实验内容,写出分析结果或程序,经实验指导老师检查后,上机运行、调试程序,得出最终正确结果。
实 验 内 容
一、读程序
要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。
1,下述程序运行时输入的数据是3.6,2.4 <CR>,写出输出结果。
#include <stdio.h>
#include <math.h>
main()
{ float x,y,z ;
scanf (,% f,% f,,& x,& y ) ;
z = x / y ;
while (1)
{ if ( fabs(z) > 1.0 )
{ x = y ;
y = z ;
z = x / y ;
}
else
break ;
}
printf(“%f \n”,y );
}
分析结果
运行结果
第一部分 C语言程序设计上机指导
·33·
·33·
2,
#include <stdio.h>
main()
{
int i,j,k ;
printf("\n");
for (i=1 ;i <=6 ;i++)
{
for ( j =1 ; j <= 20-2*i ; j++ )
printf (" ");
for ( k =1 ; k <=i ; k++ )
printf("%4d",i );
printf ("\n") ;
}
}
分析结果
运行结果
3,
#include <stdio.h>
main( )
{
int i,j,sum,m,n = 4 ;
sum = 0 ;
for (i=1 ;i <= n ;i++)
{
m=1 ;
for ( j =1 ; j <= i; j++)
m = m * j ;
sum = sum + m ;
}
printf(,sum = % d \n”,sum );
}
分析结果
运行结果
4,
#include <stdio.h>
main( )
{
int k =0 ; char c = ‘ A ‘ ;
do
{ switch ( c + + )
{ case ‘ A ’,k + + ; break ;
case ‘ B ’,k - - ;
case ‘ C ’,k +=2 ; break ;
case ‘ D ’,k = k % 2 ; continue ;
C语言程序设计上机指导与同步训练
·34·
·34·
case ‘ E ’,k = k * 10 ; break ;
default,k = k / 3 ;
}
k++ ;
} while ( c < ‘ G ‘ ) ;
printf(“k= % d \n“,k );
}
分析结果
运行结果
5,键盘输入( CR 表示按 Enter 键):65 14<CR>,则将下面程序的运行结果填入下
表中。
#include <stdio.h>
main()
{
int m,n ;
printf (,Enter m,n,);
scanf(,%d %d,,&m,&n ) ;
while ( m != n )
{
while ( m >n ) m-= n ;
while ( m< n ) n-= m ;
}
printf(,m = % d \n,,m );
}
分析结果
运行结果
二、完成程序
要求:根据要求,分析给出的上下语句,填写程序。
1,以下程序的功能是计算 1 – 3 + 5 – 7… – 99 + 101 的值,请在_______上填写正确内容。
#include <stdio.h>
main()
{ int i,t=1,s=0;
for(i=1;i<=101;i+=2)
{ ____________________ ;
s = s + t ;
_____________________ ;
}
printf ("%d \n ",s ) ;
}
2,下面程序的功能是用“辗转相除法”求两个正整数的最大公约数,请在_______上第一部分 C语言程序设计上机指导
·35·
·35·
填写正确内容。
#include <stdio.h>
main()
{
int r,m,n ;
scanf(,%d %d,,&m,&n) ;
if (m<n) ___________________________
r = m%n ;
while(r) { m = n ; n = r ; r = _____________; }
printf(,% d \n,,n );
}
3,以下程序功能是完成用 10 元人民币换成 1 角、2 角、5 角的所有兑换方案,请在
_______上填写正确内容。
# include <stdio.h>
main()
{
int i,j,k,L =1 ;
for ( i = 0 ; i<= 20 ;i ++ )
for ( j =0 ; j<= 50 ; j++)
{ k = ____________________;
if ( _____________ )
{ printf(,%2d %2d % 2d,,i,j,k );
L=L+1;
if(L%5==0) printf (,\n,);
}
}
}
4,以下程序的功能是输出 1~100 之间每位数的乘积大于每位数的和的数,请在
_______上填写正确内容。
# include <stdio.h>
main()
{
int n,k = 1,s = 0,m;
for ( n=1 ;n <= 100; n++)
{ k= 1;
s = 0;
________________;
while( m)
{ k * = m%10 ;
s += m% 10 ;
_______________;
}
if (k > s) printf(“%d”,n );
}
}
C语言程序设计上机指导与同步训练
·36·
·36·
三、调试程序
要求:分析下列程序是否正确,如有错,错在哪儿?应如何改正?如正确,运行结果如何?上机调试之。
1,以下程序输出1~100的整数数字。
main()
{ int i =100;
while( 1 )
{
i = i%100+1 ;
printf(,%6d,“,i ) ;
if ( i%10==0 ) printf (,\n,) ;
if ( i>100) break ;
}
}
运行结果,
正确
错误所在,
错误
应改为,
2,本程序运行后输出以下图形。
*
* *
* * *
* * * *
* * * * *
main()
{int i,j ;
for (i=0 ; i >= 4 ; i ++)
{
for (j=4 ; j>= 0 ; j --)
printf(,*,) ;
printf(,\n”);
}
}
运行结果,
正确
错误所在,
错误
应改为,
3,若从键盘输入两个正整数m 和 n,下面程序实现求其最大公约数和最小公倍数。
main()
{ int m,n,t;
int a,b;
第一部分 C语言程序设计上机指导
·37·
·37·
printf (" Enter m,n,") ;
scanf ("%d%d",&m,&n ) ;
if(m<n)
{t=m;m=n;n=t;}
a=m;b=n;
while(b=0)
{t=a%b;
a=b;
b=t;}
printf("\n%d \n",a );
printf("%d\n",m*n/a);
}
运行结果,
正确
错误所在,
错误
应改为,
4,下面程序的功能是从 3 个红球、5 个白球、6 个黑球中任意取出 8 个球,且其中必须有白球,输出所有可能的方案。
main()
{ int i,j,k ;
for (i=0 ; i <= 3 ; i++)
for (j=0 ; j <= 5 ; j++)
{ k= 8- i – j ;
if ( k >=0 && k <=6 )
printf(,3%d %3d %3d\n”,i,j,k );
}
}
运行结果,
正确
错误所在,
错误
应改为,
四、写程序
1,一球从 100 高度自由落下,每g8437落g3332后g17351g3250高度的一g2334g1889g8437落下,求g4439在第 10 g8437
落g3332时,g13475g17819g3822g4581g12871g731第10g8437g2465g5389有g3822高g731
2,g13546写一个程序求出200~300之间的整数,且g9397g17287g7477g1226:g4439g12163个数字之积g103842,3
个数字之和g103812 。
3,一g11346g987g4512g13717g17947g2052一个g19488g10995人,g19488g10995人g6226g1194g16860一个换g19077的计g2022,g16825计g2022g3926下:g6117每g3837
g13485g133210g987元,g13792g1332第一g3837g2494g19668g13485g61171g2010g19077,第g1120g3837g6117g1185g13485g133210g987元,g1332g13485g61172g2010g19077,第
g989g3837g6117g1185g13485g133210g987元,g1332g13485g61174g2010g19077……g1332每g3837g13485g6117的g19077是g2081一g3837的2倍,g11464g2052g93971个g7388
(30 g3837),g11346g987g4512g13717g5468高g1864,g8439g9994g6521g2475g1114g17837个g3877约。请g13546写一个程序计算g17837一个g7388中g19488g10995人
C语言程序设计上机指导与同步训练
·38·
·38·
g13485g1114g11346g987g4512g13717g3822g4581g19077g731g11346g987g4512g13717g13485g19488g10995人g3822g4581g19077g731
4,g6183g2372出以下图案。
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*