C语言实验报告三.docx
《C语言实验报告三.docx》由会员分享,可在线阅读,更多相关《C语言实验报告三.docx(13页珍藏版)》请在冰豆网上搜索。
C语言实验报告三
C语言实验报告(三)
一、实验目的
1、掌握C语言中,循环结构
2、掌握C语言中,for语句和while语句的使用
3、掌握break语句与continue语句
4、掌握直到型循环do-while语句
二、实验内容
1.不能被3整除的自然数
输入一整数初始值n(0样例输入:
10
样例输出:
10111314161719202223
要求输出的每个数据占4列。
·程序代码:
#include"stdio.h"
intmain()
{
intn,i,t=1;
scanf("%d",&n);
for(i=n;t<=10;i++)
if(i%3!
=0)
{
printf("%4d",i);
t++;
}
printf("\n");
return0;
}
2.表达式求和
求1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值,n为键盘输入的一个整数,(0样例输入:
3
样例输出:
10
·程序代码:
#include"stdio.h"
intmain()
{
intn,i,sum,j;
scanf("%d",&n);
sum=0;
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
sum+=j;
printf("%d\n",sum);
return0;
}
3.数的平方表
描述:
输入两个空格隔开的整数n和m(0输入:
用空格隔开的两个整数n和m(0输出:
从n到m的平方
样例输入:
15
样例输出:
1的平方是1
2的平方是4
3的平方是9
4的平方是16
5的平方是25
·程序代码:
#include"stdio.h"
intmain()
{
intm,n,i,t;
scanf("%d%d",&n,&m);
for(i=n;i<=m;i++)
{
t=i*i;
printf("%d的平方是%d\n",i,t);
}
return0;
}
4.求平方和
描述:
编写一个程序,根据输入的n,计算:
输入:
整数n(n>=0)
输出:
从1到n的平方和
样例输入:
100
样例输出:
338350
·程序代码:
#include"stdio.h"
intmain()
{
intn,i,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=i*i;
}
printf("%d",sum);
return0;
}
5.求和值
描述:
求和值Sn=a+aa+aaa+……+aaaa…aa(n位)
如n=5,a=3,则是求S5=3+33+333+3333+33333。
输入:
用空格隔开的n和a
输出:
s=和值
样例输入:
31
样例输出:
s=123
·程序代码:
#include"stdio.h"
intmain()
{
intn,i,sum,a,j;
scanf("%d%d",&n,&a);
sum=0;j=0;
for(i=1;i<=n;i++)
{
j=j*10+a;
sum+=j;//sum=sum+j;
}
printf("s=%d\n",sum);
return0;
}
6.被7整除的数
描述:
输出指定范围被7整除的数。
输入:
两个用空格隔开的整数n,m(0输出:
输出单独占一行,在n到m之间(包含n和m),被7整除的数,用一个空格隔开。
样例输入:
1060
样例输出:
14212835424956
·程序代码:
#include"stdio.h"
intmain()
{
intn,m,i;
scanf("%d%d",&n,&m);
for(i=n;i<=m;i++)
if(i%7==0)
{
printf("%d",i);
}
printf("\n");
return0;
}
7.指定范围的水仙花数
描述:
编写一个程序,打印出指定范围的所有“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数。
输入:
输入两个用空格隔开的整数(100输出:
在n和m之间(含n和m),所有的水仙花数。
每行一个。
样例输入:
100999
样例输出:
153370371407
·程序代码:
#include"stdio.h"
intmain()
{
intn,m,a,b,c,i;
scanf("%d%d",&n,&m);
for(i=n;i<=m;i++)
{
a=i/100;
b=i/10%10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)
printf("%d\n",i);
}
return0;
}
8.奇数的乘积
描述:
给你n个整数,求它们中所有奇数的乘积。
输入:
输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数。
输出:
输出每组数中的所有奇数的乘积,对于每个测试实例,输出一行。
样例输入:
3123;42345
样例输出:
315
·程序代码:
#include"stdio.h"
intmain(void)
{
intn,i,m,s;
while(scanf("%d",&n)==1)
{
s=1;
for(i=1;i<=n;i++)
{
scanf("%d",&m);
if(m%2!
=0)
s*=m;
}
printf("%d\n",s);
}
return0;
}
9.阶乘和
描述:
编写一个程序,其功能为:
计算并输出:
sum=1!
+2!
+...+n!
输入:
一个在0到10之间(含0和10)的整数n。
输出:
sum=1!
+2!
+...+n!
样例输入:
2
样例输出:
sum=3
·程序代码:
#include"stdio.h"
intmain()
{
intn,i,sum,a,j;
scanf("%d",&n);
sum=0;j=1;
for(i=1;i<=n;i++)
{
j=j*i;
sum+=j;//sum=sum+j;
}
printf("sum=%d\n",sum);
return0;
}
10.牛顿迭代求平方根
描述:
xn的初值可以取a/2。
输入:
一个正实型数据a
输出:
a的平方根,保留5位小数。
样例输入:
2样例输出:
1.41421
·程序代码:
#include"stdio.h"
#include"math.h"
intmain()
{
floata,x1,x2;
scanf("%f",&a);
x1=a/2;
x2=(x1+a/x1)/2;
while(fabs(x1-x2)>=1e-5)
{
x1=x2;
x2=(x1+a/x1)/2;
}
printf("%.5f\n",x2);
return0;
}
11.整数之间的素数
描述:
求指定的两个整数m、n之间的素数(m<=n)
输入:
只有一行,是空格隔开的两个正整数m和n。
(m<=n)
输出:
在m和n之间(含m和n)的所有素数,按照每个数据占6列,每行5个数据输出(最后一行数目可以少)。
样例输入:
100200
样例输出:
101103107109113
127131137139149
151157163167173
179181191193197
199
·程序代码:
#include"stdio.h"
#include"math.h"
intmain()
{
intm,n,a,flag=0,i=2,b=0;
scanf("%d%d",&m,&n);
for(a=m;a<=n;a++)
{
i=2;
flag=0;
while(i<=sqrt(a)&&flag==0)
{
if(a%i==0)
flag=1;
elsei++;
}
if(flag==0)
{
printf("%6d",a);
b++;
if(b%5==0)
printf("\n");
}
}
return0;
}
12.打印菱形
描述:
从键盘输入一个整数n(1≤n≤9),打印出指定的菱形。
输入:
正整数n(1≤n≤9)。
输出:
指定的菱形。
第一行前面有n-1个空格,第二行有n-2个空格,以此类推,直到第n行;从第n+1行后空格开设逐渐增多,每次增加一个。
样例输入:
5
样例输出:
*
***
*****
*******
*********
*******
*****
***
*
·程序代码:
#include
intmain()
{
intm,n,i,t;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(m=n-i;m>=1;m--)//here
{
printf("");
}
for(t=2*i-1;t>=1;t--)
{
printf("*");
}
printf("\n");
}
for(i=n-1;i>=1;i--)
{
for(m=n-i-1;m>=0;m--)//here
{
printf("");
}
for(t=2*i-1;t>=1;t--)
{
printf("*");
}
printf("\n");
}
return0;
}
13.sumofintegers
描述:
Inthisproblem,yourtaskistocalculateSUM(n)=1+2+3+...+n
输入:
Theinputfirstlineisaintegermdenotesnumberofinputandbelowwillconsistofmintegersn,oneintegerperline
输出:
Foreachcase,outputSUM(n)inoneline,followedbyablankline.Youmayassumetheresultwillbeintherangeof32-bitsignedinteger.
样例输入:
2
1
100
样例输出:
1
5050
·程序代码:
#include"stdio.h"
intmain()
{
intn,i,m,sum,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&m);
sum=0;
for(j=1;j<=m;j++)
sum+=j;
printf("%d\n\n",sum);
}
return0;
}
14.爬井的小明
描述:
由于有不道德的人偷走了一个窨井盖子,而小明不慎掉了下去,他奋力攀爬。
他想知道需要多长时间可以爬出去。
(数据保证一定可以爬出)已知,小明每分钟可以爬u米,但是每爬完一分钟必须要休息一分钟,在他休息的时间里,他又会往下滑d米。
井深h米。
如果小明在某个时刻已经到达井口,但是未满1分钟,把这一分钟算满。
输入:
hud分别表示井深、小明每分钟爬的距离,和每分钟下滑的距离
输出:
一个整数,表示需要用多少分钟爬出。
样例输入:
[sample1]
1021
[sample2]
2031
样例输出:
[sample1]
17
[sample2]
19
·程序代码:
#include
intmain()
{
doubleh,u,d,v,s;
intt;
while(scanf("%lf%lf%lf",&h,&u,&d)==3)
{
t=0;
s=0;
v=u-d;
for(;;)
{
if(s+u>=h)
{
++t;
break;
}
t+=2;
s+=v;
}
printf("%d\n",t);
}
return0;
}