《重庆理工大学C语言实验答案.doc》由会员分享,可在线阅读,更多相关《重庆理工大学C语言实验答案.doc(17页珍藏版)》请在装配图网上搜索。
1、程序设计基础C实验报告实验7和实验8今天完成,主要是验证性实验,下次实验开始做考试系统实验7 函数实验完成实验1、2、3、5、6、8、9、11、12,其余选作一、 实验目的(1) 理解函数定义的方法。(2) 掌握函数实参与形参的对应关系,以及函数”参数传递”的方式。(3) 掌握函数的嵌套调用和递归调用的方法;(4) 掌握全局变量和局部变量、动态变量、静态变量的概念和使用方法。二、 实验任务1基本内容【题目1】以下程序是求3个数中的最大值,请完善程序并上机验证。#includevoid main()int a,b,c,m;int max(int x,int y); /* 函数声明*/printf。
2、(input a,b,c=);scanf(%d,%d,%d,&a,&b,&c);m=max(max(a,b),c);printf(最大值是:%dn,m);int max(int x,int y) /*函数定义*/int z;z=(xy)?x:y;return z;【题目2】程序填空:子函数中判断一个大于1的整数是否是素数,数据由主函数中输入,并在主函数中显示结果。 #includevoid main()int number;int prime(int number);printf(请输入一个正整数:n); scanf(%d,&number);if ( prime(number) )printf。
3、(n %d是素数:,number);elseprintf(n %d不是素数:,number);int prime(int number) /*请注意区别main函数和prime函数中的number变量*/int flag=1,n;for (n=2; flag=1 & nvoid main()int i=2,p;int f(int a, int b);p=f(i,i+=1);printf(%dn,p);int f(int a, int b)int c;if(ab)c=1;else if(a=b)c=0;elsec=-1;return(c);将程序中第4行语句:p=f(i,i+=1); 改为以下语。
4、句,比较程序结果:p=f(i+=1,i);实践说明,函数的参数求值顺序是:从右向左【题目4】编程在主函数中输入和输出字符串,在子函数中实现一个字符串按反序存放。【题目5】用子函数计算4名学生的平均分。标注“error”处有错误,请改正。#include#define N 4float average(float array) /* 注意数据类型的一致 */int i; float aver,sum=0;for (i=0;ivoid main()int a3=0,2,4,6,8,10,12,14,16,sum;int func(int a3); /*函数声明*/sum=func(a); /*er。
5、ror*/printf(n sum=%dn,sum);int func(int a3) /*error*/int i,j,sum=0;for(i=0;iint fun1(int x, int y)int temp;if (xint a=4,b=6;int max(int a,int b)int c;c=ab?a:b;return c;void main()int a=9;printf(%dn,max(a,b);【题目12】以下是一个求1-10累加和的错误程序,请改正。#includevoid main()int i,s;int sum(int j);for(i=1;ivoid convert(。
6、int n)int i;if (i=n/10)!=0) /*__________________________________*/convert(i);putchar(n%10+0); /*___________________________________*/void main()int number;printf(n输入整数:);scanf(%d,&number);printf(n输出字符是:);if (numbervoid main()int x=1,y=2, *p, *q;p=&x; /* error*/q=&y; /* error*/printf(x=%d,y=%dn,x,y);。
7、printf(&x=%d,&y=%dn,&x,&y);printf(p=%d,q=%dn,p,q);printf(p=%d,q=%dn,*p,*q);【题目2】请预测程序的结果,并上机运行程序,验证结果。#includevoid main()int a=1,3,5,7,9,11,13;int *p=a;printf(1-%dn,*p);printf(2-%dn,*(+p);printf(3-%dn ,*+p);printf(4-%dn ,*(p-);printf(5-%dn ,*p-);printf(6-%dn,*p+);printf(7-%dn,+(*p);printf(8-%dn,(*p)。
8、+);p=&a2;printf(9-%dn ,*p);printf(10-%dn,*(+p);p+;printf(11-%dn ,*p);【题目3】请预测程序的结果,并上机运行程序,验证结果。#includevoid main()int a6=1,2,3,4,5,6; int *p,i,s=1;p=a;for(i=0;ivoid main()char a=abcdef;char *b=ABCDEF;int i;for(i=0;ivoid main()int cle=0;char *p,s101;printf(请输入一行字符:);gets(s);p=s;while(*p!=0)if(*p=A)&。
9、(*pvoid swap(int *p1,int *p2)int i;i=*p1; *p1=*p2;*p2=i;void main()int n1,n2;printf(请输入两个整数:);scanf(%d%d,&n1,&n2);swap(&n1,&n2);printf(%d,%dn,n1,n2);【题目7】程序功能:求两个数中的最大值。要求:阅读以下程序,将空格处补充完整,并上机调试运行。#includeint * max(int *x,int *y)if(*x*y)return x;elsereturn y;void main()int a,b;printf(请输入两个整数a,b:);sca。
10、nf(%d,%d,&a,&b);printf(最大值是:%dn, *max(&a,&b);【题目8】将数组a中的10个整数按相反顺序存放,完善程序。#include #define N 10void inv(int *x, int n) /*理解掌握本函数的算法*/int t,i;for(i=0;ivoid main()int num10,i,dnum10,di;int *p;p=num;for(i=0;iint len(char *str) void main()char str1024;gets(str);printf(%d,len(str);【题目13】编写函数convert,把字符串中的小写字母转换成大写字母。要求:在main函数中输入字符串,并输出转换后的字符串。分析下面的代码,将省略号的部分补充完整并上机验证。#includevoid convert(char *p) void main()char str100;gets(str);convert(str);puts(str);三、实验结果(用截图说明)四、调试心得(选作)16。