完数是指一个整数恰好等于它的因子之和(除自身外),则称这个数为完数。从键盘先后输入两个不大于9999的正整数m和n,若m>n,则交换两数。然后求m~n(m和n均为正整数且m≤n)之间的所有完数。
【输入形式】
先后输入两个正整数m和n,用逗号分隔
【输出形式】
输出所有完数,每两个数之间用逗号分隔。若输入非法,则输出“error”
【样例输入】
1,2000
【样例输出】
6,28,496
【样例说明】
无
【评分标准】
正确性
请问循环结构有什么问题,编译通过,但输出全为error,大一刚学,作业题,感谢。
外侧循环,每次都需要把sum重新设置为0
代码不要截图,直接贴代码出来。
不知道你这个问题是否已经解决, 如果还没有解决的话:After move: 3 4 5 1 2
代码块
#include <iostream>
#include<string>
#include"math.h"
#include <complex>
#include"iomanip"
#include <vector>
#include "stdlib.h"
#include <stdio.h>
//输入两个正整数 n 和 m(1 < m < n <= 10),再输入 n 个整数,将这些数排成一行,向右循环移动 m 个位置(从右边移出的数再从左边移入),最后输出移动后的n个整数。
//
// 要求定义并调用函数 mov(x, n, m) 实现上述循环移动的功能,函数形参x的类型是整型指针,形参n和m的类型是int,函数的类型是void。
//
// 输出格式:数据之间以空格分隔,最后一个数据集后面没有空格
//
// 输入输出示例:括号内为说明
using namespace std;
void move(int* x, int n, int m);
void move(int* x, int n, int m)
{
for (int i = 0; i < m; i++)
{
int temp =x[n - 1];
for (int j = n - 1; j > 0; j--)
{
x[j] = x[j - 1];
}
x[0] = temp;
}
cout << "After move: ";
for (int i = 0; i < n-1; i++)
cout << x[i]<<' ';
cout << x[n - 1] << endl;
}
int main()
{
int n , m;
cin >> n >> m;
int *x;
x = new int[10];
for (int i = 0; i < n; i++)
{
cin >> x[i];
//cout << x[i];
}
move(x, n, m);
return 0;
}