程序设计与算法语言上机试题abc.doc

上传人:s****u 文档编号:12757583 上传时间:2020-05-22 格式:DOC 页数:44 大小:295.02KB
返回 下载 相关 举报
程序设计与算法语言上机试题abc.doc_第1页
第1页 / 共44页
程序设计与算法语言上机试题abc.doc_第2页
第2页 / 共44页
程序设计与算法语言上机试题abc.doc_第3页
第3页 / 共44页
点击查看更多>>
资源描述
1、10个人的成绩存放在score数组中,编写函数fun,求出平均分,并作为函数值返回,且输出不及格人数。 #includefloat fun (int a10)int i,aver,sum=0;for(i=0;i10;i+)sum=sum+ai;aver=sum/10;return aver;void main()int i,j=0,a10=10,20,30,40,50,60,70,80,90,100;float aver; for(i=0;i10;i+) if(ai60) j+;aver=fun (a);printf(10个人的成绩平均分为:%5.2fn,aver);printf(n);printf(不及格人数:%dn,j); 2、 求出1到100之内能被7或者11整除,但不能同时被7和11整除的所有整数,并将他们放在指定的数组a中。 #include void main() int i,n,a500; n = fun(a); for(i = 0; i n; i+) printf(%8d,ai); int fun (int a) int i = 7, j = 0; for(; i = 100; i+) if (i % 7 = 0 | i % 11 = 0)&( !(i % 7= 0 & i % 11 = 0) ) ) aj+ = i; return j ;3、求方程的解。 #include#includevoid main()float a,b,c,d,x1,x2,m,n;printf(请输入方程的3个系数,a,b,c:);scanf(%f,%f,%f,&a,&b,&c);printf(该方程n);if(fabs(a)=1e-6)if(fabs(b)=1e-6) if(fabs(c)=1e-6)printf(有无穷多个解n); else printf(无解n); elseprintf(有一个根:%8.4fn,-c/b);elsed=b*b-4*a*c; if(fabs(d)1e-6) x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf(有两个不等的实根:%8.4f和%8.4fn,x1,x2); else m=-b/(2*a); n=sqrt(-d)/(2*a); printf(有两个复根:n); printf(%8.4f+%8.4fin,m,n); printf(%8.4f-%8.4fin,m,n); 4、给出一个百分制成绩,要求输出成绩等级A、B、C、D、E,90分以上为A,8089分为B,7079分为C,6069分为D,60分以下为E。要求:当输入分数为负值,或大于100时,通知用户“输入数据错误,重新输入”。 #includevoid main()float x;char y; printf(输入学生成绩:x=); scanf(%f,&x); while(x100|x=90) y=A; else if(x=80) y=B; else if(x=70) y=C; else if(x=60) y=D; else y=E; printf(n学生的等级为:y=%cn,y);5、 求数组中最大元素在数组中的下标并存放在指针k所指的储存单元中。 # include void fun(int *s, int t , int *k) int i ,max; max=s0; for (i=0;imax) max=si; *k=i; void main( ) int a10=876,675,896,101,301,401,980,431,451,777, k ; fun(a,10, &k); printf(最大值在a中的位置为:i=%dn最大值为:%dn, k, ak); 6、编写函数fun,功能是:根据以下攻势计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+4+n)。 #include float fun(int n)int i;float s=1.0,t=1.0;for(i=2;i=n;i+)t=t+i;s=s+1/t;return s;void main()float y;int n;printf(输入n的值:n);scanf(%d,&n);y=fun(n);printf(y=%fn,y);7、定义了77的二维数组,并在主函数中自动赋值。编写函数 fun(int a7),该函数的功能是:使数组左下半三角元素中的值全部置成0。 #include int fun(int a7) int i,j; for(i=0;i7;i+) for(j=0;jj) aij=0; void main() int a77,i,j; for(i=0;i7;i+) for(j=0;j7;j+) aij=i+j+1; printf(%3d,aij); printf(n); fun(a); printf(输出处理后的数组a:n); for(i=0;i7;i+) for(j=0;j7;j+) printf(%3d,aij); printf(n); 8、 编写一个函数void fun(int tt56,int pp6),tt指向一个5行6列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中初始化。 #include void fun(int tt56,int pp6) int i,j,min; for(j = 0;j 6;j+) min = tt0j; for(i= 0;i 5;i+) if(ttij min) min = ttij; ppj = min; void main() int t56=68,56,32,44,54,12,14,56,24,47,88,58,42,85,22,75,44,56,45,12,3,5,78,45,45,65,25,75,85,41; int p6,i,j,k; printf(The riginal data is:n); for(i = 0;i 5;i+) for(j = 0;j 6;j+) printf(%6d,tij); printf(n); fun(t,p); printf(n二维函数组每列中最小元素为:n); for(k = 0;k 6;k+) printf(%4d,pk); printf(n);9、求出4行5列的二维数组周边元素之和。#include void main() int a45,i,j,sum=0,sum1=0,sum2=0; printf(请输入4*5矩阵数据:); for(i=0;i4;i+) for(j=0;j5;j+) scanf(%d,&aij); for(i=0;i4;i+) sum1=sum1+ai0+ai4; for(j=0;j5;j+) sum2=sum2+a0j+a3j; sum=sum1+sum2-a00-a04-a30-a34; printf(矩阵周边元素之和为:%dn,sum); 10、 编写程序,把字符串中的内容逆置(不准使用多个字符数组)。 #include void main() char a80; char t; int i,n; printf(输入一行字符串:n); gets(a); n=strlen(a); for(i=0;i=n/2;i+) t=ai; ai=an-i-1; an-i-1=t; printf(字符串中的内容逆置为:n); puts(a); 11、 编写程序,从字符串中删除指定的字符,同一字母的大、小写按不同字符处理。并把删除好的字符以字符串的形式输出(不准使用多个字符数组)。 #include #include void main() char ch,str100; int i,j=0; printf(输入字符串:n); gets(str); 无上限读取字符 printf(输入要删除的字符:); ch=getchar(); for(i=0;istrlen(str);i+) if(stri!=ch)strj+=stri; strj=0; printf(n字符串str为:%sn,str); #include#includevoid main()char a80;char ch;int i,j;int n;printf(输入一串字符字符:n);gets(a);printf(输入要删除的字符:);ch=getchar();i=0;while(ai!=0)while(ai!=0&ai!=ch)i+;n=strlen(a);for(j=i;jn-1;j+)aj=aj+1;aj=0; printf(删除后的字符串:); puts(a);12、 编写程序,对长度为7个字符的字符串,除首尾字符外,将其余5个字符按ascii码降序排列。 #include void main() char c8; char i,j,temp; printf(长度为7个字符的c字符串:); gets(c); for (i=1;i=5;i+) for (j=i+1;j=5;j+) if (cicj) temp=ci; ci=cj; cj=temp; printf(首尾字符外,将其余5个字符按ascii码降序排列为:%sn,c); 13、 编写函数fun,它的功能是:比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。 #include #include char *fun(char *a,char *b) int i,j; for(i=0;*(a+i);i+); for(j=0;*(b+j);j+); if(i=j) return a; else return b; void main() char a100,b100,*c; printf(输入a字符串: ); gets(a); printf(输入b字符串 :); gets(b); c=fun(a,b); printf(输出较长的c字符串:); puts(c); 14、给一个不多于5位的正整数,要求求出它是几位数,打印出每一位数字,并按逆序打印出各位数字。 #include void main() long int num; int a,b,c,d,f,place; printf(输入num的数值:); scanf(%d,&num);if(num9999)place=5;elseif(num999)place=4;elseif(num99)place=3;elseif(num9)place=2;elseplace=1;printf(place=%dn,place); f=num/10000;d=num/1000%10;c=num/100%10;b=num/10%10; a=num%10;switch(place) case 5: printf(%d,%d,%d,%d,%d,f,d,c,b,a);printf(n反序数为:);printf(%d,%d,%d,%d,%dn,a,b,c,d,f); break; case 4: printf(%d,%d,%d,%d,d,c,b,a);printf(n反序数为:);printf(%d,%d,%d,%dn,a,b,c,d); break; case 3: printf(%d,%d,%d,c,b,a);printf(n反序数为:);printf(%d,%d,%dn,a,b,c); break; case 2: printf(%d,%d,b,a);printf(n反序数为:);printf(%d,%dn,a,b); break; case 1: printf(%d,a);printf(n反序数为:);printf(%dn,a); break; 15、 编写一个函数fun,它的功能是:求出一个68的整型二维数组中最大元素的值,并将此值返回调用函数。 数组在主函数中初始化,并最终输出结果。#include int fun(int a68) int i,j,max=a00; for(i=0;i6;i+)for(j=0;j8;j+) if(maxaij)max=aij; return max; void main()int arr68=1,8,7,4,6,1,2,3,65,75,12,45,62,18,65,24,32,1,5,4,6,7,8,9,5,5,5,9,9,9,8,8,9,5,2,4,7,81,2,5,3,2,1,4,5,6,9,8;int i,j,max; printf(array a:n); for(i=0;i6;i+) for(j=0;j8;j+) printf(%4d,arrij); printf(n); max=fun(arr); printf(max=%dn,max); 16、将字符数组s中的字符串,除了下标为偶数、同时ascii值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在新的字符数组t中。 #include #include void main() char s100, t100; int i,j=0,n; printf(n输入字符串 S:); gets(s);/scanf(%s, s); n=strlen(s); for(i=0;in;i+) if(i%2=0&si%2=0) tj=si; j+; tj=0; printf(nThe result is : %sn, t); #include #include void fun(char *s,char t) int i,j=0,n; n=strlen(s); for(i=0;in;i+) if(i%2=0&si%2=0) tj=si; j+; tj=0; void main() char s100, t100; printf(nPlease enter string S:); gets(s);/scanf(%s, s); fun(s, t); printf(nThe result is : %sn, t);17、 假定输入的字符串中只包含字母和*号。则使字符串中的*号不得多于3个;若多于3个,则删除多于的*号;若少于或等于3个,则什么也不做。 #include#includevoid main()char str50,c50,b;int i,j,n,a50=0,k,l;gets(str);n=strlen(str);for(l=0,j=0,i=0;in;i+)if(stri=*)l+;if(l=3)aj=i;j+;elseaj=i;j+;for(i=0;ij;i+)k=ai;b=strk;stri=b;for(i=j;in;i+)stri=0;puts(str);18、编程计算1!+2!+3!+n!的值,其中,n值由键盘输入。 #includevoid main()int n; int i=1,t=1,sum=0; printf(输入n的数值:); scanf(%d,&n); do t=t*i; sum=sum+t; i+; while(i=n); printf(sum=%dn,sum);19、 编写程序,删除字符串中的所有空格。 #include #include void main() char str100; int i,j=0; printf(输入字符串:n); gets(str); for(i=0;istrlen(str);i+) if(stri!= ) strj+=stri; strj=0; printf(n新字符串str为:%sn,str); 20、 求出字符数组ss中存储的字符串中指定字符的个数。 #includevoid main()int fun(char a,char ch);char a100,ch;printf(nPlease enter a string:);gets(a);printf(nPlease enter a char:); ch=getchar();printf(The number is:%dn,fun(a,ch); int fun(char a,char ch) int i,j=0; for(i=0;ai!=0;i+) if(ai=ch) j+; return j; #includevoid main()char a100,ch; int i,j=0; printf(输入字符串:); gets(a); printf(n); printf(输入要查找的字符:); ch=getchar(); for(i=0;ai!=0;i+) if(ai=ch) j+; printf(n);printf(字符串a中指定字符的个数:%dn,j);21、输入一行字符,分别统计出其中的大小写字母、空格、数字和其他字符的个数。 #include void main() int i=0,j=0,k=0,l=0; char c; printf(输入一行字符:n); while(c=getchar()!=n) if(c=A&c=a&c=0&c=9) j+; else if(c= ) k+; else l+; printf(大小写字母数:i=%3dn数字数:j=%3dn空格数:k=%3dn其他符号数:l=%3dn,i,j,k,l); 22、 将5行6列的二维数组中的数据,按列的顺序依次放到一个一维数组中。 #include void main() int a56=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20, 1,2,3,4,5,6,7,8,9,10; int b30; int i,j,k=0; for (j=0;j6;j+) for(i=0;i5;i+) bk+=aij; printf(二维数组:n); for (i = 0; i 5; i+) for(j=0;j6;j+) printf(%3d,aij); printf(n); printf(n); printf(一维数组:n); for (i= 0;ik;i+) printf( %3d,bi); printf(n);#include void fun( int (*s)4, int *b) int i,j,k=0; for(j=0;j4;j+) for(i=0;i3;i+) bk=*(*(s+i)+j); k+; bk= 0;main() int a30,w34=1,2,3,4,4,5,6,7,6,7,8,9; int i,j; printf(输出数组w:n); for(i=0; i3; i+) for(j=0;j4; j+) printf(%3d,wij); printf(n); fun(w,a); printf(按列的顺序依次放到一个一维数组b:n); for(i=0;i12;i+) printf(%3d,ai); printf(nn);23、求两个23和32的矩阵之积,并把结果显示出来。 #include void main() int a23,b32,c22=0,i,j,x; printf(输入一个2行3列的矩阵a:n); for(i=0;i2;i+) for(j=0;j3;j+) scanf(%d,&aij); printf(%5d,aij); printf(n); printf(输入一个3行2列的矩阵b:n); for(i=0;i3;i+) for(j=0;j2;j+) scanf(%d,&bij); printf(%5d,bij); printf(n); printf(a*b=:n); for(i=0;i2;i+) for(j=0;j2;j+) for(x=0;x3;x+) cij+=aix*bxj; printf(%5d,cij); printf(n); 24、 定义了一个66的二维数组,并进行初始化。将数组右上半三角元素中的值乘以10。 #include void fun(int a6); void main() int i,j;int a66;printf(array a:n);for(i=0;i6;i+)for(j=0;j6;j+)aij=i+j+1;printf(%3d,aij);printf(n);fun(a);printf(经过处理后的数组元素array a:n);for(i=0;i6;i+)for(j=0;j6;j+)printf(%5d,aij);printf(n); void fun(int a6) int i,j; for(i=0;i6;i+)for(j=0;j6;j+)if(ij)aij=10*aij;#include void main() int i,j;int a66;printf(array a:n);for(i=0;i6;i+)for(j=0;j6;j+)aij=i+j+1;printf(%3d,aij);printf(n);printf(经过处理后的数组元素array a:n);for(i=0;i6;i+)for(j=0;j6;j+)if(ij)aij=10*aij;printf(%4d,aij);printf(n); 25、编写程序,实现矩阵(5行6列)的转置(即行列互换)。 #include void main() int i,j; int a56=4,5,7,8,1,6,8,4,6,5,1,5,7,8,9,4,5,6,1,2,3,4,5,6,1,2,3,6,5,2; int b65; printf(array a:n); for(i=0;i5;i+) for(j=0;j6;j+) printf(%3d,aij); bji=aij; printf(n); printf(a的转置矩阵array b:n); for(i=0;i6;i+) for(j=0;j5;j+) printf(%3d,bij); printf(n); 26、将两个两位数的正整数a,b合并成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。 #include void main() int a,b,c,i,j,k,l; printf(输入a,b的值:); scanf(%d%d,&a,&b); i=a/10; j=a%10; k=b/10; l=b%10; c=1000*i+k*100+j*10+l; printf(两个两位数的正整数a,b合并成一个整数为: c=%dn,c); 27、 编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。主函数中仅仅输入和输出。 #include #include int fun(char a,char b)int i=0,j=0;while(ai+!=0);i-;while(ai+=bj+)!=0);return (ai);int main()char a100,b100;printf( 请输入一串字符a:);gets(a);printf(n);printf(请再输入一串字符b:);gets(b);printf(n);fun(a,b);printf( 新字符串为:);puts(a);printf(n); 28、请编写函数fun,该函数的功能是:实现b=a+aT,即把矩阵a加上a的转置,存放在矩阵b中。计算结果在main函数中输出(a为一个3行3列的整型数组)。 #include void fun( int a33, int b33) int i,j, at33; for(i=0;i=2;i+) for(j=0;j=2;j+) atij=aji; for(i=0;i3;i+) for(j=0;j3;j+) bij=aij+atij; main( ) int a33=1, 2, 3, 4, 5, 6, 7, 8, 9, t33 ; int i, j,at33; printf(输出一个3*3的矩阵a:n); for(i=0;i3;i+) for(j=0;j3;j+) printf(%5d,aij); atij=aji; printf(n); printf(输出a的转置矩阵at:n); for(i=0;i3;i+) for(j=0;j3;j+) printf(%5d,atij); printf(n); printf(n a+at=n); fun(a, t) ; for (i = 0 ; i 3 ; i+) for (j = 0 ; j 3 ; j+) printf(%7d, tij) ; printf(n) ; 29、依次输出200以内(包含200)能被5整除但不能被15整除的自然数。 #include void main() int i; for(i=1;i=200;i+) if(i%5=0&i%15!=0) printf(i=%dn,i); 30、 编写函数fun,该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 #include int fun(int a,int n)int i,j;for(i=1,j=0;in;i+)if(ai!=aj)a+j=ai;return j+1;void main()int i,n,a100;printf(输入数组大小:); scanf(%d,&n); printf(输入%d个从小到大的顺序排列的数n,n); for(i=0;in;i+) scanf(%d,&ai); printf(删除后数组中数据:);n=fun(a,n); for(i=0;in;i+) printf(%5d,ai); printf(n); printf(删除后数组中数据的个数%5dn,n);31、统计各年龄段的人数。30个年龄通过scanf函数获得,并放在age数组中。要求把0至9岁年龄段的人数放在d0中,把10至19岁年龄段的人数放在d1中,把20至29岁的人数放在d2中,其余以此类推,把100岁(含100以上年龄的人数都放在d10中。 #include void fun( int a, int b) int i,j; for(j=0;j11;j+) bj=0; for(i=0;i=0&ai=10&ai=20&ai=30&ai=40&ai=50&ai=60&ai=70&ai=80&ai=90&ai=99) b9+=1; else b10+=1; void main() int i, d11;int age30=1,2,56,78,10,25,87,96,31,110,45,65,42,73,23, 118,90,1,10,23,34,45,56,67,68,78,89,91,46,97; printf(输出30个年龄数 :n); for(i=0; i30; i+) printf(%4d,agei); printf(nn);printf(各年龄段的人数为:n); fun( age, d); for(i=0;i10;i+) printf(%3d-%3d: %2dn, i*10, i*10+9, di); printf(Over 100: %2dn, d10); #include void main() int age30,i,d11=0; printf(输入30个数据:); for(i=0;i30;i+) scanf(%d,&agei); for(i=0;i99)d10+;elsedagei/10+;printf(额度按人数:n);for(i=0;i11;i+)printf(%3d,di); 32、 编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格格开,一行的开始没有空格。 #include #include int fun(char *s) int i=1,c=0; while(si) if(si= &si-1!= ) c+; i+; return
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!