我想在从数组中删除数字42之后打印数组。这是运行正常的代码,但我无法确定如何删除这一个元素并打印其余元素。
#include <stdio.h>
int main()
{
int i,a;
int arr[]={1,2,42,88,99};
a=sizeof(arr);
for(i=0;i<=a;i++)
{
printf("%d\n", arr[i]);
if(arr[i]==42)
break;
}
return 0;
}
`
答案 0 :(得分:4)
在编写代码之前,您需要知道您需要什么以及如何编码。
应修正以下事项:
a=sizeof(arr);
获取所需数组的长度:
a=sizeof arr / sizeof arr[0];
接下来你有for
:
for(i=0;i<=a;i++){}
此处您需要检查是否i < a
而不是检查i
是否与a
i == a
相同,请将其更改为:
or(i=0;i<a;i++){}
在这里:
if(arr[i]==42)
break;
你不需要停止循环,你真正需要的是跳过这个数字,这意味着你需要continue
而不是break
:
if(arr[i]==42){
continue;
}
最后一件事,在printf("%d\n", arr[i]);
之后移动if
。
现在把所有这些都放在一起:
#include <stdio.h>
int main(void){
int i,a;
int arr[]={1,2,42,88,99};
a=sizeof arr / sizeof arr[0];
for(i=0;i<a;i++){
if(arr[i]==42){
continue;
}
printf("%d\n", arr[i]);
}
return 0;
}
输出:
1
2
88
99
答案 1 :(得分:1)
首先:
a = sizeof(arr) / sizeof(int);
然后是i < a
,而不是<=
最后,您需要continue
而不是break
。
你需要把if 放在 printf之前。
答案 2 :(得分:0)
你只需要跳过42继续
if(arr[i]==42)
continue;
}
printf("%d\n", arr[i]);
答案 3 :(得分:0)
在这里编写代码,这将删除给定的数组元素。代码是:
//delete elements
countDel=0;
for(i=0;i< n;i++)
{
if(arr[i]==num)
{
countDel++;
//shift all other elements up
for(j=i;j< n;j++){
arr[j]=arr[j+1];
}
}
}
答案 4 :(得分:0)
你可以试试这个
#include <stdio.h>
int main()
{
int i,a;
int arr[]={1,2,42,88,99};
a=sizeof(arr)/sizeof(arr[0]);
for(i=0;i<a;i++)
if(arr[i]!=42) printf("%d\n", arr[i]);
return 0;
}