第四次上机作业一.docx
《第四次上机作业一.docx》由会员分享,可在线阅读,更多相关《第四次上机作业一.docx(19页珍藏版)》请在冰豆网上搜索。
第四次上机作业一
第四次上机作业一
第四次上机作业循环
4.1求1+1/2+1/3+……+1/n
程序填空不要改变与输入输出有关的语句。
输入一个正整数reeat(0<reeat<10)做reeat次下列运算:
读入1个正整数n(n<=50)计算并输出1+1/2+1/3+……+1/n(保留3位小数)。
例:
括号内是说明
输入
2(reeat=2)
2
10
输出
1.500
2.929
1#include<stdio.h>
voidmain()
{
intri,reeat;
inti,n;
floatsum;
scanf("%d",&am;reeat);
for(ri=1;ri<=reeat;ri++)
{
scanf("%d",&am;n);
sum=0;
for(i=1;i<=n;i++)
sum=sum+1.0/i;
rintf("%.3f\n",sum);
}
}
4.2求n!
程序填空不要改变与输入输出有关的语句。
输入一个正整数reeat(0<reeat<10)做reeat次下列运算:
读入1个正整数n(n<=50)计算并输出n!
。
例:
括号内是说明
输入
3(reeat=3)
1
10
5
输出
1
3628800
120
2#include<stdio.h>
voidmain()
{
intri,reeat;
inti,n;
doublefact;
scanf("%d",&am;reeat);
for(ri=1;ri<=reeat;ri++)
{
scanf("%d",&am;n);
fact=1;
for(i=1;i<=n;i++)
fact*=i;
rintf("%.0f\n",fact);
}
}
4.3求x的n次幂
程序填空不要改变与输入输出有关的语句。
输入一个正整数reeat(0<reeat<10)做reeat次下列运算:
读入1个正实数x和1个正整数n(n<=50)计算并输出x的n次幂(保留2位小数)。
例:
括号内是说明
输入
2(reeat=2)
1.52
2.010
输出
2.25
1024.00
3#include<stdio.h>
voidmain()
{
intri,reeat;
inti,n;
doublex,myow;
scanf("%d",&am;reeat);
for(ri=1;ri<=reeat;ri++)
{
scanf("%lf%d",&am;x,&am;n);
myow=1;
for(i=1;i<=n;i++)
myow=myow*x;
rintf("%.2f\n",myow);
}
}
4.4求1-1/2+1/3-1/4+……
程序填空不要改变与输入输出有关的语句。
输入一个正整数reeat(0<reeat<10)做reeat次下列运算:
读入1个正整数n(n<=100)计算并输出1-1/2+1/3-1/4+?
?
的前n项和(保留3位小
数)。
例:
括号内是说明
输入
2(reeat=2)
10
3
输出
0.646
0.833
4#include<stdio.h>
voidmain()
{
intri,reeat;
inti,n,flag;
floatsum;
scanf("%d",&am;reeat);
for(ri=1;ri<=reeat;ri++)
{
scanf("%d",&am;n);
sum=0;
flag=1;
for(i=1;i<=n;i++)
{
sum+=flag*1.0/i;
flag=-flag;
}
rintf("%.3f\n",sum);
}
}
4.5求1+1/3+1/5+1/7+……
程序填空不要改变与输入输出有关的语句。
输入一个正整数reeat(0<reeat<10)做reeat次下列运算:
读入1个正整数n(n<=100)计算并输出1+1/3+1/5+1/7+……的前n项和(保留3位小
数)。
例:
括号内是说明
输入
2(reeat=2)
10
3
输出
2.133
1.533
5#include<stdio.h>
voidmain()
{
intri,reeat;
inti,n,tem;
floatsum;
scanf("%d",&am;reeat);
for(ri=1;ri<=reeat;ri++)
{
scanf("%d",&am;n);
sum=0;
for(i=1;i<=2*n;i+=2)
sum+=1.0/i;
rintf("%.3f\n",sum);
}
}
4.6求1-1/3+1/5-1/7+?
?
程序填空不要改变与输入输出有关的语句。
输入一个正整数reeat(0<reeat<10)做reeat次下列运算:
读入1个正实数es计算并输出1-1/3+1/5-1/7+?
?
直到最后一项的绝对值小于
es(保留6位小数)。
例:
括号内是说明
输入
2(reeat=2)
1E-4
0.1
输出
0.785348
0.834921
6#include<stdio.h>
#include<math.h>
intmain()
{
intri,reeat;
inttem,flag;
doublees,item,sum;
scanf("%d",&am;reeat);
for(ri=1;ri<=reeat;ri++)
{
scanf("%le",&am;es);
flag=1;
tem=1.0;
sum=0;
item=1;
while(fabs(item)>=es)
{
sum=sum+item;
tem=tem+2;
flag=-flag;
item=flag*1.0/tem;
}
rintf("%.6f\n",sum);
}
}
4.7摄氏温度和华氏温度转换表
程序填空不要改变与输入输出有关的语句。
输入一个正整数reeat(0<reeat<10)做reeat次下列运算:
输入2个整数begin和end分别代表摄氏温度的起止值输出该范围内摄氏温度C和华
氏温度F的转换表。
F=32+C*9/5
输出语句:
rintf("%d%10d\n",c,f);
例:
括号内是说明
输入
1(reeat=1)
57
输出
CelsiusFahrenheit
541
642
744
7#include<stdio.h>
voidmain()
{
intri,reeat;
intbegin,c,end,f;
scanf("%d",&am;reeat);
for(ri=1;ri<=reeat;ri++)
{
scanf("%d%d",&am;begin,&am;end);
rintf("CelsiusFahrenheit\n");
for(ri=begin;ri<=end;ri++)
{
c=ri;
f=32+c*9/5;
rintf("%d%10d\n",c,f);
}
}
}
4.8求奇数和
程序填空不要改变与输入输出有关的语句。
输入一个正整数reeat(0<reeat<10)做reeat次下列运算:
读入一批正整数(以零或负数为结束标志)求其中的奇数和。
例:
括号内是说明
输入
2(reeat=2)
139070
87437056101-1
输出
11
116
8#include<stdio.h>
voidmain()
{
intri,reeat;
intx,sum;
scanf("%d",&am;reeat);
for(ri=1;ri<=reeat;ri++)
{
scanf("%d",&am;x);
sum=0;
while(x>0)
{
if(x%2!
=0)
sum=sum+x;
scanf("%d",&am;x);
}
rintf("%d\n",sum);
}
}
4.9求最大值
程序填空不要改变与输入输出有关的语句。
输入一个正整数reeat(0<reeat<10)做reeat次下列运算:
输入一个正整数n,再输入n个整数输出最大值。
例:
括号内是说明
输入
3(reeat=3)
42123-1000
491-18
3135
输出
123
9
5
9#include<stdio.h>
voidmain()
{
intri,reeat;
inti,max,n,x;
scanf("%d",&am;reeat);
for(ri=1;ri<=reeat;ri++)
{
scanf("%d",&am;n);
for(i=1;i<=n;i++)
{
scanf("%d",&am;x);
if(i==1)max=x;
elseif(x>max)max=x;
}
rintf("%d\n",max);
}
}
4.10求整数的位数以及各位数之和
程序填空不要改变与输入输出有关的语句。
输入一个正整数reeat(0<reeat<10)做reeat次下列运算:
输入一个整数输出它的
位数以及各位数之和。
例:
括号内是说明
输入
4(reeat=4)
123456-100-199
输出
number=6,sum=21(123456的位数是6,各位数之和是21)
number=3,sum=1(-100的位数是3,各位数之和是1)
number=1,sum=1(-1的位数是1,各位数之和是1)
number=2,sum=18(99的位数是2,各位数之和是18)
10#include<stdio.h>
voidmain()
{
intri,reeat;
intnumber,sum;
longin;
scanf("%d",&am;reeat);
for(ri=1;ri<=reeat;ri++)
{
scanf("%ld",&am;in);
number=0;
sum=0;
if(in<0)in=-in;
do{
number++;
sum+=(in%10);
}while((in/=10)!
=0);
rintf("number=%d,sum=%d\n",number,sum);
}
}
4.11求2/1+3/2+5/3+8/5+...
程序填空不要改变与输入输出有关的语句。
输入一个正整数reeat(0<reeat<10)做reeat次下列运算:
输入一个正整数n输出2/1+3/2+5/3+8/5+...的前n项之和保留2位小数。
(该序列从第
2项起每一项的分子是前一项分子与分母的和分母是前一项的分子)
例:
括号内是说明
输入
3(reeat=3)
1520
输出
2.00(第1项是2.00)
8.39(前5项的和是8.39)
32.66(前20项的和是32.66)
11#include<stdio.h>
voidmain()
{
intri,reeat;
inti,n;
floata,b,s,t;
scanf("%d",&am;reeat);
for(ri=1;ri<=reeat;ri++)
{
scanf("%d",&am;n);
a=2;
b=1;
s=0;
for(i=0;i<n;i++)
{
s+=a/b;
t=b;
b=a;
a+=t;
}
rintf("%.2f\n",s);
}
}
4.12求a+aa+aaa+aa?
a
程序填空不要改变与输入输出有关的语句。
输入一个正整数reeat(0<reeat<10)做reeat次下列运算:
输入2个正整数a和n,求a+aa+aaa+aa?
a(n个a)之和。
例:
括号内是说明
输入
2(reeat=2)
23(a=2,n=3)
85(a=8,n=5)
输出
246(2+22+222)
98760(8+88+888+8888+88888)
12#include<stdio.h>
voidmain()
{
intri,reeat;
inti,n;
longinta,sn,tn;
scanf("%d",&am;reeat);
for(ri=1;ri<=reeat;ri++)
{
scanf("%ld%d",&am;a,&am;n);
tn=a;
sn=0;
for(i=1;i<=n;i++)
{
sn+=tn;
tn=10*tn+a;
}
rintf("%ld\n",sn);
}
}
4.13判断素数
程序填空不要改变与输入输出有关的语句。
输入一个正整数reeat(0<reeat<10)做reeat次下列运算:
输入一个正整数m如果它是素数输出"YES"否则输出"NO"(素数就是只能被1和
自身整除的正整数1不是素数2是素数)。
例:
括号内是说明
输入
4(reeat=4)
12917
输出
NO(1不是素数)
YES(2是素数)
NO(9不是素数)
YES(17是素数)
13#include<stdio.h>
#include<math.h>
voidmain()
{
intri,reeat;
intflag,i,m,n;
scanf("%d",&am;reeat);
for(ri=1;ri<=reeat;ri++)
{
scanf("%d",&am;m);
if(m==1)flag=0;
elseif(m==2)flag=1;
else
{
for(i=2;i<m;i++)
if(m%i==0)
{
flag=0;
break;
}
elseflag=1;
}
if(flag)rintf("YES\n");
elserintf("NO\n");
}
}
4.14统
计字符
程序填空不要改变与输入输出有关的语句。
输入一个正整数reeat(0<reeat<10)做reeat次下列运算:
输入一行字符分别统计出其中的英文字母、空格、数字和其他字符的个数。
例:
括号内是说明
输入
2(reeat=2)
Reoldbuildingroom123.
rogrammingisfun
输出
letter=17,blank=3,digit=3,other=1
letter=16,blank=2,digit=0,other=0
14#include<stdio.h>
voidmain()
{
intri,reeat;
intblank,digit,letter,other;
charc;
scanf("%d",&am;reeat);
/*getchar();此处getchar应删去否则会影响第一个字符的录入*/不需要删除。
此处的getchar()就是为了接收输入完reeat之后的回车。
而后面的c=getchar();是进入循环的初值。
你的while循环条件要改为c!
='\n'循环体中再加一条c=getchar();即可!
for(ri=1;ri<=reeat;ri++)
{
c=getchar();
blank=0;
digit=0;
letter=0;
other=0;
while((c=getchar())!
='\n')
{
if(c>='A'&am;&am;c<='Z'||c>='a'&am;&am;c<='z')letter++;
elseif(c=='')blank++;
elseif(c>='0'&am;&am;c<='9')digit++;
elseother++;
}
rintf("letter=%d,blank=%d,digit=%d,other=%d\n",letter,blank,digit,other);
}
}