例题1:已知数组a中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列
#include <stdio.h>
int main ( )
{
int a[ 10 ] = { 0 , 17 , 28 , 32 , 56 , 86 , 88 } ;
int n, i, j;
j = 6 ;
printf ( "Enter a number :" ) ;
scanf ( "%d" , & n) ;
a[ 0 ] = n ;
for ( i = j; i> 0 ; i-- )
{
if ( a[ i] > n)
a[ i+ 1 ] = a[ i] ;
else
{
a[ i+ 1 ] = n;
break ;
}
}
for ( i= 1 ; i<= j+ 1 ; i++ )
{
printf ( "%d " , a[ i] ) ;
}
printf ( "\n" ) ;
return 0 ;
}
例题2:通过键盘输入3名学生4门课程的成绩,分别求每个学生的平均成绩和每门课程的平均成绩。
#include <stdio.h>
int main ( )
{
float a[ 4 ] [ 5 ] , sum1, sum2;
int i, j;
for ( i= 0 ; i< 3 ; i++ )
{
for ( j= 0 ; j< 4 ; j++ )
{
scanf ( "%d" , & a[ i] [ j] ) ;
}
}
for ( i= 0 ; i< 3 ; i++ )
{
sum1 = 0 ;
for ( j = 0 ; j< 4 ; j++ )
{
sum1 + = a[ i] [ j] ;
a[ i] [ 4 ] = sum1 / 4 ;
}
}
for ( j= 0 ; j< 5 ; j++ )
{
sum2 = 0 ;
for ( i= 0 ; i< 3 ; i++ )
{
sum2 + = a[ i] [ j] ;
a[ 3 ] [ j] = sum2/ 3 ;
}
}
for ( i= 0 ; i< 4 ; i++ )
{ for ( j= 0 ; j< 5 ; j++ )
{
printf ( "%6.2f" , a[ i] [ j] ) ;
}
printf ( "\n" ) ;
}
return 0 ;
}
例题3:输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后的一个数对换,请编程实现。
#include <stdio.h>
const int M= 10 ;
void inputNum ( int a[ ] , int M) ;
void outputNum ( int a[ ] , int M) ;
void Swap ( int a[ ] , int M) ;
int main ( )
{
int a[ M] ;
printf ( "请输入10个整数:\n" ) ;
inputNum ( a, M) ;
Swap ( a, M) ;
outputNum ( a, M) ;
return 0 ;
}
void inputNum ( int a[ ] , int M)
{
int length, i ;
length = M;
for ( i= 0 ; i< length; i++ )
{
scanf ( "%d" , & a[ i] ) ;
}
}
void outputNum ( int a[ ] , int M)
{
int length, i;
length = M;
for ( i= 0 ; i< length; i++ )
{
printf ( " %d " , a[ i] ) ;
}
printf ( "\n" ) ;
}
void Swap ( int a[ ] , int M)
{
int * max , * min , * p, temp, length;
max = min = a;
length = M;
for ( p = a+ 1 ; p < a + length ; p++ )
{
if ( * p > * max)
{
max = p;
}
else if ( * p < * min)
{
min = p;
}
}
temp = a[ 0 ] ;
a[ 0 ] = * min;
* min = temp;
temp = a[ 9 ] ;
a[ 9 ] = * max;
* max = temp;
}
例题4:求一个m行n列的二维数组中的这样一个元素:它在它所在的行为最大,在它所在的列为最小。
#include <stdio.h>
#define M 5
#define N 4
int main ( )
{
int i, j, k, a[ N] , max, maxj, flag;
printf ( "Input the matrix:\n" ) ;
for ( i= 0 ; i< N; i++ )
{
for ( j= 0 ; j< M; j++ )
{
scanf ( "%d" , & a[ i] [ j] ) ;
}
}
for ( i= 0 ; i< N; i++ )
{
max = a[ i] [ 0 ] ;
maxj = 0 ;
for ( j= 0 ; j< M; j++ )
{
if ( a[ i] [ j] > max)
{
max = a[ i] [ j] ;
maxj = j;
}
flag = 1 ;
for ( k= 0 ; k< N; k++ )
{
if ( max> a[ k] [ maxj] )
{
flag = 0 ;
continue ;
}
}
}
if ( flag)
{
printf ( "a[%d][%d] = %d\n" , i, maxj, max) ;
break ;
}
if ( ! flag)
{
printf ( "No exist!!!\n" ) ;
}
}
return 0 ;
}