- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言上机作业10答案
C语言程序设计上机作业10
答案
指针上机作业01 答案
1. 答案:【1】p 【2】 *p
2. 答案:【1】char *p, c; 【2】scanf(%c, c);或者c=getchar();【3】p=c;
3. 答案:(2) 2 6 6
(1) 1 6 6
解析:第一步.调用fun函数之前,进行了如下图7-1所示的操作:全局变量p指向main函数中的局部变量y。
第二步:当发生函数调用时,实参向形参传递。这时,新开辟了整型变量x和指向main中的变量y的指针y,显然,它和全局变量p一样指向了同一个单元。fun函数中的x、y和main中的x、y是两个不同的变量,为了清晰的表示调用过程,图7-2用x、y代替fun中的x、y。
第三步:执行fun函数。按顺序先进行两个赋值运算:“(1) *p=*y+z; (2) x=*p-z;”,这时候,没有改变p的指向,而是改变了p所指向变量y (main中的变量y)的数值,即“*p=*y+z;”等价与“y=y+z;”,故main中的变量y等于6;同时,因为*p的值改变,fun函数的形参x的值因执行“x=*p-z;”语句而变为2。该过程如图7-3所示。然后接着执行一个打印输出语句“printf((2) %d %d %d\n, x, *y, *p);”,所以,该步的输出结果应为:(2)2 6 6
第四步:函数调用结束,返回主调函数。被调用函数中的形参都消失,当然各种指向也消失。如图7-4所示,输出结果应该为:(1)1 6 6
4. 答案:【1】\0 【2】s
5. 答案:eXAMPLE
6. 答案:【1】*t 【2】 *s-*t
7. 答案:3 5
解析:在main函数中,先将p指向x, q指向y, 可以用如下图7-5表示:
图7-5
当发生函数调用时,p的值传递给a, 使a=x; q的值传递给b, 使b=y。此时,可以用如下图7-6表示:
图7-6
在被调用函数中,通过变量t, 使a、b的值发生交换:令a=y, b=x; 改变了指向。可以用如下图7-7表示:
图7-7
调用结束后,返回到main函数时,a, b消失(形参随着调用的结束而失去作用)。可以如下图7-8表示:
图7-8
结果,在main函数中,p和q的指向并未改变,仍然如下图7-9所示:
图7-9
故输出结果为:3 5
C语言程序设计上机作业10
指针上机作业01
要求:把下列各题填空。直接把答案填写在相应的位置,然后保存此word文件,上传。
1. 设有定义:int a, *p=a; 以下语句将利用指针变量p读写变量a中的内容,请将语句补充完整。
scanf(%d, 【1】 );
printf(%d\n, 【2】 );
2. 请填空:
建立如图所示存储结构所需的说明语句是【1】。
建立如图所示给c输入数据的输入语句是【2】。
建立如图所示存储结构所需的赋值语句是【3】。
3. 以下程序的运行结果是________。
#include stdio.h
#include string.h
int *p;
main()
{
int x=1, y=2, z=3;
p=y;
fun(x+z, y);
printf((1) %d %d %d\n, x, y, *p);
}
fun( int x, int *y)
{
int z=4;
*p=*y+z;
x=*p-z;
printf((2) %d %d %d\n, x, *y, *p);
}
4. 下面程序段是把从终端读入的一行字符作为字符串放在字符数组中,然后输出。请填空。
#include stdio.h
#include string.h
main()
{
int m;
char s[80], *t;
for (m=0; m79; m++)
{
s[m]=getchar();
if (s[m]==\n) break;
}
s[m]= 【1】;
t=【2】;
原创力文档


文档评论(0)