有n个整数,使前面各数顺序向后移m个位置,移出的数再从开头移入。编写一个函数实现以上功能

我不知道哪里错了。大仙们,求指教~~/*有n个整数,使前面各数顺序向后移m个位置,移出的数再从开头移入。编写一个函数实现以上功能,在主函数中输入n个整数并输出调整后的n个... 我不知道哪里错了。大仙们,求指教~~
/* 有n个整数,使前面各数顺序向后移m个位置,移出的数再从开头移入。编写一个函数实现以上功能,在主函数中输入n个整数并输出调整后的n个数 */
#include "stdio.h"
void main()
{
int i,n,a[100],m;
void move(int a[],int n,int m);
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
scanf("%d",&m);
move(a,n,m);
for(i=0;i<n;i++)
printf("%d\n",a[i]);

}
void move(int a[],int n,int m)
{
int b[100];
int i;
for(i=0;i+m<n;i++){
b[i+m]=a[i];
}
for(i=0;i<m;i++){
b[i]=a[n-m+i];
}
for(i=0;i<n;i++)
a[i]=b[i];

}
展开
 我来答
问明6E
高粉答主

2019-06-19 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:13.1万
展开全部

#include<stdio.h>

int main()

{

void move(int[20], int, int);

int number[20], n, m, i;

scanf_s("%d",&n);

for (i = 0;i < n;i++)

scanf_s("%d", &number[i]);

scanf_s("%d", &m);

move(number, n, m);

for (i = 0;i < n;i++)

printf("%d  ", number[i]);

}

void move(int array[20], int n, int m)

{

int *p, arrayend;

arrayend = *(array + n - 1);

for (p = array + n - 1;p > array;p--)

*p = *(p - 1);

*array = arrayend;

m--;

if (m > 0)move(array, n, m);

}

扩展资料:

printf()函数用法:

1、printf()函数格式化输出函数,一般用于向标准输出设备按规定格式输出信息。

2、printf()函数的调用格式为:printf("&lt;格式化字符串&gt;",&lt;参量表&gt;)。

3、格式输出,它是c语言中产生格式化输出的函数(在stdio.h中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。

4、作用:在c语言中产生格式化输出的函数(定义在stdio.h中),其向终端(显示器、控制台等)输出字符。

爱枫的景
推荐于2017-12-15 · TA获得超过117个赞
知道答主
回答量:44
采纳率:0%
帮助的人:56.9万
展开全部
运行错的原因可能是你没有正确的输入数据。
在你原来的代码中添加了一些输入提示,保证程序正确运行,
要想程序运行后得到理想的结果输入的数一定正确。
#include "stdio.h"
void main()
{
int i,n,a[100],m;
void move(int a[],int n,int m);
printf("输入一个数赋给n:\n");
scanf("%d",&n);
printf("请输入%d个整数:\n",n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
printf("输入移动的位数:\n");
scanf("%d",&m);
move(a,n,m);
printf("移动后的数为:\n");
for(i=0;i<n;i++)
printf(" %d ",a[i]);
printf("\n");

}
void move(int a[],int n,int m)
{
int b[100];
int i;
for(i=0;i+m<n;i++){
b[i+m]=a[i];
}
for(i=0;i<m;i++){
b[i]=a[n-m+i];
}
for(i=0;i<n;i++)
a[i]=b[i];

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户93946
2011-05-12 · TA获得超过236个赞
知道答主
回答量:432
采纳率:0%
帮助的人:268万
展开全部
完整程序如下:

#include<stdio.h>
#define N 100
int main() {
int n, m, i, num[N], final[N];
int move(int n, int m, int final[], int num[]);
printf("你要输入数的总数(<%d):\n", N);
scanf("%d", &n);
printf("输入%d个数:\n",n);
for (i = 0; i < n; i++)
scanf("%d", &num[i]);
printf("初始结果为:\n");
for (i = 0; i < n; i++)
printf("%d ", num[i]);
printf("\n你想让前面各数各移位数:");
scanf("%d", &m);
move(n, m, final, num);
printf("最后结果为:\n");
for (i = 0; i < n; i++)
printf("%d ", final[i]);
printf("\n");
return 0;
}
int move(int n, int m, int final[], int num[]) {
int i = 0, j;
if (m == 0) //无移动数
{
for (i = 0; i < n; i++)
final[i] = num[i];
return 0;
}
for (j = n - m; j < n; j++) //将num中从n-m到n的值先给final
final[i++] = num[j];
for (j = 0; j < n-m; j++) //再将num从0到m的值给final
final[i++] = num[j];
return 1;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9ecc643
2011-05-11 · 超过33用户采纳过TA的回答
知道答主
回答量:270
采纳率:0%
帮助的人:103万
展开全部
估计是你测试数据有问题
另外 题目要求的输入格式是什么?
一般是先输入n,m再输数字吧?看题目换个输入格式试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
porker2008
2011-05-11 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
没找到错。
你确定输出异常么?
能举个例子么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式