循环结构练习Word文件下载.docx

上传人:b****5 文档编号:19451806 上传时间:2023-01-06 格式:DOCX 页数:16 大小:20.01KB
下载 相关 举报
循环结构练习Word文件下载.docx_第1页
第1页 / 共16页
循环结构练习Word文件下载.docx_第2页
第2页 / 共16页
循环结构练习Word文件下载.docx_第3页
第3页 / 共16页
循环结构练习Word文件下载.docx_第4页
第4页 / 共16页
循环结构练习Word文件下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

循环结构练习Word文件下载.docx

《循环结构练习Word文件下载.docx》由会员分享,可在线阅读,更多相关《循环结构练习Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。

循环结构练习Word文件下载.docx

设原先鱼的总数是x条

设A、B、C、D、E拿之前剩下的鱼数量分别为A、B、C、D、E:

A=x;

B=(A-1)*4/5;

C=(B-1)*4/5;

D=(C-1)*4/5;

E=(D-1)*4/5;

E可以是6、11、16。

(以5递增)

若E已知,则由E可依次推出D、C、B、A。

此外,D、C、B、A要满足以下约束:

(D-1)mod5==0

(C-1)mod5==0

(B-1)mod5==0

(A-1)mod5==0

*/

#include<

intfish;

intnewfish;

//迭代变量,记录鱼的数量

intfinish,isOK;

//结束标志

inti;

//for循环控制变量

finish=0;

for(fish=6;

finish==0;

fish+=5)//对E进行递增,E满足(E-1)mod5==0

{

newfish=fish;

isOK=1;

for(i=1;

i<

=4&

isOK==1;

i++){//四次循环,依次求得D,B,C,A

newfish=newfish*5/4+1;

if((newfish-1)%5!

=0)//如果不满足(fish-1)mod5==0

isOK=0;

}

if(isOK!

=0)

finish=1;

至少是%d条鱼"

newfish);

3、第6章习题6.9小球反弹

#defineTIMES10

main()

inttimes;

//记录是第几次弹起

doubleheight;

//记录小球弹起时的高度

height=10000.0;

/*height的单位是cm*/

times=1;

/*第一次循环求第1次弹起高度*/

while(times<

=TIMES){

height=height/2;

/*除以2后的height表示第times次弹起的高度*/

times=times+1;

第%d次小球弹起的高度是%f厘米\n"

TIMES,height);

4、//判断回文数:

回文数是指一个数的逆序和自身相等的数,如222,15251等

intnum;

//存放输入的整数

intnum1;

/*循环中处理的数,每循环一次,右边少一位,假设num为1234,则num1初始值为1234,然后是123,然后是12......;

intreverse;

/*是用分解出来的数字组成的新数*/

intm;

/*m:

存放每一个分解出来的数字;

请输入一个小于8位的正整数:

"

);

//读取要判断的整数

scanf("

%d"

&

num);

/*从右到左依次取出各个数字组装成一个新的整数保持到reverse中*/

num1=num;

reverse=0;

while(num1!

=0){

m=num1%10;

/*取出num1的最低位*/

reverse=reverse*10+m;

/*将最低位组装到reverse中*/

num1=num1/10;

/*去掉num1的最低位*/

}

if(num==reverse)

%d是回文数\n"

num);

else

%d不是回文数\n"

system("

PAUSE"

5、第6章习题6.10猴子吃桃

intday;

//表示当前求解的是第几天吃前的桃子数

intpeach;

//示某一天的桃子数

day=9;

//第一次循环求第9天吃前的桃子数

peach=1;

//第10天吃前的桃子数是1

第10天桃子数是:

1\n"

while(day>

=1){

peach=2*(peach+1);

第%d天桃子数是:

day,peach);

day--;

第一天桃子数是:

peach);

6、//从高位分解整数的各个位

//输入的数

intlength;

intn;

//代表10的lenth-1次方,

intk;

//循环控制变量

//代表截取的高位

输入整数:

length=0;

n=num;

if(num==0)//若输入的是0,则其长度位1

length=1;

else//从最低位开始,依次从n中砍掉各位

while(n>

0){

n=n/10;

//去掉n的最低位

length++;

/*从num中分解出一位数字,length加1*/

}

%d的长度是%d位"

num,length);

n=1;

for(k=1;

k<

length;

k++)n=n*10;

while(n>

0)

m=num/n;

num=num%n;

n=n/10;

printf("

%d"

m);

7、投骰子。

投骰子若干次,统计每个面出现的次数。

次数从键盘输入。

time.h>

{

intface,roll,frequency1=0,frequency2=0,frequency3=0;

intfrequency4=0,frequency5=0,frequency6=0;

scanf("

n);

srand(time(NULL));

/*usethetimeofsystemtoseedtherandfunction,anyquestionpleaseask

teacherliuzhenhua*/

for(roll=1;

roll<

=n;

roll++)

face=1+rand()%6;

//rand()functionreturnsapseudorandomintegerintherange0to//RAND_MAX

switch(face)

{

case1:

++frequency1;

break;

case2:

++frequency2;

case3:

++frequency3;

case4:

++frequency4;

case5:

++frequency5;

case6:

++frequency6;

%s%13s\n"

"

Face"

frequency"

1%13d\n"

frequency1);

2%13d\n"

frequency2);

