高级语言程序设计模拟试题及参考答案_第1页
高级语言程序设计模拟试题及参考答案_第2页
高级语言程序设计模拟试题及参考答案_第3页
高级语言程序设计模拟试题及参考答案_第4页
高级语言程序设计模拟试题及参考答案_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、高级语言程序设计模拟试题及参考答案1. w是一个大于10的无符号整数,若w是n(n=2)位的整数,函数求出w的低n-1位的数作为函数值返回。如输入790404,输出为90404。#i nclude unsigned fun( unsigned w)int j=1;unsigned sum=0;while ( w!=0) | if ( w10) break;sum=sum+w%10*j;j=j*10;w=w/10;return sum;int main()unsigned x;pri ntf( en ter a un sig ned in teger n umber: );scanf( %u,&

2、x);pri ntf( the origi nal data is :%dn,x);if (x10) printf( data error! );elseprintf( the result :%unfun (x);|printf( n);return 0;2 .完成decrypt函数,实现解密功能:将任意密文实现解密输出。加密规则:字符串中所有小写英文字母循环加密。如a到b, b到c,z到a。如输入 az ibwf b mjuumf bqqmf!,输出为:zy have a little apple!#i nclude #in clude void decrypt( char * s)whi

3、le (* s)if (* s=a & *s=z)if (* s=a ) * s=z;else*s=*s-1;s+;int main()char t180,ch;gets(tl); |pr intf( nthe orig inal data is :%s,t1);decrypt(tl);pri ntf( nthe resulted data is :%s,;printf( n);return 0;3. 用选择法实现对10个整数按从大到小的顺序排序输出(要求用指针实现)。#in cludeint mai n()int a10,i,j;void sort(i nt *);for(i=0;i10;i

4、+)scan f(%d, &ai);printf(nthe original data is :);for(i=0;i10;i+) pri ntf(%d ,ai);sort(a);prin tf(nthe result data is :);for(i=0;i10;i+)prin tf(%d ,ai);puts(”);return 0;void sort1(i nt *p)int i,j,t;for(i=0;i9;i+)for(j=i+1;j10;j+)if(*(p+i)*(p+j)t=*(p+i);*(p+i)=*(p+j);*(p+j)=t;4. 编写函数,使字符串中尾部的*号不得多于n个

5、;若多于n个,则删除多于的*号;若少于或等于n个,什么也不做。例如:字符串内容为*as*BHH*G*, 若n值为4,删除后,字符串内容应该为: #include *as*bhh*g,若n值为9,则为*as*bhh*g*void fun(char *a,int n)char *t=a;int m=0;while (*t) t+;t-;while (*t=*)t -;m+;if (mn) *(t+n+1)=0;void main()char s81;int n; printf(Enter a string:n); gets(s);printf(nenter n:); scanf(%d,&n); f

6、un(s,n); printf(the string after deleted:n); puts(s);printf(n);6. 用冒泡法实现对 10个整数按从小到大的顺序排序输出(要求用指针实现) #includeint main()int a10,i,j; void sort(int *); for(i=0;i10;i+)scanf(%d,&ai); printf(nthe original data is :); for(i=0;i10;i+) printf(%d ,ai); sort(a);printf(nthe result data is :); for(i=0;i10;i+)

7、printf(%d ,ai); puts();return 0;void sort(int *p) int i,j,t;for(i=0;i9;i+)for(j=0;j9 -i;j+)if(*(p+j)*(p+j+1)t=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=t;7.有一个数组 int AnSize,要求写一个函数:void myfunc (int p, int nSize);将 A 中的 0 都移至数组末尾,将非 0 的移至开始(保持原来的顺序不变) 。例如:A 原来是:1,0, 3, 4, 0,-3, 5 经过 myfunc 处理后为:1,3, 4,-3, 5, 0

8、, 0#include void myfunc(int p,int nsize)int i,tt10=0,j=0;for(i=0;insize;i+)if (pi!=0) ttj+=pi;for(i=0;i10;i+)pi=tti;int main()int st10=12,0,0,54,0,0,0,23,24,68,i;myfunc(st,10);for(i=0;i10;i+)printf(%dn,sti);return 0;9. 从键盘输入 10 个学生的信息(包括姓名,成绩) ,存到磁盘文件上。然后再从磁盘文件 上读取第 2,4,6,8,10共 5个学生数据输入计算机,并在屏幕上显示出来

9、。#include#include#define N 10struct Studentchar name10;int score;studN;void save()FILE *fp;int i;if(fp=fopen(d:file4.dat,w)=NULL)printf(cannot open filen); return;/*fp=fope n( d:file4.dat,w);*/for(i=0;iN;i+)if(fwrite( &studi,sizeof(struct Stude nt),1,fp)!=1)prin tf(file write error n);/fwrite(&studi

10、,sizeof(struct Stude nt),1,fp);fclose(fp);void read()FILE *fp=fope n(d:file4.dat,r);for(int i=1;iN;i+=2)fseek(fp,i*sizeof(struct Stude nt),0);fread( &studi,sizeof(struct Stude nt),1,fp);printf(读取的数据为:%s %dn,studi. name,studi.score);fclose(fp);int mai n()prin tf(please en ter data of stude nt:n);for(

11、int i=0;iN;i+)/ scanf(” %s,%d,,&studi.score);printf(n 姓名:”);seanf( %s,);printf(n 成绩:);scanf(%d,&studi.score);save();read();return 0;10.从键盘上读入5个字符串,对它们按字母大小的降序排序,然后把排好序的字符串送到 磁盘文件中保存,文件把保存到 d盘根目录下,完成 write函数。#include #include #include void write( char (* st )20)int i,j;char t20;FI

12、LE *fp1;for (i=0;i4;i+)|for (j=0;j5-i-1;j+)if(strcmp( st j, st j+1)0)strcpy(t, st j);strcpy( st j, st j+1);strcpy( st j+1,t);fp1=fope n(d:file.txt, w);for (i=0;i5;i+)fputs( st i,fp1);fputs( n ,fp1);fclose(fpl);void output()FILE *fp2;char buf30;if (fp2=fopen( d:file.txt , r )= NULL prin tf( ca nt ope

13、 n filen);exit(O);while (fgets(buf,20,fp2)printf( %s,buf);fclose(fp2);int main()char a520;int i;pr intf( En ter three stri ngs: n);for (i=0;i5;i+)gets(ai);write(a);output();return 0;11有一个文件,存放了一批学生信息(姓名,学号,成绩) ,完成函数ave,求学生的平均 成绩。#in clude#in clude#defi ne N 5struct Stude ntchar n ame10;long num;int

14、score; void save()FILE *fp;int i; struct Student st;if(fp=fopen(d:file4.txt,w)=NULL) printf(cannot open filen); return; for(i=0;iN;i+)姓名 学号 成绩);scanf( %s,););scanf(%ld,&st.num); );scanf(%d,&st.score);printf(n printf(n printf(nfwrite(&st,sizeof(struct Student),1,fp); fclose(fp);float ave()FILE

15、 *fp;int i=0; float sum=0; struct Student st; fp=fopen(d:file4.txt,r); fread(&st,sizeof(struct Student),1,fp); while (!feof(fp)sum=sum+st.score; i+;fread(&st,sizeof(struct Student),1,fp); fclose(fp); return sum/i; void read()FILE *fp; int i; struct Student st;if (fp=fopen(d:file4.txt,r)=NULL) printf

16、(cannot open filen); return;for(i=0;iN;i+)fread(&st,sizeof(struct Student),1,fp);printf( 读取的数据为: %s %ld %dn,,st.num,st.score);fclose(fp);int main()printf(please enter data of student:n);save();read();float s;s=ave();printf( 平均成绩为: %.2fn,s);return 0;14. 编写递归函数,在第一行打印输出1 个 1,在第二行输出 2 个 2,。,在第 n

17、 行输出 n个 n 。#include void print(int n)int i;if (n!=0)print(n-1);for(i=1;i=n;i+)printf(%d,n);printf(n);int main()int x;scanf(%d,&x);print(x);return 0;15. 利用递归法求一批数据的最大值。#include int maxint(int a,int n)int max;if (n=1) max=a0;else max=maxint(a+1,n-1);return (a0max?a0:max);void main()int a=1,2,3,15,5,20

18、,7,8,45,10;printf(%d,maxint(a,10);16. 编写函数,统计一批成绩中各分数段的人数。#include void myfunc(int p,int nsize,int tt)int i;for(i=0;i0&pi=60&pi=70&pi=80&pi=90&pi=100) tt4+;int main()intst30=12,65,78,54,65,78,89,23,24,68,77,88,99,100,65,79,60,80,70,77,88,90,95,96,91,85,69,76,7 4,39,i,tt5=0;myfunc(st,30,tt);for(i=0;i

19、5;i+)printf(%dn,tti);return 0;17. 编写函数,将字符串中下标为奇数的字符按 ASCII 码升序排列,并将排序后下标为奇数 的字符在主函数中输出。如:原始字符串为 baawrskjghzlicda, 调用函数后输出: aachjlsw 。#include void fun(char st,char tt)int i,j=0,k;char ch;for(i=0;sti!=0;i+) / 把奇数位置上的所有字符取出来if (i%2!=0) ttj+=sti;ttj=0;/ 升序排列 for(i=0;ij -1;i+) for(k=i+1;kttk) ch=tti;tt

20、i=ttk;ttk=ch; int main() char st80,tt80; gets(st); printf(the original data is :n); puts(st); fun(st,tt); printf(the result data is :n); puts(tt); return 0;18. 输入 4个整数,找出其中最小的数。用函数的嵌套调用来处理。 #include int max2(int a,int b) return(ab?a:b);int max4(int a,int b,int c,int d)return max2(max2(max2(a,b),c),d

21、);int main()int a,b,c,d; scanf(%d%d%d%d,&a,&b,&c,&d); printf(max=%dn,max4(a,b,c,d); return 0;19. 将 s 所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符和非数字 字符串原有的先后次序。例如: def35adh3kjsdf7, 执行结果为 defadhkjsdf3537. #include void fun(char s)int i,j=0,k=0; char t180,t280;for(i=0;si!=0;i+)if (si=0&si=9) t2j=si;j+; else t1k+

22、=si;t2j=0;t1k=0; for(i=0;ik;i+) si=t1i;for(i=0;ij;i+)sk+i=t2i;int mai n()char s80=def35adh3kjsdf7;printf(nthe original string is:%sn,s);fun( s);prin tf(nthe result is :%sn,s); return 0;20. 利用递归方法求10个任意整数实数的平均值。如:输入1 2 3 4 5 6 7 8 9 10时,输出为5.50。#include float aver( int n);float a10;void main()int i;f

23、or (i=0;i10;i+)scanf( %f,&ai);printf( %.2fn ,aver(10);float aver( int n)float sum; |if (n=1)sum=a0;else sum=(aver( n-1)*( n-1)+a n-1)/ n;return sum;21. 编写函数:m个人的成绩放在score数组中,编写函数fun,将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指数组中如score 中的成绩为:10,20,30,40,50,60,70,80,90 时,函数返回的人数应是4, below中的数据应为10、20、30、40。*/#

24、i nclude #in clude int fun (i nt score,i nt m,i nt below)int i,j=0;float aver,sum=0;for(i=0;im;i+)sum=sum+scorei; aver=sum/m; for(i=0;iscorei)belowj+=scorei;return j;void main()int i,n,below9;int score9=10,20,30,40,50,60,70,80,90;n=fun(score,9,below);printf(nbelow the average score are:);for(i=0;in;

25、i+)printf(%d ,belowi);printf(n);22. 编写函数:移动字符串中的内容,移动规则:把 1 到第 m 个字符,平移到字符串的最后,把第 m+1 到最后的字符移到字符串的前部。如输入字符串为: zhoubiaozhun , m 输入值为 4,则输出为 biaozhunzhou 。#include #include #define N 80void fun1(char *w)int i;char t;t=w0;for(i=0;i(int)strlen(w)-1;i+)wi=wi+1; wstrlen(w)-1=t;void fun(char *w,int m)int i

26、;for(i=1;i=m;i+)fun1(w);void main()char aN;int m;gets(a);printf(the original string:n);puts(a);prin tf(nnen ter m:);scan f(%d,&m);fun (a,m);prin tf(n the stri ng after movin g:n);puts(a);prin tf(n ”);24. 24.编写函数:将输入的任意三个字符串合并,按顺序合并为一个新的字符串。如:输入zhou, biao, zhun三个字符串后,合并后为:zhoubiaozhun#i nclude #in cl

27、ude #defi ne M3 |#defi ne N 20void fun( char a M【N, char * b)int i;*b=0; |for (i=0;i Mi+)strcat( b, ai);void main()char w M N,a100;int i;for (i=0;i3;i+)printf( n 输入 %ds 字符串:,i+1);gets(wi);pri ntf(the stri ng:n);for (i=0;i Mi+) puts(wi);printf( n);fun( w,a);printf(合并后的字符串为:n);pri ntf(%s,a);printf( n)

28、;25. 编写一个函数,将一个字符串中的非原音字母赋值到另一个字符串中,并在main函数中调用此函数,输入数据和最后输出都在主函数中实现。#include 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= T | ai= o | ai= O| ai= u | ai= U)bj+= ai;int main() char a80,b80=0;gets(a);fun( a,b);puts(b); |return 0;26. 编写函数:删除

29、一个字符串中的所有空格。#i nclude #in clude #defi ne MAX 100void fun( char *str)char *t=str;for(;*t!=0;t+)if (*t!=)*(str+)=*t;*str=0;void mai n()char str81;prin tf(i nput a stri ng:);gets(str);puts(str);fun( str);printf(* str:%sn,str);prin tf(n);29. 一个班不超过40个人,人员信息有成绩和学号组成,班级人数从键盘输入,完成函数,实现求出班级中最高分和学号,将学生信息按照成绩

30、从高到低输出。#i nclude #defi ne ARR_SIZE40structstude ntint st;long num;int findmax( struct student score , int n, long * pmaxnumint i,maxscore,k;maxscore=score 0.st;for (i=1;in;i+)if (maxscorev score i.st) maxscore= score i.st;k=i;*pmaxnumscore k.num;retur n maxscore;void sortscore( struct student * scor

31、e , int n)int i,j;structstudent tempi;for (i=0;in-1;i+)for (j=i+1;j n ;j+)if ( score i.st score j.st)temp1=score i; score i= score j; score j=temp1;int main()long maxnum;structstudent score ARR_SIZEint maxscore,n,i;pri ntf( Please en ter total n umber: );scanf( %d, &n);/*从键盘输入学生人数n*/pri ntf( Please

32、en ter the n umber and score: n);for (i=0; in; i+)scanf( %ld%d, &scorei.num,&scorei.st);maxscore = findmax(score,n, &maxnum);/* 计算最高分及学生学号 */pr intf(maxscore = %d, maxnum = %ldn , maxscore, maxn um);sortscore(score, n);pr intf(The sort after data is :n);for (i=0;in;i+)printf(%ld,%dn ,scorei.num,scor

33、ei.st);return 0;30.完成sort函数,实现:按照成绩从高到低的顺序输出各学生的信息。#include #defi ne N 5structstude ntint num;char n ame20;float score;;void sort( structstudent stu )int i,j;struct student temp;for (i=0;i N-1;i+)for (j=i+1;j stu j.score) temp= stu i;stu i= stu j;stu j=temp;int main()structstudent stu N;int i;printf

34、(请输入所有学生的信息:学号、姓名、成绩:n);for (i=0;i N;i+)scanf( %d%s%f&stui.num,,&stui.score);pr in tf( The order is :n);sort(stu);for (i=0;i N;i+)printf( %6d %8s %6.2fn ,stui.num,,stui.score);return 0;32.学生记录由学号和成绩组成,N名学生的数据已经在主函数中放入结构体数组,编写函数,把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参回,平均分通过函数值返回。#i ncl

35、ude#defi ne N 8 |typedef struct char n um10;double s;STRECdouble fun( STREC* a, STREC b, int * n)int i,j=0;double sum=0,ave;for (i=0;i N;i+)sum=sumai.s;ave=sum/Nfor (i=0;i N;i+)if ( ai.save) bj+= ai;*n=j;return ave;void main()STRECs N= gao05 ,85, gao03 ,76, gao02 ,69, gao04 ,85, gao01 ,91, gao07 ,72

36、, g ao08,64, gao06 ,87;STREC N,t;int i,j,n;double ave;ave=fu n( s,h,&n);pr intf( the %d stude nt data which is lower tha n %7.3f: n,n, ave);for (i=0;in;i+)printf( %s %4.1fn ,hi.num,hi.s);printf( n);33将字符串中下标位置为奇数的字符按照ascII从小到大排序输出。#i nclude void fun( char s, char p) |int i,j,n,t;n=0;for (i=0; si!=0

37、;i+)n+;for (i=1;in-2;i=i+2)for (j=i+2;j sj)t= si;si= sj;sj=t;for (i=1,j=0;in;i=i+2,j+)pj= si; |pj= 0;int main()char s80= baawrskjghzlicda ,p80;pri ntf( n the origia nl stri ng is:%sn,s);fun( s,p);pr intf( nthe result is :%sn ,p);return 0;34. 有4个学生,每个学生有5门课程的成绩,输入任意学号,输出该学生的全部成绩(完成fun函数)。#include int int i,j=0;for (i=2;i= a &an= A &anj)max=j;k=i;i=n;if ( ai= 0 ) break;/max表示当前最短的单词长度,k表示当前最短的单词的起始位置/将最

温馨提示

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

评论

0/150

提交评论