c语言高手帮帮忙了,麻烦写出一个完整的程序,谢谢了,题目如下:

若一维整型数组a中的数据已经按由小到大顺序存放,请编写程序把a中每组相同的数据删得只剩一个,(例如:a原为2,2,2,3,3,5删除后变为2,3,5),然后按每行3个数据的格式输出数组a.
麻烦能把思路讲解一下吗,不胜感激。

第1个回答  2011-10-09
#include<stdio.h>
int main()
{
int a[100],b[100];
int i,n,j;
printf("请输入a数组元素个数\n");
scanf("%d",&n);
printf("请输入a数组中的元素\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
j=0;
b[j++]=a[0];
for(i=1;i<n;i++)
if(a[i]!=a[i-1])
b[j++]=a[i];
printf("删除后a数组中的元素为:\n");
for(i=0;i<j;i++)
{
printf("%d ",b[i]);
if((i+1)%3==0)
printf("\n");
}
printf("\n");
}

额,几天没上网,楼下说的比较清楚了。。
这个有个前提是a数组得是 有序的。而你的条件就是 由小到大顺序存放
如果是无序的话,还得排下序……
第2个回答  2011-10-11
int len = sizeof(a)/sizeof(int);
for(int i=0;i< len; i++)
{
For(int j=i+1;j<len-i;j++)
{
If(a[i] == a[j])
{
a[i] = 0;
}
}
}
for(i=0;i<len;i++)
{
If(a[i] != 0)
{
printf("%d",a[i]);
If(i%3 ==0)
{
printf("\n");
}
}
}

方法一:同上,将相同的表示为0,打印的时候不打印0
方法二:在以上的基础上,发现有相同的元素,则使后面的数字往前移动,然后继续检索,
注意:数组中是否有0,还需要注意这一点。回头在想想。
第3个回答  2011-10-06
楼上的思路是:
a的后一项与前一项比较,如果相等则不记录到b数组中。比如2,2,2,3,3,5,当把第一项的2记录到b时,再检测第二项,仍然为2,不记录,继续检测第三项,还是2,又不记录,直到第4项是3,3不等于2了,就把这个3记录到b去,第五项又是3,就不记录到b了,第6项是5,5不等于3,就将5记录到b,最终b的元素就为2,3,5了。本回答被提问者采纳

C语言高手的进来。。帮忙帮忙谢谢了啊、、、悬赏30分
第一题:#include <stdio.h>void main (){ FILE *fp; char b[9], a[9]; char ch; int i=0; scanf("%s", b); fp = fopen("D:\\\\123.txt", "w"); if(fp == NULL) { printf("打开文件失败!\\n"); return; } fwrite(b, sizeof(char), 8, fp); fclose(fp); \/\/...

C语言高手,帮帮忙
因为程序中的语句是顺序语句所以先执行st=st+i; 则st=75 因为要以字符型显示,所以A的ASCII码是65,那么大写字母的ASCII码规则是逐个增一,所以到75,就是字母K 然后在执行i=st%i,因为初值i=10,经过执行第一句后st=75,所以i=75%10 ,所以是5 (8) !(非) &&(且) ||(或)(9) 1...

请高手帮忙,用C语言输出以下程序.
void main(){ for(int i=1;i<=10;i++){ printf("%d\\t%d\\t%d\\n",i,i*i,i*i*i);} }

请高手用C语言帮忙做个编程的题目,谢谢了!
int IsDevided(int number,int dev){ if(number %dev == 0){ return 1;} return 0;} void EasyDone(int a){ int chose;int i,j;printf("Input your chose\\n1>能被3整除的"<Enter 1>","\\n2>能被5整除的<Enter 2>","\\n3>能被3或5整除的<Enter 3>\\n");scanf("%d",&chose)...

c语言高手帮帮忙,谢谢!!! 编写程序,编写一个函数输出如下图形,
ls的兄弟,题目要求是用函数void draw(n, c)来实现功能的。。下面的程序在vc6.0中通过编译。include <stdio.h> void draw(int n,char c){ int i,j,k;for(i=1;i<=n;i++){ for(j=1;j<=n-i;j++)printf(" ");for(k=1;k<=2*(i-1)+1;k++)printf("%c",c);printf("...

c语言编程题,请高手帮忙做一下,拜谢,急急急急……
1.include <stdio.h> double funcPi(int);int main(void){ int arg;printf("Input the argument: ");\/\/ \/\/ 无异常输入 \/\/ while (!scanf("%d", &arg)){ printf("Check your input and retry: ");while (getchar()!='\\n'){ continue;} } while (getchar()!='\\n'){ continue...

求C语言大神帮忙编写一个程序,按要求写出来。
void rotate( int (*arrA)[MAX], int (*arrB)[MAX], int m, int n);int main(void){ int arrA[MAX][MAX], arrB[MAX][MAX], i, j, m, n;printf("请输入 m n: ");scanf("%d %d", &m, &n);printf("请输入 %d 行 %d 列矩阵:\\n", m, n);for (i=0; i<m; i...

[急求助]C语言程序编程题,请高手帮忙解答下。!
fun(int a,int b,long c){ c=a%10*100+a\/10+b\/10*1000+b%10*10;\/*解释:a%10的意思是a除以10剩下的余数,即a的个位数,若a是45,a%10就是5,再乘以100即是500;a\/10就是十位数,即4,原因是它是向下取整,45\/10虽是4.5,但向下取整就将小数点后的都等于零;b\/10和上面的a一...

C语言高手帮忙啊!
c=add(c,n);printf("平移后三角形面积为:%f",triangle(a,b,c));} \/*旋转*\/ include include define DIM 4 define N 1 define NUM 3 define PI 3.1415926 typedef struct POINT { int x,y,z;}POINT;void trans(double matrix[DIM][DIM], double x, double y, double z) \/\/矩阵...

c语言高手帮帮忙!
用数组就可以实现了。定义变量循环累加,打印结果。include <stdio.h>#define N 10int main(){ char names[4][3]={"张","王","李","赵"}; int i,t,n=N,cnt[4]={0},f=0,z=0,max=0; printf("当前共%d个投票人 ,请投张:1 王:2 李:3 赵:4 (输入-1结束投票)\\n...

相似回答