c语言实现数组追加,C语言数组相加

1,C语言数组相加数组的下标是从0开始的,并非从1因此假设定义数组int a[3] , 那么有效的数组元素为a[0] a[1] a[2]楼组的代码里面的数组从1开始使用,输入3*3的数组会导致越界,踩内存发生错误void fun(int arr[M][N])int i,j;for(i=1;i<=M;i++) //应该是for(i=0;i<M;i++) for(j=1;j<=N;j++) scanf("%d",&arr[i][j]);}其他也按照这个修改就可以了
2,C语言 数组 字符数组 自加问题对于一维数组,数组名代表的是数组的首地址,而且数组名是一个常量地址,也就是说数组名的地址是不可改变的 。因此数组名是一个地址,对数组名使用加法运算,会使地址移到下一个位置 。就你的例子而言,数组名a指向的是数组中第一个元素的地址,如果使用a+1,则使a指向了数组中第二个元素的地址,要访问地址中的元素 , 需要使用指针 。而对于常量而言,是不能使用a++这样的语句的 , 也就是说不能使用诸如3++这样的语句 。你要把数组的地址加1,需要使用a+1;举个例子:int a[]={1,2,3}cout&lt;&lt;(a+1)[0]&lt;&lt;*(a+1)&lt;&lt;endl; 结果都输出2,因为这时a+1的地址是数组中第二个元素的地址 。而*(a+1)表示的是访问这个地址中存储的值,(a+1)[0]与使用*(a+1)笑果是一样的 。【c语言实现数组追加,C语言数组相加】
3,c语言将两个数组相加输入两个数组一个A32一个B23将for(i=0;i<=2;i++) for(j=0;j>=1;j++)d[j][i]=a[i][j];c[j][i]=b[j][i]+d[j][i]; }}for(i=0;i<=1;i++)for(j=0;j<=2;j++)printf("%d\n",sum);}}应该是楼主粗心 , for(j=0;j>=1;j++),循环截止条件弄错了,程序问题不大for(i=0;i<=2;i++) for(j=0;j>=1;j++)d[j][i]=a[i][j];c[j][i]=b[j][i]+d[j][i]; }}这里面第二个循环当中 j=0并不符合j>=1的条件,所以这个循环不执行 , 所以c、d两个二维数组并未被赋值,里面都是随机数第二个循环应该改为for(j=0;j<3;j++)才对
4 , c语言怎么在数组最后再加一些数据很简单利用C语言中的动态数组就可以搞定举个例子#include #include #include #include int main() { srand((unsigned)time(NULL)); int n; int new_number; printf("please input a number:\n"); scanf("%d",&n); int *p = (int *)malloc(n*sizeof(int)); for (int i=0;i { p[i] = rand()%100; } printf("the array is:\n"); for (int i=0;i { printf("%d\t",p[i]); } printf("add a new number to array:\n"); scanf("%d",&new_number); int *q = (int *)realloc(p,(n+1)*sizeof(int)); q[n] = new_number; printf("after add a new number the array is:\n"); for (int i=0;i { printf("%d\t",q[i]); } free(q); system("pause"); return 0; }通过动态数组就可以在原本已经满的数组后面继续添加元素sometype flag;char str[100];while(flag != 程序运行结束标志)if(程序运行结果 == "apple")//if里可能是字符串比较,也可能是相应的数字的比较,看具体情况改吧strcat(str, "apple");}else if(程序运行结果 == "banana")strcat(str, "banana");}......}c里面好像没有string类型,我也不知道怎么表示字符串的数组,既然最终是用字符串输出,就直接用一个字符串连接呗