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

如题所述

LZ都用char型了..只要判断这个数读进来后个位上是不是'0'即可.(注意是单引号)
如果读入的是int可以用if(b%10==0)取余的方法来判断..
这样即可. 当然如果要判断输入的是字符的话用getchar();然后可以通过ASCII码来区分.
倒置函数? 是把一维数组中的顺序颠倒还是二维数组像矩阵那样令M[i][j]与M[j][i]交换?..
可以利用链表来重新建一个倒置的然后销毁以前的那个这样可以不浪费空间.
最方便的就是像你那样用char的数组然后取到十位上的数字比如int t = b[1] - '0';这样t就是一个整型的数字.
温馨提示:答案为网友推荐,仅供参考
第1个回答  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
第2个回答  2010-11-03
#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值可以自己加以修改

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网