}
3、编写函数,求1!+2!+3!+ ? +K!的和。 解:程序如下
#include “stdio.h”
double
SUM( int k)
{ int i , j ; double fac , sum ; sum=0 ;
for( i=1 ; i <=k ; i++) {
for(j=1 , fac=1 ; j<=i ; j++) fac=fac*j ; sum = sum +fac ; }
return sum ; } main( ) { int k ; double sum ; scanf(“%d” ,&k); sum=SUM(k) ;
printf(“1!+2!+3!+ ? +K!=%.0f\\n”,sum); }
21
4、求方程ax+bx+c=0的根,用2个函数分别求当b-4ac大于0和等于022
的根并输出结果,从主函数中输入a、b、c的值。 #include “stdio.h” #include “math.h”
void f1(float a , float b , float c) {
float t1 ,t2 ;
t1=(-b + sqrt(b*b-4*a*c))/(2*a); t2=(-b - sqrt(b*b-4*a*c))/(2*a); printf(“t1=%f , t2=%f\\n”, t1,t2) ; }
void f2(float a , float b , float c) {
float t1 ; t2=-b /(2*a);
printf(“t1=%f\\n”,t1); } main( ) {
float a , b ,c;
printf(“input a , b , c\\n”); scanf(“%f%f%f”,&a ,&b,&c); if(b*b – 4*a*c>0)
22
f1(a,b,c);
eles if(b*b-4*a*c ==0) f2(a,b,c); else
printf(“ no jie !\\n”); }
第6章
一、单项选择题
1、C 2、D 3、D 4、C 5、C 6、D 7、B 8、C 9、D 10、B
11、B 12、B(原题数组改为a[][3]) 13、D 14、B 15、 D 16、B 17、D 18、D 19、B 20、 D 二、按要求完成程序的空缺
1. 下面程序以每行4个数据的形式输出a数组,请填空。
&a[I] i%4 = =0 printf(“\\n”) ; 2. 下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中,请
填空。
j<=2 b[j][i] = a[i][j] i<=2 三、读程序段分析程序运行结果
1. 下面程序运行结果是 600 。 2。下面程序运行结果是 he 。 3. 下面程序的运行结果是 The result is:
1 6 7
23
数组
11 12 13 16 17 18 19 21 21 23 24 25
四、编程题
1、从键盘输入若干整数(个数应少于50),其值在0到4的范围内,用-1作为输入结束的标志。统计每个整数的个数。试编程序完成。 解:程序如下
#include “stdio.h” main( ) {
int h[50], a , b , c, d , e , n , t , i ; a=b=c=d=e=0 ; n=0 ;
scanf(“%d”,&t); while( t!=-1 ) { h[n++]= t ; scanf(“%d”,&t) ; }
for(i=0 ; i { case 0 : a++ ; break ; case 1 : b++ ; break ; case 2 : c++ ; break ; 24 case 3 : d++ ; break ; case 4 : e++ ; } printf(“ 0 : %d , 1: %d , 2: %d , 3: %d , 4: %d\\n”, a , b ,c ,d , e); } 2、将一个数组中的值按逆序重新存放。例如,原来顺序为求改为2,4,5,6,8。 解:程序如下 #include “stdio.h” main( ) { int a[50] , i , n , temp, t ; n=0 ; scanf(“%d” , &t) ; while( t!=-1 ) { a[n++]= t ; scanf(“%d” ,&t) ; } for(i=0 ; i< n/2 ; i++) temp=a[i] , a[i]= a[n-1-i] , a[n-1-i]= temp ; for(i=0 ;i< n ; i++) printf( “ ]”, a[i]) ; } 8,6,5,4,2。要 25