求教一个C语言问题 求教一个C语言编程问题,详细资料在里面

作者&投稿:穆垂 (若有异议请与网页底部的电邮联系)
#include "stdio.h"
void del_a(int* a,int i , int iLen)
{
int j;
//for(j=i;j<9;j++)
for(j=i;j<iLen-1;j++) //这里的数组长度是iLen,减一个数组长度变为iLen-1
a[j]=a[j+1];
}

printf_a(int* a , int iLen )
{
int i=0;
int *p=a;
//while((*p)!='\0') //p是个整型指针,不能这样来判断数组的结束!
int j=0;
while ( j++< iLen ) //iLen是数组的长度
{
printf("%d ",*(p+i));p++;
}
}
main()
{
int a[]={1,2,3,4,5,6,7,8,9};
int* p=a;
int i,j;
int len=sizeof(a)/sizeof(int); //数组长度
scanf("%d",&i);
for(j=0;j<i && j<len ;j++,p++); //这里要求i不能超过len
printf("%d\n",*p);
del_a(a, 4 , len);
len--; //数组长度减1
printf_a( a , len ); //整型的数组在子函数中使用时,要将长度传递过去
}

最小的改法是:
int a[]={1,2,3,4,5,6,7,8,9};
==>
int a[]={1,2,3,4,5,6,7,8,9,0};//<<< 添一个0做为数组的结束标记, 原程序就正常了

与字符串中删字符是一个原理,所以这里应当有个假设: 有效元素都不是0,结束标记是0,而且原程序也是这么做的,只是定义时少了一个结束符,所以运行不对

所谓的数组元素删除,不过是从删除点开始把后面的数据往前搬一个位置,后面用0抹一下,就自动跟踪了结束位置,数组分配的空间并没有变。

这不是删除,而是覆盖,...
你也可直接对通过地址对数据进行破坏,。。。

求教一个C语言问题~

咱们先看main函数的处理:
pa=&a; //pa指向a的地址,所以*pa的值为2.5
pb=&b; //pb指向b的地址,所以*pb的值为9.0

调用sub(b-a,pa,pa),由于b-a=9.0-2.5=6.5,pa指向a的地址,pb指向b的地址,
所以void sub(float x,float *y,float *z) 中:
x=6.5
float *y: y指向pa指向的地址,也就是y指向a的地址,*y=2.5
float *z: z指向pa指向的地址,也就是z指向a的地址,*z=2.5

再看sub函数中的处理:
*y=*y-1.0=2.5-1.0=1.5 //由于y指向a的地址,所以对于*y的赋值,实际上就是对于a的地址的赋值,也就是对于a进行赋值,所以实际上就是将a赋值为1.5

注意一下:由于y和z都指向a的地址,所以*y被赋值为1.5以后,a的值变为1.5,也就意味着*z也就是1.5了,所以下面的*z应该是带入1.5进行计算

*z=*z+x=1.5+6.5=8.0 //由于z指向a的地址,所以对于*z的赋值,实际上就是对于a的地址的赋值,也就是对于a进行赋值,所以实际上就是将a赋值为8.0

所以,最后a的值为8

#include
void main()
{
int m,n,i,j,t,max,min;
printf("请输入任意两个正整数:");
scanf("%d %d",&m,&n);
if (m>n)
{
t=m;
m=n;
n=t;
}
for(i=1;i<=n;i++)
{
if((m%i==0)&&(n%i==0))
max=i;
}
for(j=n;j<=n*m;j++)
{
if((j%m==0)&&(j%n==0))
{
min=j;
break;
}
}
printf("最大公约数是%d
最小公倍数是%d",max,min);

}
自己再把它弄成函数调用就性咯。。。不行在找我

c语言题 输入一个5行4列的二维数组,求各行元素之和并将这些和按从小到...
答:MeanSift 采纳率:39% 擅长: C/C++ 编程语言 常见软件 其他回答 float a[5][4],c[5]={0};前面的c数组在初始化之前被访问。printf("%f\t",c[m]);printf没有横向制表,结果会连在一起的。 追问 yes ZaneYork | 发布于2012-12-04 举报| 评论 0 1 你这程序太乱 重给你写一个 行么 ma...

如何用C语言完成这个问题 一个球从100米的高处自由落下,触地后反弹到...
答:C语言代码如下:include<stdio.h> int main() { double d = 100; // 皮球在空中经过的距离,第一次落地时为100m double h = 50; // 皮球反弹的高度,第一次反弹后为50m int i, n;scanf("%d", &n);for (i = 2; i <= n; i++) { // 从第二次落地开始 d += h * 2; ...

一个很有意思的c语言问题,欢迎大家来讨论
答:刚刚在VC下调试了一下。确实如你所说。但我在你程序的基础上做了一点修改:1. 添加一个函数Myfun1,除了名字不一样,其他的东西全同Myfun函数。2. 在主函数中添加对Myfun1的调用。3. 在函数中添加一个变量b,和变量a同时申明,不初始化。既int a,b;在运行时,发现a,b的初始值相同均为-...

请教一个简单的C语言问题,请大家帮帮忙~~
答:,那么 你输入时也必须有逗号 否则出错 所以一般不这么输入 用也应该有提示 而里面的 内容 %2d %3d 意思是2位用来显示 不足补齐超出继续 你输入的是 123 那么12 这是2位 用来输出 而剩下3 取3位补齐 还是3 你第二次用的 123 这号成为了 下次的读取操作 还有什么细节问题 你再补充吧 ...

C语言入门一个小问题
答:include <stdio.h> void main(){ int i,a,b,count=0;c:b=1;printf("请输入一个大于2的整数:");scanf("%d",&a);for (i=2;i<=a-1;i++)if (a%i==0){ b=0;break;} if (b)printf("是素数\n");else printf("不是素数\n");++count;if(count<10)goto c;} ...

一个很简单的C语言问题
答:2. 错误 1.c 13: 未定义的符号'value'在 main 函数中.3. scanf ("%f,&number"); 改语句中的引号标错,改为 scanf ("%f",&number);4.用double定义变量时一定要在输入中限定他的类型lf%。5.还有你程序里面没有子程序为什么要加一个return 0;呢?这样就没有返回值啦!你只有一个主...

请教一个c语言编程问题~
答:fabs()函数 原型:在TC中原型是extern float fabs(float x);,在VC6.0中原型是double fabs( double x );。功能:求浮点数x的绝对值 说明:计算|x|, 当x不为负时返回x,否则返回-x 1e-6表示的是浮点数。也就是1*10的-6次方。while(fabs(t)>1e-6) 这个意思是 循环条件是 t的 绝对...

请问关于C语言的一个小问题
答:for 的使用方法 for( ; ; ) 两个分号 分成3部分 第一部分 是 初始值 第二部分是判断 第三部分 是步长 还有 int main 不是 int mian ~for(i=1,i<=10,i++); 这个有错误 还有 for ()后面不要直接接分号 ; 不然你的循环就作废了 把for ()后面的分号都去掉 ...

关于c语言的一个小问题,小弟刚学c语言,希望大家帮忙解决
答:第一main 你写的mian 第二你的变量中不存在sball变量 应该为shall,这个图是我的运行结果,出现乱码那就需要你的编辑器支持汉字。

请教一个C语言编程问题,急等答案,先谢谢了!
答:这里有详细的算法分析和源代码(本人就偷懒不写了):http://www.52wg.org/computer/chengxu/200511/computer_99478.html 补充一点:总体思路:试商,最多只要试到N的平方根就可以了(找到一个质因数后,再用N除以质因数后的结果继续分解)。核心——从2开始,用sqrt(N)以内的数去试商,不断...