C-程序设计实验内容_第1页
C-程序设计实验内容_第2页
C-程序设计实验内容_第3页
C-程序设计实验内容_第4页
C-程序设计实验内容_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

C程序设计上机实验指导书目录实验一熟悉C程序集成开发环境实验二数据的输入和输出实验三表达式的计算实验四选择结构语句(一)实验五选择结构语句(二)实验六循环结构语句(一)实验七循环结构语句(二)实验八数组应用(一)实验九数组应用(二)实验十函数应用(一)实验十一函数应用(二)实验十二指针的应用实验十三结构体的应用实验一C程序集成开发环境熟悉一、实验目的1、熟悉VisualC++6.0集成开发环境2、掌握编辑、编译、连接、执行、修改和调试一个C程序的基本过程。3、掌握和理解C语言程序的基本结构。4、掌握和理解C程序中的最基本的C语句。二、实验内容1.输入以下C程序:#include"stdio.h"voidmain(){printf("Hello!这是我的FirstC程序.\n");}2.有两个整型变量a,b,它们的值分别为8,3,试编程计算它们的和、差、积、商。3.假设圆柱体的底面半径为r(值为2.5),高为h(值为3.5),编程计算该圆柱体的体积。计算公式:体积=底面积×高底面积=∏r24.输入并运行下面程序。#include"stdio.h"voidmain(){inta,b,c;scanf(%d,%d,&a,&b);c=a/b;printf(%d\n,c);}要求:调试通过后,运行该程序。(1)输入值:50,4<回车><Alt+F5>察看运行结果。(2)输入值:50.4,10.8<回车><Alt+F5>察看运行结果。(3)输入值:50000,100<回车><Alt+F5>察看运行结果。(4)输入值:10,0<回车><Alt+F5>察看运行结果。分析输出结果。三、实验分析及体会对上述实验内容进行分析总结,写出实验报告并上交。实验二数据的输入和输出一、实验目的1.掌握scanf和printf的主要用法。2.掌握常用转换控制符的用法。3.掌握赋值语句的用法。4.掌握算术运算符的运算规律。二、实验内容1.编辑如下程序并运行,记录程序的输出结果,体会格式输出的使用。#include"stdio.h"voidmain(){printf("%d\n",42);printf("%5d\n",42);printf("%f\n",123.45);printf("%12f\n",123.45);printf("%e\n",123.45);printf("%13e\n",123.45);printf("%g\n",123.45);printf("%8g\n",123.45);printf("%.5d\n",42);printf("%.0d\n",42);printf("%8.3f\n",123.45);printf("%8.1f\n",123.55);printf("%8.0f\n",123.55);printf("%g\n",123.56789);}2.编辑如下的程序,并上机运行3次,在每次运行提供输入数据时分别采用数据之间插入空格、每输入一个数据就按回车键、数据之间用TAB键分割,看结果有什么不同?#include"stdio.h"voidmain(){intx,y,t;printf("Enterx&y:\n");scanf("%d%d",&x,&y);printf("x=%dy=%d\n",x,y);t=x;x=y;y=t;printf("x=%dy=%d\n",x,y);}3.改错题。下列程序多处有错,请通过上机改正。使之符合下面的要求。#include"stdio.h"voidmain(){doublea,b,c,s,v;printf(Inputa,b,c:\n);scanf("%d%d%d",a,b,c);s=a*b;v=a*b*c;printf("a=%db=%dc=%d\n",a,b,c);printf("s=%f\n",s,"v=%d\n",v);}当本程序运行时,要求按如下方式显示和输入:Inputa,b,c:2.02.03.0(此处的2.02.03.0为用户输入的)a=2.000000b=2.000000c=3.000000s=4.000000v=12.0000004.编辑如下程序:/*字符类型定义及使用*/#include"stdio.h"voidmain(){charc1,c2;c1='a';c2=‘b’;printf(“%c%c\n”,c1,c2);}(1运行此程序,记录运行结果。(2在最后增加一个语句:printf(“%d%d\n”,c1,c2);再运行,并记录分析结果。(3再将第5行charc1,c2;改为:intc1,c2;再使之运行,并观察记录结果。(4再将第6、7行改为:c1=a;/*不用单引号*/c2=b;再运行,记录分析其运行结果。(5再将第6、7行改为:c1=”a”;/*用双引号*/c2=”b”;再运行,记录分析其运行结果。(6再将第6、7行改为:c1=300;/*用大于255的整数*/c2=400;再运行,记录分析其运行结果。5.编辑如下程序:/*自增自减运算符*/#include"stdio.h"voidmain(){inti,j,m,n;i=8;j=10;m=++i;n=j++;printf(“d,%d,%d,%d”i,j,m,n);}(1)运行程序,记录i、j、m、n各变量的值,分别作以下改动并运行。(2)将第7、8行改为下面所示,再运行。m=i++;n=++j;记录i、j、m、n各变量的值(3)在(1)的基础上,将printf语句改为:printf(“d,%d”++i,++j);运行程序,记录i、j、m、n各变量的值。(4)再将printf语句改为:printf(“d,%d,%d,%d”i,j,i++,j++);运行程序,记录i、j、m、n各变量的值。(5)再修改程序如下,运行程序记录i、j、m、n各变量的值。#include"stdio.h"voidmain(){inti,j,m=0,n=0;i=8;j=10;m+=i++;n-=--j;printf(“=%d,j=%d,m=%d,n=%d”i,j,m,n);}6.编写程序,完成对于任意输入的两个整数,求出它们的商和余数并进行输出。三、对上述实验内容进行总结,写出实验报告。实验三表达式的计算一、实验目的1.掌握算术表达式、逗号表达式、赋值表达式的计算。2.特别注意运算符%、/(整数的相除)、++和--运算的规律。二、实验内容1.已知三角形的三边a,b,c,求三角形面积的公式为:area=sqrt(s(s-a)(s-b)(s-c))其中:s=(a+b+c)/2,sqrt(x)表示x的平方根。要求编一程序,对任意输入的a,b,c值,计算并输出三角形的面积范围。提示:sqrt是C的标准库函数,使用该函数应将库文件“math.h”包含到源文件中。另外注意三角形三边的基本关系。2.对以下程序进行分析,看程序的输出结果应是什么,然后上机运行该程序看实际结果与你分析的有无不同,找出原因。#include"stdio.h"voidmain(){intx=1,y=2,t;floatm;t=x/y;m=x/y;printf("%d\t%8.3f\n",t,m);t=x/(float)y;m=x/(float)y;printf("%d\t%8.3f\n",t,m);t=(float)x/y;m=(float)x/y;printf("%d\t%8.3f\n",t,m);}3.编辑以下程序:对程序进行分析,看程序的输出结果在下列各种情况下应是什么,然后上机运行该程序看实际结果(写在实验报告里)与你分析的有无不同,找出原因。#include"stdio.h"voidmain(){intx,y,t;doublea;floatb;intc;scanf(“d%d”&x,&y);c=b=a=20/3;t=(x%y,x/y);printf("%d%d\n",x--,--y);printf("%d\n",t);printf("%d\n",(x=5*6,x*4,x+5));printf("%d%f%f\n",c,b,a);}⑴程序运行时,在键盘上输入203⑵程序运行时,在键盘上输入1554.在分析下面程序的运行结果后进行上机验证。#include"stdio.h"voidmain(){inta=3,b=4,c=5,x;

