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(){floatx,amax,amin;scanf(%f,&x);amax=x;amin=x;while(①){if(xamax)amax=x;if(②)amin=x;scanf(%f,&x);}printf(\namax=%f\namin=%f\n,amax,amin);}7、使用循环语句输出以下图形8、有一个数学等式:AB*CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。8、一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少)。分析:这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,问题化为三元一次方程组:100=x*5+y*3+z/3100=x+y+z这里x,y,z为正整数,且z是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z的取值范围:1)x的取值范围为1~202)y的取值范围为1~333)z的取值范围为3~99,步长为3对于这个问题我们可以用穷举的方法,遍历x,y,z的所有可能组合,最后得到问题的解。数据要求问题中的常量:无问题的输入:无问题的输出:intx,y,z/*公鸡、母鸡、小鸡的只数*/初始算法1.初始化为1;2.计算x循环,找到公鸡的只数;3.计算y循环,找到母鸡的只数;4.计算z循环,找到小鸡的只数;5.结束,程序输出结果后退出。算法细化算法的步骤1实际上是分散在程序之中的,由于用的是for循环,很方便的初始条件放到了表达式之中了。步骤2和3是按照步长1去寻找公鸡和母鸡的个数。步骤4的细化4.1z=14.2是否满足百钱,百鸡4.2.1满足,输出最终百钱买到的百鸡的结果4.2.2不满足,不做处理4.3变量增加,这里注意步长为3程序代码如下#includestdio.hmain(){intx,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=78cock=8,hen=11,chicken=81cock=12,hen=4,chicken=84对于这个问题实际上可以不用三重循环,而是用二重循环,因为公鸡和母鸡数确定后,小鸡数就定了,即。请同学们自己分析二重循环和三重循环的运行次数,做为练习自己调试这一方法。程序修改:1、统计使用三重循环的循环次数2、使用二重循环完成,并统计循环次数#includestdio.hintmain(){inti1,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);}}return0;}#includestdio.hvoidmain(){inta,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);}}#includestdio.hmain(){inti,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');}}elseprintf(输入错误!);}#includestdio.hintmain(){intx,y;for(x=1;x=9;x++){y=3*x*x+2*x+1;printf(f(%d)=%d\n,x,y);}}#includestdio.hintmain(){intn,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);}elseprintf(输入错误);}#includestdio.hintmain(){intletters=0,space=0,digit=0,others=0;charc;printf(请输入一串字符:);for(;(c=getchar())!='\n';){if(c='a'&&c='z'||c='A'&&c='Z')letters++;elseif(c=='')space++;elseif(c='0'&&c='9')digit++;elseothers++;}printf(你一共输入了%d个字母,%d个空格,%d个数字,%d个其它字符\n,letters,space,digit,others);}使用数组#includestring.h#includestdio.hvoidmain(){intk;staticcharst[1];gets(st);k=strlen(st);printf(%d,k);}

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功