c语言循环结构上机习题

c语言循环结构上机习题
c语言循环结构上机习题

1、计算n的阶乘(n!),n的取值在1~10之间。分别使用while、do…while和for 语句实现。(三个程序)

给循环变量赋初值

循环条件

循环体

循环变量的增值

2、输入一行字符,分别统计输入了多少个

字母、数字、空格和其他字符。

3、假设函数f(x)=3x2+2x+1,试利用for循环语句分别求出1<=x<=9的f(1)~f(9)各函

数值。

4、有分数序列2/1,3/2,5/3,8/5,13/8,

21/13…求这个数列的前20项和。

(分析提示:每个分子等于前一个数据分子与分母的和,每个分母等于前一个数据的分

子)

5、输出显示1~100之间可以被n整除的所有整数,运行时n由键盘输入。要求每一行显示5个数,并且统计一共有多少个整数能

被n整除。

6、下面程序的功能是从键盘上输入若干学

生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。

main()

{ float x,amax,amin;

scanf("%f",&x);

amax=x;

amin=x;

while( ①)

{ if(x>amax) amax=x;

if( ②) amin=x;

scanf("%f",&x);

}

printf("\namax=%f\namin=%f\n",amax,a

min);

}

7、使用循环语句输出以下图形

8、有一个数学等式:AB*CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。

8、一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问

一百只鸡中公鸡、母鸡、小鸡各多少)。

分析:

这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,问题化为

三元一次方程组:

100=x*5+y*3+z/3

100=x+y+z

这里x,y,z为正整数,且z是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z

的取值范围:

1) x的取值范围为1~20

2) y的取值范围为1~33

3) z的取值范围为3~99,步长为3

对于这个问题我们可以用穷举的方法,遍历x,y,z的所有可能组合,最后得到问题的解。

数据要求

问题中的常量:无

问题的输入:无

问题的输出:

int x,y,z /*公鸡、母鸡、小鸡的只数*/

初始算法

1.初始化为1;

2.计算x循环,找到公鸡的只数;

3.计算y循环,找到母鸡的只数;

4.计算z循环,找到小鸡的只数;

5.结束,程序输出结果后退出。

算法细化

算法的步骤1实际上是分散在程序之中的,由于用的是for循环,很方便的初始条件放

到了表达式之中了。

步骤2和3是按照步长1去寻找公鸡和母鸡

的个数。

步骤4的细化

4.1 z=1

4.2 是否满足百钱,百鸡

4.2.1 满足,输出最终百钱买

到的百鸡的结果

4.2.2 不满足,不做处理4.3 变量增加,这里注意步长为3

程序代码如下

#include "stdio.h"

main()

{

int x,y,z;

for(x=1;x<=20;x++)

{

for(y=1;y<=33;y++)

{

for(z=3;z<=99;z+=3)

{

if((5*x+3*y+z/3==100)&&(x+y+z==100))/*是否满足百钱和百鸡的条件*/

printf("cock=%d,hen=%d,chicken=%d\n

",x,y,z);

}

}

}

}

分析

程序运行结果如下:

cock=4,hen=8,chicken=78

cock=8,hen=11,chicken=81

cock=12,hen=4,chicken=84

对于这个问题实际上可以不用三重循环,而是用二重循环,因为公鸡和母鸡数确定后,小鸡数就定了,即。请同学们自己分析二重

循环和三重循环的运行次数,做为练习自己

调试这一方法。

程序修改:

1、统计使用三重循环的循环次数

2、使用二重循环完成,并统计循环次数

#include

int main()

{

int i1,i2,j1,j2,a,b,c,d;

for(i1=11;i1<=99;i1++)

for(j1=i1+1;j1<=99;j1++)

{a=i1/10;

b=i1%10;

c=j1/10;

d=j1%10;

if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&

c!=d)

{ i2=b*10+a;

j2=d*10+c;}

if(i1*j1==i2*j2)

{

printf("%d*%d=%d*%d\t",i1,j1,i2,j2);

} }

return 0;

}

#include

void main()

