#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #define MAX 1000
voidmove(int*, int, int);
intmain(void) { int a[MAX], n, m; char sep; printf("共有多少个数?"); scanf("%d", &n); printf("后移多少个?"); scanf("%d", &m); printf("请以,号为间隔输入%d个数。\n", n); for (int i = 0; i < n; i++) { scanf("%d%c", &a[i], &sep); } move(a, n, m); return0; }
voidmove(int a[], int n, int m) { int b[MAX]; for (int i = 0; i < n; i++) { b[(i + m) % n] = a[i]; } printf("移动后顺序为:\n"); for (int i = 0; i < n; i++) { if (i == n - 1) { printf("%d", b[i]); } else { printf("%d,", b[i]); } } }
一次输入,循环读取
怎么实现输入一次:1,2,3,4,5 循环赋值给数组a?
逗号的处理是关键
在 for 循环中使用 scanf 处理带逗号的输入,核心难点在于:scanf 在读取数字时会停在逗号前,但逗号还留在缓冲区里,必须把它“吃掉”,否则下一次循环读取数字时会出错。