资源描述
《C语言程序设计》实验报告
----------------------------------------------------------------------------------------------
实验4循环控制(一)
一. 实验目的
(1)掌握用while语句,do…While语句和for语句实现一重循环的方法。
(2)掌握在程序设计中用循环的方法实现一些常用算法(例如求最大/最小值、求和、统计等)。
(3) 进一步学习调试程序的技巧 。
二.实验内容和步骤
1.填空题
(1)给定程序成c4-1.c功能是计算1到M之间的奇数之和及偶数之和。
#include<stdio.h>
#define M 100
int main()
{ int a,b,i;
a=0;b=0;
for(i=1;i<=99;i+=2)
{ a=a+i;
b=b+i+1; }
printf("sum of evens is %d\n",b);
printf("sum of odds is %d\n",a);
return 0;
}
(2)以下给定程序c4-2.c的功能是从键盘输入整数,分别计算所输入正整数的和、负整数的和。当输入0时,结束并输出计算结果。
#include<stdio.h>
int main()
{ int x,sum1,sum2;
sum1=0;sum2=0;
scanf("%d",&x);
while(x!=0)
{
if(x>0) sum1+=x;
else sum2+=x;
scanf("%d",&x);
}
printf("sum of>0 in %d\n",sum1);
printf("sum of<0 is %d\n",sum2);
return 0;
}
(3)给定程序c4-3.c功能是计算正整数num的各位上数字之积。
#include<stdio.h>
int main()
{ int num,k;
k=1;
printf("please enter a number:");
scanf("%d",&num);
do
{ k*=num%10;
num=num/10;
}while(num!=0);
printf("\n%d\n",k);
return 0;
}
反思与总结:1.evens代表偶数,odds表示奇数;2.(3)中取末尾的方法值得一看!3.通过这三个例子掌握for,while,do while语句的使用。
2.改错题
(1)以下程序c4-4.c的功能是从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请将程序补充完整。
#include<stdio.h>
int main()
{ float x,amax,amin;
scanf("%f",&x);
amax=0;amin=100;
for(;x>=0;)
{ if(x>amax) amax=x;
if(x<amin) amin=x;
scanf("%f",&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
return 0;
}
(2)以下程序c4-5.c的功能是从低位开始取出长整型变量s中奇位数上的数,依次构成一个新数放在t中。
#include<stdio.h>
int main()
{ long s,t,sl=10;
printf("\nPlease enter s:");
scanf("%ld",&s);
t=s%10;
while(s>0)
{ s=s/100;
t=s%10*sl+t;
sl=sl*10;
}
printf("The result is:%ld\n",t);
return 0;
}
(3)给定程序c4-6.c的功能是从键盘上输入两个正整数x,y,求它们的最大公约数。
#include<math.h>
#include<stdio.h>
int main()
{ int n,m,t;
printf("Please enter two numbers:");
scanf("%d,%d",&n,&m);
if(n<m)
{t=n;n=m,m=t;}
t=n%m;
while(t!=0)
{n=m;
m=t;
t=n%m;}
printf("max is:%d\n",m);
return 0;
}
反思与总结:1.掌握(1)题中找最大数和最小数的方法;2.理解(2)中程序设计的思想;3.掌握(3)中求最大公约数的方法。
3.程序设计题
(1)以下程序的功能是求两个正整数mn之间所有既不能被3整除又不能被7整除的整数之和。
#include<stdio.h>
int main()
{ int m,n,t,i,s;
printf("m=,n=");
scanf("%d,%d",&m,&n);
if(m>n)
{t=n;n=m;m=t;}
for(s=0,i=m;i<=n;i=i+1)
{if(i%3!=0&&i%7!=0)
s=s+i;}
printf("S is:%d\n",s);
return 0;
}
(2)输入一行字符,分别统计出其中的英文字母,空格,数字和其他字符的个数。
#include<stdio.h>
int main()
{ char ch;
int a=0,b=0,c=0,d=0;
while((ch=getchar())!='\n')
{if(ch==32) b=b+1;
else if(ch>=48&&ch<=57) c=c+1;
else if((ch>=65&&ch<=90)||(ch>=97&&ch<=122) ) a=a+1;
else d=d+1;}
printf("%d,%d,%d,%d\n",a,b,c,d);
return 0;
}
(3)编程求1!+2!+3!+……+20!的值。
#include<stdio.h>
int main()
{ int i,p=1,sum=0;
for(i=1;i<=20;i++)
{p=p*i;sum=sum+p;}
printf("sum=%d\n",sum);
return 0;
}
(4)求π
#include<stdio.h>
#include<math.h>
int main()
{ int n=1;
double term,pi=1.0;
for(n=1;1.0/(n*(n+2))>=1.0e-6;n=n+2)
{term=1+1.0/(n*(n+2));
pi=pi*term;}
pi=2*pi;
printf("%6.4lf\n",pi);
return 0;
}
反思与总结:空格=32,数字=48~57,大写字母=65~90,小写字母=97~122
(注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)
展开阅读全文