C语言典型例题(二级考试) - 图文

例7:把100~200之间不能被3整除的数输出;并控制一行输出10个数据。main()

{ int n, c=0;printf(“\\n”);

for(n=100; n<=200; n++){ if(n%3==0) continue;printf(“%d”, n); c++;

printf(“%s”, c==0? ”\\n” : ”???”);}}

例8:输入两个正整数m和n,求其最大公约数和最小公倍数。算法1:(穷举法)

1)找出m、n中的较小者?t;

最大公约数肯定在t、t-1、t-2、…1之间;2) 测试m%i和n%i是否同时为0 ;除数i依次取t、t-1、t-2 … 1 ;

测试条件成立时的i值即为最大公约数;3) 最小公倍数:m×n/最大公约数;

main( )

{ int m, n, t, i;

printf(“Enter m,n:”);

scanf(“%d,%d”, &m, &n);t=m=1; i--)

if (m%i==0&&n%i==0) break;

printf(“GCD=%d,SCM=%d\\n”, i, m*n/i);}

18,12↙17,3↙GCD=6,SCM=36 GCD=1,SCM=51

算法2:(辗转相除法)main( )

{ int a, b, m, n, r, t;printf(“Enter a, b:”);

scanf(“%d,%d”, &a, &b);m=a, n=b; /*产生a、b副本*/if(m

{ m=n; n=r; r=m%n; }printf(“GCD=%d,SCM=%d”,

n, a*b/n);

}

输入a、ba ?m, b ?n

m>n?T F?r!=0?

m?n

求m%n ?r

n ?mr ?nm%n ?r

输出n、a*b/n

联系客服:779662525#qq.com(#替换为@)