-
这个想法是正确的,但它没有被正确复制。
1.求最大和最小的数字。
2.将 a[0] 换成 maximum; a[10] 以最少的交换。
1.数组的输出需要一个接一个地输出,即所有值的输出在循环中完成。
2.数组在编译时没有越界检查,这也是编程时需要特别注意的问题。
printf("%d",a[10]);
这句话只能输出 a[10],int a[10],有效数组的下标是 9,a[10] 越界,输出的是随机数。
-
a[m]=max;
a[n]=min;
不能直接分配,而应与相应的位置交换。
例如,和 swap(a[m],a[0]);
swap(a[n],a[9]);
如何实现 swap 自己编写。
-
#include
void main()
int a[10];
int min,max,i;
int m=0,n=0;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
min=a[0];
max=a[0];
for(i=0;i<10;i++)
if(a[i]>=max)
max=a[i];
m=i;else if(a[i]<=min)min=a[i];
n=i;a[m]=a[0];
a[0]=max;
a[n]=a[9];
a[9]=min;
for(i=0;i<10;i++)
printf("%d",a[i]);
if (i<9) printf(" ");
printf("");
lz,你的最后一个命令 printf("%d",a[10]);就是把数字打印在数组的10号位置,数组只有0-9,10一定是垃圾数据!!
a[m]=max;
a[n]=min;此命令是将一个值直接分配给 a[m] 作为 max,该值最初是 max...。你做得太过分了。
如果有什么不明白的地方,就问我。
-
确实问题有问题,格式控制不正确。
-
解 (2) 得到 (1) i < n*m ,(2) (i-i%4) 4 ,(3) i%4
没错。 包裹这个地方,有点问题。
问题是 if(i%3==0) 是换行符,i = 0 改为 if((i+1)%4==0)。
-
要了解 C 语言中数组的概念,请通过 for 循环输出打印数组。
-
C 数组的问题非常简单。
在 C 中,数组是构造的数据类型。 一个数组可以分解为多个数组元素,这些元素可以是原始数据类型或构造类型。 因此,根据数组元素的不同类型,可以将数组仔细划分为数值组、字符数组、指针数组和结构数组等各种类别。
-
当你定义一个数组时,会分配相应的内存量,如果你使用越界的下标,编译时不会出现错误,但实际上这块内存可能没有分配,这意味着你可能会踩到其他变量的地址,造成很多逻辑错误。
你说这是一个堆栈溢出,它发生在 C C++ 中。 一般来说,编译器在进入堆栈之前会保护内存(如堆栈参数、函数地址等),但属于堆栈的数据,如a、b等,是无法保护的。
-
C++ 数组具有数据越界,但编译器在使用时不会检测它们是否越界,但它们可能会在程序运行时因数据溢出而崩溃。
为组定义长度的意义在于,它提前为数组分配空间,以便其他变量不会使用它。
int a[1] = 是错误的,因为你告诉了编译器数组的长度,但你给了它一个太长的元素,所以它会给出一个错误,int a= 是正确的,因为他的意思是编译器会根据数据初始化的长度为数组分配一个大小!
假设指向 b 的指针与指向 a[11]] 的指针相同,您的意思是 a[11] 的地址与 b 的地址相同吗?如果是这样,B确实会被修改,所以数据溢出是有风险的。
-
首先,这种编程是有风险的,因为你定义的数组是没有初始化的,这意味着你的数组中的任何数据,无论是字母还是数字,都是不确定的,放在实际的工程项目中很容易造成内存泄漏或溢出。
其次,strlen 获取字符串的长度,其中不包括结束字符 0,因此第一个输出 9 意味着数组中正好有 9 个元素。
如果将数组初始化为 0,则打印应为 11,因为数组是从 0 开始计数的。
-
首先,第一个问题其实是用来定义数组长度的,如果你int a=使得数组的长度等于3,这种方式就是在初始化时确定数组的长度。 但是如果你int a[10],这样,即使你在初始化的时候不能确定数组中的值,只要你能确定它的长度,因为以后很多函数会要求你传入数组的长度,第二个问题:你说的情况会发生,系统也不会帮你做任何事情, 这取决于您在分配指针时要小心。
-
这两个问题可以一起回答,给定长度的数据组的定义主要是为了防止问题2中的情况发生,问题2中的情况是小的,在简单程序的情况下,程序稍微复杂一点,数组的长度没有定义, 而且出错的概率非常高。一般来说,在开发过程中无法确定数组的长度,最好在程序中使用内存管理功能来请求内存,而不是使用固定长度的数组,只是注意不要泄漏内存。
-
答案是d
aarray'a','b','c','d','e','f','\0'
比 b 数组多一个字符串终止符'\0'
所以选项 a、b 和 c 都是错误的。
-
你可以用C类比,因为C++继承了很多C语法,(1)定义了一个函数。
void fun(int a[10]),在 main 函数中,int b[10]; 直接调用fun(b); 这相当于函数 fun 的参数 a 在数组 b 的起始地址处创建一个数组,即 b 是一个数组 a,它们是同一个数组,这已经等价于一个引用。
2)定义一个int b[10];数组,b 是一个地址,是数组的起始地址,是一个常量,所以函数是用指针类型 return 定义的,例如 int * fun (int a[10]); 当然,需要注意的是,调用函数后空间会释放,可能返回的地址不再存在。
3)数组赋值不能直接b=a,因为数组本身的变量地址是一个常量,比如int a[10],a的值已经是常量了,不能改变,如果要赋值数组的值,使用函数,或者写一个循环a[i]=b[i], i++ 自己;
-
1. void func(ref int a)2. int func(){
3. mencpy(b, a, sizeof(a));内存的副本。
直接 b=a; 否,当数组名称用作左值(在赋值运算符的左侧)时,它是一个常量,不能赋值。
arr[i]=i;通过for循环将arr的值从0赋值到9,然后arr[i]的值不变,执行下一个for循环,k的值仍为0 ha,不变。 >>>More
步骤1:打开VC++;
步骤2:选择“文件”>“新建>工作区>空白工作区”,然后给这个工作区一个名字,选择存储路径,OK! >>>More
你可以用一维数组来模拟,也可以自己计算下标,因为不管你定义多少维,在内存中都是线性的,比如C存储在安星中,也有基于列的存储,比如fortran语言,你定义多维,但是编译器帮你计算下标, 所以你可以用一维数组自己模拟,比如用int a[10]模拟int b[5][2],a[0]是b[0][0] a[5]是b[2][1] a[9]是b[4][1] >>>More