当前位置:文档之家› 程序设计与算法语言上机试题abc - 副本 - 副本

程序设计与算法语言上机试题abc - 副本 - 副本

1、10个人的成绩存放在score数组中,编写函数fun,求出平均分,并作为函数值返回,且输出不及格人数。

#include<stdio.h>float fun (int a[10]){int i,aver,sum=0;for(i=0;i<10;i++)sum=sum+a[i];aver=sum/10;return aver;}void main(){int i,j=0,a[10]={10,20,30,40,50,60,70,80,90,100};float aver;for(i=0;i<10;i++)if(a[i]<60)j++;aver=fun (a);printf("10个人的成绩平均分为:%5.2f\n",aver);printf("\n");printf("不及格人数:%d\n",j);}2、求出1到100之内能被7或者11整除,但不能同时被7和11整除的所有整数,并将他们放在指定的数组a中。

#include<stdio.h>void main(){int i,n,a[500];n = fun(a);for(i = 0; i < n; i++)printf("%8d",a[i]);}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) ) )a[j++] = i;return j ;}3、求方程2=++cbxax的解。

#include<stdio.h>#include<math.h>void 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");elseprintf("无解\n");}else printf("有一个根:%8.4f\n",-c/b);}else{d=b*b-4*a*c;if(fabs(d)<=1e-6)printf("有两个相等的实根:%8.4f\n",-b/(2*a));elseif(d>1e-6){x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);printf("有两个不等的实根:%8.4f和%8.4f\n",x1,x2);}else{m=-b/(2*a);n=sqrt(-d)/(2*a);printf("有两个复根:\n");printf("%8.4f+%8.4fi\n",m,n);printf("%8.4f-%8.4fi\n",m,n);}}}4、给出一个百分制成绩,要求输出成绩等级A、B、C、D、E,90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。

要求:当输入分数为负值,或大于100时,通知用户“输入数据错误,重新输入”。

#include<stdio.h>void main(){float x;char y;printf("输入学生成绩:x=");scanf("%f",&x);while(x>100||x<0){printf("输入错误,请重新输入学生成绩:x=");scanf("%f",&x);}if(x>=90)y='A';elseif(x>=80)y='B';elseif(x>=70)y='C';elseif(x>=60)y='D';elsey='E';printf("\n学生的等级为:y=%c\n",y);}5、求数组中最大元素在数组中的下标并存放在指针k所指的储存单元中。

# include <stdio.h>void fun(int *s, int t , int *k){int i ,max;max=s[0];for (i=0;i<t;i++)if (s[i]>max){max=s[i];*k=i;}void main( ){int a[10]={876,675,896,101,301,401,980,431,451,777}, k ;fun(a,10, &k);printf("最大值在a中的位置为:i=%d\n最大值为:%d\n", k, a[k]);}6、编写函数fun,功能是:根据以下攻势计算s,计算结果作为函数值返回;n 通过形参传入。

S=1+1/(1+2)+1/(1+2+3)+……+1/(1+2+3+4+……+n)。

#include<stdio.h>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=%f\n",y);}7、定义了7×7的二维数组,并在主函数中自动赋值。

编写函数 fun(int a[][7]),该函数的功能是:使数组左下半三角元素中的值全部置成0。

#include<stdio.h>int fun(int a[][7]){int i,j;for(i=0;i<7;i++)for(j=0;j<7;j++){if(i>j)a[i][j]=0;}}void main(){int a[7][7],i,j;for(i=0;i<7;i++){for(j=0;j<7;j++){a[i][j]=i+j+1;printf("%3d",a[i][j]);}printf("\n");}fun(a);printf("输出处理后的数组a:\n");for(i=0;i<7;i++){for(j=0;j<7;j++){printf("%3d",a[i][j]);}printf("\n");}}8、编写一个函数void fun(int tt[5][6],int pp[6]),tt指向一个5行6列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。

二维数组中的数已在主函数中初始化。

#include <stdio.h>void fun(int tt[5][6],int pp[6]){ int i,j,min;for(j = 0;j < 6;j++){ min = tt[0][j];for(i= 0;i < 5;i++){ if(tt[i][j] < min)min = tt[i][j];}pp[j] = min;}}void main(){intt[5][6]={{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 p[6],i,j,k;printf("The riginal data is:\n");for(i = 0;i < 5;i++){ for(j = 0;j < 6;j++)printf("%6d",t[i][j]);printf("\n");}fun(t,p);printf("\n二维函数组每列中最小元素为:\n");for(k = 0;k < 6;k++)printf("%4d",p[k]);printf("\n");}9、求出4行5列的二维数组周边元素之和。

#include<stdio.h>void main(){int a[4][5],i,j,sum=0,sum1=0,sum2=0;printf("请输入4*5矩阵数据:");for(i=0;i<4;i++)for(j=0;j<5;j++)scanf("%d",&a[i][j]);{for(i=0;i<4;i++)sum1=sum1+a[i][0]+a[i][4];}{for(j=0;j<5;j++)sum2=sum2+a[0][j]+a[3][j];}sum=sum1+sum2-a[0][0]-a[0][4]-a[3][0]-a[3][4];printf("矩阵周边元素之和为:%d\n",sum);}10、编写程序,把字符串中的内容逆置(不准使用多个字符数组)。

#include<stdio.h>void main(){char a[80];char t;int i,n;printf("输入一行字符串:\n");gets(a);n=strlen(a);for(i=0;i<=n/2;i++){t=a[i];a[i]=a[n-i-1];a[n-i-1]=t;}printf("字符串中的内容逆置为:\n");puts(a);}11、编写程序,从字符串中删除指定的字符,同一字母的大、小写按不同字符处理。

并把删除好的字符以字符串的形式输出(不准使用多个字符数组)。

相关主题