关闭

第四周《C语言及程序设计》实践项目39 问题求解——求素数

677人阅读 评论(0) 收藏 举报
分类:
<span style="color: rgb(85, 85, 85); font-family: 'microsoft yahei'; font-size: 15px; line-height: 35px;">【项目1-完数】</span><pre name="code" class="cpp">/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目2 - n=a!+b!+c!】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 8 月 29 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:求满足条件n=a!+b!+c!的所有三位数n并输出,其中a,b,c分别为n的百、十、个位数。
 */ 
#include<stdio.h>
int main()
{
	int n,a,b,c,m,D,i;
	for(n=100;n<1000;++n)
	{
		a=n/100;
		b=(n/10)%10;
		c=n%10;
		D=0;
		for(m=1,i=1;m<=a;++m)
		i*=m;D+=i;
		for(m=1,i=1;m<=b;++m)
	    i*=m;D+=i;
		for(m=1,i=1;m<=c;++m)
		i*=m;D+=i;
		if(n==D)
		printf("%d",n);
		
	}
	return 0;
}



运行结果


【项目2 - n=a!+b!+c!】

/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目2 - n=a!+b!+c!】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 8 月 29 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:求满足条件n=a!+b!+c!的所有三位数n并输出,其中a,b,c分别为n的百、十、个位数。
 */ 
#include<stdio.h>
int main()
{
	int n,a,b,c,m,D,i;
	for(n=100;n<1000;++n)
	{
		a=n/100;
		b=(n/10)%10;
		c=n%10;
		D=0;
		for(m=1,i=1;m<=a;++m)
		i*=m;D+=i;
		for(m=1,i=1;m<=b;++m)
	    i*=m;D+=i;
		for(m=1,i=1;m<=c;++m)
		i*=m;D+=i;
		if(n==D)
		printf("%d",n);
		
	}
	return 0;
}

运行结果


心得体会

核心算法就是求n!,利用for循环,设两个变量


【项目3-反序数】

/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目3-反序数】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 8 月 29 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:<span style="color: rgb(85, 85, 85); font-family: 'microsoft yahei'; font-size: 15px; line-height: 35px;">(2)求1000000以内的正整数n,要求9n是n的反序数。</span>
 */ 
#include<stdio.h>
int main()
{
	int i;
	for(i=1;i<=1000000;++i)
	{
		int n=0,a;
		a=i;
		while(a>0)
		{
			n=n*10+a%10;
			a=a/10;
		}
		if(n==9*i)
		printf("%d\n",i);
	}
}
运行结果


【项目3-反序数】

/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目3-反序数】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 8 月 29 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:(1)输入一个正整数,输出它的反序数(反序数,即将其所有位的数字反过来。例如,123是321的反序数)
 */ 
#include<stdio.h>
int main()
{
	int a,b,n;
	scanf("%d",&n);
	a=n;
	b=0;
	while(a>0)
	{
		b=b*10+a%10;//%10相当于取n的个数 
		a=a/10;//相当于筛选掉个位数 
	}
	printf("%d的反序数为%d\n",n,b);
	
	return 0; 
 } 

运行结果



心得体会

核心的就是数的调换顺序

【项目4-回文数】

/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目4-回文数】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 8 月 29 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:(1)输入一个正整数,判断其是否为一个回文数(例1221、12321都是回文数,正着看、倒着看,是同一个数)。
 */ 
#include<stdio.h>
int main()
{
	int a,n,sum;
	scanf("%d",&n);
	a=n;
	sum=0;
	while(a>0)
	{
		sum=sum*10+a%10;
		a=a/10;
	}
	if(sum==n)
	printf("Yes!!!\n");
	else
	printf("No!!!\n");
	
	return 0;
 } 

运行结果



【项目4-回文数】

/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目4-回文数】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 8 月 29 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:(2)输出10000以内的所有回文数。
 */ 
#include<stdio.h>
int main()
{
	int a,sum,i;	
	for(i=1;i<=10000;++i)
	{
	a=i;
	sum=0;
	while(a>0)
	{
		sum=sum*10+a%10;
		a=a/10;
	}
	if(sum==i)
	printf("%d\n",i);
	}
	
	return 0;
 } 

运行结果



【项目5-阿姆斯特朗数】

/*  
 * Copyright (c) 2016, CSDN学院  
 * All rights reserved.  
 * 文件名称:【项目5-阿姆斯特朗数】.cpp  
 * 作    者:张易安  
 * 完成日期:2016年 8 月 29 日  
 * 版 本 号:v1.0  
 *  
 * 问题描述:如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。
 * 如 407=43+03+73就是一个阿姆斯特朗数。试编程求1000以内的所有阿姆斯特朗数。
 */ 