{

int a,b,c,d;

for(a=1; a<=9; a++)

for(b=1; b<=9; b++)

for(c=a+1; c<=9; c++)

for(d=1; d<=9; d++)

d{if((a*10+b)*(c*10+d)==(10*b+a)*(10*d+

c))

if((a!=b)&&(a!=c)&&(a!=d)&&(b!=c)&&

(b!=d)&&(c!=d))

printf("%d%d*%d%d=%d%d*%d%d\t"

,a,b,c,d,b,a,d,c);

}

}

#include

main()

{

int i, n,j=0;

printf("请输入一个整数n:");

scanf("%d" ,&n);

if(n>=1&&n<=100)

{

printf("1~100间可以被%d整除的数是:

\n",n);

for(i=n;i<=100;i+=n)

{ printf("%-3d",i);

j++;

if(j%5==0)putchar('\n');

}}

else

printf("输入错误!");

}

#include

int main()

{int x,y;

for(x=1;x<=9;x++)

{y=3*x*x+2*x+1;

printf("f(%d)=%d\n",x,y);}

}

#include

int main()

{

int n,m=0,i=0;

printf("求1到100之间可以被n整除的

整数\n");

printf("请输入整数n:");

scanf("%d",&n);

if(n>=1&&n<=100)

{ while(m<=100-n)

{ m+=n;

i++;

printf("%3d,",m);

if(i%5==0)putchar('\n');

}

printf("\n1到100一共有%d个整数可以被%d整除\n",i,n);}

else

printf("输入错误");

}

#include

{

int letters=0,space=0,digit=0,others=0;

char c;

printf("请输入一串字符:");

for(;(c=getchar())!='\n';)

{if(c>='a'&&c<='z'||c>='A'&&c<='Z')

letters++;

else if(c==' ')

space++;

else if(c>='0'&&c<='9')

digit++;

else

others++;

}

printf("你一共输入了%d个字母,%d个空格,%d 个数字,%d个其它字符\n",letters,space,digit,others);

}

使用数组

#include"string.h"

#include

{int k; static char st[1];

gets(st);

k=strlen(st); printf("%d",k);

}

生于忧患,死于安乐《孟子?告子》

舜发于畎亩之中,傅说举于版筑之间,胶鬲举于鱼盐之中,管夷吾举于士,孙叔敖举于海,百里奚举于市。

故天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。

人恒过,然后能改;困于心,衡于虑,而后作;征于色,发于声,而后喻。入则无法家拂士,出则无敌国外患者,国恒亡。

然后知生于忧患,而死于安乐也。

c语言三种循环结构

任务1:控制LED 小灯亮灭 1.流程图如下: 2.程序如下: #include #define uint unsigned int #define uchar unsigned char void main() //主函数 { while(1) //while死循环 { if((P3&0x10)==0) //判断P3口上的八位与00010000相与后是否等于0,若是, 则P3.4口为低电平,也就是接在P3.4口上的开关按上了。 P1=0xfe; //当P3.4口上的开关按上了,那么就由用户使接在P1.0口 上的灯亮。 else if((P3&0x20)==0) //和上面的一样,判断P3.5口上的开关是否按上了。 P1=0Xfd; //当P3.5口上的开关按上了,点亮接在P1.1口上的灯。 else if((P3&0x40)==0) //判断P3.6口的开关是否按上了。

P1=0xfb; //当P3.6口上的开关按上了,点亮接在P1.2口上的灯。 else if((P3&0x80)==0) //判断P3.7口的开关是否按上了。 P1=0xf7; //当P3.7口上的开关按上了,点亮接在P1.3口上的灯。 else P1=0xff; //当没有按键按下时,P1口上的全部灯都不亮。 } } 3.仿真结果如下: 4.仿真结果分析: 从仿真图以及程序可以看出,当P3.4口上的开关按下时,不管其它三个开关有没有按下,只有受P3.4口开关控制的那个灯(p1.0口上的灯)才亮,以此类推,当只有P3.7口上的开关按下时,P1.3口上的灯才亮,而其它灯不亮,因为控制其它灯的按键没有按下,接在其它灯的IO口处于高电平状态。

C语言循环结构教学设计方案

《C语言循环结构》教学设计方案 一、教学内容分析 循环结构是面向过程编程中三种结构中最重要的一种结构,学好它是学好这门课程的关键。循环结构的实质是重复执行一系列语句,这种重复性是在循环条件的有效控制之下完成的。程序的关键在于如何控制循环的条件,在恰当的时机执行循环或退出循环。 二、学习者分析 循环结构是一种比较复杂的结构,在C语言中,循环结构主要包括for、while和do-while 三种语句,其中for语句的应用更为普遍一些。循环语句的用法对于有程序设计经验的学生来说轻而易举,但是对于那些没有经验的初学者来说,难度却不小。在一堂课的设计过程中,引例的作用至关重要。一个好的引例能把抽象问题简单化、具体化,有利于学生理解掌握。在学习循环结构时可先利用现实生活中的一些具体实例来说明什么是循环以及为什么要研究循环让一名初学者尽快摆脱日常的思维定式,更加透彻地理解和掌握程序设计中的基本思想,领会程序设计的精髓,总结出程序设计中每一种程序设计结构的本质及适合解决的问题,是高级语言程序设计这门课程在讲授过程中,应该时刻注意的问题。 三、教学目标 1.知识与能力 掌握循环构造的基本特点;区分多种不同类型循环结构的运行过程;掌握循环结构的格式及应用方法。 2.过程与方法 首先学会区分多种不同类型的循环结构,而后学会定义及应用方法,利用上机熟练应用技巧。 3.情感态度与价值观 我们必须抱有自己想学习的心态,多去问老师一些问题,那么你的漏洞将会越来越少,程序量和代码量才会越来越多。

四、重点难点及处理 1.循环语句的的分类和定义 For循环、while循环和do-while循环 特点:在一个程序中可以通过变换语句来使用不同的循环语句,而不改变程序 的功能。 2.循环语句的引用 例如:要从1累加到100 使用For循环:for(sum,=0,i=1;i<=100;i++) sum=sum+i 使用while循环:while(i<=100) sum=sum+i 使用do-while循环:do {sum=sum+i;} while(i<=100) 五、教学准备 1. PPT教学课件 2. 实验操作:Visual C++6.0软件平台,PC电脑,教学机房,网络课堂。 六、教学思路(教学策略等) 在一堂课的设计过程中,引例的作用至关重要。一个好的引例能把抽象问题简单化、具体化,有利于学生理解掌握。在学习循环结构时可先利用现实生活中的一些具体实例来说明什么是循环以及为什么要研究循环。现在我们可以提出一个问题:在计算机程序设计的世界里是否也有类似的这种相同操作重复出现的问题呢?利用最简单累加求和的例子。 例:求1+2+3+4+5+…+100的和。 下面就可以引出本节课的重点,通过分别使用For循环、while循环和do-while循环来完成本程序,我们在整个过程中都做着重复的、相同的事情,也就是前面所说的循环,在试着写出比较简单的程序时,可以试着选择素数或者奇数累加来增加难度,还可以使得让学生接受和探究双重循环。 七、教学过程 教学引入 掌握掌握循环结构的基本特点:for语句、while语句和do-while语句 如何计算1+2+3+4+…+100

C语言 循环结构程序设计模拟题

第五章循环结构程序设计 一、选择题 1.while循环语句中,while后一对圆括号中表达式的值决定了循环体是否进行,因此,进入while循环后,一定有能使此表达式的值变为的操作,否则,循环将会无限制地进行下去。(0级) A)0 B)1 C)成立D)2 2.在do-while循环中,循环由do开始,用while结束;必须注意的是:在while表达式后面的不能丢,它表示do-while语句的结束。(0级) A)0 B)1 C);D), 3.for语句中的表达式可以部分或全部省略,但两个不可省略。但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。(0级)A)0 B)1 C);D), 4.程序段如下 int k=-20; while(k=0) k=k+1; 则以下说法中正确的是。(1级) A)while循环执行20次B)循环是无限循环 C)循环体语句一次也不执行D)循环体语句执行一次5.程序段如下 int k=1; while(!k==0) {k=k+1;printf("%d\n",k);} 说法正确的是。(1级) A)while循环执行2次B)循环是无限循环 C)循环体语句一次也不执行D)循环体语句执行一次6.以下for循环是。(1级) for(a=0,b=0;(b!=123)&&(a<=4);a++) A)无限循环B)循环次数不定C)执行4次D)执行5次7.在下列程序中,while循环的循环次数是。(1级) main( ) { int i=0; while(i<10) {if(i<1) continue; if(i= =5) break; i++; } ...... } A)1 B)10 C)6 D)死循环、不能确定次数8.程序段如下 int k=0; while(k++<=2) printf("%d\n",k);

