一.填空题_二维数组(共1题,5.0分)
附
# include <stdio.h>
typedef int Intmatrix[ 10 ] [ 10 ] ;
int invdiagsum ( Intmatrix ma, int rows, int cols)
{
int s, i;
s = 0 ;
for ( i= 0 ; i< rows; i++ )
s+= ma[ i] [ cols- 1 - i] ;
return s;
}
int colsum ( Intmatrix ma, int rows, int col)
{
int s, i;
s = 0 ;
for ( i= 0 ; i< rows; i++ )
s+= ma[ i] [ col] ;
return s;
}
void main ( )
{
int j, maxcol;
Intmatrix m33= { { 3 , 2 , 4 } , { 5 , 6 , 1 } , { 7 , 8 , 9 } } ;
maxcol = invdiagsum ( m33, 3 , 3 ) ;
for ( j= 0 ; j< 3 ; j++ )
if ( maxcol< colsum ( m33, 3 , j) )
maxcol= colsum ( m33, 3 , j) ;
printf ( "The maxcolsum is %d\n" , maxcol) ;
}
二.简答题_杨辉三角(共1题,5.0分)
# include <stdio.h>
# define N 21
void main ( )
{
int i, j, n= 0 , a[ N] [ N] ;
scanf ( "%d" , & n) ;
for ( i= 1 ; i<= n; i++ )
{
a[ i] [ 1 ] = a[ i] [ i] = 1 ;
}
for ( i= 3 ; i<= n; i++ )
{
for ( j= 2 ; j<= i- 1 ; j++ )
{
a[ i] [ j] = a[ i- 1 ] [ j- 1 ] + a[ i- 1 ] [ j] ;
}
}
for ( i= 1 ; i<= n; i++ )
{
for ( j= 1 ; j<= i; j++ )
{
printf ( "%d " , a[ i] [ j] ) ;
}
printf ( "\n" ) ;
}
}
三.程序题(共3题,15.0分)
1_矩阵
# include <stdio.h>
void main ( )
{
int nums[ 3 ] [ 3 ] , rowsum[ 8 ] = { 0 } , colsum[ 3 ] = { 0 } ;
int i, j, sum1= 0 , sum2= 0 ;
int flag= 1 ;
for ( i= 0 ; i< 3 ; i++ )
for ( j= 0 ; j< 3 ; j++ )
{
scanf ( "%d" , & nums[ i] [ j] ) ;
rowsum[ i] += nums[ i] [ j] ;
colsum[ j] += nums[ i] [ j] ;
if ( i== j)
sum1+= nums[ i] [ j] ;
if ( 2 == ( i+ j) )
sum2+= nums[ i] [ j] ;
}
for ( i= 3 ; i< 6 ; i++ )
{
rowsum[ i] = colsum[ i- 3 ] ;
}
rowsum[ 6 ] = sum1;
rowsum[ 7 ] = sum2;
for ( i= 0 ; i< 8 ; i++ )
{
for ( j= i; j< 8 ; j++ )
{
if ( rowsum[ i] != rowsum[ j] )
{
flag = 0 ;
break ;
}
}
if ( flag == 0 )
break ;
}
if ( flag== 1 )
printf ( "Yes" ) ;
else
printf ( "No" ) ;
}
2_change
# include <stdio.h>
void change ( double * a, double * b, double * c)
{
double max, n;
max = ( * a> * b? ( * a> * c? * a: * c) : ( * b> * c? * b: * c) ) ;
if ( * a == max)
{
* a += ( * b+ * c) / 2 ;
* b/= 2 ;
* c/= 2 ;
}
else if ( * b == max)
{
* b += ( * a+ * c) / 2 ;
* a/= 2 ;
* c/= 2 ;
}
else if ( * c == max)
{
* c += ( * b+ * a) / 2 ;
* b/= 2 ;
* a/= 2 ;
}
}
void main ( )
{
double a, b, c;
scanf ( "%lf %lf %lf" , & a, & b, & c) ;
change ( & a, & b, & c) ;
printf ( "%.1f %.1f %.1f" , a, b, c) ;
}
3_筛选法求素数(有点问题)
# include <stdio.h>
int sifting ( int n)
{
int nums[ 500 ] ;
int prime[ 500 ] = { 0 } ;
int i, j, k= 0 ;
if ( n> 500 )
return - 1 ;
for ( i= 1 ; i< n; i++ )
{
nums[ i] = i+ 1 ;
}
for ( i= 1 ; i< n; i++ )
{
if ( nums[ i] != 0 )
{
prime[ k] = nums[ i] ;
for ( j= k; j< n; j++ )
{
if ( nums[ j] % prime[ k] == 0 )
{
nums[ j] = 0 ;
}
}
k++ ;
}
}
for ( i= 0 ; prime[ i] != 0 ; i++ ) ;
return i;
}
void main ( )
{
int n;
scanf ( "%d" , & n) ;
printf ( "%d" , sifting ( n) ) ;
}