实验2循环结构程序设计课案.docx
《实验2循环结构程序设计课案.docx》由会员分享,可在线阅读,更多相关《实验2循环结构程序设计课案.docx(10页珍藏版)》请在冰豆网上搜索。
实验2循环结构程序设计课案
实验2循环结构程序设计
一、实验目的
1.学习循环语句for、while和do-while语句的使用方法。
2.学习用循环语句实现各种算法,例如穷举法、迭代法等。
3.进一步熟悉C语言集成环境的使用方法
二、实验内容
1.用while循环实现数据统计问题。
:
从键盘输入一批任意数量的整数,统计其中不大于100的非负数数值的个数。
2.编写并调试程序,使用do-while循环控制语句实现上面的数据统计问题。
调试数据仍参照上面给出的几种情况设计使用。
3.编写并调试程序,使用for循环控制语句实现上面的数据统计问题。
4.阶乘累加问题。
编写程序,求1+2!
+3!
+…+n!
的值。
三、实验指导
1.用while循环实现数据统计问题。
⏹编程分析
由于输入数据个数是不确定的,因此每次执行程序时,循环次数都是不确定的。
在进行程序设计时,确定循环控制的方法是本实验的一个关键问题。
循环控制条件可以有多种确定方法:
(1).使用一个负数作为数据输入结束标志。
(2).输入一个数据后通过进行询问的方式决定是否继续输入下一个数据。
⏹参考程序
参考程序一
/*使用负数作为数据输入结束标志的程序*/
#include"stdio.h"
voidmain()
{
intm,counter=0;
while
(1)
{
printf("请输入一个整数:
");
scanf("%d",&m);
if(m<0)
break;
if(m<=100)
counter++;
printf("\n");
}
printf("符合要求的整数个数为:
%d\n",counter);
}
参考程序二
/*通过进行询问的方式决定是否继续输入下一个数据的程序*/
#include
intmain()
{
intm,counter=0;
charask;
while
(1)
{
printf("请输入一个整数:
");
scanf("%d",&m);
getchar();
if(m>=0&&m<=100)
counter++;
printf("继续输入下一个数据?
(Y/N)");
ask=getchar();
getchar();
if(ask!
='y'&&ask!
='Y')
break;
printf("\n");
}
printf("符合要求的整数个数为:
%d\n",counter);
}
⏹程序调试
这里只对“参考程序一”的调试数据进行设计。
该程序输入数据时,应考虑多种数据组合,对每一组数据察看并分析结果。
例如:
(3).输入的一组数据之间全部以空格分隔,只有最后一个数为负数,以回车键结束。
如:
16357–-10
(4).输入的一组数据之间全部以空格分隔,在负数之后又有正数数据,最后一个数不为负数,以回车键结束。
如:
16357–-109617
(5).输入的一组数据之间全部以空格分隔,输入数据中有多个负数,以回车键结束。
如:
16357–-109617–-877
(6).输入的数据中有大于100的整数。
如:
16357–1096117–8726766
(7).数据之间既用空格分隔,也用回车键分隔。
如:
763537622717
9667
9617–8771966982-1631
(8).每输入一个数据后均按回车键。
(9).输入的第一个数据即为负数。
(10).在输入的数据中使用数值很大的整数。
如:
17667789876517899-10987
⏹在上面的“参考程序一”中,使用了常数“1”作为循环控制的条件,这是常用的循环控制方式。
请修改上面的程序,不使用常数循环条件,仍然使用while语句实现数据统计问题。
2.编写并调试程序,使用do-while循环控制语句实现数据统计问题。
⏹参考程序
/*使用负数作为数据输入结束标志的程序*/
#include
intmain()
{
intm,counter=0;
do
{
printf("请输入一个整数:
");
scanf("%d",&m);
if(m<0)
break;
if(m<=100)
counter++;
printf("\n");
}while
(1);
printf("符合要求的整数个数为:
%d\n",counter);
return0;
}
⏹调试指导
调试数据仍参照上面给出的几种情况设计使用。
3.编写并调试程序,使用for循环控制语句实现上面的数据统计问题。
⏹参考程序
/*用for循环控制语句实现的数据统计问题程序*/
#include
intmain()
{
intm,counter;
for(counter=0;1;)
{
printf("请输入一个整数:
");
scanf("%d",&m);
if(m<0)
break;
if(m<=100)
counter++;
printf("\n");
}
printf("符合要求的整数个数为:
%d\n",counter);
return0;
}
注意:
for循环控制语句的一般格式通常有三个表达式,本参考程序中使用的
for循环控制语句在格式上只有两个表达式。
请读者注意学习这种用法。
⏹请修改程序,使用完整格式的for循环控制语句实现上面的数据统计问题。
4.阶乘累加问题。
⏹编程分析
(11).本实验内容是求解阶乘问题。
(12).求n!
用一个循环即可实现。
(13).求1+2!
+3!
+…+n!
的值,需要在求n!
程序之外增加一个外重循环。
⏹参考程序
/*求1+2!
+3!
+…+n!
程序*/
#include
intmain()
{
longints=1,t;
inti,j,n;
printf("n=");
scanf("%d",&n);
for(i=2;i<=n;i++)
{
for(t=1,j=1;j<=i;j++)
t*=j;
s+=t;
}
printf("s=%ld\n",s);
return0;
}
⏹程序调试
(14).输入一个不大的正整数,分析程序执行结果。
(15).输入一个零或者负数,分析程序执行结果。
(16).输入一个很大的正整数,分析程序执行结果。
(17).当程序结果不符合要求时,修改程序,直到对任何输入数据都能输出
正确的执行结果,或者给出一个明确的提示信息。
例如,当输入数据非法时,给出一个恰当的提示信息。
四、预习题(选择题)
1、下面程序段
intk=2;
while(k=0){printf(“%d”,k);k--;}
则下面描述中正确的是
A.while循环执行10次
B.循环是无限循环
C.循环题语句一次也不执行
D.循环体语句执行一次
2、以下程序段的循环次数是
for(i=2;i==0;)printf(“%d”,i--);
A.无限次
B.0次
C.1次
D.2次
3、下面程序的输出结果是
#include"stdafx.h"
int_tmain(intargc,_TCHAR*argv[])
{
charc='A';
intk=0;
do{
switch(c++){
case'A':
k++;break;
case'B':
k--;
case'C':
k+=2;break;
case'D':
k%=2;continue;
case'E':
k*=10;break;
default:
k/=3;
}
k++;
}while(c<'G');
printf("k=%d",k);
return0;
}
A.k=3
B.k=4
C.k=2
D.k=0
4、下面程序的输出结果是
int_tmain(intargc,_TCHAR*argv[])
{
intx=9;
for(;x>0;x--){
if(x%3==0){
printf(“%d”,--x);
continue;
}
}
return0;
}
A.741
B.852
C.963
D.875421
5、下述程序段的运行结果是
int_tmain(intargc,_TCHAR*argv[]){
inta=1,b=2,c=3,t;
while(a
t=a;
a=b;
b=t;
c--;
}
printf("%d,%d,%d",a,b,c);
return0;
}
A.1,2,0
B.2,1,0
C.1,2,1
D.2,1,1
6、下面程序的功能是从键盘输入一组字符,从中统计大写字母和小写字母的个数,选择 填空。
main()
{intm=0,n=0;
charc;
while((【】)!
’\n’)
{
if(c>=’A’&&c<=’Z’)m++;
if(c>=’a’&&c<=’z’)n++;
}
}
A.c=getchar()
B.getchar()
C.c==getchar()
D.scanf(“%c”,&c)
7、下述语句执行后,变量k的值是
intk=1;
while(k++<10);
A.10
B.11
C.9
D.无限循环,值不定
8、下面程序的输出结果是
int_tmain(intargc,_TCHAR*argv[])
{
intk=0,m=0,i,j;
for(i=0;i<2;i++){
for(j=0;j<3;j++)
k++;
k-=j;
}
m=i+j;
printf("k=%d,m=%d",k,m);
return0;
}
A.k=0,m=3
B.k=0,m=5
C.k=1,m=3
D.k=1,m=5
9、下面for循环语句
inti,k;
for(i=0,k=-1;k=1;i++,k++)
printf(“***”);
A.判断循环结束的条件非法
B.是无限循环
C.只循环一次
D.一次也不循环
10、执行语句for(i=1;i++<4;);后变量i的值是
A.3
B.4
C.5
D.不定