这道题的根本是你要弄懂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语言中,将一个数插入一个数组中,程序怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)