资源描述:
《C语言上机作业10 答案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言程序设计上机作业10答案指针上机作业01答案1.答案:【1】p【2】*p2.答案:【1】char*p,c;【2】scanf("%c",&c);或者c=getchar();【3】p=&c;3.答案:(2)266(1)166&y132mainxzyp图7-1解析:第一步.调用fun函数之前,进行了如下图7-1所示的操作:全局变量p指向main函数中的局部变量y。第二步:当发生函数调用时,实参向形参传递。这时,新开辟了整型变量x和指向main中的变量y的指针y,显然,它和全局变量p一样指向了同一个单元
2、。fun函数中的x、y和main中的x、y是两个不同的变量,为了清晰的表示调用过程,图7-2用x'、y'代替fun中的x、y。图7-2&y132mainxzyp调用fun(x+z,&y)44&yfunx'zy'第三步:执行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
3、函数的形参x'的值因执行“x'=*p-z';”语句而变为2。该过程如图7-3所示。然后接着执行一个打印输出语句“printf("(2)%d%d%d",x',*y',*p);”,所以,该步的输出结果应为:(2)266图7-4&y136mainxzyp调用fun(x+z,&y)执行printf(“(1)%d%d%d”,x,y,*p)图7-3&y136mainxzyp调用fun(x+z,&y)24&yfunx'zy'第四步:函数调用结束,返回主调函数。被调用函数中的形参都消失,当然各种指向也消失。如图7
4、-4所示,输出结果应该为:(1)1664.答案:【1】' '【2】s5.答案:eXAMPLE6.答案:【1】*t【2】*s-*t7.答案:35解析:在main函数中,先将p指向x,q指向y,可以用如下图7-5表示:&y3&x5pqxy图7-5当发生函数调用时,p的值传递给a,使a=&x;q的值传递给b,使b=&y。此时,可以用如下图7-6表示:3&xpx&y5qy&xa&yb图7-6在被调用函数中,通过变量t,使a、b的值发生交换:令a=&y,b=&x;改变了指向。可以用如下图7-7表示:3&xpx
5、&y5qy&ya&xb图7-7调用结束后,返回到main函数时,a,b消失(形参随着调用的结束而失去作用)。可以如下图7-8表示:3&xpx&y5qy&ya&xb图7-8&y3&x5pqxy结果,在main函数中,p和q的指向并未改变,仍然如下图7-9所示:图7-9故输出结果为:35C语言程序设计上机作业10指针上机作业01要求:把下列各题填空。直接把答案填写在相应的位置,然后保存此word文件,上传。1.设有定义:inta,*p=&a;以下语句将利用指针变量p读写变量a中的内容,请将语句补充完整。s
6、canf("%d",【1】);printf("%d",【2】);Wpc2.请填空:建立如图所示存储结构所需的说明语句是【1】。建立如图所示给c输入数据的输入语句是【2】。建立如图所示存储结构所需的赋值语句是【3】。3.以下程序的运行结果是________。#include"stdio.h"#include"string.h"int*p;main(){intx=1,y=2,z=3;p=&y;fun(x+z,&y);printf("(1)%d%d%d",x,y,*p);}fun(intx,int*
7、y){intz=4;*p=*y+z;x=*p-z;printf("(2)%d%d%d",x,*y,*p);}4.下面程序段是把从终端读入的一行字符作为字符串放在字符数组中,然后输出。请填空。#include"stdio.h"#include"string.h"main(){intm;chars[80],*t;for(m=0;m<79;m++){s[m]=getchar();if(s[m]=='')break;}s[m]=【1】;t=【2】;while(*t)putchar(*t++);}5.下
8、面程序段的运行结果是________。chars[80],*t="EXAMPLE";t=strcpy(s,t);s[0]='e';puts(t);6.函数sstrcmp()的功能是对两个字符串进行比较。当s所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。请填空。#include"stdio.h"intsstrcmp(char*s,char*t