x=c/b+((float)a/b&&(float)(a/c));

printf(″\nx=%d\n″,x);

x=a++&&b--;

printf(″\n%d,%d,%d,%d\n″,a,b,c,x);}上机运行的结果与你分析的结果是否一致?不一致的原因是什么?三、对上述实验进行总结,写出实验报告。实验四选择结构程序设计(一)一、实验目的1.掌握关系表达式和逻辑表达式的使用。2.熟悉选择结构程序设计。3.掌握if语句的使用方法。4.掌握使用switch语句实现多分支选择结构。二、实验内容编程:用于完成对输入的整数判断它是奇数还是偶数,并给出相应的提示。编程:输入两个整数,输出其中的大数。提示:改用if-else语句判别a,b的大小,若a大,则输出a,否则输出b。编程:要求判别键盘输入字符的类别。说明:可以根据输入字符的ASCII码来判别类型。ASCII值小于32的为控制字符。在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母,在“a”和“z要求:用if-else-if语句实现,判断输入字符ASCII码所在的范围,分别给出不同的输出。例如:输入为“g”,输出显示它为小写字符。4.解一元二次方程:ax2+bx+c=0要求:(1)方程系数a,b,c用scanf函数输入;(2)输入这四组数据运行该程序:a=1,b=2,c=1a=1,b=2,c=2a=2,b=6,c=1a=0,b=2,c=15.从键盘输入1~12之间的数字,输出表示一年中对应某一个月的英文单词。要求:(1)用switch语句实现(2)用scanf函数输入一个数字6.从键盘输入1~7之间的数字,输出表示一周中对应某一天的英文单词。三、对上述实验进行总结,写出实验报告。实验五选择结构程序设计(二)一、实验目的进一步掌握选择结构程序设计,熟练运用选择语句编写程序,提高调试和修改程序的能力。二、实验内容1.输入三个整数,输出最大数和最小数。2.有一函数:x(x<1)y=2x-1(1=<x<10)3x-11(x>=10)用scanf函数输入x的值(分别为x<1,1—10,>=10三种情况),求y值。(用if语句)3.编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。实验步骤与要求:(1)输入一组数据3,4,8,观察程序运行结果.(2)另外再输入几组数据进行测试:3,4,5;3,3,3;3,3,54.输入某学生的成绩,经处理后给出学生的等级,等级分类如下:90分以上(包括90):A80至90分(包括80):B70至80分(包括70):C60至70分(包括60):D60分以下:E方法一:(用if语句的嵌套)方法二:用switch语句(用switch语句)提示:因switch语句中case后的表达式必须是一个常量表达式,应在switch语句之前,把score除十取整,化为相应的常数。5.用scanf函数输入一个年份year,计算这一年2月份的天数days,然后用输出函数printf输出days。实验步骤与要求:(1)有变量定义为整型。(2)输入前要加提示语句。(3)输出结果前要有必要的文字说明。说明:(1)闰年的条件是:year能被4整除但不能被100整除,或者year能被400整除。(2)如果year是闰年,则2月份的天数为29天,不是闰年则为28天。三、对上述实验进行总结,写出实验报告。实验六循环结构程序设计(一)一、实验目的1.熟练掌握三种循环语句的应用。2.熟练掌握循环结构的嵌套。3.理解并掌握break和continue语句在循环结构中的不同作用。二、实验内容1.编程计算

