C语言程序设计循环语句实验报告.docx
《C语言程序设计循环语句实验报告.docx》由会员分享,可在线阅读,更多相关《C语言程序设计循环语句实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
C语言程序设计循环语句实验报告
实验报告
专业软件工程班级X班学号__姓名XXX
实验日期:
2014年10月16日报告退发(订正、重做)
课程C程序设计实验实验名称循环语句
一、实验目的
1 了解和掌握C语言中的循环语句;
2 掌握各类循环语句的区别和联系;
3 掌握break以及continue的用法;
二、实验环境(描述实验的软件、硬件环境)
1 软件环境:
windowsxp/win7等操作系统,MicrosoftVisualC++6.0编译器;
2 硬件环境:
PC机一台
三、实验内容、步骤和结果分析
题目一:
编程找出用户输入的一串数值中的最大数。
要求:
(1)需要提示用户一个一个地输入数据;
(2)当用户输入一个不大于0的数值时,表示输入结束。
此时应输出一串数值中的最大值;
#include
floatmain()
{
floatnumber,largest;
printf("Pleaseenterapositivenumber:
");
loop:
scanf("%f",&largest);
if(largest<=0)
{
printf("Sorry,youenterawrongfulnumber!
\nThefirstnumbermustbeapositivenumber!
\nPleasetryagain:
");
gotoloop;
}
/*引导用户第一个数字输入为正数,以便正确执行本程序*/
for(number=1;number>0;)
{
printf("Pleasecontinuetoenteranumber:
");
scanf("%f",&number);
if(number>=largest)
{
largest=number;
}
}
printf("Thelargestnumberenteredis:
%.2f\n",largest);
return0;
}
题目二:
编程程序计算两个正整数的最大公约数(GCD)
要求:
1 提示用户输入两个数;
2 输出最大公约数。
#include
#include
intmain()
{
floatnum1,num2;
printf("\n————————————这是求两个正整数最大公约数的程序————————————\n请输入两个正整数:
");
loop:
scanf("%f%f",&num1,&num2);
if(num1!
=0&&num2!
=0)
{
if(num1<0||num2<0)
{
num1=abs((int)num1);
num2=abs((int)num2);
//当用户输入为浮点型数据时强制转换为整形
//当用户输入为负数时取绝对值
}
}
else
{
printf("数字0不能求最大公约数!
\n********************************************************************************请重新输入:
");
gotoloop;
//当用户输入数字为0时提示用户重新输入
}
intGcd;
intgcd(intm,intn);
Gcd=gcd(num1,num2);
printf("\n%.f和%.f的最大公约数为:
%d\n",num1,num2,Gcd);
}
/*求两个数最大公约数算法*/
intgcd(intm,intn)
{
inta,b;//小的为a,大的为b
if(m>n)
{
a=n;
b=m;
}
if(m{
a=m;
b=n;
}
if(m==n)
returnm;
inttemp=0;
for(;b%a!
=0;a=temp%a)//b与a的相除的余数肯定含有最大公约数
{
temp=b;
b=a;//每次计算之后将上一轮的a给下一轮temp计算,从余数里找
}
returna;//当不满足循环条件时,a就为最大公约数
}
题目三:
编程求解:
1/1!
+1/2!
+1/3!
+……1/n!
要求:
其中n为用户从键盘上输入的一个正整数。
#include
#include
main()
{
printf("\n————————————求解1/1!
+1/2!
+1/3!
+……1/n!
————————————\nPleaseenterapositivenumber:
");
floatsum=0,n;
intnumber,i,j;
scanf("%d",&number);
if(number<=0)
{
number=abs(number);//当用户输入负数取绝对值
}
for(i=1;i<=number;i++)
{
for(j=1,n=1;j<=i;j++)
{
n*=j;//求n!
赋值给n
}
sum+=1/n;
}
printf("sum=%.2f\n",sum);
}
题目四:
编程打印出所有“水仙花数”
要求:
所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
如:
153=13+53+33
#include
intmain()
{
printf("\n——————这是四个“水仙花数”——————\n");
inta,b,c;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
if(a*a*a+b*b*b+c*c*c==100*a+10*b+c)
printf("%d%d%d\n",a,b,c);
return0;
}
题目五:
输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数
要求:
1 屏幕提示用户输入一行字符,以回车键结束
2 分别输出这行字符中包含的英文字母、空格、数字和其他字符的个数
#include
#defineSIZE100
main()
{
printf("\n请输入一行字符(统计字符个数):
\n");
charsen[SIZE];
gets(sen);
inti=0,num1=0,num2=0,num3=0,num4=0;
while(sen[i]!
='\0')
{
if(((sen[i]>=97)&&(sen[i]<=122))||((sen[i]>=65)&&(sen[i]<=90)))
num1++;
else
if(sen[i]=='')
num2++;
else
if(sen[i]>='0'&&sen[i]<='9')
num3++;
else
num4++;
i++;
}
printf("\n其中的英文字母个数为%d\n",num1);
printf("\n其中的空格个数为%d\n",num2);
printf("\n其中的数字个数为%d\n",num3);
printf("\n其中的其他字符个数为%d\n\n",num4);
}
题目六:
编程序找出三队赛手的名单
要求:
1 两个乒乓球队进行比赛,各出三人
2 甲队为a,b,c三人,乙队为x,y,z三人
3 已抽签决定比赛名单,a说他不和x比,c说他不和x,z比
#include
main()
{
chara,b,c,x,y,z;
printf("\n两个乒乓球队进行比赛,各出三人\n甲队为a,b,c三人,乙队为x,y,z三人\n已抽签决定比赛名单,a说他不和x比,c说他不和x,z比\n**********************************************************************\n");
printf("三队赛手的名单是:
\n");
for(a='x';a<='z';a++)
for(b='x';b<='z';b++)
for(c='x';c<='z';c++)
if(b!
=a&&c!
=a&&c!
=b)
if(a!
='x'&&c!
='x'&&c!
='z')
printf("a--->%c\nb--->%c\nc--->%c\n",a,b,c);
return0;
}
题目七:
猴子吃桃问题
要求:
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
问第一天共摘了多少个桃子?
#include
intmain()
{
intday,sum;
printf("\n问题:
\n\t猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
问第一天共摘了多少个桃子?
\n\n\n");
for(day=1,sum=1;day<10;day++)
sum=(sum+1)*2;
printf("答案:
\n\t猴子第一天共摘了%d个桃子\n",sum);
return0;
}
题目八:
计算:
a+aa+aaa+……(共n项)的结果
要求:
a和n为从键盘上输入的两个正整数。
#include
#include
intmain()
{
printf("\t========计算:
a+aa+aaa+……(共n项)的结果=========\n");
floatnum1,num2;//num代表底数,num2代表几个底数
printf("请输入第一个数(正整数):
");
loop1:
scanf("%f",&num1);
if(num1<=0)
{
printf("\t注意:
第一个数必须大于0!
\n请重新输入:
");
gotoloop1;
}
printf("请输入第二个数(正整数):
");
loop2:
scanf("%f",&num2);
if(num2<=0)
{
printf("\t注意:
第一个数必须大于0\请重新输入:
");
gotoloop2;
}//保证用户输入的数字是正值
num1=int(num1);
num2=int(num2);//保证用户输入的数字是整数
floatsum=0;
for(floatm=1;m<=num2;m++)
{
for(floatn=1,temp=0;n<=m;n++)
{
temp+=num1*pow(10,n-1);//得出每项值
}
sum+=temp;//求和
if(m==num2)
{
printf("%.f=%.f",temp,sum);
}
elseprintf("%.f+",temp);//输出式子
}
printf("\n");
return0;
}
四、讨论
(1)