已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章 函数调用7-1写两个函数,分别求两个整数的最大公约数和最小公倍数,#include void main()int hcf(int,int);int lcd(int,int,int); int u,v,h,l;scanf(%d,%d,&u,&v);h=hcf(u,v);printf(H.C.F=%dn,h);l=lcd(u,v,h);printf(L.C.D=%dn,l);int hcf(int u,int v)int t,r;if (vu)t=u;u=v;v=t;while (r=u%v)!=0)u=v;v=r;return(v);int lcd(int u,int v,int h)return(u*v/h);7-2求方程ax*x+bx+c=0的根,用3个函数分别求当b*b-4ac大于0,等于0、小于0时的根并输出结果。从主函数输入abc的值。#include #include float x1,x2,disc,p,q;void main()void greater_than_zero(float,float);void equal_to_zero(float,float);void smaller_than_zero(float,float);float a,b,c;printf(input a,b,c:);scanf(%f,%f,%f,&a,&b,&c);printf(equation: %5.2f*x*x+%5.2f*x+%5.2f=0n,a,b,c);disc=b*b-4*a*c;printf(root:n);if (disc0)greater_than_zero(a,b);printf(x1=%fttx2=%fn,x1,x2);else if (disc=0)equal_to_zero(a,b);printf(x1=%fttx2=%fn,x1,x2);elsesmaller_than_zero(a,b);printf(x1=%f+%fitx2=%f-%fin,p,q,p,q);void greater_than_zero(float a,float b)x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);void equal_to_zero(float a,float b)x1=x2=(-b)/(2*a);void smaller_than_zero(float a,float b)p=-b/(2*a);q=sqrt(-disc)/(2*a);7-3写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。#include void main()int prime(int);int n;printf(ninput an integer:);scanf(%d,&n);if (prime(n)printf(n %d is a prime.n,n);elseprintf(n %d is not a prime.n,n);int prime(int n)int flag=1,i;for (i=2;in/2 & flag=1;i+)if (n%i=0)flag=0;return(flag);7-4写一个函数,使给定的一个3x3的二维整形数组转置,即行列转换。#include #define N 3int arrayNN;void main() void convert(int array3);int i,j;printf(input array:n);for (i=0;iN;i+)for (j=0;jN;j+)scanf(%d,&arrayij);printf(noriginal array :n);for (i=0;iN;i+)for (j=0;jN;j+)printf(%5d,arrayij);printf(n);printf(convert array:n);for (i=0;iN;i+)for (j=0;jN;j+)printf(%5d,arrayij);printf(n);void convert(int array3)int i,j,t;for (i=0;iN;i+)for (j=i+1;jN;j+)t=arrayij;arrayij=arrayji;arrayji=t;7-5写一个函数,是输入的字符串按反序存放,在主函数中输入和输出字符窜。#include #include char str100;void main()void inverse(char str);printf(input string:);scanf(%s,str);inverse(str);printf(inverse string:%sn,str);void inverse(char str)char t;int i,j;for (i=0,j=strlen(str);i(strlen(str)/2);i+,j-)t=stri;stri=strj-1;strj-1=t;7-6写一个函数,将两个字符窜连接。#include void main()void concatenate(char string1,char string2,char string);char s1100,s2100,s100;printf(input string1:);scanf(%s,s1);printf(input string2:);scanf(%s,s2);concatenate(s1,s2,s);printf(nThe new string is %sn,s);void concatenate(char string1,char string2,char string)int i,j;for (i=0;string1i!=0;i+)stringi=string1i;for(j=0;string2j!=0;j+)stringi+j=string2j;stringi+j=0;7-7写一个函数,将字符窜中元音字母复制到另一个字符窜,然后输出。#include void main()void cpy(char ,char );char str80,c80;printf(input string:);gets(str);cpy(str,c);printf(The vowel letters are:%sn,c);void cpy(char s,char c) int i,j;for (i=0,j=0;si!=0;i+)if (si=a|si=A|si=e|si=E|si=i|si=I|si=o|si=O|si=u|si=U)cj=si;j+;cj=0;7-13输入10个学生5门课的成绩,分别用函数实现下列功能。1 计算每个学生平均分。2 计算每门课的平均分。3 找出所有50个分数中最高的分数所对应的学生和课程。4 计算平均方差。#include #define N 10#define M 5float scoreNM;float a_stuN,a_courM;int r,c;void main() int i,j;float h;float s_var(void);float highest();void input_stu(void);void aver_stu(void);void aver_cour(void);input_stu();aver_stu();aver_cour();printf(n NO. cour1 cour2 cour3 cour4 cour5 avern);for(i=0;iN;i+)printf(n NO %2d ,i+1);for(j=0;jM;j+)printf(%8.2f,scoreij);printf(%8.2fn,a_stui);printf(naverage:);for (j=0;jM;j+)printf(%8.2f,a_courj);printf(n);h=highest();printf(highest:%7.2f NO. %2d course %2dn,h,r,c);printf(variance %8.2fn,s_var();void input_stu(void)int i,j;for (i=0;iN;i+)printf(ninput score of student%2d:n,i+1);for (j=0;jM;j+)scanf(%f,&scoreij);void aver_stu(void)int i,j;float s;for (i=0;iN;i+)for (j=0,s=0;jM;j+)s+=scoreij;a_stui=s/5.0;void aver_cour(void)int i,j;float s;for (j=0;jM;j+)s=0;for (i=0;iN;i+)s+=scoreij;a_courj=s/(float)N;float highest()float high;int i,j;high=score00;for (i=0;iN;i+)for (j=0;jhigh)high=scoreij;r=i+1;c=j+1;return(high);float s_var(void)int i;float sumx,sumxn;sumx=0.0;sumxn=0.0;for (i=0;iN;i+)sumx+=a_stui*a_stui;sumxn+=a_stui;return(sumx/N-(sumxn/N)*(sumxn/N);7-14写几个函数:1 输入10个职工的姓名和职工号2 按职工号由小到大的顺序排序,姓名顺序也随之调整。3 要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。#include #include #define N 10void main()void input(int ,char name8);void sort(int ,char name8);void search(int ,int ,char name8);int numN,number,flag=1,c;char nameN8;input(num,name);sort(num,name);while (flag=1)printf(ninput number to look for:);scanf(%d,&number);search(number,num,name);printf(continue ot not(Y/N)?);getchar();c=getchar();if (c=N|c=n)flag=0;void input(int num,char nameN8)int i;for (i=0;iN;i+)printf(input NO.: );scanf(%d,&numi);printf(input name: );getchar();gets(namei);void sort(int num,char nameN8) int i,j,min,templ;char temp28;for (i=0;iN-1;i+)min=i;for (j=i;jnumj) min=j;templ=numi;strcpy(temp2,namei);numi=nummin;strcpy (namei,namemin);nummin=templ;strcpy(namemin,temp2);printf(n result:n);for (i=0;iN;i+)printf(n %5d%10s,numi,namei);void search(int n,int num,char nameN8)int top,bott,mid,loca,sign;top=0;bott=N-1;loca=0;sign=1;if (nnumN-1)loca=-1;while(sign=1) & (top=bott)mid=(bott+top)/2;if (n=nummid)loca=mid;printf(NO. %d , his name is %s.n,n,nameloca);sign=-1;else if (nnummid)bott=mid-1;elsetop=mid+1;if (sign=1 | loca=-1)printf(%d not been found.n,n);第八章 指针8-11 输入3个整数,按由小到大的顺序输出#includevoid main()void swap(int*,int*);int a,b,c; int *p1,*p2,*p3;p1=&a;p2=&b;p3=&c;scanf(%d,%d,%d,p1,p2,p3);if(*p1*p2) swap(p1,p2);if(*p1*p3) swap(p1,p3);if(*p2*p3) swap(p2,p3);printf(%d,%d,%dn,a,b,c);void swap(int*p1,int*p2)int p;p=*p1;*p1=*p2;*p2=p;8-2输入3个整数按有小到大的顺序输出。#include #include void main()void swap(char *,char *);char str120,str220,str320;printf(input three line:n);gets(str1);gets(str2);gets(str3);if(strcmp(str1,str2)0) swap(str1,str2);if(strcmp(str1,str3)0) swap(str1,str3);if(strcmp(str2,str3)0) swap(str2,str3);printf(Now,the order is:n);printf(%sn%sn%sn,str1,str2,str3);void swap(char *p1,char *p2)char p20;strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);8-3输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:1输入10个数;2 进行处理;3 输出10个数#include void main() void input(int *); void max_min_value(int *); void output(int *);int number10;input(number); max_min_value(number); output(number); void input(int *number) int i;printf(input 10 numbers:);for (i=0;i10;i+)scanf(%d,&numberi);void max_min_value(int *number) int *max,*min,*p,temp;max=min=number;for (p=number+1;p*max) max=p; else if (*p*min) min=p; temp=number0;number0=*min;*min=temp; if(max=number) max=min;temp=number9;number9=*max;*max=temp; void output(int *number) int *p;printf(Now,they are: );for (p=number;pnumber+10;p+)printf(%d ,*p);printf(n);8-7有一个字符窜,包含n个字符。写一个函数,将此字符窜中从m个字符开始的全部字符复制成为另一个字符窜。#include #include void main()void copystr(char *,char *,int); int m;char str120,str220;printf(input string:);gets(str1);printf(which character that begin to copy?);scanf(%d,&m);if (strlen(str1)m)printf(input error!);elsecopystr(str1,str2,m);printf(result:%sn,str2);void copystr(char *p1,char *p2,int m) int n;n=0;while (nm-1)n+;p1+;while (*p1!=0)*p2=*p1;p1+;p2+;*p2=0;8-9写一个函数,使给定的一个3x3的二维整形数组转置,即行列转换。#include void main()void move(int *pointer);int a33,*p,i;printf(input matrix:n);for (i=0;i3;i+)scanf(%d %d %d,&ai0,&ai1,&ai2);p=&a00;move(p);printf(Now,matrix:n);for (i=0;i3;i+)printf(%d %d %dn,ai0,ai1,ai2);void move(int *pointer)int i,j,t;for (i=0;i3;i+)for (j=i;j3;j+)t=*(pointer+3*i+j);*(pointer+3*i+j)=*(pointer+3*j+i);*(pointer+3*j+i)=t;8-13将n个数按输入顺序的逆序排列,用函数实现。#include void main()void sort (char *p,int m);int i,n;char *p,num20;printf(input n:);scanf(%d,&n);printf(please input these numbers:n);for (i=0;in;i+)scanf(%d,&numi);p=&num0;sort(p,n);printf(Now,the sequence is:n);for (i=0;in;i+)printf(%d ,numi);printf(n);void sort (char *p,int m)int i;char temp, *p1,*p2;for (i=0;im/2;i+)p1=p+i;p2=p+(m-1-i);temp=*p1;*p1=*p2;*p2=temp;第九章 用户建立的数据类型9-1定义一个结构体变量(包扩年、月、日)。计算该日在本年中的第几天,注意闰年问题。#include struct int year;int month;int day;date;void main()int days;printf(input year,month,day:);scanf(%d,%d,%d,&date. year,&date.month,&date.day);switch(date.month) case 1: days=date.day; break;case 2: days=date.day+31; break;case 3: days=date.day+59; break;case 4: days=date.day+90; break;case 5: days=date.day+120; break;case 6: days=date.day+151; break;case 7: days=date.day+181; break;case 8: days=date.day+212; break;case 9: days=date.day+243; break;case 10: days=date.day+273; break;case 11: days=date.day+304; break;case 12: days=date.day+334; break;if (date.year %4= 0 & date.year % 100 != 0|date.year % 400 = 0) & date.month =3) days+=1;printf(%d/%d is the %dth day in %d.n,date.month,date.day,days,date.year);9-2写一个函数days,实现第一题的计算,由主函数将年、月、日传递给days函数,计算后将日子数传回主函数输出。clude struct int year;int month;int day;date;void main()int i,days;int day_tab13=0,31,28,31,30,31,30,31,31,30,31,30,31;printf(input year,month,day:);scanf(%d,%d,%d,&date. year,&date.month,&date.day);days=0;for(i=1;i=3)days=days+1;printf(%d/%d is the %dth day in %d.n,date.month,date.day,days,date.year);9-3编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括,score3,用主函数输入这些记录,用print函数输出这些记录。#include #define N 5struct student char num6;char name8;int score4;stuN;void main()void print(struct student stu6);int i,j;for (i=0;iN;i+)printf(ninput score of student %d:n,i+1);printf(NO.: );scanf(%s,stui.num);printf(name: );scanf(%s,);for (j=0;j3;j+)printf(score %d:,j+1);scanf(%d,&stui.scorej);printf(n);print(stu);void print(struct student stu6)int i,j;printf(n NO. name score1 score2 score3n);for (i=0;iN;i+)printf(%5s%10s,stui.num,);for (j=0;j3;j+)printf(%9d,stui.scorej);printf(n);9-4在第3题的基础上,编写一个函数input,用来输入5个学生的数据记录。#include #define N 5struct studentchar num6;char name8;int score4; stuN;void main()void input(struct student stu);void print(struct student stu);input(stu);print(stu);void input(struct student stu)int i,j;for (i=0;iN;i+)printf(input scores of student %d:n,i+1);printf(NO.: );scanf(%s,stui.num);printf(name: );scanf(%s,);for (j=0;j3;j+)printf(score
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 装潢美术设计师操作知识竞赛考核试卷含答案
- 硫漂工安全宣教知识考核试卷含答案
- 2025年独立运行村用风力发电机组项目发展计划
- 2025年石油钻采机械项目发展计划
- 2025年金属冶炼加工项目发展计划
- 2025年光伏发电用控制器项目发展计划
- 2025年电子装联专用设备合作协议书
- 2026年液相色谱-质谱联用仪(LC-MS)项目建议书
- 2025年江苏省南通市中考化学真题卷含答案解析
- 乔木栽植施工工艺
- 感染性心内膜炎护理查房
- 导管相关皮肤损伤患者的护理 2
- 审计数据管理办法
- 2025国开《中国古代文学(下)》形考任务1234答案
- 研发公司安全管理制度
- 儿童口腔诊疗行为管理学
- 瓷砖样品发放管理制度
- 北京市2025学年高二(上)第一次普通高中学业水平合格性考试物理试题(原卷版)
- 短文鲁迅阅读题目及答案
- 肺部感染中医护理
- 临床研究质量控制措施与方案
评论
0/150
提交评论