C语言三种循环语句

三种基本的循环语句: for语句、while语句和do-while语句。 一、循环语句 (一)、for循环它的一般形式为: for(<初始化>;<条件表过式>;<增量>) 语句; 初始化总是一个赋值语句,它用来给循环控制变量赋初值;条件表达式是一个关系表达式,它决定什么时候退出循环;增量定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用;分开。 例如: for(i=1;i<=10;i++) 语句; 上例中先给i赋初值1,判断i是否小于等于10,若是则执行语句,之后值增加1。再重新判断,直到条件为假,即i>10时,结束循环。 注意: (1).for循环中语句可以为语句体,但要用{和}将参加循环的语句括起来。 (2).for循环中的初始化、条件表达式和增量都是选择项,即可以缺省,但;不能缺省。省略了初始化,表示不对循环

控制变量赋初值。省略了条件表达式,则不做其它处理时便成为死循环。省略了增量,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。 (3).for循环可以有多层嵌套。 例如: for(;;) 语句; for(i=1;;i+=2) 语句; for(j=5;;) 语句; 这些for循环语句都是正确的。 main() { int i,j; printf(i j\n); for(i=0;i<2;i++) for(j=0;j<3;j++) printf(%d %d\n,i,j); } 输出结果为: i j 0 0 0 1 0 2

