我试图了解如何在 C 语言中正确使用数组,并尝试编写一个简单的程序,该程序应该采用 5 整数数组并消除左侧的零。这是我的尝试:
#include <stdio.h>
int main() {
int seq[5];
int i;
int cor[5];
int counter;
printf("Type the 5 numbers: ");
scanf("%s", &seq);
for (i=0; i<5; i++){
if (seq[i] != 0) {
for (counter=0; counter<5-i; counter++){
cor[counter]=seq[i+counter];
}
break;
}
}
printf("%s", cor);
return 0;
}
当时的想法是,当输入诸如 00101 之类的内容时,程序会查看每个条目并检查它是否为 0。如果不是,它会在位置 i 写入一个新数组,其中 0 -th 位置被赋予原始数组 i 的值,第 1 个位置将被赋予 i+1 的值等等,然后它会打印这个新数组,它的左边应该没有无用的零.但它只是打印原始数组。怎么了?很抱歉初学者的问题。
最佳答案
你有两种方法来做你想做的事。
使用字符:
#include <stdio.h> int main() { char seq[6]; /* reserve one place for terminating null */ int i; char cor[5]; int counter; printf("Type the 5 digits : "); scanf("%5s", seq); /* limit to 5 chars and seq is already an array : ne & */ for (i=0; i<5; i++){ /* should control seq[i] >= '0' && seq[i] <= '9' */ if (seq[i] != '0') { for (counter=0; counter<6-i; counter++){ /* also copy terminating null */ cor[counter]=seq[i+counter]; } break; } } printf("%s", cor); return 0; }
但是用户可以给你不是数字的字符。
使用整数:
#include <stdio.h> int main() { int seq[5]; int i; int cor[5]; int counter; printf("Type the 5 numbers: "); i = scanf("%d%d%d%d%d", seq, seq+1, seq+2, seq+3, seq+4); /* seq+i = &(seq[i]) */ /* should control i == 5 */ for (i=0; i<5; i++){ if (seq[i] != 0) { for (counter=0; counter<5-i; counter++){ cor[counter]=seq[i+counter]; } break; } } printf("%d%d%d%d%d", cor[0], cor[1], cor[2], cor[3], cor[4]); return 0; }
关于c - 在 C 中处理数组时出现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26886172/