C语言 数组 程序求解,请把过程说的详细一点,谢谢

C语言 数组 程序求解,请把过程说的详细一点,谢谢,第1张

这道题的根本是你要弄懂2点:int p=a;和p++

1、int p=a可以分开来看int p;p=a;意思是先定义一个int型的指针p,再将数组a的一个元素的地址赋值给指针p。注意:p被赋值的值是元素a[0]的地址,而不是a[0]的值。

2、是指针申明符号。在定义指针的时候,如int p,只是单纯为了让你区别正常变量和指针。但是如果单独出现,如改动题中int p=a;printf("%d",p); 这时的p所代表的是p这个指针所指地址的值,在题中就a[0]的值。

3、你还要理解p+1,这样的加法意思。p所代表的是数组a的第一个元素的地址,p+1就代表的就是数组a的第二个元素的地址,以此类推。

4、弄懂前3后,p++就好理解了,它可以看作是(p++),这里的括号不是表示优先级的意思,而是指(p++)是个整体,p++可以看成p+1。但是这里的加1要等到赋值完以后(原因是a++和++a的区别)。所以根据for循环,p++实际上是指原数组a的a[0],a[1],a[2],a[3]。这4个元素的值。然后赋值给新的数组a

5、最后要求输出数组a的第3个元素a[2],这里就是6

#include <stdioh>

//合并数组

//返回值为合并后的长度

int SortAddArray(int buf, int size, const int arr1, int len1, const int arr2, int len2) {

if (NULL != buf && NULL != arr1 && NULL != arr2

&& len1 >= 0 && len2 >= 0 && size >= len1 + len2) {

int i = 0;

int j = 0;

for (int k = 0; k < size; ++k) {

if (i >= len1) {

buf[k] = arr2[j++];

}

else if (j >= len2) {

buf[k] = arr1[i++];

}

else if (arr1[i] <= arr2[j]) {

buf[k] = arr1[i++];

}

else {

buf[k] = arr2[j++];

}

}

return len1 + len2;

}

else {

return -1;

}

}

int ShowArray(const int arr, int len) {

if (NULL != arr && len >= 0) {

if (0 != len) {

for (int i = 0; i < len - 1; i++) {

printf("%d,", arr[i]);

}

printf("%d\n", arr[len - 1]);

return len;

}

else {

return 0;

}

}

else {

return -1;

}

}

int main(int argc, char argv[]) {

int a[4] = { 1,2,4,5 };

int b[6] = { 0,2,3,3,5,6 };

int c[10];

SortAddArray(c, 10, a, 4, b, 6);

ShowArray(a, 4);

ShowArray(b, 6);

ShowArray(c, 10);

return 0;

}

#include

void

main()

{

int

s[10]={1,2,3,4,5,6,7,8,9};

int

n;

printf("请输入需要插入到数组中的位置:");

scanf("%d",&n);

//比如说插入到第三个位置,即s[2]中,则输入3

int

num;

printf("请输入需要插入的数:");

scanf("%d",&num);

for

(int

i=10-1;i>=n;i--)

{

s[i]=s[i-1];

}

s[i]=num;

printf("插入之后的数组:\n");

for

(i=0;i<10;i++)

{

printf("%d

",s[i]);

}

printf("\n");

}

#include <stdioh> //包含头文件

void main() //主函数开始

{

int a[8]; //定义了一个有0——8总共9个元素的数组

int i,j,t; //定义了3个变量,其中i,j用来循环,t用来交换数据

printf("请输入8个整数:"); //输出:“请输入8个整数:”

for(i=0;i<8;i++) //这个for循环是用来将输入的8个数存入到数组中,比如:i=0,a[0]=2;i=1,a[1]=4;i=2,a[2]=8;i=3,a[3]=0;i=4,a[4]=1;i=5,a[5]=3;i=6,a[6]=8;i=7,a[7]=6;i自加到8的时候,i不再小于8,则跳出该for循环,进入下一条指令,即下一个for循环。

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

for(i=1;i<8;i++) //这里的两个for循环是用来比较这8个数的大小的,当i=1时,j=1,判断a[0]>a[1],如果是,则t=a[0],a[0]=a[1],a[1]=t。第一个for循环中,i=1时,第二个for循环控制a[0]与a[1]做比较,a[1]与a[2]做比较。。。a[6]与a[7]做比较,完成第一次比较大小排序。第一个for循环中,i=2时,完成第二次比较,i控制完成8次大比较,最后完成将此8个数从小到达的顺序排列起来。

for(j=1;j<=8-i;j++)

if(a[j-1]>a[j])

{

t=a[j-1];

a[j-1]=a[j];

a[j]=t;

}

printf("排序后的结果:");//输出“排序后的结果”

for(i=0;i<8;i++) //这个for循环控制输出8个数

printf("%d \n",a[i]);

}

不知道你明白了没有

以上就是关于C语言 数组 程序求解,请把过程说的详细一点,谢谢全部的内容,包括:C语言 数组 程序求解,请把过程说的详细一点,谢谢、求指教,以下皆用数组在c语言里编写程序、在c语言中,将一个数插入一个数组中,程序怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9314457.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存