我正在尝试编写的交流程序有问题。程序必须将整数存储在数组中(从键盘读取)。数字必须按输入的顺序打印出来,例如如果输入:3 2 0 5 5 5 8 9,输出应该是:
3 2 0 - 减少 5 5 5 - 均匀 8 9 - 增加
对我来说,问题是,我无法编写一个能够在所有情况下工作的算法。我试图用另一个数组“标记”元素(使用相同的索引,为每个整数保存一个值 1-表示增加,-1-表示减少,0 表示均匀),但这部分有效。你还有其他想法吗?提前致谢 :)
#include <stdio.h>
#include <stdlib.h>
main() {
int array[100];
int flag[100];
int num, i;
printf("Enter how many numbers you want to type: ");
scanf("%d",&num);
for(i=0;i<num;i++) {
scanf("%d",&array[i]);
}
for(i=0;i<num;i++){
if((array[i]<array[i+1])) {
flag[i]=flag[i+1]=1;
}
if(array[i]>array[i+1]) {
flag[i]=flag[i+1]=-1;
}
}
for(i=0;i<num;i++) {
if(array[i]==array[i+1]) {
flag[i]=flag[i+1]=0;
}
}
for(i=0;i<num;i++){
printf("%d ",flag[i]);
}
printf("\n");
for(i=0;i<num;i++) {
if(flag[i]==1) {
do{
if(flag[i]==1){
printf("%d ",array[i]);
i++;
}
}while(flag[i]==1);
printf(" - increasing\n");
}
if(flag[i]==0) {
do{
if(flag[i]==0){
printf("%d ",array[i]);
i++;
}
}while(flag[i]==0);
printf(" - evenly\n");
}
if(flag[i]==-1) {
do{
if(flag[i]==-1) {
printf("%d ",array[i]);
i++;
}
}while(flag[i]==-1);
printf(" - decreasing\n");
}
}
system("pause");
return 0;
}