#include<stdio.h>
int main()
{
   int a,sum,i,b;
   for(i=1;i<=1000;++i)
   {
   	sum=0;
   	a=i;
   	while(a>0)
   	{
   		b=a%10;
   		sum+=b*b*b;
   		a=a/10;
	}
	if(sum==i)
	printf("%d\n",sum);
   }
}
运行结果


【项目6-回文日】

。。。就不传了


0
0
查看评论

第四周《C语言及程序设计》实践项目11 体验结构体

【项目1-复数结构体】 /* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目1-复数结构体】.cpp * 作 者:张易安 * 完成日期:2016年 9 月 17 日 * 版 ...
  • weixin_35827498
  • weixin_35827498
  • 2016-09-17 19:11
  • 289

第二周《C语言及程序设计》实践项目35 问题求解方法——迭代

【项目3:Bessel函数】 /* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目3:Bessel函数】.cpp * 作 者:张易安 * 完成日期:2016年 8 月 18 日 ...
  • weixin_35827498
  • weixin_35827498
  • 2016-08-18 21:15
  • 789

C语言及程序设计初步例程-39 求素数算法

贺老师教学链接  C语言及程序设计初步 本课讲解判别m是否为素数#include int main() { int i, m; int is_prime=1; scanf("%d", &m); for(i=2...
  • sxhelijian
  • sxhelijian
  • 2015-01-28 14:43
  • 2200

第四周《C语言及程序设计》实践项目40 问题求解方法——穷举

【项目1-小明借书】 /* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目1-小明借书】.cpp * 作 者:张易安 * 完成日期:2016年 8 月 30 日 * 版 本 号:v...
  • weixin_35827498
  • weixin_35827498
  • 2016-08-30 23:53
  • 821

C语言及程序设计[套餐]课程主页

课程链接:http://edu.csdn.net/combo/detail/30,提供所有的视频和课件下载。  三部分的课程主页,提供了为每一课时配套的自测、示例下载,以及程序阅读、程序填空、实践项目、参考解答等。这是本课最具价值的部分,是保证学习效果的根本保证。请在看视频基础上,完成相关的实践。 ...
  • sxhelijian
  • sxhelijian
  • 2015-07-11 11:30
  • 8399

《C语言及程序设计》实践项目——动态数组

返回:贺老师课程教学链接【项目1-学生人数没个准】输入学生成绩,输出高于平均成绩的学生序号和成绩。其中学生人数不定,可能10个,可能1000。在录入成绩之前,学生人数由键盘输入。由于要先求出平均成绩,然后才能确定输出哪些学生的信息,所以需要一个数组先将学生信息保存下来。考虑学生人数不定,用动态数组是...
  • sxhelijian
  • sxhelijian
  • 2015-05-02 11:48
  • 1553

《C语言及程序设计》实践项目——链表初步

返回:贺老师课程教学链接【项目1-链表的合并】 输入一个整数m,表示A链表的长度,再输入m个数作为A链表中的m个数据元素,建立链表A,其头指针为heada。输入一个整数n,表示B链表的长度,再输入n个数表示B链表中的n个数据元素,建立链表B,其头指针为headb。输入i、len、j,将要从单链表A...
  • sxhelijian
  • sxhelijian
  • 2015-07-05 10:24
  • 1318

《C语言及程序设计》实践项目——使用变量

返回:贺老师课程教学链接  C语言及程序设计初步  【修改程序】下面的程序要求两个并联电阻阻值。程序中存在语法错误,请修改程序,使之能正确求解问题。#include int main( ) { float r1, r2; printf(&qu...
  • sxhelijian
  • sxhelijian
  • 2015-01-06 10:24
  • 2322

《C语言及程序设计》实践项目——函数应用

返回:贺老师课程教学链接【项目1-k次方之和】设计程序,计算:请在下面的程序结构基础上完成设计。#include int power(int m,int n); //求m的n次方(m^n) int sum_of_power(int k,int n); //从1^k到n^k的累加和 int main(...
  • sxhelijian
  • sxhelijian
  • 2015-04-23 22:04
  • 1432

《C语言及程序设计》实践项目——文件操作

返回:贺老师课程教学链接【项目1 - 小玩文件】 1、下面程序的功能是统计文本文件abc.txt中的字符个数,请填空将程序补充完整。#include <stdio.h> #include <stdlib.h> int main() { FILE *fp; i...
  • sxhelijian
  • sxhelijian
  • 2015-07-07 11:10
  • 1859
    个人资料
    • 访问:14789次
    • 积分:450
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:3篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档