首页 > 编程语言 > 详细

输入任意数组

时间:2015-11-30 17:51:09      阅读:289      评论:0      收藏:0      [点我收藏+]

对于任意数字的输入:

#include<stdio.h>

int main(void)
{
    int i,j,k;
        int num[100];
    i = 0;
    int b;
    while(scanf("%d",&b) == 1)
    {
        num[i++] = b;
        if(\n == getchar())
        {
            num[i] = \0;
            break;
        }
    }
    printf("i 的值:%d \n",i);
    int number = i;
    for(j = 0;j < number;j++)
        num[i+j] = num[j];
    int n;
    printf("please input n number:");
    scanf("%d",&n);
    n = i - (n - n/9*9);
    for(k = 0; k < number ; k++)
    {printf(" %d ",num[n++]);}
    return 0;

}

 

解决一个输入任意数字,然后输一个任意数右移位问题。

 

以下是给出的第二种方法:

 

#include <stdio.h>

void Reverse(int a[], int start, int end);
  //逆置数组a中下标[start...end]之间的元素
  
int main(int argc, char *argv[])
{
  int a[100], num, k, m, i;
  int n = 0;
  
  printf("数组:");
  while((num=getchar())!=\n)//试探读取 
  {
    ungetc(num, stdin);       //若下一个字符不是换行,则将次字符放回输入流
    scanf("%d", &num);        //读取数字 
    a[n++] = num;
  }
  
  printf("k = ");             //读入要移动的位数
  scanf("%d", &k);
  
  m = k%n;
  
  Reverse(a, 0, n-1);         //首先整体逆置
  Reverse(a, 0, m-1);   
  Reverse(a, m, n-1);
  
  for(i=0; i<n; i++)
    printf("%d ", a[i]);
  printf("\n");
  
    return 0;
}

void Reverse(int a[], int start, int end)
{
    int i, j, tmp;
    
    for(i=start,j=end; i<j; i++,j--)
    {
      tmp = a[i];
      a[i] = a[j];
      a[j] = tmp;
    }
}

 

输入数据: 1 2 3 4 5 6 7 8 9

 

输入:11

输出: 8 9 1 2 3 4 5 6 7

已验证

输入任意数组

原文:http://www.cnblogs.com/liudan520/p/5007686.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!