同一个题目,不同的程序,同样的结果,大家爱binge(谁)

本周有一道题目:

下面将陆续列出不同同学设计的的程序,各有千秋,肥瘦不同,但结果相同,大家喜欢谁?从中也可以看出设计程序美妙!

原题:编程实现,输入一个整数,计算整数是几位数,输出各位数,并计算各位数的总和。

同学一:排骨型

#include <iostream>

using namespace std;

int main()
{
    int num,i=0,add=0;//i作为计数
     cout << "请输入一个数字:" << endl;
    cin >> num;
    while (num!=0)
    {
        add=add+num%10;//求模得个位上数值且相加
        num=num/10;//降低一位
        i++;
    }
    cout << "该数由"<<i<<"位组成,各个数位上数之和为:"<<add<<endl;
    return 0;
}


 

同学二:丰满型

/***************************************************
***      功能:计算一个整数的位数,输出各位数,     ***
***	        计算各位数的总和	         	 ***
***		     BY:HH                       ***
***************************************************/

#include<iostream>
using namespace std;
int main()
{
    long int number,num;
	int weishu=0,tmp,sum=0;
	cout<<"   请输入一个小于十位的整数:";//长整形最大也就识别十位,再高多一位就溢出了。
	cin>>number;							//输入一个数并保存到number中
	for(num=10;num<=10000000000;num=num*10)	//开始判断,一开始比较值设置为10,不设为1是因为任何数除以1都是本身
	{									   //每次执行语句之后,num的值都要乘以10,即进一位。
		weishu++;	
		if(number<num)						//当我们输入的数小于一直在增加的num值后,我们就退出循环。
			break;
	}
	cout<<"\n******************************\n";
	cout<<"   位数:"<<weishu;					//将位数打印出来
	cout<<"\n******************************\n";
	cout<<"   各位上的数分别为:";				//	以下为打印各位上的数字,有些人或许会问,可不可以用If.
	while(num>1)					//答案是可以,但还要增加一个goto语句。因为goto语句降低了程序的可读性,所以一般不采取
	{	
		num=num/10;					//利用我们上面的比较的num值来做除数
		tmp=number/num;				//先算出最高位的数字
		number=number%num;			//除去最高位的数字,取剩下的数字并存放在number中
    	sum+=tmp;					//将各位上的数字逐个相加
		cout<<tmp<<' ';				//每取出一个数就打印一次。
	
	}
	cout<<"\n******************************\n";
	cout<<"   各位上的数值之和: "<<sum<<"\n";
    return 0;
}


同学三:一板一眼忠厚型

 

#include <iostream> 
using namespace std;

 int main() 
{
	 long sum=0,num,j,k,i=0;       //i存放它是几位数字,sum存放各个位数相加之和,num获取数字
	 cout<<"请输入一个整数"<<endl;
	 cin>>num;
	 k=num;
	 while(num!=0)                //计算它是几位数字
	 {
		 num=num/10;
		 i++;
	 }
	 cout<<"它总共由"<<i<<"位数字组成"<<endl;
	 for(j=0;j<i;j++)			//计算各个位数相加之和
	 {
			sum+=k%10;
			k=k/10;
	 }
	 cout<<"各个位数相加之和为"<<sum<<endl;
	 return 0;
}

同学四:还属小胖型,但是一个可爱小胖。

  

#include "stdafx.h"   
#include<iostream>   
using namespace std;  
int _tmain(int argc, _TCHAR* argv[])  
{  
    int a,b,c,d=0;  
    cout<<"please input a number"<<endl;  
    cin>>a;  
    for(b=10;b<=a;b*=10)  
    {  
     if(a/b>1)  
        c=1;  
     d+=c;  
    }  
    cout<<"这是一个"<<d+1<<"位数"<<endl;  
    d=0;  
    for(b=b/10;b>=1;b=b/10)  
    {  
    c=a/b;  
    d+=c;  
    a%=b;  
    }  
    cout<<"各位数之和等于:"<<d<<endl;  
    return 0;  
}  

 

程序五:妩媚卖弄型

/*************************************************** 
**  输入一个整数并求其位数以及输出各位数之和    ** 
**  自动化1121  李庆典                          ** 
***************************************************/  
  
#include<iostream>         //预编译处理命令   
#include<math.h>           //调用数学函数   
using namespace std;       //标准名字空间   
  
int main ()                //主函数   
{  
    long a;                  
    int b;  
    int c=0;  
    double d=0;  
    int e=0,f=0;  
    cout<<"请输入所要求的整数"<<endl;        //输入一个整数   
    cin>>a;  
  
    while(d<=a)                              //判断该整数的位数   
    {  
        d=pow(double(10),c);  
        c++;  
    }  
    cout<<"该数为"<<c-1<<"位数"<<endl;       //输出位数   
      
    cout<<"该数字各位数上的数字为"<<endl;  
    c=c-2;                                   //循环计算并输出各位数上的数值   
    while(c>=0)  
    {  
        d=pow(double(10),c);  
        e=a/d;  
        cout<<e<<endl;  
        a=a-e*d;  
        f+=e;  
        c--;  
    }  
    cout<<endl;  
  
    cout<<"这些数字的和为"<<f<<endl<<endl;    //输出和   
    system("pause");                         //结束程序   
}  
  




 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值