c语言,改错,语法正确,请问为什么输出结果是2,3,1,2,3,1,2,3,1,1?帮我改正,结果应该是8,9,10,1
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/08/29 01:05:10
c语言,改错,语法正确,请问为什么输出结果是2,3,1,2,3,1,2,3,1,1?帮我改正,结果应该是8,9,10,1,2,3,4,5,6,7
题目是有n个整数,使其前面个数顺序向后移m个位置,最后m个数变成最前面m个数
以下代码测试通过:#include <stdio.h>
#include <string.h>
void f(int a[],int n,int m)
{
int i = 0;
int *p; //用于存放前m个元素的值
p =(int *)malloc(sizeof(int)*m);
//在p指向的区域内保存数组中的最后m个元素
for(i = 0;i<m;i++)
p[i] = a[n-m+i];
//将从m个元素开始的数组数据移m个位置
for(i =n -1;i>=m;i--)
{
a[i] = a[i-m];
}
//将数组的前m个元素赋值
for(i = 0;i<m;i++)
a[i] = p[i];
//释放申请的内存空间
free(p);
//打印数组元素
for(i = 0;i<n;i++)
printf("a[%d] = %d",i,a[i]);
}
void main()
{
int a[10] ={1,2,3,4,5,6,7,8,9,10};
int n =10,m = 3;
f(a,n,m);
}你的主要问题: 数组的赋值存在覆盖情况。本来想具体写的呢,不过看到已经有人具体描述了,我就不多说了,不过如果有问题,欢迎再来讨论。不过他的代码也有问题,比如说int b[n],这一句是无法编译通过的,C语言不支持这种语法,不支持可变长度的数组,这时候只能动态分配内存来解决。
#include <string.h>
void f(int a[],int n,int m)
{
int i = 0;
int *p; //用于存放前m个元素的值
p =(int *)malloc(sizeof(int)*m);
//在p指向的区域内保存数组中的最后m个元素
for(i = 0;i<m;i++)
p[i] = a[n-m+i];
//将从m个元素开始的数组数据移m个位置
for(i =n -1;i>=m;i--)
{
a[i] = a[i-m];
}
//将数组的前m个元素赋值
for(i = 0;i<m;i++)
a[i] = p[i];
//释放申请的内存空间
free(p);
//打印数组元素
for(i = 0;i<n;i++)
printf("a[%d] = %d",i,a[i]);
}
void main()
{
int a[10] ={1,2,3,4,5,6,7,8,9,10};
int n =10,m = 3;
f(a,n,m);
}你的主要问题: 数组的赋值存在覆盖情况。本来想具体写的呢,不过看到已经有人具体描述了,我就不多说了,不过如果有问题,欢迎再来讨论。不过他的代码也有问题,比如说int b[n],这一句是无法编译通过的,C语言不支持这种语法,不支持可变长度的数组,这时候只能动态分配内存来解决。
请问 怎样用C语言编程 例如输入1 2 3 4 5 结果输出123 124 125 134 135 145
请教一个C语言问题.若输入3个整数3,2,1,则以下程序输出的结果是?
C语言 麻烦讲解一下输出的结果3,2,-1
c语言题目(详解)7.下列程序段的输出结果是 【 】 .main( ){ int a[3][3]={{1,2,9},{3
【C语言初级〗有以下程序输出结果是1 -2
帮我解一下C语言题,若变量已正确定义,一下语句段的输出结果是()x=0;y=2;z=3;switch (x);{case
C语言 写出下列程序在由键盘输入0、1、2、3、4、5时的输出结果.
C语言编程:求表达式1+(1+2)/2!+(1+2+3)/3!+.+(1+2+3+...+10)/10!的值,输出结果保
LINGO 帮我改改,我想要输出的结果是s(1)=1,s(2)=4,s(3)=2,s(4)=3,
C语言 从荧幕输出1*1,2*2,3*3.10*10之结果,以for循环撰写一程式完成之
c语言计算1+2+3...到20,每加1个数输出一次结果
C语言输出九九乘法表输出结果为:1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=9 This is th