第六章 利用数据处理批量数据
例6.1 对10个数组元素依次赋值0 1 2 3 4 5 6 7 8 9,要求逆序输出。
#include <stdio.h>
int main()
{
int i, a[10];
for ( i = 0; i < 10; i++ )
{
a[i] = i;
}
for ( i = 9; i >= 0; i-- )
{
printf( “%d\t”, a[i] );
}
}
运行结果如下:
例6.2 用数组处理Fibonacci数列问题。
#include <stdio.h>
int main()
{
int i, f[20] = { 1, 1 };
for ( i = 2; i < 20; i++ )
{
f[i] = f[i - 2] + f[i - 1];
}
for ( i = 0; i < 20; i++ )
{
if ( i % 5 == 0 )
printf( “\n” );
printf( “%12d”, f[i] );
}
printf( “\n” );
}
运行结果如下:
例6.3有10个地区面积,要求他们由小到大排列输出。#include <stdio.h>
int main()
{
int a[10];
int i, j, t;
printf( “input 10 number:\n” );
for ( i = 0; i < 10; i++ )
scanf( “%d”, &a[i] );
printf( “\n” );
for ( j = 0; j < 9; j++ )
for ( i = 0; i < 9 - j; i++ )
if ( a[i] > a[i + 1] )
{
t = a[i]; a[i] = a[i + 1]; a[i + 1] = t;
}
printf( “the sorted number:\n” );
for ( i = 0; i < 10; i++ )
printf( “%d\t”, a[i] );
printf( “\n” );
}
运行结果如下:
例6.4 矩阵转换。
#include<stdio.h>
int main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf(“a:\n”);
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf(“b:\n”);
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
{
printf("%5d",b[i][j]);
}printf("\n");
}
}
运行结果如下:
例6.53*4矩阵,输出其中最大值及所在行列。
#include <stdio.h>
int main()
{
int i, j, row = 0, colum = 0, max;
int a[3][4] = { { 1, 2, 3, 4 }, { 9, 8, 7, 6 }, { -10, 10, -5, 2 } };
max = a[0][0];
for ( i = 0; i < 3; i++ )
for ( j = 0; j < 4; j++ )
if ( a[i][j] > max )
{
max = a[i][j];
row = i;
colum = j;
}
printf( “max=%d\nnow=%d\ncolum=%d\n”, max, row, colum );
}
运行结果如下:
例6.6 输入一个一致的字符串。
#include <stdio.h>
int main()
{
char c[15] = { ‘I’, ’ ', ‘a’, ‘m’, ’ ', ‘a’, ’ ', ‘s’, ‘t’, ‘u’, ‘d’, ‘e’, ‘n’, ‘t’, ‘.’ };
int i;
for ( i = 0; i < 15; i++ )
printf( “%c”, c[i] );
printf( “\n” );
}
运行结果如下:
例6.8 输入一行字符,统计有多少的单词,单词之间用空格分开。
#include <stdio.h>
int main()
{
char string[81];
int i, num = 0, word = 0;
char c;
gets( string );
for ( i = 0; (c = string[i]) != ‘\0’; i++ )
if ( c == ’ ’ )
word = 0;
else if ( word == 0 )
{
word = 1;
num++;
}
printf( “一共有:%d单词\n”, num );
}
运行结果如下:
例6.9 有三个字符串,找出其中最大者。
#include <stdio.h>
#include <string.h>
int main()
{
char str[3][20];
char string[20];
int i;
for ( i = 0; i < 3; i++ )
gets( str[i] );
if ( strcmp( str[0], str[1] ) > 0 )
strcpy( string, str[0] );
else
strcpy( string, str[1] );
if ( strcmp( str[2], string ) > 0 )
strcpy( string, str[2] );
printf( “\n最大者为:%s\n”, string );
}
运行结果如下:
逆序输出。
#include<stdio.h>
#define N 5
int main()
{
int a[5];
int i,k;
printf(“原始数组为:”);
for(i=0;i<5;i++)
{ scanf("%d",&a[i]);
}
printf("逆序后的数组为:");
for(i=0;i<=N/2;i++)
{k=a[i];
a[i]=a[N-1-i];
a[N-1-i]=k;
}
for(i=0;i<5;i++)
{ printf("%2d",a[i]);
}printf("\n");
}
运行结果如下: