C语言上机作业10 答案.doc_第1页
C语言上机作业10 答案.doc_第2页
C语言上机作业10 答案.doc_第3页
C语言上机作业10 答案.doc_第4页
C语言上机作业10 答案.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计上机作业10答案指针上机作业01 答案1 答案:【1】p 【2】 *p2 答案:【1】char *p, c; 【2】scanf(%c, &c);或者c=getchar();【3】p=&c;3 答案:(2) 2 6 6(1) 1 6 6&y132mainxzyp图7-1解析:第一步调用fun函数之前,进行了如下图7-1所示的操作:全局变量p指向main函数中的局部变量y。第二步:当发生函数调用时,实参向形参传递。这时,新开辟了整型变量x和指向main中的变量y的指针y,显然,它和全局变量p一样指向了同一个单元。fun函数中的x、y和main中的x、y是两个不同的变量,为了清晰的表示调用过程,图7-2用x、y代替fun中的x、y。图7-2&y132mainxzyp调用fun(x+z, &y)44&yfunxzy第三步:执行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 %dn, x, *y, *p);”,所以,该步的输出结果应为:(2)2 6 6图7-4&y136mainxzyp调用fun(x+z, &y)执行printf(“(1)%d %d %d”, x,y,*p)图7-3&y136mainxzyp调用fun(x+z, &y)24&yfunxzy第四步:函数调用结束,返回主调函数。被调用函数中的形参都消失,当然各种指向也消失。如图7-4所示,输出结果应该为:(1)1 6 64 答案:【1】0 【2】s5 答案:eXAMPLE6 答案:【1】*t 【2】 *s-*t7 答案:3 5 解析:在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&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故输出结果为:3 5C语言程序设计上机作业10指针上机作业01要求:把下列各题填空。直接把答案填写在相应的位置,然后保存此word文件,上传。1 设有定义:int a, *p=&a; 以下语句将利用指针变量p读写变量a中的内容,请将语句补充完整。scanf(%d, 【1】 );printf(%dn, 【2】 );Wpc2 请填空:建立如图所示存储结构所需的说明语句是【1】。建立如图所示给c输入数据的输入语句是【2】。建立如图所示存储结构所需的赋值语句是【3】。3 以下程序的运行结果是_。#include stdio.h#include string.hint *p;main() int x=1, y=2, z=3; p=&y; fun(x+z, &y); printf(1) %d %d %dn, x, y, *p);fun( int x, int *y) int z=4;*p=*y+z; x=*p-z; printf(2) %d %d %dn, x, *y, *p);4 下面程序段是把从终端读入的一行字符作为字符串放在字符数组中,然后输出。请填空。 #include stdio.h #include string.h main() int m; char s80, *t; for (m=0; m79; m+) sm=getchar(); if (sm=n) break; sm= 【1】; t=【2】; while (*t) putchar(*t+); 5 下面程序段的运行结果是_。 char s80, *t=EXAMPLE; t=strcpy(s, t); s0=e; puts(t); 6 函数sstrcmp()的功能是对两个字符串进行比较。当s所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。请填空。#include stdio.hint sstrcmp( char *s, char *t) while (*s & *t & *s=【1】) s+; t+;return 【2】;7 下面程序的运行结果是_。void sw

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论