1、经典C语言编程41题1. 编程:从键盘输入10个整数,对其进行从小到大排序,将排序后的结果输出并保存到文件“DATA.DAT”中。#include void main()FILE *fp; int i,j,t,min,a10; if(fp=fopen(E:DATA1.DAT,w)=NULL) printf(cannot openn); exit(0); for(i=0;i10;i+) scanf(%d,&ai); for(i=0;i9;i+) min=i; for(j=i+1;jaj) min=j; t=amin;amin=ai;ai=t; for(i=0;i10;i+) printf(%5d
2、,ai); fprintf(fp,%5d,ai); printf(n); fprintf(fp,n); fclose(fp);2.设有10个学生的信息,包括学号、姓名和三门功课的成绩,试编写学生信息输入函数、学生信息输出函数,最后编写主函数,并在主函数中调用这些函数。 #include struct studentint num; char name10; int Computer; int Maths; int English;stu10;void input(struct student stu)int i;for(i=0;i10;i+)printf(num=);scanf(%d,&stu
3、i.num);printf(name=);scanf(%s,&stui.name);printf(Computer=);scanf(%d,&stui.Computer);printf(Maths=);scanf(%d,&stui.Maths);printf(English=);scanf(%d,&stui.English);printf(n);void print(struct student stu)int i;printf(The information of students is:n);printf(num name Computer Math Englishn);for(i=0;i1
4、0;i+)printf(%2d %8s %8d %8d %8dn,stui.num,stui.name,stui.Computer,stui.Maths,stui.English);void main()input(stu); print(stu);3.输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数,并将统计结果输出到磁盘文件“test”中保存。#include void main()FILE *fp; char c; int l=0,s=0,n=0,o=0; if(fp=fopen(E:test3,w)=NULL) printf(cannot openn); exit(0
5、); while(c=getchar()!=n) if(c=a&c=A&c=0&c=9) n+; else o+; printf(letters=%d,space=%d,number=%d,other=%dn,l,s,n,o); fprintf(fp,letters=%d,space=%d,number=%d,other=%dn,l,s,n,o); fclose(fp); 4.有4名学生,每个学生考4门课,要求:写2个函数:(1)返回值为总平均分的函数(2)返回值为最低分的函数。在main()函数中输入每个学生4门课的成绩,调用以上2个函数,输出总平均分和最低分。#include void m
6、ain()float average(int a4); int min(int a4); int i,j,score44; for(i=0;i4;i+) for(j=0;j4;j+) scanf(%d,&scoreij); average(score); min(score); printf(average=%5.2f,min=%5dn,average(score),min(score);float average(int a4)int i,j; int sum=0; for(i=0;i4;i+) for(j=0;j4;j+) sum+=aij; return(sum/16);int min(
7、int a4)int i,j; int min=a00; for(i=0;i4;i+) for(j=0;jaij) min=aij; return(min);5.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。要求:写3个函数:(1)输入10个数的函数,(2)交换处理的函数,(3)输出10个数的函数。在main()函数中调用以上3个函数。 #include void input(int a) int i; for(i=0;i10;i+) scanf(%d,&ai); void fun(int a)int i,j,max,min,t; for(i=0;i9;i+) ma
8、x=i; for(j=1;j10;j+) if(amaxaj) max=j; t=amax;amax=a9;a9=t; min=i; for(j=1;jaj) min=j; t=amin;amin=a0;a0=t; void output(int a)int i; for(i=0;i10;i+) printf(%d,ai); printf(n);void main()int num10; input(num); fun(num); output(num);7.有一数列,包含10个数,已按升序排好。现要求编一程序,从指定位置开始的n个数按逆序重新排列并输出新的完整数列(例:原数列:2,4,6,8
9、,10,12,14,16,18,20,若要求把从第4个数开始的5个数按逆序重新排列,则得到新数列为2,4,6,16,14,12,10,8,18,20)要求在主函数中输入10个数及指定位置m的值,并输出新的数列,在被调函数中从指定位置开始的n个数按逆序重新排列。 #include void main()void change(int *p,int n); int a10=2,4,6,8,10,12,14,16,18,20; int i; change(&a3,5); for(i=0;i10;i+) printf(%3d,ai); void change(int *p,int n) int i,t
10、,*p1,*p2; for(i=0;in/2;i+) p1=p+i; p2=p+n-1-i; t=*p1; *p1=*p2; *p2=t; 8.编写函数void sort(int a,int n),其功能是对a数组中前n个元素从小到大排序。要求:在main中输入a数组的10个元素;调用函数sort实现对a数组的排序;输出排序后的各元素。#include void main()void sort(int a,int n); int i,j,n,aa10; for(i=0;i10;i+) scanf(%d,&aai); scanf(%d,&n); sort(aa,n); for(i=0;i10;i
11、+) printf(%d,aai); printf(n);void sort(int a,int n) int i,j,t,min; for(i=0;in-1;i+) min=i; for(j=i+1;jaj) min=j; t=amin;amin=ai;ai=t; 9.编写一个函数void invert(int x ,int k,int j),其功能是:按逆序重新放置x数组中下标kj的元素。在main函数中从键盘输入x数组元素,调用invert函数输出结果。#include #define N 10void main()void invert(int x,int k,int j); int
12、xN,i; for(i=0;iN;i+) scanf(%d,xi); invert(x,2,8); for(i=0;iN;i+) printf(%d,xi); void invert(int x,int k,int j) int i,t; for(i=k;i(k+j)/2;i+) t=xk; xk=xj; xj=t; k+; j-; 10.有一个3*4的矩阵,找出每行中最大的元素并与第一列交换,输出原矩阵及处理后的矩阵并保存到文件“DATA.DAT”中。#include void main()FILE *fp; int i,j,t,lie,max,a34; if(fp=fopen(f:DATA
13、10.DAT,w)=NULL) printf(connot openn); exit(0); for(i=0;i3;i+) for(j=0;j4;j+) scanf(%d,&aij); for(i=0;i3;i+) max=ai0; for(j=0;j4;j+) if(maxaij) max=aij; lie=j; t=ailie;ailie=ai0;ai0=t; for(i=0;i3;i+) for(j=0;j4;j+) printf(%4d,aij); fprintf(fp,%4d,aij); printf(n); fprintf(fp,n); fclose(fp);11.函数void f
14、un(char s,char ch)的功能是:从字符串s中删除字符ch。要求:在main函数中输入字符串s及要删除的字符ch的值,调用fun函数,输出删除了字符ch后的字符串。例如:从键盘输入cabcdabcdabcxccc和c,输出的结果应该是abdabdabx。#include #include void main()void fun(char s,char ch); char str81,c; gets(str); scanf(%s,&c); fun(str,c); puts(str);void fun(char s,char ch)int i,j; for(i=j=0;si!=0;i+
15、) if(si!=ch) sj+=si; sj=0;12.编程:在N行M列的二维数组中选出最大值,输出最大值及所在的行下标和列下标并保存到文件“DATA.DAT”中。#include #define N 3#define M 4void main()FILE *fp; int i,j,max,aNM,hang,lie; if(fp=fopen(E:DATA12.DAT,w)=NULL) printf(cannot openn); exit(0); for(i=0;iN;i+) for(j=0;jM;j+) scanf(%d,&aij); max=a00; for(i=0;iN;i+) for(
16、j=0;jM;j+) if(maxaij) max=aij; hang=i;lie=j; printf(max=%dn,max); fprintf(fp,max=%dn,max); printf(hang=%d,lie=%dn,+hang,+lie); fprintf(fp,hang=%d,lie=%dn,+hang,+lie); fclose(fp); 13.函数int ispalin(char str)的功能是判断字符串str是否为回文,即顺读和逆读都一样的字符串,若是,返回1;否则返回0。要求:在main函数中从键盘输入字符串str,调用ispalin函数,输出判断结果。例如:输入adm
17、da,则输出admda:yes;输入abcdabc,则输出abcdabc:No。#include stdio.h#include string.hmain() int fun(char str); char str81; scanf(%s,str); if(fun(str) printf(%s yesn,str); else printf(%s non,str);int fun(char str)int i,j; j=strlen(str)-1; for(i=0;ij;i+,j-) if(stri!=strj) return(0); return(1);14.编写函数int prime(int
18、 n),功能为判断n是否为素数,若是,返回1;否则返回0。要求:在main函数中调用函数prime,将2100以内的所有素数存放到一维数组a中,输出a中的所有元素。#include#includevoid main() int prime(int n); int a50,i,k=0; for(i=2;i=100;i+) if(prime(i)=1) ak+=i; for(i=0;ik;i+) printf(%d ,ai);int prime(int n) int i,k=sqrt(n); for(i=2;ik) return 1; else return 0;15.函数int flag(int
19、 x0,int x1,int d)的功能是:找出x0至x1之间所有能被3整除的数存入d数组中,返回d数组中元素的个数。编写main函数,调用flag函数求出1550之间所有满足条件的整数。#include void main()int flag(int x0,int x1,int d); int n,i,a30; n=flag(15,50,a); printf(n=%dn,n); for(i=0;in;i+) printf(%4d,ai); printf(n); int flag(int x0,int x1,int d) int i,k=0; for(i=x0;i=x1;i+) if(i%3=
20、0) dk+=i; return(k); 16.编程:从键盘输入N个字符串,输出其中最长的字符串并保存到文件“DATA.DAT”中。#include #include #define N 10void main()FILE *fp; char aN80; int i,tN,max;if(fp=fopen(E:DATA16.DAT,w)=NULL) printf(cannot openn); exit(0); for(i=0;iN;i+) scanf(%s,&ai); for(i=0;iN;i+) ti=strlen(ai); max=t0; for(i=0;iN;i+) if(maxti) m
21、ax=ti; for(i=0;iN;i+) if(strlen(ai)=max) printf(%s,ai); fprintf(fp,%s,ai); fclose(fp);17.函数int fun(int a ,int n,int b )的功能是:求出数组a中n个元素的平均值,将大于平均值的元素存入b数组中,函数返回b数组中元素个数。编写main,通过调用fun,输出大于平均值的元素及元素个数。#include void main()int fun(int a,int n,int b); int i,aa10,bb10,x; for(i=0;i10;i+) scanf(%d,&aai); x=
22、fun(aa,10,bb); for(i=0;ix;i+) printf(%d ,bbi); printf(nx=%dn,x); int fun(int a,int n,int b) int i,j,sum=0,aver; for(i=0;in;i+) sum=sum+ai; aver=sum/n; for(i=0,j=0;iaver) bj+=ai; return(j); 18.函数void move(int a ,int n,int m )的功能是:将有n个元素的数组a中前面各数顺序向后移m个位置,最后m个数变成最前面m个数。编写main,调用move函数,输出变换后的结果。#includ
23、evoid main() void move(int a,int n,int m); int aa10=1,2,3,4,5,6,7,8,9,0,i,m; for(i=0;i10;i+) printf(%4d,aai); printf(n); printf(please input m(m=10):); scanf(%d,&m); move(aa,10,m); for(i=0;i10;i+) printf(%4d,aai); printf(n);void move(int a,int n,int m) int i,t10; for(i=0;i=m;i-) ai=ai-m; for(i=0;im;
24、i+) ai=ti;19.函数void fun(char str )的功能是:删除字符数组str中的非字母字符。编写main函数,从键盘输入一个字符串,调用fun函数,输出删除了非字母字符后的字符串。#include #include void main() void fun(char str); char c,s80; int i=0; for(;(c=getchar()!=n;) si+=c; si=0; fun(s); void fun(char str) int i,t,n; char c80; n=strlen(str); for(i=0,t=0;i=A&stri=a&stri=z)
25、 ct+=stri; ct=0; puts(c); 20.编程:找出10个整数中的最大数并与第一个数交换位置,找出最小数与最后一个数交换位置,将变换后的结果写入文件dat.txt中。#include void main()FILE *fp; int i,j,a10,t,max,min; if(fp=fopen(E:DATA1.DAT,w)=NULL) printf(cannot openn); exit(0); for(i=0;i10;i+) scanf(%d,&ai); for(i=0;i9;i+) max=i; for(j=1;j10;j+) if(amaxaj) max=j; t=amax;amax=a9;a9=t; min=i; for(j=1;jaj) min=j; t=amin;amin=a0;a0=t; for(i=0;i10;i+) printf(%d,ai); fprintf(fp,%d,ai); printf(n); fprin
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1