1 0 1 1 1 2 用for循环求1+2+……+100的和: main() { int sn=0,i; for(i=1;i<=100;i++) sn+=i; /*1+2+……+100*/ printf(%d\n,sn); } 从程序可以看出,使用循环语句可以大大简化代码。(二)、while循环它的一般形式为: while(条件) 语句; while循环表示当条件为真时,便执行语句。直到条件为假才结束循环。并继续执行循环程序外的后续语句。 例如: #include stdio.h main() {

C语言循环结构小结

[C语言问题求解] 作者:苏丽媛 修订:李昕,高绍姝

1While循环 当要进行的操作相同,数据不同,但是这些数据可以形成某种序列时,考虑采用循环处理。 1.1while循环架构 while(条件) { 语句; } 1.2循环与选择结构的区别 循环是多次的(条件满足,进入循环,循环结束后返回,再次判断条件是否满足,不断循环,直到条件不满足,执行后继语句),选择结构仅仅是一次的(判断条件满足后执行,执行后结束,并开始执行后继语句) 1.3循环三要素 循环控制变量的初始化(初始化相当于设置了一个开始的值) 循环条件(条件相当于设置了一个结尾) 循环控制变量的改变(一定使之从开始到结尾的方向进行) 1.4例: #include #include int sum(int n) { int result=0; int i=1; ///i用来控制循环,称为循环控制变量//循环变量的初始化 while(i<=n) ///循环条件 { result = result + i; i++; ///即i=i+1//循环控制变量的改变 } return result; } int main() { int n; scanf("%d",&n); printf("%d\n",sum(n)); return 0; } 注:当循环结束后,循环控制变量的值是第一个不满足条件的值。 2for循环 2.1for循环结构 for(循环变量的初始化;循环的条件;循环的控制变量的改变) {

循环体; } for循环的小括号中,有且仅有两个分号,分割了循环的三要素。 for()后不能接分号,分号代表空语句,如果接了分号,意味着循环体不再属于循环,整个循环只循环了一条空语句。 循环的条件判断比循环控制变量的改变多一次(多的一次是条件不成立的第一个数)。 建议:知道循环次数采用for循环,反之,采用while循环。 循环中定义的控制变量属于局部变量,出了循环便不可用了,如果出了循环仍想使用该变量,就必须重新定义。 2.2例: #include int sum(int n) { int result=0; for(int i=1;i<=n;i++) { result = result + i; } return result; } int main() { int n; scanf("%d",&n); printf("%d\n",sum(n)); return 0; }

C语言第三次作业(循环)