#include<stdio.h>voidmain()

{inti=1,s=0;

while(i<=10)

{

s+=i;

i++;

}

printf(″\ns=%d″,s)

}

分析:1)上机运行程序,分析运行结果。2)采用for语句实现,比较while语句和for语句的用法。2.编程:求1-100的奇数和。(用while语句)3.编程:求1—100的偶数和。(用do…while语句)4.编程:用于输出fibnocci数列的前20项,每行输出5个。(用for语句)说明:fibnocci数列的前两项均为1,以后各项等于其前两项之和。5.编程:⑴用for语句计算s=3+33+3336.编程:输出100以内能被7整除的数。(continue语句)7.编程:输出三角形的九九乘法表(循环嵌套)8.编程:⑴求100-200之间的素数,把它们按每行5个素数全部显示出来,并给出素数的个数。说明:素数是只能被1和它本身整除的数。判断素数的方法:用一个数分别去除2到这个数减1(或2到sqrt(这个数)),如果能被整除,则表明此数不是素数,反之是素数。三、对上述实验进行总结,写出实验报告,把你通过本实验掌握的内容整理出来。实验七循环结构程序设计(二)一、实验目的进一步掌握循环结构程序设计,熟练运用循环语句编写程序,提高调试和修改程序的能力。二、实验内容1.编程求1+2!+3!+...+20!的和。2.输入两个正整数m和n,求其最大公约数和最小公倍数。分析:计算两个数的最大公约数;首先,随机输入两个数m,n(默认m>n,若m<n,则交换m与n);其次,使k为m除以n的余数,如果m能被n整除,则k值为0,n为这两个数的最大公约数,否则,使k代替n,n代替m,重复以上过程,直到k值为0。3.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=13+53+33。分析:利用for循环控制100—999个数,每个数分解出个位,十位,百位。4.编程实现:百钱买百鸡。5.打印输出杨辉三角三、对上述实验进行总结,写出实验报告。实验八数组应用(一)一、实验目的1.掌握一维数组、二维数组的定义及初始化、元素的引用等。2.掌握字符数组及字符串处理函数的使用。3.掌握与数组有关的算法:排序、查找等。二、实验内容1.阅读下面程序,写出程序运行结果,并且上机进行验证。(1)#include“stdio.h”voidmain(){inti,n[4]={0,0,0,0};for(i=1;i<4;i++){if(i==3)break;n[i]=n[i-1]+1;}printf(“n[i-1]=%dn[i]=%d\n”,n[i-1],n[i]);}(2)#include"stdio.h"voidmain(){charch[]={'0','1','2','3','4','5','6','7','8','9'};inti=0,m=2,r,x=42;charb[80];while(x){r=x%m;x/=m;b[i++]=ch[r];}for(--i;i>=0;i--)printf("%c",b[i]);printf("\n");}(3)以下是实现两个字符串的连接(不使用库函数strcat())的程序。上机运行程序,并分析和理解程序的实现过程,从中学会对字符串操作的程序设计。#include<stdio.h>#include<conio.h>voidfun(charp1[],charp2[]){inti,j;for(i=0;p1[i];i++)for(j=0;p2[j];j++)p1[i++]=p2[j];p1[i]='\0';}voidmain(){chars1[80],s2[80];clrscr();printf("Enters1ands2:\n");scanf("%s%s",s1,s2);printf("s1=%s\n",s1);printf("s2=%s\n",s2);printf("Invokefun(s1,s2):\n");fun(s1,s2);printf("Afterinvoking:\n");printf("%s\n",s1);}例如,分别输入下面两个字符串:Thisisthebestprogram.程序输出:Thisisthebestporgram.2.程序填空(根据题意在空白处填入适当的内容,使程序变得完整。并上机进行调试验证)(1)程序说明:下列程序完成的是插入排序功能:数组a中存放一个递增数列,输入一个整数x,将它插入到数组中,使之仍为一个有序数列。#include"stdio.h"#defineN10voidmain(){inta[]={1,10,20,30,40,50,60,70,80,90},x,i,p;scanf("%d",&x);for(i=0,p=N;i<N;i++)if(x<a[i]){p=i;____________;}for(i=N-1;i>=p;___________)a[i+1]=a[i];_______________;printf("%d",x);for(i=0;i<=N;i++)printf("%5d",a[i]);printf("\n");}(2)程序说明:下面程序完成的是折半查找。A数组中存放的是n个由大到小已经排好序的数列,从这n个数中查找x的值是否存在。基本思想:在查找范围里,将x与处于中间位置上的数比较,如果相等,则查找成功,如果小于该元素,则在较小的一半元素里再进行折半查找;如果x大于该元素,则在较大的一半元素里再进行折半查找。变量top,bottom,mid分别指向查找范围的顶部、底部和中间位置。#include"stdio.h"#definen10main(){inta[n],find;intx,i,top,bottom,mid;printf("inputthesortednumbers:\n");for(i=0;i<n;i++)scanf("%d",__________);printf("inputthenumbertofind:\n");scanf("%d",&x);find=0;top=0;bottom=n-1;if(x<=a[0]&&__________)while(!find&&top<=bottom){mid=_______________;if(x==a[mid]){find=1;printf("x=%dposition=%d\n",x,mid);}elseif(_______________)bottom=mid-1;elsetop=mid+1;}if(__________)printf("thenumber%disnotinthetable",x);}3.程序设计(根据题意编写程序并上机进行调试)。(1)编程:输入10个数存入一维数组,然后再按逆序重新存放后输出。(2)编程:从键盘输入两个字符串ch2、ch1,然后将字符串ch2连接到字符串ch1的后面,并输出连接后的字符串。实验九数组应用(二)一、实验目的1.掌握二维数组的定义和初始化。2.掌握二维数组元素的引用及其应用。二、实验内容1.阅读下面程序,写出程序运行结果,并且上机进行验证。(1)#include“stdio.h”voidmain(){inta[][3]={9,7,5,3,1,2,4,6,8};inti,j,s1=0,s2=0;for(i=0;i<3;i++)for(j=0;j<3;j++){if(i==j)s1=s1+a[i][j];if(i+j==2)s2=s2+a[i][j]}printf("s1=%ds2=%d",s1,s2);}(2)#include"stdio.h"voidmain(){intr[5]={1,2,3,4,5};inti,j,a[5][5];for(i=0;i<=4;i++){for(j=i;j<=4;j++)a[i][j]=r[j-i];for(j=0;j<i;j++)a[i][j]=r[i-j];}for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%2d",a[i][j]);printf("\n");}}2.程序填空(根据题意在空白处填入适当的内容,使程序变得完整。并上机进行调试验证)(1)程序说明:下面程序分别输出方阵中主对角线、副对角线上元素的和suml和sum2(主对角线为从矩阵的左上角至右下角的连线,副对角线为从矩阵的右上角至左下角的连线).#include"stdio.h"#defineSIZE5voidmain(){inta[SIZE][SIZE],m,n,sum1,sum2;for(m=0;m<SIZE;m++)for(n=0;n<SIZE;n++)scanf("%d",&a[m][n]);sum1=sum2=________;for(m=0;m<SIZE;m++){sum1=sum1+______;sum2=sum2+______;}printf("sum1=%dsum2=%d\n",sum1,sum2);}(2)程序说明:下面程序打印出如下所示的杨辉三角行(打印10行)。11112113311464115101051…….#include"stdio.h"voidmain(){inti,j,a[10][10]={{1},{1,1}};for(i=2;i<10;i++){a[i][0]=1;___________;for(j=0;j<i;j++)a[i][j]=a[i-1][j]+____________;}for(i=0;i<10;i++){for(j=0;j<=i;j++)printf("%4d",a[i][j]);___________;}}3.程序设计(根据题意编写程序并上机进行调试)。(1)设有一个3行5列的数组,编写程序从键盘输入数据,并找出二维数组中最大元素的值及其行、列下标。(2)已知A是一个3×4矩阵,B是一个4×5矩阵,编写程序,从键盘输入矩阵A、B的值,求A×B得到的新,并输出矩阵C。(3)设某班有20个学生,每个学生选修了三门课,编写程序,输入20个学生三门课的成绩,计算每个学生的平均成绩,最后输出每个学生三门课的成绩及平均成绩。实验十函数应用(一)一、实验目的1.掌握函数的定义、函数的说明和调用。2.掌握函数的参数及其传递方式,函数值的正确返回。二、实验内容1.阅读下面程序,写出程序运行结果,并且上机进行验证。(1)#include"stdio.h"intswap(inta,intb){intc,s;c=a;a=b;b=c;s=a+b;returns;}voidmain(){inta,b,s;a=3;b=4;s=swap(a,b);printf("a=%db=%ds=%d\n",a,b,s);}(2)#include"stdio.h"intfun(intnum){intk=1;do{k*=num%10;num/=10;while(num);return(k);}voidmain(){intn=26;printf("%d\n",fun(n));}2.程序填空(根据题意在空白处填入适当的内容,使程序变得完整。并上机进行调试验证)(1)程序说明:下面程序将输入的十进制数n转换为b进制数,并将转换结果输出。转换的方法是:除b取余法。#include"stdio.h"voidtransfer(intm,intk){inta[20],i;for(i=0;m;i++){a[i]=;m/=k;}for(;i>=0;i--)printf("%d",a[i]);}voidmain(){intb,n;scanf("%d%d",);}(2)程序说明:歌德巴赫猜想指出:任何一个充分大的偶数都可以表示为两个素数之和,例如4=2+26=3+38=3+5…50=3+47。下面程序将4-50之间的所有偶数用两个素数之和表示,判断一个整数是否为素数用函数prime完成。#include"stdio.h"intprime(intx){intk,flag=1;for(k=2;k<=x/2;k++)if(){flag=0;break;}return();}voidmain(){intm,n,k;for(m=4;m<=50;m++)for(n=2;n<m-1;n++)if(prime(n)&&){printf("%d=%d+%d\n",)break;}}3.分析下面程序,上机运行验证分析结论。#include“stdio.h”intf1(intx,inty){retumx>y?x:y;}intf2(intx,inty){returnx>y?y:x;}voidmain(){inta=4,b=3,c=5,d,e,f;d=f1(a,b);d=fl(d,c);e=f2(a,b);e=f2(e,c);f=a+b+c-d-e;printf("%d,%d,%d\n",d,e,f);}/*函数f1是一个求两个整数中最大值的函数,函数f2是一个求两个整数中最小值的函数。*/分析并理解程序结构、牛顿迭代法的实现过程、函数定义和调用的方法,初始参数传递和结果传递的途径。实验十一函数应用(二)一、实验目的1.掌握函数的嵌套调用和递归调用2.掌握数组做函数参数的用法3.掌握全局变量和局部变量的用法。4.掌握变量的存储类别。二、实验内容1.阅读下面程序,写出程序运行结果,并且上机进行验证。(1)#include“stdio.h”inta=3,b=5,c;intf(intb){c=a+b;printf("%d%d%d\n",a,b,c);}voidmain(){inta=8;f(3);printf("%d%d%d\n",a,b,c);}(2)#include"stdio.h"voiddtob(intn){inti;if(n>1){i=n%2;dtob(n/2);}elsei=n;printf("%d",i);}voidmain(){inti=11;printf("%d->",i);dtob(i);printf("(2)\n");}(3)#include"stdio.h"intf1(intn){staticintf=1;f=f*n;return(f);}voidmain(){inti;for(i=1;i<=4;i++)printf("%5d",f1(i));}2.程序填空(根据题意在空白处填入适当的内容,使程序变得完整。并上机进行调试验证)(1)程序说明:用一个一维数组存放10个学生的成绩,写一个函数求出平均分、最高分和最低分。#include"stdio.h"floatmax=0;min=0;floataverage(floatscore[],intn){inti;floatave,sum=score[0];max=min=score[0];for(i=1;i<n;i++){if(score[i]>max)max=score[i];elseif()min=score[i];sum=sum+score[i];}ave=sum/10;return;}voidmain(){floatave,score[10];inti;for(i=0;i<10;i++)scanf("%f",&score[i]);ave=average()printf("max=%6.2fmin=%6.2faverage=%6.2f\n,max,min,ave);}(2)程序说明:在主函数中读入一字符串,再读入一字符,然后调用函数delete在字符串中查找并删除该字符,最后输出该字符串。#include"stdio.h"voiddelete(charp[],charch){inti=0,j;while(){if(p[i]==ch)for(j=i;j<;j++)p[i]=p[i+1];elsei++;}voidmain(){charp[80],ch;inti=0,j;scanf("%s",p);scanf("%c",&ch);delete();printf("%s",);}3.程序设计(根据题意编写程序并上机进行调试)。(1)程序说明:写两个函数分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。要求:求最大公约数用递归方法实现,递归公式为(r=m%n):(2)程序说明:用递归函数将一个整数n转换成字符串,例如,输入568,应输出字符串“865”。n的位数不确定,可以是任意位数的整数。(3)程序说明:编写程序对10个学生5门课的成绩进行处理,要求分别用函数实现如下几个功能:①输入学生数据;②求每个学生的平均分;③求每门课的平均分;④输出平均分最高的学生的成绩;⑤输出学生成绩表(包括每个学生的平均成绩和每门课的平均成绩)。实验十二指针的应用一、实验目的掌握指针变量的定义和引用。二、实验内容1.下面是合并两个字符串的程序。在分析下面程序后进行上机验证并分析运行结果。

