C语言,将已知数组内容复制到另一个新数组,使复制产生的新数组包含已知数组全部出现过的值,而又不重复。

作者&投稿:浦嵇 (若有异议请与网页底部的电邮联系)
c语言编写将已知数组内容复制到另一个新数组,使复制产生的新数组包含已知数组全部出现过的值,而不重复~

很佩服你写这么强的程序,首先你的第三层for循环做比较第一次给b1赋了a1,这是对的,但是当b1等于2后,你以后的每一次比较,要么就是在和a[0]比较后停下来,i=0,然后下一个b赋值为也就是1,要么就是和a[0]比较一次,i=1,然后把后面一个b赋值为2,所以总是121212的不止,而且你的那个if根本没有判定作用,你能把这么简单的程序写成这样,真的很强,只能说思维有别于常人

int j=0;
for(i=0;i<n-1;i++)
{
if(a[i] != a[i+1])
{
b[j] = a[i];
j++;
if(i+1 == n)
{
b[j] = a[i+1];
}
}
else
{
if(i+1 == n)
{
b[j] = a[i];
}
}
}
其中:n为数组长度

数组里面是整数吗?根据你的代码,有些错误需要指出:

  1. #define n 10; 这句话不用加分号,加了就错了。

  2. for(i=0;a[j]!=a[i];i++)
    b[j]=a[j];

    这句话完全是算法错误。

    你是想实现当不重复的输入,如果你用a[i]和a[j]比,就不对了。

    假设输入1234567891

    第一次,j=0,i=0;a[i]==a[j],所以循环跳出。

    第二次,j=1,i=0;a[j]!=a[i],所以b[j]=a[j],就是给b[1]赋值了,b[0]永远没有赋值,是吧?这就是错误所在。

    所以你要在前面加一句b[0]=a[0]。

  3. 还有问题就是你只要遇到重复的,就会跳出循环,然后对应的b[j]并没有赋值,所以你的算法还是有很大的问题。下面是我的代码。


  4. #include<stdio.h>

  5. #define N 10

  6. void main()

  7. {

  8. int i,j,a[N],b[N];

  9. int index=0;//这个变量指向b的下标

  10. for(i=0;i<N;i++)

  11. {

  12. scanf("%d",&a[i]);

  13. }

  14. for(i=0;i<N;i++)//用i指向数组a的下标

  15. {

  16. for(j=0;a[i]!=b[j] && j<i;j++)//用j指向数组b的下标

  17. {

  18. }

  19. if(i==j)

  20. {

  21. b[index]=a[i];

  22. index++;

  23. }

  24. }

  25. for(i=0;i<index;i++)

  26. {

  27. printf("%d
    ",b[i]);

  28. }

  29. }



这个就是一个去重的题目,目的就是让你把现有数组的中重复的值去掉之后,存到一个新的数组里而已。

排序之后,直接一个for循环就能搞定的。


C语言编程问题:现有一个数组,要将数组中的几个数提出来做运算,要怎么...
你把类型搞错了。你本意是0x01为字符串吧,但定义时候定义错了,变成整数了。实际上,datatest[]你定义的是一维数组,数组中的元素的值,就是0x01, 0x04等。看你的代码,应该定义成2维数组:{"0x01","0x02"...}这种形式。我猜得可对?\/\/修改你的代码,没考虑逻辑,没考虑计算结果是否正确。

c语言:已知数组a中的元素(a[1]..a[n])
既然其它数都已经排好,只需要排最上面一个数了,算法比较简单,一看就应该能明白.我设计的是从A[0]...A[N-1],如果你要从A[1]...A[N]的话,把那个2*I+1,2*I+2改成2*I,2*I+1即可...include <stdio.h> void swap(int *x, int *y){ int temp = *x;x = *y;y = temp;}...

linux系统C程序设计编写程序,将数组内容后倒置linux系统C程序
在linux里,c程序的编辑、编译、调试的详细步骤是什么?在linux下,一般的c程序开发流程为:c程序的编辑:一般情况下,简单的c程序编辑是通过vi文本编辑器进行的,语法格式和在windows下的编辑是一样的;c程序的编译:而编译则是对编辑好的c语言程序进行一个,预处理,编辑,汇编和链接的过程,一般格式...

C语言,已知一个数组,int a[100],用函数int sushu(int *p,int num
include <stdio.h>\/\/ 是否是素数 bool prime(int x){ if(x < 2) { return false; } for (int i=2;i*i<=x;i++) { if(x % i == 0) { return false; } } return true;}int sushu(int *p, int num){ int count = 0; for (i...

求一个c语言程序,把两个数组内的相应元素相加,结果存储到第三个数组...
include <stdio.h> void add( int *num1,int *num2,int *result,int lenth){int i = 0;for( i = 0; i < lenth; i++){result[i] = num1[i] + num2[i];}}void show_array(int *num, int lenth){int i ;for( i = 0; i < lenth; i++){printf("%-3d",num[i])...

C语言问题,怎样将字符串数组中的一个元素赋给另一个字符串数组中的某...
字符串 赋给 字符串,要用 strcpy() 这类函数, 例如:char str1[2][10],str2[2][10]={"ABCDEFG", "01234567"};strcpy(str1[1], str2[0]);strcpy(str1[0], str2[1]);printf("%s %s", str1[0],str1[1]);--- 字符数组中的一个元素, 赋给另一个字符数组中的一个元素:inc...

高分急求C语言答案! 已知数组中有5个数1 3 5 7 9 按序排列!输入一个数...
兄弟大一吧!我也大一刚学!!不过这题我会!!include<stdio.h> main(){ int a[6] = {1,3,6,7,9};int i,j,x;scanf("%d",&x);for(i=0;i<5;i++) { if(x=j;i--)a[i+1]=a[i];a[j] = x;for(i=0;i<6;i++)printf("%d ",a[i]);printf("\\n");} ...

C语言中:将一维数组中的n(n<=50)个数按逆序存放。怎么编程?
思路就是将 数组中第一个和最后一个换位置 第二个和倒数第二个换位置 以此类推 源代码如下:include<stdio.h> int main(){ int n;\/\/n个数字 int i;\/\/循环变量 int num[50];scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&num[i]);for(i=0;i<n\/2;i++){ int t;\/\/交换...

C语言中如何将一维数组的内容写入文件?
主要原因是 if((fp=fopen("成绩.txt","w+"))=NULL)这句 = 要改为== =意味着 把 NULL赋值为fp因此 fp则永远为空了 改过的代码如下:(我添加的部分有注释)include <stdio.h> #include<stdlib.h>int main(){ FILE *fp; int num[100]; int score[100]; int i = 0;\/...

c语言程序编写:数组元素移动
* 7.8数组元素移动成绩: 100 \/ 折扣: 0.8 请编写函数fun, 函数的功能是: 移动一维数组中的内容; 若数组中有n个整数, 要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。 例如, 一维数组中的原始内容为: 1,2,3,4,5,6,7,8,9,10; p的值为3。移动... 展开 我...

岳麓区18539836372: c语言编写将已知数组内容复制到另一个新数组,使复制产生的新数组包含已知数组全部出现过的值,而不重复 -
钭茅善泰: 很佩服你写这么强的程序,首先你的第三层for循环做比较第一次给b1赋了a1,这是对的,但是当b1等于2后,你以后的每一次比较,要么就是在和a[0]比较后停下来,i=0,然后下一个b赋值为也就是1,要么就是和a[0]比较一次,i=1,然后把后面一个b赋值为2,所以总是121212的不止,而且你的那个if根本没有判定作用,你能把这么简单的程序写成这样,真的很强,只能说思维有别于常人

岳麓区18539836372: C语言,将已知数组内容复制到另一个新数组,使复制产生的新数组包含已知数组全部出现过的值,而又不重复. -
钭茅善泰: 数组里面是整数吗?根据你的代码,有些错误需要指出: 1. #define n 10; 这句话不用加分号,加了就错了.2. for(i=0;a[j]!=a[i];i++) b[j]=a[j]; 这句话完全是算法错误. 你是想实现当不重复的输入,如果你用a[i]和a[j]比,就不对了. 假设输入...

岳麓区18539836372: c语言 将一个数组里的字符串复制到另一个数组中 -
钭茅善泰: 比如源字符串是s,要复制到另一字符串t中,这里必须满足t能放得下s的全部元素,否则将会有危险发生.举例代码如下: //#include "stdafx.h"//If the vc++6.0, with this line. #include "stdio.h" int main(void){char *s="The quick brown fox jumps over a lazy dog. 1234567890";char *ps=s,t[60],*pt=t;while(*pt++=*ps++);//这就把s全部复制给t了printf("%s\n",t);//打出来看看...return 0; }

岳麓区18539836372: 在c语言中怎样将一个数组中的全部内容赋给另一个数组,有没有一步就可以完成,不用for语句. -
钭茅善泰: 很明显你没有分清楚数组和字符串,对于字符串来说是可以的,因为有strcpy()和memcpy()这类函数调用可以直接复制,但是数组是不行的,一般都得用到一个循环. 函数返回数组只要返回只要返回首地址就可以了,比如你要返回的是int a[10]的数组,那么你定义函数的时候可以这样写:int *a func(){………………return a},即只要返回首地址,切忌a[10]不能再函数体中定义否则无意义.

岳麓区18539836372: C++如何把一个动态数组复制到另一个动态数组中去哦 -
钭茅善泰: int *p1=new int[100]; for(int i=0;i<100;++i) pi[i]=i+1; int *p2=new int[100]; memmove(p2,p1,sizeof(int)*100);//将p1中间每个字节的内容赋值到p2中间,最后一个参数是要赋值的字节数,也可以用函数memcpy,2个函数功能一样,但有细微区别.另...

岳麓区18539836372: c语言中如何实现将数组内的任意一个数复制给一个变量 -
钭茅善泰: 没看懂题目的意思,如果是给单个元素赋值的话,直接采用a[i] = a;的格式就可以.其中的i是你想赋值的元素的下标,c语言的下标是从0开始的.不懂的继续问.

岳麓区18539836372: c语言,两个字符数组,利用一个函数将一个内容复制并替换另一个的内容 -
钭茅善泰: 这是因为char* b = "……",中. b是一个常量,不能对它指向的内存区域赋值.类似下面的代码: char* p = "hello"; p[0] = 'c';是同样的错误.

岳麓区18539836372: c语言将一个数组里的质数保存到另一个数组里 -
钭茅善泰: 遍历第一个数组,如果是质数,保存到第二个数组中就可以了. 代码很简单 就不提供了.

岳麓区18539836372: C语言编程时,如果一个一维数组经过处理后,怎样将处理后的数组存入另一个数组? -
钭茅善泰: 用循环一个一个赋值啊 比如2个数组a[10]和b[10],a是你说的处理完的数组 那么 for(i=0;ib[i]=a[i]; 这样就行了 学C的话就是选定一本教材然后多上机,这点很重要 所有的实例都自己上机实现,然后用自己的想法熟练

岳麓区18539836372: C语言将数据由文件输入数组后,怎么将数组的值传给另一个子函数. -
钭茅善泰: 这个矩阵必须分配在堆空间.hanshu(graph[5][5])接收二维数组为参数.juzhen()应该返回graph的地址.

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