自己写的,只是留个记录,有误请指正,部分来一些优秀博主
1.输入m个浮点数,然后按升序进行排序并输出。
# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
# include <stdlib.h>
# define MAX 100
void Num_input ( float data[ ] , int m)
{
int i;
for ( i = 0 ; i < m; i++ )
{
scanf ( "%f" , & data[ i] ) ;
}
}
void Num_sort ( float data[ ] , int m)
{
int i, j;
float temp;
for ( i = 0 ; i < m - 1 ; i++ )
{
for ( j = 0 ; j < m - 1 - i; j++ )
{
if ( data[ j] > data[ j + 1 ] )
{
temp = data[ j] ;
data[ j] = data[ j + 1 ] ;
data[ j + 1 ] = temp;
}
}
}
}
void Num_output ( float data[ ] , int m)
{
int i;
for ( i = 0 ; i < m; i++ )
{
printf ( "%.2f\t" , data[ i] ) ;
}
}
int main ( )
{
float num[ MAX] ;
int n;
printf ( "请输入浮点数个数n:" ) ;
scanf ( "%d" , & n) ;
if ( n< 1 || n> MAX)
{
printf ( "n不合法,应在[1,%d]\n" , MAX) ;
exit ( 0 ) ;
}
printf ( "\n请输入%d个浮点数.....\n" , n) ;
Num_input ( num, n) ;
printf ( "排序前:\n" ) ;
Num_output ( num, n) ;
Num_sort ( num, n) ;
printf ( "\n排序后:\n" ) ;
Num_output ( num, n) ;
printf ( "\n" ) ;
return 0 ;
}
2.输入10个整数,找出与平均值最接近的数并输出。
# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
# include <math.h>
# define N 10
void num_input ( int data[ ] , int n)
{
int i;
printf ( "请输入%d个整数:\n" , n) ;
for ( i = 0 ; i < n; i++ )
{
scanf ( "%d" , & data[ i] ) ;
}
}
float ave_cal ( int data[ ] , int n)
{
int i, sum = 0 ;
float aver;
for ( i = 0 ; i < n; i++ )
{
sum += data[ i] ;
}
aver = sum * 1.0 / n;
return aver;
}
int close_aver ( int data[ ] , int n)
{
float average = ave_cal ( data, n) ;
int close_ave_num = fabs ( data[ 0 ] - average) ;
int i, loca = 0 ;
for ( i = 1 ; i < n; i++ )
{
float temp = fabs ( data[ i] - average) ;
if ( temp < close_ave_num)
{
close_ave_num = temp;
loca = i ;
}
}
return data[ loca] ;
}
int main ( )
{
int num[ N] , local = 0 , close_ave_num;
float ave;
num_input ( num, N) ;
ave = ave_cal ( num, N) ;
close_ave_num = close_aver ( num, N) ;
printf ( "ave = %.2f\n" , ave) ;
printf ( "close_ave_num = %d \n" , close_ave_num) ;
printf ( "\n" ) ;
return 0 ;
}
3.找出二维数组中的最大值和最小值,并给出对应下标值。
# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
# define ROW 2
# define COLUM 3
void seek_max_min ( int a[ ] [ COLUM] )
{
int i, j;
int row = 0 , colum = 0 ;
int min, max;
max = a[ 0 ] [ 0 ] ;
for ( i = 0 ; i < ROW; i++ )
{
for ( j = 0 ; j < COLUM; j++ )
{
if ( a[ i] [ j] > max)
{
max = a[ i] [ j] ;
row = i;
colum = j;
}
}
}
printf ( "最大值为:%5d\n所在行为:%5d\n所在列为:%5d\n\n" , max, row + 1 , colum + 1 ) ;
min = a[ 0 ] [ 0 ] ;
for ( i = 0 ; i < ROW; i++ )
{
for ( j = 0 ; j < COLUM; j++ )
{
if ( a[ i] [ j] < min)
{
min = a[ i] [ j] ;
row = i;
colum = j;
}
}
}
printf ( "最小值为:%5d\n所在行为:%5d\n所在列为:%5d\n\n" , min, row + 1 , colum + 1 ) ;
}
void seek_max_min ( int a[ ] [ COLUM] ) ;
int main ( )
{
int a[ ROW] [ COLUM] ;
int i, j;
printf ( "请输入%d行%d列二维数组的总计%d个数据(用空格隔开):\n" , ROW, COLUM, ROW * COLUM) ;
for ( i = 0 ; i < ROW; i++ )
{
for ( j = 0 ; j < COLUM; j++ )
{
scanf ( "%d" , & a[ i] [ j] ) ;
}
}
printf ( "输入的数组为:\n" ) ;
for ( i = 0 ; i < ROW; i++ )
{
for ( j = 0 ; j < COLUM; j++ )
{
printf ( "%5d" , a[ i] [ j] ) ;
}
printf ( "\n" ) ;
}
printf ( "\n" ) ;
seek_max_min ( a) ;
return 0 ;
}
4.输入一个m行n列的矩阵,输出各行与各列的元素之和。
# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
# define ROW 3
# define COLUM 2
void calc_sumRow_sumColu ( int a[ ] [ COLUM] )
{
int sumRow[ ROW] = { 0 } ;
int sumColu[ COLUM] = { 0 } ;
int i, j;
for ( i = 0 ; i < ROW; i++ )
{
for ( j = 0 ; j < COLUM; j++ )
{
sumRow[ i] += a[ i] [ j] ;
sumColu[ j] += a[ i] [ j] ;
}
}
for ( i = 0 ; i < ROW; i++ )
{
printf ( "第%d行和为:%d\n" , i + 1 , sumRow[ i] ) ;
}
printf ( "\n" ) ;
for ( j = 0 ; j < COLUM; j++ )
{
printf ( "第%d列和为:%d\n" , j + 1 , sumColu[ j] ) ;
}
}
int main ( )
{
int i, j;
int a[ ROW] [ COLUM] ;
printf ( "请输入%d行%d列二维数组的总计%d个数据(用空格隔开):\n" , ROW, COLUM, ROW * COLUM) ;
for ( i = 0 ; i < ROW; i++ )
{
for ( j = 0 ; j < COLUM; j++ )
{
scanf ( "%d" , & a[ i] [ j] ) ;
}
}
printf ( "输入的矩阵为:\n" ) ;
for ( i = 0 ; i < ROW; i++ )
{
for ( j = 0 ; j < COLUM; j++ )
{
printf ( "%5d" , a[ i] [ j] ) ;
}
printf ( "\n" ) ;
}
printf ( "\n" ) ;
calc_sumRow_sumColu ( a) ;
return 0 ;
}
5.输入3个字符串,找出其中最大的字符串。
# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
# include <string.h>
# define ROW 3
int main ( )
{
char str[ ROW] [ 60 ] ;
char string[ 60 ] ;
printf ( "请输入%d个字符串:\n" , ROW) ;
int i;
for ( i = 0 ; i < ROW; i++ )
{
gets_s ( 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) ;
printf ( "\n" ) ;
return 0 ;
}
6.自编写字符串复制函数(功能与strcpy完全一样)。
# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
# include <string.h>
# define M 100
int main ( )
{
char s1[ M] = { 'a' , 'c' , 'e' , 'h' , 'z' , 't' } ;
char s2[ M] ;
printf ( "原字符串为:%s\n" , s1) ;
printf ( "\n请输入需要进行复制的字符串:" ) ;
scanf ( "%s" , s2) ;
int lens1 = strlen ( s1) ;
int i;
for ( i = 0 ; i <= strlen ( s2) ; i++ )
{
int m = lens1 + i;
s1[ m] = s2[ i] ;
}
printf ( "\n复制过后的新字符串为:%s\n" , s1) ;
return 0 ;
}
7.编程将一个输入的ASCII数字串转换成对应的整数(数字串对应的数的范围不超过32位整数的值的范围)。
# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
int myatoi ( char a[ ] )
{
int res = 0 , i = 0 ;
while ( a[ i] != '\0' )
{
res = a[ i] - '0' + res * 10 ;
i++ ;
}
return res;
}
int main ( )
{
char str[ ] = "221225" ;
printf ( "%d\n" , myatoi ( str) ) ;
printf ( "\n" ) ;
return 0 ;
}