简单if解法的c语言程序设计教程课后答案,C语言程序设计基础教程 课后习题答案(清华大学出版社 于延编) 自己做的 欢迎校正...

3.判断R=0,正确则N为最大公约数否则进行下一步 4.将N赋值给M,将R赋值给N,重复第一步 3.请叙述算法都有哪些特性。

答:①有穷性②群定性③有效性④有零个或多个输入⑤有一个或多个输入?? 4.请叙述什么是结构化程序设计以及结构

答:①只要有几种简单类型的借口,就可以构成任意复杂的程序。这样可以使程序设计规范化,便于用工程的方法来机型软件生产,??由顺序结构,选择结构,循环结构这三种基本结构组成的程序就是结构化程序。

二、算法设计题

1.设计算法求1+2+3+…+100的和。 #include#includemain(){

int I,S = 0;

for(I = 1;I<=100;I++) //求1-100的和 S=S+I;

printf(\ system(\ }

2.已知两个自然数M和N, 请设计算法输出它们的 最小公倍数。 #include #include #include

int fmax(int m,int n) //求最大公约数 {int r; r=m%n; while (r!=0)

{m=n;n=r;r=m%n;}

return n; }

int fmin(int m,int n) //最小公倍数=两个数的积除两个数的最大公约数 { return m*n/fmax(m,n);} main() { int a,b;

scanf(\

printf(\system(\

3.已知一个自然数N,请设计算法输出它所有真 约数的和。

#include #include

int f(int x) { int n=0,i,k=1,flag=1; while(flag) //求一个数的约数 { flag=0; for(i=k;x%i;i++); k=i+1;

if(x!=i) //判断是否到这个数本身 { flag=1; n+=i; //将约数累加到n中 } } return n; //是这个数本身时返回值为n }

int main() {

int m;

scanf(\

printf(\真约数之和=%d\\n\system(\

4.设计算法求出10000以内所有孪生素数对。 #include #include

int f(int x) //判断一个数是否为素数 {

int i; for(i=2;x%i;i++); if(x==i) return x; else return 0; }

main() {

int i,j=1,m=1,n=3; //n=3 n永远为m前一个素数

for(i=5;i<10000;i++) //因为最小的孪生素数对从为3,5 {

if(f(i)==0) //如果i非素数跳出这次循环进入下一次 continue;

m=f(i);

if(m-n==2) //输出孪生素数 {

printf(\第%d组孪生素数: %d , %d\\n\ j++; }

n=m; //n为m前一个素数 }

system(\

}

5.设计算法输出10000以内所有亲和数对。 //如果两个数a和b,a的所有真因数之和等

//于b,b的所有真因数之和等于a,则称a,b是一对亲和数。 真因数:除了他本身 #include int qhs(int a) { int i; int s = 0; for (i = 1; i * i < a; i++) //求一个数的真约数和 if (a % i == 0) s += i + a / i; if (i * i == a) s += i; s -= a; return s; } int main(void) //返回值为空 { int i, j; for (i = 0; i < 100000; i++)

{ j = qhs(i); if (j > i && i == qhs(j))//判断这个数是否有真约数有的话输出 printf(\ } scanf(\ return 0; }

6.已知一个自然数N,设计算法输出它的素分解 式。

#include #include

void f(int x) { int i,flag=1,k=1; while(flag) { for(i=k;x%i;i++); k=i+1; printf(\ x=x/i; if(x<2||i>=x) flag=0; } if(x>1)

printf(\}

int main() { int n; scanf(\ f(n);

system(\

7.输入一个正整数,输出其所有正真约数,写出 算法。

#include#includevoid yueshu(int num) { for(int i=1;i<=num;i++) { if(num%i==0) printf(\

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值