#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{ void move(int *p,int n,int m);
int a[30];
int *p=a;
int m,n;
printf("input the n:\n");
scanf("%d",&n);
printf("input the num:\n");
for(p=a;p<a+n;)
scanf("%d",p++);
printf("input the m:\n");
scanf("%d",&m);
p=a;
move(p,n,m);
for(p=a;p<a+n;)
printf("%d",*p++);
}
void move(int *p,int n,int m)
{ int i;
for(i=n-1;i>=0;i--) //这个循环是依次往后移动m个位置
{
*(p+i+m)=*(p+i);
}
for(i=n-1;i<n+m;i++) //这个循环是把后面m个数移到最开始
{
*p++=*(p+i);
}
}
要求用指针实现。。
比如n=10 m=4 结果应该是这样子
原来:1,2,3,4,5,6,7,8,9,10
m= 4
后来:7,8,9,10,1,2,3,4,5,6
。。。帮我看看我哪里写错了。。是逻辑有问题么?帮我改改谢谢~~
代码方法一、
#include<stdio.h>
void exchange(int*,int,int);
int main(void){
int m,n,i;
printf("input length and number:\n");
scanf("%d%d",&n,&m);
int a[n];
printf("input array:\n");
for(i=0;i<n;++i)
scanf("%d",&a<i>);
printf("new array:\n");
exchange(a,n,m);
for(i=0;i<n;i++)
printf("%d",a<i>);
return 0;
}
void exchange(int*a,int n,int m)
{
int i,j,temp;
for(i=0;i<=m;++i){
temp=a[0];
for(j=0;j<n-1;++j)
a[j]=a[j+1];
a[n-1]=temp;
}
}
代码方法二、假设输入的n的最大值为20代码:
#include<stdio.h>
int main()
{
void move(int[20],int,int);
int number[20],n,m,i;
printf("how many numbers?");
scanf("%d",&n);
printf("input%d numbers:\n",n);
for(i=0;i<n;i++)
scanf("%d",&number<i>);
printf("how many place you want move?");
scanf("%d",&m);
move(number,n,m);
printf("Now,they are:\n");
for(i=0;i<n;i++)
printf("%d",number<i>);
printf("\n");
return 0;
}
void move(int array[20],int n,int m)
{
int*p,array_end;
array_end=*(array+n-1);
for(p=array+n-1;p>array;p--)
*p=*(p-1);
*array=array_end;
m--;
if(m>0)
move(array,n,m);
}
stdio.h头文件使用
头文件#include<stdio.h>中
stdio.h是stand input&output的缩写,意思是标准输入输出头文件。凡是用到标准输入输出函数,就要调用该头文件。
查看stdio.h目录下包含哪些函数:主要有文件访问、二进制输入/输出、格式化和非格式化输入/输出、文件定位、错误处理、文件操作等。
具体打开自己的VS安装目录,找到include文件夹,打开include夹下面的stdio.h文件即可查看
(C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\vcpackages\IntelliSense\iOS\OSS\musl-1.1.10\include)
常用标准输入输出函数:
scanf()从屏幕格式输入
printf()格式输出到屏幕
getchar()从屏幕得到一个字符
putchar()字符输出到屏幕
gets()从屏幕得到一个字符串
puts()字符串输出到屏幕
fscanf()从磁盘格式输入
fprintf()格式输出到磁盘
fgetc()从磁盘得到一个字符
fputc()字符输出到磁盘
fgets()从磁盘得到一个字符串
fputs()字符串输出到磁盘
#号是预处理语句,表明在编译之前预先进行处理。
.h是header file的缩写,表面这是一个头文件。
include是文件包含命令,后面跟着引号""或者尖括号<>,意思是将引号或尖括号内指定的文件包含到本程序中,成为本程序的一部分,而包含的文件通常是由系统提供的。
区分引号""或者尖括号<>:尖括号<>编译程序会先到标准函数库中找文件,引号""编译程序会先从当前目录中找文件。