C语言循环结构作业 一、实验目的: 1、熟悉掌握三种循环结构,while语句、do-while语句和for语句。 2、掌握在程序设计中用循环的方法实现一些常用算法。 3、进一步学习调试程序。 二、实验内容:(请写出程序代码及调试结果) 1.求Sn=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/(2n))其中n的值由键盘获得。 2.求S=aa….a -… -aaa - aa - a的值,其中a=3,n=6。 n个a 例如:22222-2222-222-22-2(例如:a=2,n=5) 3.根据以下公式求∏的值(要求满足精度0.0005,即某项小于0.0005 时停止迭代)∏/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+(1*2*3*4)/(3*5*7*9)+…+(1*2*3*4*…*n)/ (3*5*7*9*…*(2n+1))程序运行后,如果输入精度0.0005,则程序输出为3.140578 4.输出1至100之间每位数的乘积大于每位数的和的数 5.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,因此6是“完数”。编程序找出1000之内的所有完数及这些完数之和,并按下面格式输出因子:6的因子是1,2,3 …… 完数和是…。 6. 有一数列:

2/1,3/2,5/3,8/5,13/8,21/13,…求出这个数列的前20项之和。 7. 大于m且紧靠m的k个素数打印出来。 例如,若输入m=17, k=5 ,则应输出“19,23,29,31,37”。 8、求1!+2!+3!+4!+ (10) 9、猴子吃桃子问题。猴子第1天摘下若干个桃子,当即吃了一半, 还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。 到第10天早上想再吃时,就只剩一个桃子了。求第1天共摘多少个桃子。 10、输出以下图案: * *** ***** ******* ***** *** *

C语言实验三、循环结构程序的设计解答

实验三 循环结构程序设计 一、实验目的 1.熟练掌握三种循环语句的应用。 2. 熟练掌握循环结构的嵌套。 3. 掌握break 和continue 语句的使用。 4. 练习调试与修改程序。 5. 掌握一组数据求和、求平均值、求最大值最小值的计算方法。 6.掌握循环次数已知、未知的处理方法(精度的控制、结束标志的使用等) 7.掌握简单图形的打印输出处理。 二、实验内容 1.[目的]掌握循环次数已知的循环控制处理方法。 [题目内容]编写一个程序,其功能为:计算并输出1~10的平方值。 [输入]无 [输出]如下形式 1 squared is 1 2 squared is 4 3 squared is 9 4 squared is 16 5 squared is 25 6 squared is 36 7 squared is 49 8 squared is 64 9 squared is 81 10 squared is 100 [提示]使用三种循环语句均可。 #include "stdio.h" void main( ) { int i; for(i=1;i<=10;i++) printf("\n %d squared is %d\n",i,i*i); printf("\n"); } 2.[目的]掌握循环次数已知的循环控制处理方法。 [题目内容]编写一个程序,其功能为:计算并输出 ∑==100 1 2n n x 。 [输入]键盘输入x 值 [输出]计算结果 [提示]使用三种循环语句均可。 #include "stdio.h" void main() {

int n,x,sum=0; printf("请输入x:"); scanf("%d",&x); for(n=1;n<=100;n++) sum=sum+x*x; printf("sum=%d\n",sum); } 如果程序功能为:计算并输出 n x 1 2 ,要求从键盘输入n、x值,程序应如何修改? 3.[目的]掌握循环次数已知的循环控制处理方法。 [题目内容]编写一个程序,其功能为:求1-100之间的奇数之和。 [输入]无 [输出]计算结果 [提示]使用三种循环语句均可。 #include "stdio.h" void main() { int i,sum=0; for(i=1;i<=100;i=i+2) sum=sum+i; printf("sum=%d\n",sum); } 4.[目的]掌握循环次数已知的循环控制处理方法。 [题目内容]编写一个程序,其功能为:输出100以内能被7整除的数。 [输入]无 [输出]判断结果 [提示]使用三种循环语句均可。 #include "stdio.h" void main() { int i,sum=0; for(i=1;i<=100;i++) if(i%7==0) printf("%d\t",i); } 5.[目的]掌握循环次数已知的循环控制处理方法。 [题目内容]编写一个程序,其功能为:计算并输出一年12个月的总降雨量和平均降雨量。 [输入]12个月的降雨量 [输出]总降雨量和平均降雨量 [提示]使用for循环语句,和值、平均值变量采用双精度类型,和值初值设为零。#include "stdio.h" void main() {

相关文档
最新文档