2012年自考“高级语言程序设计”经典习题及答案(18)
来源:本站整理 时间:2020-02-13 15:55:27
4.编程序按下列公式计算S的值(其中X1、X2、 、Xn由键盘输入):
s= (xi-x0)(xi-x0) (其中x0是X1、x2、 、Xn的平均值)
解 输入数组x的n个元素的值,按公式计算。程序首先输入n,设n 100,然后输入n个数据,接着求它们的平均值,最后按计算公式求出s,并输出。程序如下:
# include
# define N 100
main()
{ double x[N+1], s;
int i,n;
do {
printf( Enter n( 100) ); scanf( %d , n);
} while( =0||n =100);
for(i=1; i =n;i++){
scanf( %lf , s);x=s;
}
for(s=0.0,i=1;i =n; i++)
s+=x ;
x[0] = s/n;
for(s=0.0, i=1;i = n;i++)
s+=(x-x[0])*(x-x[0]);
printf( s=%f\n , s);
}
5.输入一个3X5的整数矩阵,输出其中最大值、最小值和它们的下标。
解 输入一个二维数组,寻找二维数组的最大值和最小值。其中寻找最大值和最小值的工作可用两重循环实现,即按行按列考察二维数组的元素。程序如下:
# include
main()
{ int a[3][5], i,j,t,n=3, m=5,
min,max, minrow, mincol, maxrow, maxcol;
printf( Enter %d*%d numbers !\n , n,m);
for(i=0; i
for( j=0;j
scanf( %d , t); a[j]= t;
}
min=max=a[[0][0]; minrow=mincol=maxrow=maxcol=0;
for(i=0;i
for(j=0;j
if( a[j] max ){
max= a[j] ;maxrow= i;maxcol=j ;
}
if( a[j]
min=a[j] ; minrow= i; mincol=j ;
}
}
printf( MAX=a[%d][%d] =%d MIN= a[%d][%d] =%d \n ,
maxrow,maxcol,max,minrow,mincol,min) ;
}
6.输入一个字符串,将其中的所有大写字母改为小写字母,而所有小写字母全部改为大写字母,然后输出。
解 程序先输入字符率,然后顺序考察输入字符串中的字符,当发现是大写字母时,将它改写成对应的小写字母,而当它是小写字母时,就将它改写成对应的大写字母。若变量ch中的字符是大写字母,则与它对应的小写字母的表达式可以写成ch- A + a ;类似地,若变量ch中的字符是小写字母,则与它对应的大写字母的表达式可以写成ch- a + A .完整程序如下:
# include
# define N 200
main()
{ char s[N] ;
int i;
printf( Enter string! \n );
scanf ( %s ,s);
for(i=0; s!= \0 ;i++)
if(s = A s = Z )
s=s - x + a ;
else if(s = a s = z )
s= s- a + A ;
printf( s=%s\n ,s);
}
7.设某班50名学生的三科成绩表如下:
课程一 课程二 课程三
试编一个程序,输入这50个学生的三科成绩,计算并输出每科成绩的平均分。
解 程序定义一个50行3列的二维数组,用于存储全班学生的成绩。程序顺序输入各个学生的三科成绩,然后按列的顺序,累计各科总分,并计算平均分。完整程序如下:
# include
# define N 50
# define M 3
main()
{int score[N][M], i,j,t;
double a[M];
printf( Enter scores!\n );
for(i=0;i N; i++)
for(j=0;j
scanf( %d , t);score[j]=t;
}
for(j=0;j
for(j=0;j M;j++){
for(i=0;i N; i++)
a[j]+= score[j];
a[j]/= N;
}
for(j=0;j
printf( 课程%d的平均分是%.2f\n , j+1,a[j]);
}