《C语言实验报告(16).doc》由会员分享,可在线阅读,更多相关《C语言实验报告(16).doc(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、优质文本?C语言?实验报告专 业 _年 级 _学 号 _学生姓名 _指导老师 _华中师范大学信息管理系编I 实习目的和意义C语言程序设计实验的目的是培养学生具有初步的C语言程序设计、编程、调试和排除C语言程序语法、逻辑错误的能力。通过实验使学生进一步熟悉并掌握C语言程序的调试运行环境、程序设计过程、程序的根本结构以及程序设计的根本方法。通过实验,使学生将程序设计的理论知识与实践相结合,为学生学习其他计算机编程语言打下根底。在每一次的实验过程中,学生要认真复习根本概念,独立编写程序,并上机调试运行,培养自己发现程序中的错误、改正错误以使程序能正确运行的能力。经验丰富的人,当编译时出现“出错信息时
2、,能很快地判断出错误所在,并改正之。而缺乏经验的人即使在系统给出明确出错提示信息下也往往找不出错误而求救于别人。对于学生来说,不仅要了解和熟悉有关理论和方法,还要求自己动手实现,要求会编写程序并上机调试通过。因此调试程序本身是程序设计课程的一个重要内容和根本要求,应给予充分的重视。调试程序的经验固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来积累,而且有些经验是只能“意会难以“言传。调试程序的能力,是学完?C语言程序设计?之后,每个学生应当掌握的一项根本功。因此,在实习时千万不要在程序通过后就认为完成任务了,而应当在已通过的程序根底上作一些改动例如修改一些参数、增加程序一些功能、改
3、变输入数据的方法等,甚至于“自设障碍,即把正确的程序改为有错的,如用scanf函数输入变量时,漏写“&符号,使数组下标越界,使整数溢出等,观察和分析所出现的情况,并认真、及时总结。这样的学习是灵活主动的学习而不是呆板被动的学习,才会有真正的收获。II实验要求1每次实验中有假设干习题,每个学生至少应该完成其中的三道习题。2上机之前应作好充分的准备工作,预先编好程序,经过人工检查无误后,才能上机,以提高上机效率,严禁一边上机一边编写。3独立上机输入和调试自己所编的程序,切忌抄袭、拷贝他人程序。4上机结束后,应整理出实验报告。书写实验报告时,重点放在调试过程和小结局部,总结出本次实验中的得与失,以到
4、达稳固课堂学习、提高动手能力之目的。III 实验内容实验一 VC+6.0开发平台环境及应用【实验目的】 1熟悉VC+6.0的运行环境。2了解在VC+6.0上如何编辑、编译、连接和运行一个C程序。3通过运行简单的程序,初步了解源程序的特点,初步掌握查错和排错的技能.【上机实习指导】1通过阅读上机操作指南,在VC中练习输入、编译、运行一个C语言程序的全过程。以下程序是计算函数y=3x2+2x-4(假设x=2)。# include “stdio.hvoid main( ) int x=2,y; y=3*x*x+2*x-4; printf(“ny=%d,y);程序运行正确后,可以尝试改变x的值和输出格
5、式“%d、 “%u、%o、%x等,观察运行结果的变化。2分析下面的程序输出的结果。# include int main( ) char c=1; int i=-1; long n=2147483647; float f=-0.12345; putchar(c);putchar(;);printf(%3c;%dn,c,c); printf(%d%d;%3d%3d;%un,i,i,i,i,i); printf(%-11ld;%9dn,n,n); printf(%lx;%012on,n,n); printf(%.2f;%10.4fn,f,f); printf(%e;%11.2en,f,f); pri
6、ntf(%s;%.3sn,student,student); return 0;【自编程序上机】1编程实现在屏幕输出下面图形 * * * * * * * * * * * *2编程实现:从键盘上输入半径,输出园的周长及面积。【实验报告】实习时间: 实习地点: 实习机号:具体实验内容程序调试过程实习小结实验二 简单程序设计【实验目的】 1进一步熟悉VC+6.0的运行环境。2掌握三种标准类型和局部运算符的使用。3熟练掌握格式输入与格式输出函数的使用。【上机实习指导】1根本数据类型表示范围练习假设有如下程序: # include void main ( ) char ch1, ch2, ch;unsi
7、gned char c;int a;ch1 = 80;ch2 = 60;ch = ch1 + ch2;c = ch1 + ch2;a = ch1 + ch2;printf (“ch1 + ch2 = %dn, ch1 + ch2);printf(“ch = %dn, ch);printf(“c = %dn, c);printf(“a = %dn, a);问题1 :运行该程序,写出输出结果。并说明为什么存在输出结果的差异?问题2 :如果要求四行输出的结果均为140,在不改变变量的数据类型的根底上,那么应修改程序中的哪条语句?怎样修改?问题3 :编一程序,要求两个负整数相加,输出的结果为一正整数。
8、【自编程序上机】1 键盘输入与屏幕输出练习用下面的scanf函数输入数据,使a = 3, b = 7, x = 8.5, y = 71.82, c1 = A, c2 = a,问在键盘上如何输入?要求把以下程序补充完整。#include void main ( )int a, b;float x, y;char c1, c2;scanf (“a = %d b = %d, &a, &b);scanf(“x = %f y = %e, &x, &y);scanf(“c1 = %c c2 = %c, &c1, &c2);提示:在“格式控制字符串中除了格式说明以外还有其它字符,在输入数据时应输入与这些字符
9、相同的字符。为了验证输入格式的正确与否,应在程序中补充调用标准的输出函数printf。2 按输出结果要求编写程序假设a = 3, b = 4, c = 5, x = 1.2, y = 2.4, z = -3.6, u = 51274, n = 128765. c1 = a, c2 = b,想得到以下输出格式和结果,请写出完整的程序。要求输出结果如下:(*表示空格)a = 3*b=4*c=5x = 1.20000, y = 2.400000, z = -3.600000x+y = *3.60*y+z = -1.20*z+x = -2.40u = 51274*n = *128765c1 = a*o
10、r*97(ASCII)c2 = b*or*98(ASCII)提示:根据题目中变量的值定义适宜的变量类型。正确定义和使用printf函数中的格式控制字符串。3 计算定期存款本利之和设银行定期存款的年利率rate为2.25%,并存款期为n年,存款本金为capital元,试编程计算n年后本利之和deposit。要求定期存款的年利率rate、存款期间n和存款本金capital均由键盘输入。4. 求一个四整数的各位数字之和,并在屏幕上输出结果。5编程实现:用1分、5分、10分、25分的硬币凑成任何给定的钱数x,要求硬币的数目最少。【实验报告】实习时间: 实习地点: 实习机号:具体实验内容程序调试过程实习
11、小结 实验三 选择结构程序设计【实验目的】1熟练掌握上机运行一个C程序的操作过程。2学会正确使用逻辑运算符和逻辑表达式,进一步掌握各种表达式的使用。3利用if语句实现选择结构程序设计。4利用switch语句实现多分支选择结构程序设计。5进一步练习调试与修改程序。【上机实习指导】 输入并运行习题3.10。即:# include “stdio.hvoid main( ) int i,j,n,m; i=8;j=10;m=+i;n=j+; printf(“%d,%d,%d,%d,i,j,m,n);分别作以下改变并运行:将程序第四行改为:m=i+;n=+j;程序改为:# include “stdio.h
12、void main( ) int i,j; i=8;j=10;printf(“%d,%d,i+,j+);在的根底上,将语句改为: printf(“%d,%d,i+,j+);再将语句改为: printf(“%d,%d,%d,%d,i,j,i+,j+);程序改为:# include “stdio.hvoid main( ) int i,j,n=,m=0; i=8;j=10;m+=i+;n-=- -j; printf(“%d,%d,%d,%d,i,j,m,n);2计算以下分段函数值: 具体要求如下:用if语句实现分支。自变量x与函数值均用单精度类型。自变量x用scanf函数输入,且输入前要有提示。结
13、果的输出采用以下形式: x=具体值,f(x)=具体值分别输入x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0,运行该程序。3先静态分析以下程序的运行结果,然后上机验证。 # include “stdio.hvoid main( ) int a=3,b=4,c=5,x,y,z; x=cba; y=!a+bc&(b!=c); z=c/b+(float)a/b&(float)(a/c); printf(“n x=%d,y=%d,z=%d,x,y,z); x=a|b-; y=a-3&b; printf(“n %d,%d,%d,%d,%d,%d,a,b,c,x,y,z); 上机运行的结果与
14、你分析的结果是否一致?不一致的原因何在?请在程序的最后一个花括号前加上语句:getchar();后重新运行程序,考前须知加上这一语句后,程序的运行进程有何不同?getchar()是一个函数调用,其作用是等待接收你从键盘输入的一个字符,在你未按键之前一直处于等待状态。在这里可以起到暂停的作用。当你看清结果并按任意键后,立即退出程序并切换回TC主屏幕。用这一方法可以减少屏幕切换操作。4以下C程序的功能是:计算并输出分段函数值。 其中x由键盘输入。 请通过调试修改程序中的错误(包括语法错误和逻辑错误)。 #include “stdio.h main( ) float x,y; printf(“inp
15、ut x=); scanf(%f,&x); if(-5.0=x0.0)&(x!=-2.0)y=1.0/(x+2.0); else if(x5.O)y=l.0/(x+5.0); else if(xl0.O)y=l.0/(x+l2.0); else y=0.0;printf(x=%eny=%en,x,y); 具体要求如下: 不允许改变计算的精度。 不允许改变原来程序的结构,只能在语句或表达式内部进行修改。 调试正确后,用x=-7.0,-2.0,-1.0,0.0,2.0,5.0,8.0,10.0,11.0运行这个程序。画出与调试正确后的程序对应的流程图。【自编程序上机】1. 数据整除判断编程实现:输
16、入一个整数,判断它能否被3,5,7整除,并输出以下信息之一:能同时被3,5,7整除;能被其中两数要指出哪两个整除;能被其中一个数要指出哪一个整除;不能被3,5,7任一个整除。提示:判断能否被某一个数整除应采用求余运算。在一个程序中利用选择结构把四种可能的信息全部表示出来。2用scanf函数输入一个百分制成绩(整型量),要求输出成绩等级A,B,C,D,E。其中90-100分为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。 具体要求如下: 用if语句实现分支。 在输入百分制成绩前要有提示。 在输入百分制成绩后,要判断该成绩的合理性,对于不合理的成绩(即大于100分或小于
17、0分)应输出出错信息。 在输出结果中应包括百分制成绩与成绩等级,并要有文字说明。 分别输入百分制成绩:-90,100,90,85,70,60,45,101,运行该程序。3将第2题中的(1)改为“用switch语句实现,其余不变,重复实现第2题中的各功能。4.编程找出5个整数中的最大数和最小数,并输出找到的最大数和最小数。5假设一种自动售货机可以为顾客提供3种价格档次的不同饮料。投入2元钱,可选择康师傅矿泉水、怡宝矿泉水和农夫山泉之一;投入3元钱,可选择可乐、雪碧和果汁之一;投入5元钱,可选择奶茶、咖啡和酸奶之一。编写程序,模拟用户向自动售货机投入钱币选择一种饮料的过程。提示:使用scanf()
18、函数模拟投入钱币,使用getchar()函数模拟选择饮料输入A、B、C代表选择的饮料。【实验报告】实习时间: 实习地点: 实习机号:具体实验内容程序调试过程实习小结实验四 循环结构程序设计【实验目的】1进一步练习选择结构的程序设计。练习并掌握实现循环结构的三种方法。3练习并掌握选择结构与循环结构的嵌套。4掌握多重循环的应用。5学会单步跟踪的操作方法。【上机实习指导】1根据字母判断是星期几平时我们看到M时就想到星期一,看到W时就想到星期三,请用C语言程序编写当输入星期几的第一个字母就判断出是星期几,如果第一个字母一样,那么用第二个字母来判断。要求输入为字母Y时,结束判断。提示:可利用C语言的sw
19、itch语句实现多路分支:根据输入的的第一个字母、第二个字母,判断是星期几,如果第一个字母一样,如星期二和星期四Tuesday和Thursday,那么用if语句判断第二个字母,这样就可以解决问题了。另外为了实现可以屡次进行判断,此题还需用循环进行控制。要求:当输入字母“Y时,那么结束程序。当输入的不是星期几的第一个字母时,那么可给出出错信息:printf(“DATA ERROR!);当输入两个星期几相同的字母时,那么可给出提示信息:printf(“PLEASE INPUT SECOND LETTERn)。【自编程序上机】 1如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,例如:6的因
20、子为1,2,3,且1236,因此6是一个“完数。 计算并输出1000以内的所有“完数之和。 具体要求如下: 所有循环均用for循环。 输出要有文字说明,并同时输出各“完数。输出形式为:完数1+完数2+=和值2打印如以下图所示的数字金字塔(注意观察数字分布的规律)。3百钱买百鸡问题。公鸡每只5元,母鸡每只3元,小鸡1元3只,要求100元钱正好买100只鸡,那么应买公鸡、母鸡的小鸡各多少只?4某班有学生n人,从终端读入n及n个人学生的成绩,试编程实现以下功能:打印出前3个最好成绩及取得每个最好成绩的人数;假设90分以上计为优,7589分计为“良,6074分计为“中,60分以下计为“不及格,试统计各
21、档成绩所占百分率。5逆序输出整数的每一位数。 输入每一个正整数x,例如13579,要求输出9 7 5 3 1,每一位后有空格。 如输入: 13579,输出: 9 7 5 3 1【实验报告】实习时间: 实习地点: 实习机号:具体实验内容程序调试过程实习小结实验五 数组程序设计1【实验目的】1掌握一维数组与二维数组的定义及其元素的引用方法。2深刻体会数组与循环的关系。3掌握利用一维数组和二维数组实现一些常用算法的编程技巧。4进一步掌握动态调试的根本技能。【上机实习指导】1用移位法将数组a中的最后一个数移到最前面,其余数依次往后移动一个位置。 # include “stdio.h void main
22、() int i,t,a10=0,1,2,3,4,5,6,7,8,9; t=a9; for(i=1;i10;i+) ai=ai-1; a0=t; printf(“n); for(i=0;i10;i+) printf(“%d ,ai);请按以下步骤实习和思考:分析程序及其特性。上机运行程序,查看运行结果是否正确?用动态跟踪查找错误原因,即按如下操作:首先将光标移至t=a9的语句行上,按F4,再用Ctrl-F7操作将a数组的内容显示出来,然后将光标移至ai=ai-1的语句行上,不断按F4,观察a数组值的变化情况,以此分析并找出错误原因。改正错误后重新运行程序,直到结果正确为此。如果要用三次循环移位
23、来实现将最后三个数移到前面,其余数依次往后移三个位置,那么程序应该如何修改? 2输入n个学生的单科成绩,然后从高到低的顺序排序后输出。以下是用选择法实现的排序。# include “stdio.hvoid main( )int i,j,t,n,an; printf(“n n=?);scanf(“%d,&n);printf(input n numbers :n); for (i=0;in;i+)scanf(%d,&ai);for(i=0;in-1;i+) for(j=i+1;jn;j+) if(aiaj) t=ai;ai=aj;aj=t; printf(the sorted numbers:n)
24、; for(i=0;in;i+) printf(%4d,ai);分析程序及其特性。上机编译程序,程序是否有语法错误?应如何修改?数组a的长度可比n大些,改正错误后重新编译和运行程序,直到结果正确为此。你对选择排序算法的实现过程是否清楚了?假设不清楚,请用动态跟踪的方法观察其实现过程,操作如下:首先将光标移至 if语句行上,按F4,接着输入数据,当绿条第停留在if语句行时,用Ctrl-F7操作将a数组的内容显示出来,不断按F4,观察a数组值的变化情况,以此分析和领会算法的实现过程。输入冒泡排序程序,用动态跟踪观察其实现过程。如果要用三次循环移位来实现将最后三个数移到前面,其余数依次往后移三个位置
25、,那么程序应该如何修改?【自编程序上机】1将矩阵45中值行中所有数的和为最大的那一行元素与首行元素对换。具体要求如下:矩阵的数值从键盘输入。以矩阵的形式输出对换后的矩阵。2数字检查通过键盘输入nn50个4位数输入-1时结束,统计这n个4位数中各位上的数字均是偶数的数的个数,并把这些4位数按从大到小的顺序进行输出。提示:定义两个一维数组a和b,数组a用于存放输入4位数,数组b用于存放满足条件的4位数;判断4位数的各个数是否为偶数的方法可将该数的每一位数拆分出来,然后进行判断即可。3输入10个整数,将这10个整数按升序排列输出,并且奇数在前,偶数在后。比方,如果输入的10个数是1 2 3 4 5
26、6 7 8 9 10,那么输出1 3 5 7 9 2 4 6 8 10。提示:将输入的10个整数,按其就行分别放在数组a的左部和右部。其具体方法就是设置两个整型变量odd和even,分别表示奇数和偶数存放在数组a中元素的下标,odd初始值为0,每存放一个奇数odd就加1,even初始值为9,每存放一个偶数even就减1,然后通过选择排序的方法分别对数组a左部的奇数和右部的偶数进行排序,最后依次进行排序结果的输出。【实验报告】实习时间: 实习地点: 实习机号:具体实验内容程序调试过程实习小结实验六 数组程序设计2【实验目的】1进一步掌握一维数组与二维数组的定义及其元素的引用方法。2掌握利用一维数
27、组和二维数组实现一些常用算法的编程技巧。【自编程序上机】1成绩排名假设有五位同学四门功课的成绩如下,现要求得每位同学的总分,并按照总分从高到低的顺序进行排序,输出其名次,如果总分相同,那么按语文和数学分数之和高者排前,低者排后,但名次一样。姓 名语 文数 学英 语综 合张大明120130110280李小红110120105290王志强108128126278汪晓成112135122286李 丹100120108276提示:用二维数组score存放每个学生各门课程的成绩,二维数组定义时最后多定义一列,用于存放每个学生的总分;用一个字符串数组name存放学生的姓名。217个人围坐一圈,顺序编号为1
28、,2,3,,17。现在从第一个人开始数起,每数到7时,这个人就从圈里出来,再从下一个数重新开始数1,2,7,数到第7的这个人也从圈里出来,直到全部17个人从圈里出来为此。例如,前面站出来的4个人是7,14,4和12。编程输出从圈里出来的人的顺序。3通过键盘输入nn50个三位数输入-1时结束,统计这n个三位数中各位上的数字均为奇数的数的个数,并把满足条件的三位数按从小到大的顺序进行输出。提示:定义两个一维数组a和b,数组a用来存放键盘输入的3位数,数组b用来存放满足条件的3位数;判断3位数中各位上的书是否都为奇数的方法可以先将该数的每一位数拆分出来,然后进行判断即可。【实验报告】实习时间: 实习
29、地点: 实习机号:具体实验内容程序调试过程实习小结实验七 模块化程序设计(1)【实验目的】1掌握C语言中定义函数的方法及其调用方法。2掌握函数实参与形参的对应关系以及“值传递与“地址传递的方式,熟练掌握模块间数据传递的方式。3掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法,深刻体会全局变量和局部变量、动态变量与静态变量的概念和使用方法,【上机实习指导】1先静态阅读以下程序,然后上机运行程序,查看运行结果是否与你阅读的结果一致?不一致的原因何在?# include “stdio.hint a=3,b=5,c=2;int f(int a,int b) a+;b-;c=a+b;retur
30、n(a+b+c);void main( ) int a=4,k; k=f(a+2,b+1); printf(“n %d,%d,%d,%d,a,b,c,k); getchar();2静态分析以下程序的执行结果,然后上机运行程序,将分析结果与运行结果加以比照,从中领会静态局部变量的含义及用法。# include “stdio.hint f(int x) static int f=0,y=0; if(f=0) y+=2*x; else if(f=1)y+=3*x; else y+=4*x; f+; return y;void main( ) printf(“n %d,f(2); printf(“n
31、%d,f(2);printf(“n %d,f(2);getchar(); 【自编程序上机】1求两整数的最公约数和最小公倍数。用一函数求最大公约数,用另一函数调用此函数求出最大公约数,并用求出的最大公约数求最小公倍数。具体要求如下:用全局变量。将最大公约数与最小公倍数设为全局变量,在主函数中输出它们的值。不用全局变量。最大公约数和最小公倍数由被调模块返回值。2计算并输出 具体要求如下:编制一个函数pq(n),返回n!值。编制主函数,由键盘输入m与n(mnO),调用(1)中的函数计算以下算式值。 在主函数中,输入m与n之前要有提示,并检查输入数据的合理性,对于不合理的输入,应输出出错信息,不再进行
32、计算。在函数pq(n)中也要检查n的合理性,当nO时输出出错信息,不再进行计算。 分别输入(m,n)=(3,-1),(0,0),(8,3),(3,8),(8,8)运行该程序。画出模块pq()的流程图。3编写程序,要求找出满足以下条件的3位数:它是完全平方数,又有两位数字相同。如:144、676。要求:设计一函数判断一个三位数是否为完全平方数,设计另一函数判断一个三位数中是否有两位数字相同,再在主函数中调用这两个函数,找出所有的满足这两个条件的三位数。【实验报告】实习时间: 实习地点: 实习机号:具体实验内容程序调试过程实习小结实验八 模块化程序设计(2)【实验目的】1进一步熟悉函数之间的数据传
33、递方式,熟练掌握函数的嵌套调用与递归调用的方法。2掌握通过数组进行数据传递的方法。【上机实习指导】1.对以下程序进行单步运行,并从中了解数组作为函数的参数是如何进行数据传递?# include stdio.hvoid change(int a,int n) int i,j,t; for(i=0,j=n-1;ij;i+,j-) t=ai; ai=aj; aj=t; void main( ) int i,b10; for(i=0;i10;i+) scanf(%d,&bi); printf(The array b is:); for(i=0;i10;i+) printf(%3d,bi); print
34、f(n); change(b,10); printf(The array b is:); for(i=0;i10;i+) printf(%3d,bi); printf(n); getchar(); getchar(); 【自编程序上机】1编写函数,将n个整数的数列进行重新排放,重新排放后的结果为:前段都是奇数,后段都是偶数,并编写主函数完成:输入10个整数;调用此函数进行重排;输出重排后的结果。2输入10个学生4门课的成绩,分别用函数求:每个学生的平均成绩;每门课的及格率;最高分所对应的学生和课程。【实验报告】实习时间: 实习地点: 实习机号:具体实验内容程序调试过程实习小结实验九 指针程序设
35、计【实验目的】 掌握变量的指针及其根本用法。 掌握一维数组的指针及其根本用法。掌握指针变量作为函数的参数时,参数的传递过程及其用法。【上机实习指导】1对以下程序进行单步运行,并从中了解变量的指针和指针变量的概念。 # include “stdio.h void main() int a=5,b=5,*p; p=&a;*p=8;p=&b;b=10; 按以下步骤操作: 输入程序后,连续按三次F8,使绿条停留在P=&a诵句行上。 用Ctrl一F7操作分别将a,b,&a,&b,p及*p显示出来。查看观察窗口中的内容,可发现此时a、b己有确定的地址(&a和&b)和确定的值,而p还没荷确定的值(此时语句p
36、=&a还未执行),即p还没有明确的指向,因而它所指向的内存单元(*p)中的内容也是不确定的。按F8往下执行一步后再查看观察窗中的内容,可发现p已有确定的值,它与&a的值一致,说明p中存放了变量a的地址,也就是说p是指向变量a的指针变量。同时可发现,*p的内容与a的内容一致,即p所指向的内存单元中的内容就是a的内容;从而可以理解*p等效于a,表示同一内存单元。 按F8往下执行一步后再查看观察窗中的内容,可发现*p和a的内容都已发生变化,从而可理解通过改变指针变量p所指向的内存单元中的内容可以间接地改变a中的内容。再按F8往下执行一步,可发现p的值己发生变化,它与&b的值一致,说明p已经是指向变量
37、b的指针变量,它不再是指向a,*p的内容也已变为b的内容,从而可理解指针变量的指向是随时可以改变的。再按F8往下执行一步,可发现,b的值和*p的值都已发生变化,即改变b的内容就等于改变指针变量p所指向的内存单元中的内容。2单步运行以下程序,观察&a0,&ai)和P的变化,然后答复以下问题:程序的功能是什么? 在开始进入循环体之前,p指向谁?循环每增加一次,p的值(地址)增加多少?它指向谁?退出循环后,p指向谁? 你是否初步掌握了通过指针变搔引用数组元素的方法?# include “stdio.hvoid main() int i,*p,s=0,a5=5,6,7,8,9; p=a; for(i=0;i5;i+,p+) s+=*p;printf(“n s=%d,s);3.先分析以下程序的运行结果,然后上机验证,并通过此例掌握通过指针变量引用数组元素的各种方法。 # include “stdio.hvoid main( ) int i,s1=0, s2=0, s3=0, s4=0,*p,a5=1,2,3,4,5; p=a; for(i=0;i5;i+) s1+=pi; for(i=0;i5;i+) s2+=*(p+i); for(p=a;pa+5;p+) s3+=*p; p=a; for