gpt4 book ai didi

c - 数组删除了在 C 中打印出来的剩余数字

转载 作者:行者123 更新时间:2023-11-30 20:05:14 24 4
gpt4 key购买 nike

我曾尝试在 C 中创建一个动态数组,但我不会让它工作,所以我尝试使用一个普通数组,在其中删除正在打印的其余数字。我有一个数组:

int array[100];

这个数组将存储 100 个数字,这些数字将通过 for 循环进行扫描。在该 for 循环中,我确实有一个 if 语句:

if(array[i] == 0)
{
break;
}

因此,如果我扫描数字 0,for 循环将中断,代码将继续。当我扫描普通数字时,我想扫描 20 个数字。该数组有 100 个数字位置,但我只写入 1-20,然后键入 0,这会使循环中断。然后我有一个 for 循环来打印数组。 printf 打印整个数组 1-20,在 20 之后,它将开始打印其余 80 个尚未分配数字的数字。所以我的问题是,如何删除在我实际扫描的 1-20 个号码之后打印出来的所有这些剩余号码?我只想显示扫描的数字,而不是全部 100 个。

最佳答案

使用这个:

i=0;
while(array[i]){
printf("%d\n",array[i++]);
}

编辑:
在评论和所有内容之后,我想我应该编写一个简单的代码供您在您的场景中使用。我已经评论了代码。它应该可以帮助你理解一切。如果您仍有疑问,请随意。

#include<stdio.h>

void sortera(int array[], int n, int m)
{
int tmp,i,j;
for(i=n; i<m; i++)
{
for(j=n;j<m; j++)
{
if(array[j]>array[j+1])
{
tmp=array[j];
array[j]=array[j+1];
array[j+1]=tmp;
}
}
}
}

int main(){
int i,c;
int a[100];
c=0; //this c keeps the count
for(i=0;i<100;i++){ //since 100 is the max limit
scanf("%d",&a[i]);
c++; //this is what @JackWilliams meant you to do
if(a[i]==0)
break;
}
printf("\nInput array\n");
i=0;
while(a[i])
printf("%d\n",a[i++]); //this is my snippet that prints all values
//now sorting. I changed the algo a bit that you wrote (basic idea is same though)
//This code sorts the array elements in range n..m, inclusive of n and xclusive of m
//Since arrays in c are (by default) passed by reference, you just need to sort them. No return value is required
sortera(a,0,c);
//Now I use @JackWilliam's method to print the array
printf("\nSorted Array:\n");
for(i=0;i<c;i++)
printf("%d\n",a[i]);
return 0;
}

关于c - 数组删除了在 C 中打印出来的剩余数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32637190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com