有n个整数,使前面各数顺序向后移m个位置,移出的数再从开头移入。编写一个函数实现以上功能
/* 有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];
} 展开
#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("<格式化字符串>",<参量表>)。
3、格式输出,它是c语言中产生格式化输出的函数(在stdio.h中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
4、作用:在c语言中产生格式化输出的函数(定义在stdio.h中),其向终端(显示器、控制台等)输出字符。
在你原来的代码中添加了一些输入提示,保证程序正确运行,
要想程序运行后得到理想的结果输入的数一定正确。
#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];
}
#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;
}
另外 题目要求的输入格式是什么?
一般是先输入n,m再输数字吧?看题目换个输入格式试试
你确定输出异常么?
能举个例子么