将一个数组所有的值赋值为1,0,-1怎么弄,不用循环

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将一个数组所有的值赋值为1,0,-1怎么弄,不用循环相关的知识,希望对你有一定的参考价值。

C语言还是C++;C++可以办到。C语言不用循环估计不好办。

C语言,如果是赋值为0,不用说,自然是可以的,只要写TYPE x[100]=0;这样就可以;这对任何类型都适用。

float a[100]=0;
int b[100]=0;

C语言,要赋值成-1的话,对于所有的整数类型([unsigned] char/int/short/long等)都是可以实现的,用memset就可以;非整数类型,如float和double就不行。

C语言,要赋值成1的话,只有char和unsigned char可以做到,用memset,其他类型我还想不出有啥方法。

C++的话,要依次赋值为1,0,-1, 1,0,-1, 1, 0, -1 ...这样的,不用循环都可以办到。

参考技术A 为什么不用循环?其实你可以考虑下vector 参考技术B 按照1 0 -1的顺序??、追问

不是就三种情况,数组全部赋值为1,-1,或0

追答#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void Hanshu();
int main()

    srand(time(NULL)); 
    Hanshu();
    return 0;
       

void Hanshu()

    int i;
    int a[100];
       
    for( i = 0; i < 100; i++)
    
        a[i] = -rand()% 3 + 1;
           
        printf(" %d", a[i]);
    

VC中如何将一个二维数组的值赋给另一个二维数组?只能用一行。

其中一个是函数型式的
arrayB = change(m, arrayA);
这样好像不可以。。

//---------------------------------------------------------------------------

#include <stdio.h>
#include <string.h>
int main(void)

int a[2][2]=1,2,3,4,b[3][3]=0,i;

memcpy(b,a,sizeof(a));//把a数组的所有元素复制到b数组中

for (i = 0; i<9; i++)
printf("%d ",b[i/3][i%3]);
if ((i+1)%3==0) putchar('\n');

return 0;

//---------------------------------------------------------------------------
参考技术A 什么意思,什么叫"其中一个是函数型式的"

只用一行的话,可以用memcpy函数实现,前提是两个数组各个维数下的元素个数是相同的本回答被提问者和网友采纳
参考技术B 如果声明和定义变量那一行不算的话可以这样:
int a[2][3]=1,2,3,4,5,6,b[2][3];
memcpy((char *)b,(char *)a,2*3*sizeof(int));
参考技术C 把a赋给b
char a[5]=0;
char b[5];
memcpy(b,a,5);//b是目的地址,a是源地址,5是要拷贝的字节数

以上是关于将一个数组所有的值赋值为1,0,-1怎么弄,不用循环的主要内容,如果未能解决你的问题,请参考以下文章

c语言有关二维数组变量初始化

怎么将字符数组全赋值为空

C语言 如何将一个二维数组的值全部替换成另一个二维数组

java中数组,怎么既定义其长度,有可以赋值,但赋值没有全部赋值,后面的自动补0

delphi中的数组赋值

Action怎样获取页面的值呢?