我尝试打印阵列但是它没有工作我得到的输出与用户输入的数字不同。 PS:我需要在for循环之外打印它。 额外问题:如何重置用户输入的数字? (代码)
#define LENGTH 10
int main (){
int measurements[LENGTH];
int x;
for(x=0; x<LENGTH; x++){
printf("Enter number #%d: ", x+1);
scanf("%d", &measurements[x]);
if(measurements[x]==0){
break;
}
}
printf(" %d ", measurements[x]);//won't work
return 0;
}
答案 0 :(得分:1)
如果你想打印数组:
int i;
for (i = 0; i < x; i++){
printf("%d\n", measurements[i]);
}
代码:
#define LENGTH 10
int main (){
int measurements[LENGTH];
int x, i;
for(x=0; x<LENGTH; x++){
printf("Enter number #%d: ", x+1);
scanf("%d", &measurements[x]);
if(measurements[x]==0){
break;
}
}
/*
*this for loop will print the array
*till the index where 0 is entered.
*it will not print 0
*/
printf("\nHere are your measurements:\n");
for(i = 0; i < x; i++){
printf("%d\n", measurements[i]);
}
/*reset part*/
for(i = 0; i < LENGHT; i++){
measurements[i] = 0;
}
return 0;
}
你也可以使用string.h中的memset而不是重置部分。
measurements = memset(measurements, 0, 10);
还要记住: c中没有空数组/重置数组这样的东西,它只取决于你定义的是数组元素的空/重置值。即使你没有在数组中设置0,它仍然是另一个透视。
答案 1 :(得分:0)
#include<stdio.h>
#include<stdio.h>
#define LENGTH 5
int measurements[LENGTH];
int x,y,i;
void abc();
int main (){
abc();
printf("1 to reset,0 to not");
scanf("%d",&y);
if(y == 1){
abc();
}
else{
printf("BYE!");
}
}
void abc(){
for(x = 0; x < LENGTH; x++){
printf("Enter number #%d: ", x + 1);
scanf("%d", &measurements[x]);
}
for(i = 0 ; i < x ; i++){
printf("\n%d\n ", measurements[i]);
}
}
这将重置用户输入的数字并打印数组元素。