




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高级语言程序设计模拟试题及参考答案1 . w是一个大于10的无符号整数,若 w是n(n>=2)位的整数,函数求出 w的低n-1位的 数作为函数值返回。如输入790404,输出为90404。#include <stdio.h>unsigned fun( unsigned wint j=1;unsigned sum=0;while ( w!=0) | if ( w<10) break;sum=sum+w%10*j;j=j*10; w=w/10; return sum; int main() unsigned x;printf( "enter a unsigned
2、integer number:" );scanf( "%u",&x);printf( "the original data is :%dn" ,x);if (x<10) printf( "data error!" ); elseprintf( "the result :%un",fun(x); |printf( "n");return 0;2 .完成decrypt函数,实现解密功能:将任意密文实现解密输出。加密规则:字符串中所有 小写英文字母循环加密。如 a到b, b到c
3、,z到a。如输入 az ibwf b mjuumf bqqmf!, 输出为:zy have a little apple!#include <stdio.h>#include <string.h> void decrypt( char * s) while (* s) if (* s>='a' && *s<='z') if (* s='a' ) * s='z' else*s=*s-1;s+;int main()char t180,ch;gets(tl);printf( "
4、;nthe original data is :%s",t1);decrypt(tl);printf( "nthe resulted data is :%s",t1);printf( "n");return 0;3 .用选择法实现对10个整数按从大到小的顺序排序输出(要求用指针实现)。#include<stdio.h>int main()int a10,i,j;void sort(int *);for(i=0;i<10;i+)scanf("%d”,&ai);printf("nthe original
5、 data is :");for(i=0;i<10;i+) printf("%d ",ai);sort(a);printf("nthe result data is :");for(i=0;i<10;i+)printf("%d ",ai);puts("");return 0;void sort1(int *p)int i,j,t;for(i=0;i<9;i+)for(j=i+1;j<10;j+)if(*(p+i)<*(p+j)t=*(p+i);*(p+i)=*(p+j);*(
6、p+j)=t;4 .编写函数,使字符串中尾部的*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,什么也不做。例如:字符串内容为 *as*bhh*g*若n值为4,删除后,字符串内容应该为:*AS*BHH*G*,若 n 值为 9,贝u为*as*bhh*g*#include <stdio.h>void fun(char *a,int n)char *t=a;int m=0;while (*t) t+;t-;while (*t='*')t-;m+;if (m>n) *(t+n+1)='0'void main()char s81;int
7、n;printf("Enter a string:n");gets(s);printf("nenter n:");scanf("%d",&n);fun(s,n);printf("the string after deleted:n");puts(s);printf("n");6. 用冒泡法实现对 10 个整数按从小到大的顺序排序输出(要求用指针实现)#include<stdio.h>int main()int a10,i,j;void sort(int *);for(i=0;
8、i<10;i+)scanf("%d",&ai);printf("nthe original data is :");for(i=0;i<10;i+) printf("%d ",ai);sort(a);printf("nthe result data is :");for(i=0;i<10;i+)printf("%d ",ai);puts("");return 0;void sort(int *p)int i,j,t;for(i=0;i<9;i+
9、)for(j=0;j<9 -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, 0#include <stdio.h>void myfunc(int p,int nsize) int i,tt10=
10、0,j=0;for(i=0;i<nsize;i+)if (pi!=0) ttj+=pi;for(i=0;i<10;i+) pi=tti; int main()int st10=12,0,0,54,0,0,0,23,24,68,i;myfunc(st,10);for(i=0;i<10;i+)printf("%dn",sti);return 0;9. 从键盘输入 10 个学生的信息(包括姓名,成绩) ,存到磁盘文件上。然后再从磁盘文件 上读取第 2,4,6,8,10 共 5 个学生数据输入计算机,并在屏幕上显示出来。#include<stdio.h>
11、;#include<stdlib.h>#define N 10 struct 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=fopen("d:file4.dat","w");*/for(i=0;i<N;i+)if(fwrite(&studi,s
12、izeof(struct Student),1,fp)!=1) printf("file write errorn");/ fwrite(&studi,sizeof(struct Student),1,fp); fclose(fp);void read()FILE *fp=fopen("d:file4.dat","r");for(int i=1;i<N;i+=2)fseek(fp,i*sizeof(struct Student),。);fread(&studi,sizeof(struct Student),1,f
13、p);printf("读取的数据为:s %dn",,studi.score);fclose(fp);int main()printf("please enter data of student:n");for(int i=0;i<N;i+)/ scanf(" %s,%d",,&studi.score);printf("n 姓名:");scanf(" %s",);printf("n 成绩:");scanf
14、("%d",&studi.score); save();read();return 0;10.从键盘上读入5个字符串,对它们按字母大小的降序排序,然后把排好序的字符串送到 磁盘文件中保存,文件把保存到 d盘根目录下,完成 write函数。#include <stdio.h>#include <stdlib.h>#include <string.h>void write( char (* st )20)int i,j;char t20;FILE *fp1;for (i=0;i<4;i+)|for (j=0;j<5-i-1
15、;j+)if (strcmp( st j, stj+1)<0)strcpy(t, st j);strcpy( st j, st j+1);strcpy( st j+1,t);fp1=fopen( "d:file.txt" , "w");for (i=0;i<5;i+)|fputs( st i,fp1);fputs( "n" ,fp1);fclose(fpl);void output。FILE *fp2;char buf30;if (fp2=fopen( "d:file.txt" , "r&qu
16、ot; )= NULL printf( "can't open filen" );exit(0); |while (fgets(buf,20,fp2) printf( "%s",buf);fclose(fp2);int main()char a520;int i;printf( "Enter three strings:n" );for (i=0;i<5;i+) gets(ai);write(a);output();return 0;11有一个文件,存放了一批学生信息(姓名,学号,成绩) ,完成函数ave,求学生的平均
17、成绩。#include<stdio.h>#include<stdlib.h>#define N 5 struct Student char name10;long num;int 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;i<N;i+)printf("n姓名:");scan
18、f(" %s",);printf("n学号:");scanf("%ld",&st.num);printf("n成绩:");scanf("%d",&st.score);fwrite(&st,sizeof(struct Student),1,fp); fclose(fp);float ave()FILE *fp;int i=0;float sum=0;struct Student st;fp=fopen("d:file4.txt","
19、;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("cannot open filen"); retu
20、rn;for(i=0;i<N;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 个
21、1 ,在第二行输出 2 个 2, 。 。 。 ,在第 n 行输出 n 个 n。#include <stdio.h>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 <stdio.h>int maxint(int a,int
22、n)int max;if (n=1) max=a0;else max=maxint(a+1,n-1);return (a0>max?a0:max);void main()int a=1,2,3,15,5,20,7,8,45,10;printf("%d",maxint(a,10);16. 编写函数,统计一批成绩中各分数段的人数。#include <stdio.h>void myfunc(int p,int nsize,int tt)int i;for(i=0;i<nsize;i+)if (pi>0&&pi<60) tt0+;
23、elseif (pi>=60&&pi<70) tt1+;elseif (pi>=70&&pi<80) tt2+;elseif (pi>=80&&pi<90) tt3+;elseif (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
24、,tt);for(i=0;i<5;i+)printf("%dn",tti);return 0;17. 编写函数,将字符串中下标为奇数的字符按ASCII 码升序排列,并将排序后下标为奇数的字符在主函数中输出。如:原始字符串为baawrskjghzlicda, 调用函数后输出: aachjlsw 。#include <stdio.h>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
25、;/ 升序排列for(i=0;i<j -1;i+)for(k=i+1;k<j;k+)if (tti>ttk) ch=tti;tti=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<stdio.h>
26、;int max2(int a,int b)return(a<b?a:b);int max4(int a,int b,int c,int d)return max2(max2(max2(a,b),c),d);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 所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符和非数字字符串原有的先后次序。例如: def35a
27、dh3kjsdf7, 执行结果为 defadhkjsdf3537.#include <stdio.h>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+=si;t2j=0;t1k=0;for(i=0;i<k;i+) si=t1i;for(i=0;i<j;i+) sk+i=t2i; int main() char s80="def3
28、5adh3kjsdf7"printf("nthe original string is:%sn",s);fun(s);printf("nthe result is :%sn",s);return 0;20. 利用递归方法求10个任意整数实数的平均值。如:输入1 2 3 4 5 6 7 8 9 10时,输出为5.50。#include <stdio.h>float aver( int n);float a10;void main() int i;for (i=0;i<10;i+)scanf( "%f" ,&a
29、mp;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。*/#includ
30、e <stdio.h>#include <string.h>int fun(int score口,int m,int below) int i,j=0;float aver,sum=0;for(i=0;i<m;i+)sum=sum+scorei;aver=sum/m;for(i=0;i<m;i+)if (aver>scorei)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);print
31、f("nbelow the average score are:");for(i=0;i<n;i+)printf("%d ",belowi);printf("n");22. 编写函数:移动字符串中的内容,移动规则:把1 到第 m 个字符,平移到字符串的最后,把第 m+1 到最后的字符移到字符串的前部。如输入字符串为: zhoubiaozhun , m 输入值为4 ,则输出为biaozhunzhou 。#include <stdio.h>#include <string.h>#define N 80void
32、 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;for(i=1;i<=m;i+)fun1(w);void main()char aN;int m;gets(a);printf("the original string:n");puts(a);printf("nnenter m:");scanf("%d",&m);fun(a,m);prin
33、tf("n the string after moving:n");puts(a); printf("n");24 . 24.编写函数:将输入的任意三个字符串合并,按顺序合并为一个新的字符串。如:输入zhou, biao, zhun三个字符串后,合并后为:zhoubiaozhun#include <stdio.h>#include <string.h>#define M 3#define N 20void fun( char a M N, char * b)int i;*b=0; |for (i=0;i< Mi+) strc
34、at( b, ai);void main()char w M N,a100;int i;for (i=0;i<3;i+)printf( "n 输入 %d's 字符串:",i+1); gets(wi);printf( "the string:n" );for (i=0;i< Mi+) puts(wi);printf( "n");fun(w,a);printf("合并后的字符串为:n");printf( "%s",a);printf( "n");25 .编写一
35、个函数,将一个字符串中的非原音字母赋值到另一个字符串中,并在main函数中调用此函数,输入数据和最后输出都在主函数中实现。#include <stdio.h>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= &
36、#39;u' | ai= 'U')bj+= ai; int main() char a80,b80=0;gets(a); fun(a,b); puts(b); return 0;26 .编写函数:删除一个字符串中的所有空格。#include <stdio.h>#include <string.h>#define MAX 100 void fun(char *str) char *t=str;for(;*t!='0't+) if (*t!='') *(str+)=*t;*str=0;void main() char
37、str81; printf("input a string:"); gets(str);puts(str);fun(str);printf("* str:%sn",str);printf("n");29 . 一个班不超过40个人,人员信息有成绩和学号组成,班级人数从键盘输入,完成函数,实现求出班级中最高分和学号,将学生信息按照成绩从高到低输出。#include <stdio.h>#define ARR_SIZE40 struct studentint st; long num;int findmax( struct stu
38、dent score , int n, long * pmaxnumiint i,maxscore,k; maxscore=score 0.st;1 for (i=1;i< n;i+) if (maxscore< score i.st) maxscore= score i.st;k=i; *pmaxnumscore k.num; return maxscore; void sortscore( struct student * score , int n) int i,j; struct student tempi;1 for (i=0;i< n-1;i+) for (j=i
39、+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; struct student score ARR_SIZE int maxscore,n,i; printf( "Please enter total number:" ); scanf( "%d", &n);/*从键盘输入学生人数n*/printf( "Please enter the number a
40、nd score:n" ); for (i=0; i<n; i+)scanf( "%ld%d", &scorei.num,&scorei.st); maxscore = findmax(score,n, &maxnum); /* 计算最高分及学生学号 */ printf( "maxscore = %d, maxnum = %ldn" , maxscore, maxnum); sortscore(score,n);printf( "The sort after data is :n"); |for
41、 (i=0;i<n;i+) printf( "%ld,%dn" ,scorei.num,scorei.st); return 0;30 .完成sort函数,实现:按照成绩从高到低的顺序输出各学生的信息。#include <stdio.h>#define N 5 struct student int num; char name20;float score;;void sort( struct student stu 口)int i,j;struct student temp;for (i=0;i< N-1;i+)for (j=i+1;j<N;j
42、+)if (stu i.score> stu j.score) temp= stu i;stu i= stu j; stu j=temp;int main() struct student stu N;int i;printf("请输入所有学生的信息:学号、姓名、成绩:n");for (i=0;i< N;i+) scanf( "%d%s%f"&stui.num,,&stui.score);printf( "The order is :n");|sort(stu);for (i=0;i<
43、; N;i+)printf( "%6d %8s %6.2fn" ,stui.num,,stui.score); return 0;32.学生记录由学号和成绩组成,N名学生的数据已经在主函数中放入结构体数组,编写函数,把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n返回,平均分通过函数值返回。#include <stdio.h>#define N 8 |typedef struct char num10;double s;STRECdouble fun( STREC* a, STREC b, int * n)int i,j
44、=0;double sum=0,ave;for (i=0;i< N;i+) sum=sum+i.s;ave=sum/Nfor (i=0;i< N;i+) if ( ai.s<ave) bj+= ai;*n=j;return ave;void main()STRECs N= "gao05” ,85, "gao03” ,76, "gao02” ,69, "gao04” ,85, "gao01” ,91, "gao07” ,72, "g ao08”,64, "gao06" ,87;STRE(h
45、 N,t;int i,j,n;double ave;ave=fun(s,h,&n);printf( "the %d student data which is lower than %7.3f:n",n,ave);for (i=0;i<n;i+)printf( "%s %4.1fn" ,hi.num,hi.s); printf( "n");33 .将字符串中下标位置为奇数的字符按照ascII从小到大排序输出。#include <stdio.h>void fun( char s口,char p口)|int i,
46、j,n,t;n=0;for (i=0; si!= '0' ;i+) n+;for (i=1;i<n-2;i=i+2)|for (j=i+2;j<n;j=j+2)|if (si> sj) t= si; si= sj; sj=t;for (i=1,j=0;i<n;i=i+2,j+)pj= si; |pj= '0 ;int main()char s80= "baawrskjghzlicda" ,p80;printf( "nthe origianl string is:%sn",s);fun(s,p);printf
47、( "nthe result is :%sn",p);return 0;34 .有4个学生,每个学生有5门课程的成绩,输入任意学号,输出该学生的全部成绩(完成fun函数)。#include <stdio.h> int int i,j=0;for (i=2;i< x;i+)if (x%i=0&&i%2!=0) ppj+=i; n=j;while ( an>= 'a' &&an<= 'z' )|( an>= 'A' &&an<= 'Z') j+;n+;/j表示新单词长度,n表示新单词结束后下一个位置if (max>j) max=j; k=i; i=n;if ( ai= '0' ) break;/max表示当前最短的单词长度,k表示当前最短的单词的起始位置 /将最短的单词输出for (t=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 谷物磨制企业战略规划与市场定位策略考核试卷
- 药用提取设备与有效成分分析考核试卷
- 纺织面料鞋的废旧资源再利用技术考核试卷
- 纸张印刷与印后加工考核试卷
- 羽绒加工企业工艺优化与成本降低实践考核试卷
- 车辆信息安全与隐私保护技术考核试卷
- 传染病败血症诊疗与防控要点
- 宠物美容连锁店品牌加盟、技术培训与设备租赁合同
- 绿色环保住宅售后返租投资协议
- 婚前商标权权属争议调解及执行协议
- 计量器具周检计划表
- 老年人口腔功能的衰退与对策
- 《公路路基路面现场测试规程》(3450-2019)
- (完整版)建筑工程技术说专业、专业剖析
- A-Rose-For-Emily-William-Faulkner课文、作者、背景讲解-(课堂PPT)
- 内分泌科糖尿病“一病一品”
- 起重作业培训-指挥手势-旗语
- 机械原理课程设计摇摆式输送机设计说明书
- 山西河曲晋神磁窑沟煤业有限公司煤炭资源开发利用、地质环境保护与土地复垦方案
- 重型自卸车货箱与举升装置设计(含CAD图纸)
- 内蒙古煤矿竖井地质勘察施工技术
评论
0/150
提交评论