c语言算法上机总结,C语言算法全总结.doc

算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。

一、计数、求和、求阶乘等简单算法

此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。

一般情况下,计数初值为0、求和初值为0、阶乘初值为1

例1:用随机函数产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。

本题使用数组来处理,用数组a[100]存放产生的确100个随机整数,数组x[10]来存放个位上的数字分别为 1,2,3,4,5,6,7,8,9,0的数的个数。即个位是1的个数存放在x[1]中,个位是2的个数存放在x[2]中,……个位是0的个数存放在 x[10]。

void main()

{ int a[101],x[11],i,p;

for(i=0;i<=11;i++)

x[i]=0;

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

{ a[i]=rand() % 100;

printf("%4d",a[i]);

if(i%10==0)printf("\n");

}

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

{ p=a[i]%10;

if(p==0) p=10;

x[p]=x[p]+1;

}

for(i=1;i<=10;i++)

{ p=i;

if(i==10) p=0;

printf("%d,%d\n",p,x[i]);

}

printf("\n");

}

采用举穷法对满足条件的数据进行处理

例:求1到100范围内能被2或3整除的数之和

Main()

{int I,s=0;

For(i=1;i<=100;i++)

{ If(i%2==0||i%3==0)

S=s+I;

}

Printf(“%d”,s);

}

例:求N的阶乘

Main()

{int I;s=1,n;;

Scanf(“%d”,&n);

For(i=1;i<=n;i++)

S=s*I;

Printf(“%d”,s);

}

判断素数 (穷举法)

只能被1或本身整除的数称为素数 基本思想:把m作为被除数,将2—INT(m-1)作为除数,如果都除不尽,m就是素数,否则就不是。(可用以下程序段实现)

void main()

{ int m,i,k;

printf("please input a number:\n");

scanf("%d",&m);

k=sqrt(m);

for(i=2;i

if(m%i==0) break;

if(i>=k)

printf("该数是素数");

else

printf("该数不是素数");

}

将其写成一函数,若为素数返回1,不是则返回0

int prime( m%)

{int i,k;

k=sqrt(m);

for(i=2;i

if(m%i==0) return 0;

return 1;

}

四、验证哥德巴赫猜想

(任意一个大于等于6的偶数都可以分解为两个素数之和)

基本思想:n为大于等于6的任一偶数,可分解为n1和n2两个数,分别检查 n1和n2是否为素数,如都是,则为一组解。如n1不是素数,就不必再检查n2是否素数。先从n1=3开始,检验n1和n2(n2=N-n1)是否素数。然后使n1+2 再检验n1、n2是否素数,… 直到n1=n/2为止。

利用上面的prime函数,验证哥德巴赫猜想的程序代码如下:

#include "math.h"

int prime(int m)

{ int i,k;

k=sqrt(m);

for(i=2;i

if(m%i==0) break;

if(i>=k)

return 1;

else

return 0;

}

main()

{ int x,i;

printf("please input a even number(>=6):\n");

scanf("%d",&x);

if (x<6||x%2!=0)

printf("data error!\n");

else

for(i=2;i<=x/2;i++)

if (prime(i)&&prime(x-i))

{

printf("%d+%d\n",i,x-i);

pr

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言实训心得总结.doc C语言实训心得 10903090113 李新程 在初学C语言的一个学期后,我们进行了C语言实训阶段,尝试编写一个比较复杂的程序系统。在为期两周的时间中,我们同组的同学共同的感受是:C语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言实训的复杂程序。在这里,我作为其中的参与者,感触良多。 在这次实训中,我对对C语言有了一个更深的了解认识,也对这个学期学的知识得到巩固,还尝试运行编程,每次运行程序成功,让我对下面的项目就充满信心。通过自己与同学合作编写程序,最终把最初的理论知识转化基本技能。这次的实训,使我对C语言的学习产生浓厚的兴趣。 还是这次实训,最令人激动的就是合作做项目,虽然那只是一个很小很小的项目。每天大家来得很早,大家在一起学习,取长补短,我们很好的在实训中长知识,提高我们的学习热情。实训中深切体会到了老师认真负责的伟大的精神和热情为同学指导的促学方式,虽然对有些时候老师没给我们指出解决问题的方法有些小抱怨,但是到了结束时才知道,这种教学让我们自己学会了自学,学会了去看懂别人的代码。更多是老师给的感动,每天在我们来之前就到了教室,在讲课中海给我们分享他在公司上班的一些心得和体会,还有那些我们应该注意的事项,这些是平时上课时无法学到的,是更深层次的巨大收获。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值