3%13d\n"

frequency3);

4%13d\n"

frequency4);

5%13d\n"

frequency5);

6%13d\n"

frequency6);

pause"

8、第6章习题6.2字符统计

统计字符

问题描述:

输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

输入与输出要求:

输入一个字符序列,字符序列长度小于100,以换行符“\n”结束。

输出各类字符的个数,依次是英文字符,空格,数字,其他字符(以空格分开),占一行。

程序运行效果:

Sample1:

Pleaseinputastring:

Happynewyear#100101!

ThenumberofEnglishcharacters,spaces,numbers,othercharactersare:

12462

Sample2:

yes,thereare2eggs.

15312

charch;

intc1=0,c2=0,c3=0,c4=0;

/*c1表示字母字符个数,c2表示空格字符,c3表示数字字符,c4表示其它字符*/

printf(“Pleaseinputastring:

”);

while((ch=getchar())!

='

\n'

if(ch>

a'

ch<

z'

||ch>

A'

Z'

c1++;

elseif(ch=='

'

c2++;

elseif(ch>

0'

9'

c3++;

else

c4++;

%d%d%d%d\n"

c1,c2,c3,c4);

9、打印乘法表

1*1=1

2*1=22*2=4

3*1=33*2=63*3=9

4*1=44*2=84*3=124*4=16

5*1=55*2=105*3=155*4=205*5=25

6*1=66*2=126*3=186*4=246*5=306*6=36

7*1=77*2=147*3=217*4=287*5=357*6=427*7=49

8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=64

9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81

inti,j;

for(i=1;

=9;

i++)

for(j=1;

j<

i;

j++)

printf("

%d*%d=%d\t"

i,j,i*j);

%d*%d=%d\n"

10、第6章习题6.14打印实心菱形

已知一个整数n,你要根据n打印出n阶的实心菱形。

输入一个整数n(要打印的菱形阶数)。

输出n阶实心菱形(占2*n-1行)。

Pleaseinputaninteger:

3

Theresultis:

*

***

*****

6

*****

*******

*********

***********

intt,d=0,n,i,j;

scanf("

\n"

for(j=n-i;

j>

=1;

j--)

"

=2*i-1;

*"

for(i=n-1;

i>

i--)

11、打印空心菱形

问题描述:

已知一个整数n,你要根据n打印出n阶的空心菱形。

输入一个整数n,代表要打印的菱形阶数.输出n阶空心菱形,占2*n-1行。

5

**

**

);

=2*i-3;

if(i>

1)

第3题.实验手册中实验4的第4题(进制转换)

Problem4:

进制转换

已知一个只包含0和1的二进制数,二进制数的长度不大于10。

你的任务是将其转换为十进制数并打印出来。

提示:

用除法和求余运算符每次从右到左获取二进制整数的各位数字。

在十进制数值系统中,最右边的数字是个位,个位的左边依次是十位、百位、千位等等。

与之类似,在二进制数值系统中,最右边的数字是1位,左边的数字依次为2位、4位、8位等等。

十进制数234可分解为4*1+3*10+2*100,二进制数1101可分解为1*1+0*2+1*4+1*8,它等价于十进制数1+0+4+8,即13。

输入一个整数n,代表二进制数,二进制数的长度不大于10。

输出二进制转换后的十进制数,占一行。

1101

13

11111

31

intlength,n,sum,temp,i,p2,p10,high;

//计算n的长度

temp=n;

if(n==0)

length=1;

elsewhile(temp)

temp=temp/10;

//计算最高位的位权

for(i=1,p2=1,p10=1;

i++)

p2=p2*2;

p10=p10*10;

//将二进制数转换为十进制数

for(i=1,temp=n,sum=0;

length>

1&

=length;

high=temp/p10;

//截取最高位

sum=sum+high*p2;

//最高位乘以对应的二进制数位权,并累加

temp=temp%p10;

//去掉最高位

p2=p2/2;

p10=p10/10;

if(length==1)

n);

sum);

12、第6章习题6.15,比赛分组

两个乒乓球队进行对抗赛,甲队出A、B、C、D四人;

乙队出W、X、Y、Z四人。

已知部分抽签结果是:

A不与X比赛;

C不与X、Z比赛,D不与W比赛。

你的任务是将全部可能的抽签结果打印出来。

输出比赛抽签结果,占三行,每组后再输出一个空行。

最后输出总方法数,即“Thereare%dwaystoassigntheplayers.”。

Theresultofballotis:

Group1:

AVSW

BVSX

CVSY

DVSZ

Group2:

BVSZ

DVSX

Group3:

AVSY

CVSW

Thereare7waystoassigntheplayers.

intd=0,A,B,C,D;

for(A='

W'

;

A<

A++)

for(B='

B<

B++)

if(A!

=B)

for(C='

C<

C++)

{

if(C!

=A&

C!

for(D='

D<

D++)

{

if((D!

D!

=B&

=C)&

(A!

X'

))

{

printf("

Group%d:

++d);

AVS%c\n"

A);

BVS%c\n"

B);

CVS%c\n"

C);

DVS%c\n"

D);

}

}

}

Thereare%dwaystoassigntheplayers.\n"

d);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1