voidappend(char*from,char*to)

{for(;*to;to++);

for(;*from;)*to++=*from++;

*to=0;

}

voidmain()

{chara[70],b[70];

printf(″\ninputstringa:″);

scanf(″%s″,a);

printf(″\ninputstringb:″);

scanf(″%s″,b);

append(a,b);

printf(″\n%s″,a);

}理解指针传递参数的用法。2.编制如下程序,并上机调试运行,最后在实验报告中写出运行结果。(1)使用指针作函数参数,编写用于交换两个参数值的函数。调用该函数用于对从键盘输入的两个整数进行交换。(2)编写一个函数,用于对作为参数的数组中的元素求平均值,函数以指针方式进行处理。平均值为函数的返回值。(3)编写一个函数,用于对作为参数的数组中的元素求最大值,并将最大值从数组中删除。函数的首部类似于下列形式:dele_max(int*,int*)其中第一个参数为指向数组的指针,第二个参数为指向数组长度变量的指针。因此调用数组时,使用如下形式:dele_max(a,&n);其中a为一数组名,n为存放a数组长度的变量。3.程序分析题。分析以下程序,对分析的结果上机检验。(1)下列程序使用指针操作数组有各种形式,体会其用法。#include“stdio.h”voidmain(){inta[]={0,1,2,3,4},i,*p;for(i=0;i<=4;i++)printf("%d\t",a[i]);printf("\n");for(p=&a[0];p<=&a[4];p++)printf("%d\t",*p);printf("\n\n");for(p=&a[0],i=1;i<5;i++)printf("%d\t",p[i]);printf("\n");for(p=a,i=0;p+i<=a+4;p++,i++)printf("%d\t",*(p+i));printf("\n\n");for(p=a+4;p>=a;p--)printf("%d\t",*p);printf("\n");for(p=a+4,i=0;i<=4;i++)printf("%d\t",p[-i]);printf("\n");for(p=a+4;p>=a;p--)printf("%d\t",a[p-a]);printf("\n");}(2)#include"stdio.h"voidmain(){char*s2="aceg";*s2++;printf("%c\n",*s2);printf("%c\n",*(s2+1));printf("%c\n",*s2+1);}(3)运行以下程序,从键盘输入MyBook,结果是什么?#include"stdio.h"charfun(char*s){if(*s<='Z'&&*s>='A')*s+=32;return(*s);}voidmain(){charc[80],*p;p=c;scanf("%s",p);while(*p){*p=fun(p);putchar(*p);p++;}printf("\n");}(4)#include"stdio.h"voidmain(){int*p,s[3][4],i,j,k=1;p=s[0];for(i=0;i<3;i++)for(j=0;j<4;j++)*p++=k++;p=s[0];for(i=0;i<3;i++)for(j=0;j<4;j++)printf((j%4)?"%4d":"\n%4d",*p++);}(5)#include"stdi

温馨提示

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

评论

0/150

提交评论