从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端

 我来答
学员医学学生
2010-11-16 · TA获得超过7635个赞
知道大有可为答主
回答量:1371
采纳率:0%
帮助的人:2183万
展开全部
LZ都用char型了..只要判断这个数读进来后个位上是不是'0'即可.(注意是单引号)
如果读入的是int可以用if(b%10==0)取余的方法来判断..
这样即可. 当然如果要判断输入的是字符的话用getchar();然后可以通过ASCII码来区分.
倒置函数? 是把一维数组中的顺序颠倒还是二维数组像矩阵那样令M[i][j]与M[j][i]交换?..
可以利用链表来重新建一个倒置的然后销毁以前的那个这样可以不浪费空间.
最方便的就是像你那样用char的数组然后取到十位上的数字比如int t = b[1] - '0';这样t就是一个整型的数字.
匿名用户
2010-11-03
展开全部
Sub aaaa()
arr = Array(1, 2, 3, 4, 0, 6, 0, 8, 0, 9, 6, 1, 8, 0, 0, 0, 0, 64)
arr = CompactIntegers(arr)
'或赋给另一个数组:arr1 = CompactIntegers(arr)
End Sub

Function CompactIntegers(arr)
Dim s, i
For i = 0 To UBound(arr)
If Val(arr(i)) <> 0 Then s = s & "," & arr(i)
Next
CompactIntegers = Split(Mid(s, 2), ",")
End Function
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lahzmhou
2010-11-03
知道答主
回答量:37
采纳率:0%
帮助的人:21.3万
展开全部
#include<stdio.h>
void CompactIntegers(int a[],int *k)
{
int i, j;
int n = *k;
for(i =0; i<n ; i++)
{
if(a[i] == 0)
{
for (j = i; j< n-1; j++)
{
a[j] = a[j+1];
}
a[n] = 0;
i--;
n--;
}
}
*k = n;
}

main()
{
int i;
int a[10];
int n = 10;
printf("please input ten nums: ");
for(i = 0; i< 10; i++)
{
scanf("%d",&a[i]);
}
CompactIntegers(a,&n);

for(i = 0; i < n; i++)
{
printf("a[%d] = %d\n",i,a[i]);
}

}

n值可以自己加以修改
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式