c语言程序设计: 求高人解答下面几道题.也麻烦写下解题步骤。非常感谢!

写出程序的运行结果#include"stdio.h"main(){intk=2,m=4,n=6;int*pk=&k,*pm=&m,*p;p=&n;*p=*pk*(*pm)... 写出程序的运行结果
#include"stdio.h"
main()
{int k=2,m=4,n=6;
int *pk=&k,*pm=&m,*p;
p=&n;
*p=*pk*(*pm);
printf("%d\n",n);}

写结果
#include"stdio.h"
void swap(int x,int y)
{int t;
t=x;
x=y;
y=t;}
main()
{int a=5,b=10;
printf("%d,%d\n",a,b);
swap(a,b);
printf("%d,%d",a,b);}

读程序写结果
#include"stdio.h"
main()
{int a[5],i,t;
int sub(int *,int);
for(i=0;i<5;i++)
a[i]=i*i;
t=sub(a,5);
printf("t=%d",t);}
int sub(int *p,int n)
{int i,s=0;
for(i=0;i<n;i++)
s+=*(p+i);
return s;}
写结果
#include"stdio.h"
main()
{int x=2,y=3,z;
int js(int,int);
z=js(x,5);
printf("(2)x=%dy=%dz=%d\n",x,y,z);}
int js(int x,int y)
{float z;
x*=x;y*=y;
z=(x+y)/2.0;
printf("(1)x=%dy=%dz=%.2f\n",x,y,z);
return z;}
展开
 我来答
风之风信子
2011-06-29 · TA获得超过1151个赞
知道小有建树答主
回答量:373
采纳率:66%
帮助的人:280万
展开全部
/*时间:2011年6月29日
*@作者:风之风信子
*@功能:1、检测指针的效果。2、swap函数的功能,测试形参实参的作用。3.测试指向数组的指针的作用。
鄙视一下出题的老师,代码写的真难看,我把格式修改了一下,有的地方为了方便讲解,也改了形式。
只要你稍微学过一点,一定能看懂。
我希望你别把我给你的解释直接复制粘贴,一定要自己好好看看,认真消化!
小弟弟,学点东西就比不学强,c语言很重要的,加油吧!
*/

/* 问题一:
这个问题的结果是8。
*/

/*
#include<stdio.h>

void main()
{
int k=2,m=4,n=6;
int *pk=&k;//定义pk指针指向k的地址
int *pm=&m;//定义pm指针指向m的地址
int *p=&n;//定义p指针指向n的地址
*p=*pk*(*pm);//*p指的是p的地址中的数的值,也就是n的值。
//它的值是pk地址中的值(*pk)乘以pm地址中的值(*pm)
//也就是2乘以4。
printf("%d\n",n);//n等于2*4等于8。
}
*/

/*问题二:
这个问题的结果是5,10 5,10
看似进过了swap函数的转换,a和b的值应该互换是吧?
你预想的结果是不是5,10 10,5呢?
但是,作为函数来说,它只能有一个或者没有返回值,不可能通过形参的变化实现实参的改变。
如果你想让两个数互换的话,必须应用指针。
把swap函数改为:
void swap(int *x,int *y)
{
int t;
t=*x;
*x=*y;
*y=t;
}
最程序中应用swap的时候也应该用到swap(&a,&b);
因为你调用的就是指针了。现在的结果就变成了5,10 10,5了。
懂了吗?
*/
/*
#include"stdio.h"

void swap(int x,int y)
{
int t;
t=x;
x=y;
y=t;
}

void main()
{
int a=5,b=10;
printf("%d,%d\n",a,b);
swap(a,b);
printf("%d,%d\n",a,b);
}
*/
/*问题三:
结果为30。
注释见程序,再次鄙视一下编这些题目的老师,代码写的真烂。
*/

/*
#include<stdio.h>
void main()
{
int a[5],i,t;//定义一个5个元素的数组,一个i(循环数),一个t(接结果)。
int sub(int *,int);//声明函数
for(i=0;i<5;i++)
a[i]=i*i;//a[0]=0,a[1]=1,a[2]=4,a[3]=9,a[4]=16
t=sub(a,5);//运行函数,函数返回结果是s=0(s的初始值)+0(a[0])+1+4+9+16=30。
printf("t=%d",t);//输出结果,最后结果是30。懂了吗?
}

int sub(int *p,int n)
{
int i,s=0;
for(i=0;i<n;i++)
s+=*(p+i);//s=s+(*(P+i))
//注意这个*(p+i)的格式,如果p指向的是一个一维数组a[5]的起始地址。
//那么,*(p+i)的意思就是a[i]。
//鉴于sub函数格式,这里的意思是s=s+a[i]的循环。
return s;
}

*/
/*问题四:
输出结果是第一行:x=4,y=25,z=14.50
第二行:x=2,y=3,z=14
*/
/*
#include"stdio.h"
void main()
{
int x=2,y=3,z;

int js(int,int);

z=js(x,5);

printf("(2)x=%dy=%dz=%d\n",x,y,z);}//在主程序中输出,形参的改变不改变实参的值,所以x还是2,y还是3。
//而z的值是函数带回的,所以它的值还是14.50。
//但是,这里z的输出形式是整数型(int)所以这里的输出是:x=2,y=3,z=14

int js(int x,int y)
{
float z;

x*=x;y*=y;//x=2*2=4,y=5*5=25

z=(x+y)/2.0;

printf("(1)x=%dy=%dz=%.2f\n",x,y,z);//在函数中输出x=4,y=9,z=14.50
//因为z的输出形式是浮点型float,而且只能输出到小数点之后两位。

return z;
}
*/
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式