c语言循环常用算法有哪些,c语言循环结构经典算法.doc

猶綵結拘链典真域

1、编程输出1至100之间能被17整除的自然数(要求使用continue语句)

算法分析:

予以输出,否则不输出如果自然数i被17整除

予以输出,否则不输出

源程序1:

#include void main()

{

int i;

for(i=l; i<=100; i++){

if(i%17==0) printf(M%4dn,i);

}

printf(”\n");

}

源程序 2: (with Continue)

#include void main()

{

int i;

for(i=l; i<=100; i++){

if (i%17!=0) continue;

}

printf(”\nn);

2、求100之内能被17整除的最大自然数(要求使用break语句)

算法分析1:

如果自然数i (i=l,2,...,100)被17整除且大于其他能被17整除的自然数,保存下来

循环结束时予以输出 源程序1:

#include void main()

{

int i,max=0 ;

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

if (i%17==0 && i>max) max=i;

printf(”%d\n",max);

}

算法分析2:

如果自然数i (i=100,99,...,l)被17整除,提前结束循环,输出i即可 源程序 2: (with break)

#include void main()

int i,max=O ;

for(i=100; i>=l; i—)

if (i%17==0) break;

printf(" %d\n",max);

3、编程打印出下列图案:

<2^

氺氺氺

算法分析:

该图案共9行,每行由空格’’、星号’*’、换行’\if组成

第1至第5行的空格呈递减趋势(4,3,2,1,0),即每行的数量等于5-i;而’*’呈增加趋 势(1,3,5,7,9),即每行的数量等于2i-l;

第6至第9行的空格呈增加趋势(1,2,3,4),即每行的数量等于i-5;而’*’呈减少趋势 (7,5,3,1),即每行的数量等于2(9-i)+l;

(4)每行末尾都是1个换行符

源程序:

#include void main()

{

int i J ;

for(i=l; i<=5; i++) {//先输出 1?5 行

for(j=l;j<=5-i; j++) putchar(’ ’); //先输出 5-i 个空格 for(j=l;j<=2*i-l; j++) putchar(’*’); //再输出 2i-l 个*

//行尾换行putchar(’\n’)

//行尾换行

for(; i<=9; i++) {for(j=l;j<=i-5; j++)//再输出

for(; i<=9; i++) {

for(j=l;j<=i-5; j++)

//再输出6?9行

putchar(’ ’);

for(j=l;j<=2*(9-i)+l; j++) putcharf*’); putchar(An’);

//先输出i-5个空格

//再输出2(9-i)+l个*

//行尾换行

思考:

本程序中使用函数putcharO实现字符输出,如果使用printfO,括号内的参数使用 单引号还是双引号?

第二个for循环的表达式1是空的,为什么?

如果把第二个for循环改成如下形式,循环体应该怎样更改?

for( i=4; i>=l; i—){

/*请在此处填写循环体语句

*/

4、分析下列程序的输出结果:

#include

void main()

{

int i=-l,j=3,c ;

do{

c= (++i<0)&&!(-j==0);

}while(c);//当C非0时循环

printf("o/od,%d\n,\ ij);

}

结果:

1, 3

分析:

循环次数

未知

首先执行++i,令i由-1增为0,表达式++i的值亦为0 关系运算++i<0的值为0,故运算&&的结果为0, c的值为0

!(--j==0)是&&的第二操作数,在己经明确&&结果为0时不再计算,因此j的值没有减t 由于do-whik语句的循环条件是c,即c!=0,而当第一次循环结束时c为0,故结束循环

5、输入两个正整数m和n,求最大公约数p和最小公倍数q。

算法分析:

假如m〈=0或n<=0,提示输入有误,结束程序。

假如两者均为正数,取小者赋予m,大者赋予n.

先求最大公约数p:可知p必

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值