首页 > 编程语言 >循环程序设计的实际应用——两道题目

循环程序设计的实际应用——两道题目

时间:2024-11-02 23:44:39浏览次数:6  
标签:10 ld 题目 int sum num printf 程序设计 两道

一、设计一个程序,使之能够输入够从键盘任意输入一个正整数 n 要求:(1)求出它是几位数;(2)按逆序分别输出每一位数字; (3)计算 n 的每一位数字相加之和并输出。

例如输入 n=1234,则输出 n 是 4 位数,各位数字 是 4,3,2,1,数字之和为 10。

思路:在这个程序中,我们需要将数字倒过来排序,不如先想想怎么让它倒过来排。

因为我们不可能知道用户会输入几位数,不如我们从它的个位一点点取出来,于是我写成了这样:

long int num,a;
printf("Input a positive integer:");
scanf("%ld",&num);
printf("Each digit in reverse order:");
	for(;num!=0;)
	{
		a=num%10;
		printf("%ld ",a);
		num/=10;
	}

在这个程序中,我们每次都是将用户输入的数除以10取余,这样留下来的就是个位数,知道只剩个位,并输出出去,于是实现了从右往左的个位数剥离。再然后对原数值除以10,就把取出来的个位数砍掉了(因为C++不会保留小数点也不会自动四舍五入除非你手动加了函数)。并且以此循环往复。

然后再根据题目补足其他要求,这个时候就简单多了,最后写成了这样:

#include <stdio.h>
int main()
{
	int cnt;
	long int num,a,sum=0;
	printf("Input a positive integer:");
	scanf("%ld",&num);
	printf("Each digit in reverse order:");
	for(;num!=0;cnt++)
	{
		a=num%10;
		printf("%ld ",a);
		num/=10;
		sum+=a;
	}
	printf("\nIt has %d digit,and the sum is %ld",cnt,sum);
	return 0;
 } 

然后就实现题目中的效果。


二、一个正整数如果恰好等于它的因子之和,则称其为“完数”。编程找出1000以内的完数。

例如: 6 的因子是1,2,3而6=1+2+3

根据题意,我们首先要计算一个数的因子,而最经典的一种算法便是使一个数(a)去依次除以一个逐渐增大的数(i)。同时,为了控制范围,优化算法,我们可以使得运算到目的数的一半就停下。

比如:

int arr[20];
int a;
int now;
int sum;
for (int i = 1; i <= (a/2 +1); i++) 
	    {
		    if (a % i == 0) 
		    {
			   arr[now] = i;
			   sum+=i;
			   now++;
		    }
	    }

并且,我将计算得到的数存进数组arr当中,并对得到的因子求和以便下一步运算(对比目的数是否是因子之和)。

然后把目的数在1000以内寻找的条件置入,就变成了:

#include<stdio.h>
#include<math.h>
int main()
{
	for(int a=2;a<=1000;a++)
	{
		int now=0;
		int arr[64]={0};
		int cnt=0;
		int sum=0;
		for (int i = 1; i <= (a/2 +1); i++) 
	    {
		    if (a % i == 0) 
		    {
			   arr[now] = i;
			   sum+=i;
			   now++;
		    }
	    }
		if(sum==a)
		{
			printf("%d its factors are",a);
		    while(arr[cnt])
		    {
		    	printf("%d ",arr[cnt]);
		    	cnt++;
			}
			printf("\n");
		}
	}
	return 0;
}

那么,这下当因子总和sum与数字a本身相符合时,就会输出对应结果,如果不符,那么for循环重置数组arr和各个计数器,就能防止出错了。

输出结果:


标签:10,ld,题目,int,sum,num,printf,程序设计,两道
From: https://blog.csdn.net/2402_88427700/article/details/143457549

相关文章

  • 循环程序设计(3)——break,countine,goto和exit语句
    一、break语句  break语句是用于结束当前一层循环的语句,其效果如下:while(表达式1) ··· if(表达式2) break; ···}循环后的第一条语句;或do ··· if(表达式2) break; ···}while(表达式1);循环后的第一条语句;或for(;......
  • 基于微信小程序的食堂点餐小程序设计与实现(源码+lw+部署+讲解)
    文章目录1.前言2.详细视频演示3具体实现截图3.1小程序端部分效果3.2后台管理端部分效果4.技术可行性分析5.技术简介5.1后端框架SpringBoot5.2微信小程序5.3系统开发平台6.业务流程分析7.代码参考8.数据库参考9.为什么选择我们10.源码及文档获取1.前言博主介绍:✌C......
  • 2024-2025-1 20241311 《计算机基础与程序设计》第六周学习总结
    学期(2024-2025-1)学号(20241311)《计算机基础与程序设计》第六周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第六周作业)这个作业的目标<写上具体......
  • 学期:2024-2025-1 学号:20241303 《计算机基础与程序设计》第六周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第六周作业)这个作业的目标<写上具体方面>自学教材《计算机科学概论(第七版)》第7章,并完成云班课测试,《C语言程......
  • 2024-2025-1 20231406《计算机基础与程序设计》第五周助教总结
    2024-2025-120231406《计算机基础与程序设计》第五周助教总结课程答疑由于这两周进行了C语言第一次实验,同学们的问题主要集中在实验上C语言开发环境的搭建集中体现于在ESC上新建目录,编译程序,运行代码等步骤。主要原因是大家对一些指令不太理解,经常出现输入错误的情况。希望......
  • 2024-2025-1 20241316《计算机基础与程序设计》第六周学习总结
    2024-2025-120241316《计算机基础与程序设计》第六周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第六周作业这个作业的目标计算机科学概论第7章《C语言程序设计》第5章作业正......
  • 2024-2025-1 20241425《计算机基础与程序设计》第6周学习总结
    2024-2025-120241425《计算机基础与程序设计》第6周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/homework/13276这个作业的目标计算机科学概论(第七版)第7章......
  • Linux笔试题目记录(1)
    文章目录一、Linux文本三剑客---grep、sed、awk二、Linux内核模块相关命令三、Linux内核日志级别四、Linux内存管理之kmallockzallocvmallocmalloc和get_free_page()的区别五、Linux的调度策略六、(多选)下列哪些是linux驱动开发中常用的调试技术()七、简述GDB常见的调......
  • 学期(2024-2025-1) 学号(20241420) 《计算机基础与程序设计》第六周学习总结
    学期(2024-2025-1)学号(20241420)《计算机基础与程序设计》第六周学习总结作业信息这个作业属于哪个课程<班级链接>(如[https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP))这个作业要求在哪里<作业要求链接>(https://www.cnblogs.com/rocedu/p/9577842.html#WEEK06......