关于 C++ 的题目~没有很难~有高手能帮个忙么?30分~

第一题:给出一个不多余5位的正整数,要求:1。求出它是几位数;2。分别打印出每一位数字;3.按逆序打印出各位数字,例如原数321,应输出123。

第二题:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而1+2+3=6,因此6是完数。编程序找出1000之内的所有完数,并按下面格式输出因子:
6,its factors are 1,2,3
很难么?要不运行成功,再追加20分?

//第一题
#include <iostream>
using namespace std;
void main()
{
int i;
int a[100];
int j=0;
int k;
cout<<"input number:"<<endl;
cin>>i;
cout<<"打印该数:"<<i<<endl;
cout<<"逆序输出:";
while(i!=0)
{
a[j]=i%10;
j++;
i/=10;
}
for(k=0;k<j;k++)
{
cout<<a[k];
}
cout<<endl;
}

//第二题
#include <iostream.h>
void main()
{
int n,k,sum;
for(n=1;n<=1000;n++)
{
sum=0;
for(k=1;k<n;k++)
if(n%k==0)
sum=sum+k;
if(sum==n)
{
cout<<n<<":"<<"its factors are :"; /*这里输出1000之内的完数*/
for(k=1;k<n;k++) /*此循环用于输出完数的各因子*/
if(n%k==0)
cout<<k<<" ";
cout<<endl;
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-04-06
用C++标准库的编程,体现C++的特点

1.
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
string num;
while(1)
{
cout << "input number: ";
cin >> num;
if(num.size() > 5)
cout << "that is over the boundry!" << endl;
else
break;
}
cout << num.size() << endl;
cout << num << endl;
reverse(num.begin(),num.end());
cout << num << endl;
return 0;
}

2.
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> num;
int sum;
for(int i = 2; i <= 1000; i++)
{
sum = 0;
for(int j = 1; j < i; j++)
{
if(i % j == 0)
{
num.push_back(j);
sum += j;
}
}
if(i == sum)
{
cout << i << ", its factors are ";
for(vector<int>::size_type pos = 0; pos != num.size(); pos++)
cout << num[pos] << " ";
cout << endl;
}
else
num.erase(num.begin(), num.end());
}
return 0;
}
第2个回答  2009-04-06
/*第一题:给出一个不多余5位的正整数,要求:1。求出它是几位数;2。分别打印出每
一位数字;3.按逆序打印出各位数字,例如原数321,应输出123。

#include<iostream>
using namespace std;
void main()
{
int num,count=0;
cout<<"input the data:"<<endl;
cin>>num;
while(num!=0)
{
cout<<num%10;
count++;
num/=10;
if(num<10)
{
cout<<num<<endl;
cout<<"位数为:"<<count<<endl;
break;
}
}
}
/*第二题:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子
为1,2,3,而1+2+3=6,因此6是完数。编程序找出1000之内的所有完数,并按下面格式输出因子:
6,its factors are 1,2,3*/
#include<iostream>
using namespace std;
int fun(int n)
{
int sum=0;
for(int i=1;i<n;i++)
{
if(n%i==0)
sum+=i;
}
if(sum==n)return 1;
else return 0;
}
void main()
{
for(int i=2;i<=1000;i++)
{
if(fun(i)==1)
{
int j=1;
cout<<i<<",its factors are ";
while(j<i)
{
if(i==j)break;
else if(i%j==0)
cout<<j<<",";
j++;
}
cout<<endl;
}
}
}
第3个回答  2009-04-06
1、
#include <iostream>

using namespace std;

int main()
{
int a,b[5];
do
{
cin>>a;
if(a>99999) cout<<"确保a在5位以内:";
else break;
}while(1);
int i=0;
for(;a>0;i++)
{
b[i]=a%10;
a/=10;
}
cout<<i<<"位数"<<endl;
for(int j=0;j<i;j++)
cout<<b[j]<<' ';
cout<<endl;

for(int j=i-1;j>=0;j--)
cout<<b[j]<<' ';
cout<<endl;

return 0;
}
///////////////////////////////////////////
2、
#include <iostream>
using namespace std;
int main()
{

for(int i=1;i<=1000;i++)
{
int sum=0;
for(int j=1;j<i;j++)
if(i%j==0)
sum+=j;
if(sum==i)
{
cout<<i<<" its factors are :";

for(int j=1;j<i;j++)
if(i%j==0) cout<<j<<' ';
cout<<endl;
}
}

return 0;
}
第4个回答  2009-04-06
第一题有很多解法,可以除10来进行计算位数,还可以把数字转换为字符串再进行处理:
#include<stdio.h>
#include<stdlib.h>

int main()
{
int num = 123;
char str[10];
int len;
int i;
clrscr();

itoa(num,str,10);
len = strlen(str);

for(i=0;i<len;i++)
printf("%c ",str[i]);

printf("\n");

for(i=len;i>0;i--)
printf("%c ",str[i-1]);

getch();
return 0;
}

C++字符串小问题,请大家帮个忙,很简单
结果输出 abcefg 你那函数返回的只能是个char类型的数据,你返回了个char[30],这是不能实现的,c[30]只在子函数里存在,i不用再加1了,第一个for循环后,i已经是字符尾部了。

全都是一些c++基础问题,可是困扰了我很久了,明天考试,帮个忙吧~
3.这题没什么好说的,ta是MA类型的指针,因为ta前面有个*号,指针不是对象

请懂C++的高手帮个忙~!
include "stdio.h"\/* 年 yr,月 mn, 日(含小时分秒)dy 返回当天的修正儒略日(modified Julian date)mjd 从1582年10月15开始使用格利高里历(就是阳历)(教皇格利高里十三世丢掉了十天--1582年十月5到14,改进了 闰年算法--400年97闰).\/ void cal_mjd(int mn,double dy,int y...

C++题目 帮个忙 上课听不懂哇。太笨了。。
第一题的person是什么都不知道故无法完成 第二题请看下面的代码;我已经运行过了!\/ 定义一个Point类,数据成员包括横坐标x和纵坐标y,成员函数包括构造函数和信息打印函数show_info。并从Point类公有派生Rectangle类和Circle类。其中Rectangle派生类中新增数据成员有宽度width和高度height、新增公有成员函数a...

c++平方和,(帮个忙,qwq)?
根据题目的要求:约定:n<=1e18,时间1s。如果按照for循环逐个累加平方和,当n很大时,必定超时。不过也有办法,数学问题就用数学去解决,可以证明 1^2+2^2+3^2+...+n^2=n(n+1)(2n+1)\/6 程序就很简单了,还有一个问题就是n的类型,因为约定:n<=1e18,需要用到64位整型来表示,long ...

哪位大侠能够帮个忙(关于C++数据结构当中的KMP算法的)
你是多大的学生?这种问题你应该去找你的亲戚,你哥哥一类的,网上的人现在一般没好人,回答顶多也是错题,你还是问亲戚吧~

大学C语言考试求帮忙!~
给个学生成绩管理的把,在VC上运行过的,TC的不知道,你自己试下,不过可能会出现很多问题,这个是C++版本的,你要把它改成C版本,而且改好了之后也不一定可行,主要是TC对标准支持也不好,而且也不利于调试...还是不要用TC了 include<iostream> include<iomanip> include<fstream> include<string> using ...

编程高手帮个忙来~~~
c++ primer MFCwindows程序设计 windows程序设计 编程之美

c++编程:将1~9分成3个一组,组内数字不能重复,组间的数字也不会重复.每...
三个数(100-999) 是完全平方数,也就是10-31 这21个数的平方。其中10就不用了,也就20个。算出这20个数,第一步,去掉数字重复的比如:11*11=121 12*12=144. 15*15=225等。余下的从第一个开始,选取和第一个数无冲突的最近的一个数为第二个,然后找第三个,如果找不到第...

数据结构 <插队买票>算法设计~~大家帮个忙~~C++程序
include<string.h> include <iostream.h> define TabSize 2000003 \/*散列表大小TabSize 是大于表最大空间的素数*\/ define Max 1000001 \/*队列空间最大值*\/ class hashtab \/*散列表数据结构*\/ {public:char name[5]; \/*名字*\/ int group; \/*属于哪个朋友组*\/ char info; ...

相似回答
大家正在搜