《高级语言程序设计》答案).doc_第1页
《高级语言程序设计》答案).doc_第2页
《高级语言程序设计》答案).doc_第3页
《高级语言程序设计》答案).doc_第4页
《高级语言程序设计》答案).doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1. 输入两个整数,要求用两个函数求出其最大公约数和最小公倍数,最大公约数和最小公倍数都在主函数中输出。#includeint main()int i,j,t;int max(int,int); int min(int,int); scanf(%d%d,&i,&j);if(ij) t=i;i=j;j=t; printf(%d %dn,max(i,j),min(i*j,max(i,j); return 0; int max(int i,int j) int t; while(j)t=i%j;i=j;j=t; return i; int min(int p,int q) return p/q; 2. 输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。#includeint main()int max4(int,int,int,int); /对max4的函数声明int a,b,c,d;scanf(%d%d%d%d,&a,&b,&c,&d); /输入4个数 printf(max=%dn,max4(a,b,c,d);/调用4个数中的最大者return 0;int max4(int a,int b,int c,int d) /定义max4函数 int max2(int,int); /对max2的函数声明 return max2(max2(max2(a,b),c),d); /调用max2把作为函数值带回main函数 int max2(int a,int b) return(ab?a:b); /返回条件表达式的值,即a和b中的大者3. 用递归调用的方法求5!。#includeint main()int fac(int);int n;scanf(%d,&n);printf(%d!=%dn,n,fac(n);return 0;int fac(int n) if(n=0|n=1)return 1;else return fac(n-1)*n;4. 按以下递归公式求函数的值。 例如,当给n输入5时,函数值为18,(要求用递归实现)。#includeint main()int fun(int);int n;scanf(%d,&n);printf(%dn,fun(n);return 0;int fun(int n)if(n=1)return 10;else return fun(n-1)+2;5. 用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”,n的位数不确定,可以是任意位数的整数。#includevoid main()void fun(int); int n; scanf(%d,&n); if(n0) n=-n; putchar(-); fun(n); puts();void fun(int m)if(m/10)fun(m/10);putchar(m%10+48);6. 写一个函数,完成将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1改后成为1,4,5,6,8。#include#define N 5int main()void fun(int a);int aN,i;for(i=0;iN;i+)scanf(%d,&ai);fun(a);return 0;void fun(int aN)int t,i;for(i=0;iN/2;i+) t=ai; ai=aN-1-i; aN-1-i=t; for(i=0;iN;i+) printf(%d ,ai);puts();7. 编写一个函数,用来分别求数组score_1(有5个元素)和数组score_2(有10个元素)各元素的平均值。#include#define N 5#define M 10int main()int score_1N,score_2M;int i,fun(int a,int);for(i=0;i5;i+)scanf(%d,&score_1i);for(i=0;i10;i+)scanf(%d,&score_2i);printf(average of score_1:%dn,fun(score_1,N);printf(average of score_2:%dn,fun(score_2,M); return 0; int fun(int c,int l)int aver=0;for(int i=0;il;i+)aver+=ci;return aver/l;8. 编写一个函数,实现将两个字符串连接起来,并在main函数中调用此函数,不要调用系统提供的strcat函数。#includeint main()void c(char st1,char st2);char s1100,s2100;gets(s1);gets(s2);c(s1,s2); puts(s1);return 0;void c(char st1,char st2)int i=0,k=0;while(st1+i);while(st1i+=st2k+);9. 编写一个函数,比较两个字符串的大小,并在main函数中调用此函数,不要调用strcmp函数。#includeint main()char a100,b100; void fun(char a,char b);gets(a); gets(b);fun(a,b);return 0; void fun(char a,char b) for(int i=0;i+) if(aibi) puts(a);break; else if(aibi) puts(b);break; else continue; 10. 编写一个函数,实现在一个升序排列的整型数组中插入一个整数的功能, 并在main函数中调用此函数,输入数据和最后输出都在主函数中实现。#includeint a11=1,3,5,7,14,23,45,87,155,231;int main()int c,i;void fun(int a,int c);printf(input an integer:); scanf(%d,&c);fun(a,c); for(i=0;ia9)a10=t;elsefor(i=0;i11;i+)if(ti;j-)aj=aj-1;ai=t;11. 写一个判断素数的函数,在主函数输入一个整数,是素数时输出yes,否则输出no,结果要求在主函数中输出。#includeint main()int a;int is_prime(int);scanf(%d,&a);if(is_prime(a)=0)printf(yesn);elseprintf(non);return 0;int is_prime(int a)int j,flag=1; for(j=2;j=a/2)flag=0;return flag;12. 编写一个函数,将一个字符串中的原音字母赋值到另一个字符串中,并在main函数中调用此函数,输入数据和最后输出都在主函数中实现。#includechar a50,b50=0;int main()void fun(char a,char b);gets(a);fun(a,b);puts(b);return 0; void fun(char a,char b)int i,j;for(i=0,j=0;ai!=0;i+)if(ai=a|ai=A|ai=e|ai=E|ai=i|ai=I|ai=o|ai=O|ai=u|ai=U)bj+=ai;13. 建立动态数组,输入5个学生的成绩,编写函数检查其中有无低于60分的学生成绩,要求输入和输出功能在主函数中完成。#include#include int main()void check(int *); int *p,i; p1=(int *)malloc(5*sizeof(int); for(i=0;i5;i+)scanf(%d,p+i); check(p1); return 0; void check(int *p) int i;printf(They are fail:);for(i=0;i5;i+)if(*(p+i)60)printf(%d ,pi); puts();14. 有一个一维数组score,内放10个学生成绩,用一个函数求平均成绩,并将10个成绩中不及格(小于60)的成绩和该成绩在数组中的序号输出。#includeint main()void ave(int a10);int a10,i;for(i=0;i10;i+)scanf(%d,&ai);ave(a);return 0;void ave(int a10)int i,m=0;for(i=0;i10;i+)m=m+ai;if(ai60)printf(%d %dn,ai,i);printf(%dn,m/10);15. 编程实现:从键盘输入两个字符串,统计第二个字符串在第一个字符串中出现的次数,在主函数中调用统计函数并输出结果。#includeint main()int a10,i,j,t,*p;for(i=0;i10;i+)scanf(%d,&ai);p=a;for(i=0;i10;i+)for(j=0;j*(p+j+1)t=*(p+j); *(p+j)=*(p+j+1);*(p+j+1)=t;for(i=0;i10;i+)printf(%d ,*(p+i);puts();return 0;16 编写一程序,实现从键盘接收一个字符串,然后删除其中的空格后并输出。如:输入“I am a student!”,输出“Iamastudent!”,要求用指针实现。#include#includeint main()char a50,*p;int l,i;printf(input string a:);gets(a);p=a;l=strlen(a);for(l;l0;l-)if(*(p+l)= )for(i=l;*(p+i)!=0;i+)*(p+i)=*(p+i+1);puts(p);return 0;17. 用冒泡法实现对10个整数按从大到小的顺序排序输出(要求用指针实现)。#includeint main()int a10,i,j,t,*p=a;for(i=0;i10;i+)scanf(%d,p+i);for(i=0;i10;i+)for(j=0;j*(p+j+1)t=*(p+j); *(p+j)=*(p+j+1);*(p+j+1)=t;for(i=0;i10;i+)printf(%d ,*(p+i);puts();return 0;18. 用选择法实现对10个整数按从小到大的顺序排序输出(要求用指针实现)。#includeint main()int a10,i,j,t,*p=a;for(i=0;i10;i+)scanf(%d,&ai);for(i=0;i10;i+)for(j=i+1;j*(p+j)t=*(p+i); *(p+i)=*(p+j);*(p+j)=t;for(i=0;i10;i+)printf(%d ,*(p+i);puts();return 0;19. 编写一个函数实现字符串复制功能,不能使用strcpy函数,并在main函数中调用,输入字符串和输出赋值完后字符串的结果都在主函数中实现。(要求用指针作为函数参数)#includeint main()char a100,b20,*p,*q;void copy_string(char *,char *);gets(b);p=a;q=b;copy_string(p,q);puts(p);return 0;void copy_string(char *p,char *q)while(*p+=*q+);20. 写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。(要求用指针实现)#includeint main()char a100,*p=a;int fun(char *); gets(a);printf(%dn,fun(a);return 0;int fun(char *p)int k=0;while(*p+)k+;return k;21. 输入一个字符串,内有数字和非数字字符,例如:“A123x456 17960? 302tab5876”,将其中连续的数字作为一个整数,依次存在到一数组a中。例如,123放在a0,456放在a1统计共有多少个整数,并输出这些数。(要求用指针实现)#includechar a100;int main()void fun(char *);char *p=a;gets(p);fun(p);return 0; void fun(char *p)int num100,s,k,j=0,i=0;s=0;while(*(p+i)k=0;while(*(p+i)=0&*(p+i)=9)s*=10;s+=*(p+i)-48;i+;k=1;if(k)numj+=s;s=0;elsei+;printf(%dn,j);for(i=0;ij;i+)printf(%d ,numi);puts();#include#includeint main()char a50,*p;int b50,c50=0,k,j,i;gets(a);p=a;k=0; for(i=0;*(p+i)!=0;i+)if(*(p+i)=0&*(p+i)=0&*(p+i)=0&*(p+i)=0&*(p+i)=9)cn=cn+(int)(*(p+i)-48)*pow(10,(bk-)-1);i+; k+;printf(%d ,cn+);puts();return 0;22. 有一篇文章,共有4行文章,每行有60个字符。要求分别统计出其中英文大写字符、小写字母、数字、空格以及其他字符的个数。(要求用指针实现)#includeint main()void count(char (*p)60);char stir460;printf(input 4 string:n); for(int i=0;i4;i+)gets(stiri);count(stir);return 0;void count(char (*p)60) int l=0,L=0,digit=0,space=0,oth=0;int i,j; for(i=0;i=a)&(*(*(p+i)+j)=z)l+;else if(*(*(p+i)+j)=A&(*(*(p+i)+j)=0&*(*(p+i)+j)=9)digit+;else if(*(*(p+i)+j)=32) space+;else oth+;printf(capital letter:%dnlower letter:%dndigit:%dnspace:%dnothers:%dn,L,l,digit,space,oth);23. 编程实现从键盘输入任意十个字符串,找出并显示最长的那个字符串。(要求用指针知识实现)#include#includeint main()char max50,b50;char *p=max,*p1=b;gets(max);for(int i=0;i9;i+)gets(p1);if(strlen(p)strlen(p1)p1=p;strcpy(max,p1); puts();puts(max);return 0;24. 利用函数实现如下功能:从键盘输入任意个正整数,求出它的偶数因子,并按从小到大的顺序放在pp所指的数组中,这些因子的个数通过形参n返回。(自定义函数void fun (int x, int * pp, int *n) )。#includeint main()void fun (int x,int *pp, int *n);int x,*pp=anta100;scanf(%d,&x);fun(x,pp,&n);return 0;void fun (int x,int *pp, int *n)int i,j=0,t;for(i=2;ix;i+)if(axis=0&i%2=0)*(pap+)=i;*n=j;printf(%dn,*n);25. 编写一个函数,实现求出一个2维数组中的鞍点,并在main函数中调用此函数,2维数组中数据输入和鞍点数据输出都在主函数中实现。(鞍点是指某个数在该行上最大,同时在该列上最小)#includeint main()int an(int a45);int a45,i,j;for(i=0;i4;i+)for(j=0;j5;j+)scanf(%d,&aij);printf(%dn,an(a);return 0;int an(int a45) int i,j,m,n,b,max,k,f;for(i=0;i4;i+)max=ai0;for(j=1;jmax)max=aij;m=j;f=1;for(k=0;kakm)f=0;if(f)return(aim);break;26. 输入3个学生4门课的成绩,分别用函数实现如下功能: (1) 计算每个学生平均分;(2) 计算每门课的平均分; (3) 找出12个分数中最高分所对应的学生和课程。#includeint score34;int a_stu3,acorn4; int race;int main()int i,j;void avers();void aver_cour(); void highest();printf(no. cour1 cour2 cour3 cour4n);for(i=0;i3;i+)printf(No %d:,i+1);for(j=0;j4;j+)scanf(%d,&scoreij);avers();aver_cour();highest();return 0;void avers()int s; for(int i=0;i3;i+)for(int j=0,s=0;j4;j+)s+=scoreij;a_stui=s/4.0;printf(average of student:); /输出每个学生的平均成绩 for(int j=0;j3;j+) printf(%2d ,a_stuj);void aver_cour() /计算4门课程平均成绩的函数int i,j;float s;printf(average of soure :);for(j=0;j4;j+)s=0;for(i=0;i3;i+)s=s+scoreij;acornj=s/(float)3;printf(%2d ,acornj);void highest() int high=score00;int i,j,r=1,c=1;for(i=0;i3;i+)for(j=0;jhigh)high=scoreij;r=i+1;c=j+1; printf(nhighest :%d NO.%d course %2dn,high,r,c);27. 用一个函数实现将一行字符串中的最长的单词输出。此行字符串从主函数传递给该函数。#includechar b50;int main()char a50;void fun(char a);gets(a);fun(a);return 0; void fun(char a) int i,j,max=0,k,n,t;for(i=0;ai!=0;i+)j=0;n=i;while(an=a&an=A&an=Z)j+; n+;if(maxj)max=j;k=i;for(t=k;tk+max;t+)printf(%c,at);printf(n); 28. 有3个学生,各学4门课程,输出总平均分数以及第n个学生的所有成绩。(要求定义两个函数分别实现上述功能,用指针作为函数参数)#includeint main()void average(int *);void funny(int (*n)4);int score34=98,78,87,86,85,87,76,45,93,95,67,87;average(*score);funny(score);return 0;void average(int *p)int sum=0;for(int i=0;i12;i+)sum+=*(p+i);printf(average of all scores: %dn,sum/12);void funny(int (*n)4)int k;printf(The score of No.);scanf(%d,&k);k=k-1;for(int j=0;j4;j+)printf(%d ,*(*(nuke)+j);puts();29. 有3个学生,每个学生有4门课程的成绩,要求在用户输入学生学号以后,能输出该学生的全部成绩。(用指针函数知识实现)#includeint main()int score34=98,78,87,86,85,87,76,45,93,95,67,87;void funny(int (*n)4,int);int k;printf(The score of No.);scanf(%d,&k);funny(score,k-1);return 0;void funny(int (*n)4,int k)for(int j=0;j4;j+)printf(%d ,*(*(nuke)+j);puts();30. 定义一个结构体变量(包括年、月、日)。计算当天是本年中的第几天,注意闰年问题。#includestructint year;int month;int day;date;int 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+=1;printf(%d/%d is the %ditch day in %d.n,date.month,date.day,days,date.year); return 0;31. 设计候选人得票统计程序,要求有4个侯选人(分别是Zhang 、Wang 、Li、 Zhao),选民每次输入一个被选人的姓名,最后统计出各人的得票结果。#include#includestruct Personchar name20;int count;leader4=Zhang,0,Wang,0,Li,0,Zhao,0;int main()int i,j;char leader_name20;for(i=1;i=10;i+)scanf(%s,leader_name); for(j=0;j3;j+) if(strcmp(leader_name,)=0) leaderj.count+;printf(nResult:n);for(i=0;i3;i+)printf(%5s:%dn,,leaderi.count);return 0;32. 定义一个包括学号、姓名、成绩的学生结构体,要求实现输入3个学生信息的输入后,按照成绩的高低顺序输出各学生的信息。#include#define N 3struct Studentint num;char name20;float score;int main()struct Student studN;struct Student temp;int i,j;printf(请输入三个学生的信息:学号、姓名、成绩:n);for(i=0;iN;i+)scanf(%d%s%f,&stui.num,,&stui.score);printf(The order is :n);for(i=0;iN;i+)for(j=i+1;jstudi.score) temp=studi;studi=studj;studj=temp;for(i=0;iN;i+)printf(%6d %8s %6.2fn,stui.num,si.score);return 0;33. 有3个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入3个学生数据,要求输出平均成绩最高分的学生的信息(包括学号、姓名、3门课程成绩、平均分数)(用结构体知识)。#include#define N 3struct Studentint num;char name20;float score3;float aver;int main()void input(struct Student stud);struct Student max(struct Student stud);void print(struct Student stud);struct Student studN,*p=stud;input(p);print(max(p);return 0;void input(struct Student stud)int i;printf(请输入各个学生的信息:学号、姓名、三门课成绩:n);for(i=0;iN;i+)scanf(%d%s%f%f%f,&stui.num,,&stui.score0,&stui.score1,&stui.score2);studi.aver=(studi.score0+studi.score1+studi.score2)/3;struct Student max(struct Student stud)int i,m=0;for(i=0;istudm.aver)m=i;return studm;void print(struct Student stud)printf(n成绩最高的学生是:n);printf(学号:%dn姓名:%sn三门课成绩:%5.1f,%5.1f,%5.1fn平均成绩:%6.2fn,stu.num,,stu.score0,stu.score1,stu.score2,stu.aver);34. 建立一个链表,每个结点包括:学号、姓名、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。#include#include#define LEN sizeof(struct student)struct studentchar num6;char name8;char sex2;int age;struct student *next;stud10;int main()struct student *p,*pt,*head;int i,length,iage,flag=1;int find=0;while(flag=1)printf(input length of list10:);scanf(%d,&length);if(length10)flag=0;for(i=0;inext=p;pt=p;printf(NO.:);scanf(%s,p-num);printf(name:);scanf(%s,p-name);printf(sex:);scanf(%s,p-sex);printf(age:);scanf(%d,&p-age);p-next=NULL;p=head;printf(n MO.name sex agen);while(p!=NULL)printf(%4s%8s%6s%6dn,p-mump-name

温馨提示

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

评论

0/150

提交评论