1. 从键盘上输入3个字符串,找出其中最大的字符串
#include <stdio.h> #include <string.h> int main ( ) { int i, j, k; char a[ 100 ] , b[ 100 ] , c[ 100 ] ; printf ( "请输入第一个字符串\n" ) ; gets ( a) ; printf ( "请输入第二个字符串\n" ) ; gets ( b) ; printf ( "请输入第三个字符串\n" ) ; gets ( c) ; i= strlen ( a) ; j= strlen ( b) ; k= strlen ( c) ; if ( ( i> j) && ( i> k) ) { printf ( "最长的字符串是" ) ; puts ( a) ; } if ( ( j> i) && ( j> k) ) { printf ( "最长的字符串是" ) ; puts ( b) ; } if ( ( k> i) && ( k> j) ) { printf ( "最长的字符串是" ) ; puts ( c) ; } }
#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" ) ; printf ( "%s\n" , string) ; return 0 ;
}
1.1 从键盘上输入3个字符串,找出其中最大的字符串
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
int getsum ( char * str) ;
char * getmax ( int num[ 3 ] ) ;
int main ( )
{ char str[ 3 ] [ 10 ] ; int indext; int len[ 3 ] ; int sum[ 3 ] ; printf ( "测试:输入3个字符串(最多9个字符):\n" ) ; scanf ( "%s" , & str[ 0 ] [ 0 ] ) ; scanf ( "%s" , & str[ 1 ] [ 0 ] ) ; scanf ( "%s" , & str[ 2 ] [ 0 ] ) ; sum[ 0 ] = strlen ( & str[ 0 ] [ 0 ] ) ; sum[ 1 ] = strlen ( & str[ 1 ] [ 0 ] ) ; sum[ 2 ] = strlen ( & str[ 2 ] [ 0 ] ) ; indext= getmax ( sum) [ 0 ] - '0' ; printf ( "ASC码值和最大的是:%s\n" , & str[ indext] [ 0 ] ) ; return 1 ;
} int getsum ( char * str)
{ int len= strlen ( str) , i, sum= 0 ; for ( i= 0 ; i< len; i++ ) { sum= sum+ ( int ) str[ i] ; } return sum;
}
char * getmax ( int num[ 3 ] )
{ char * renum= ( char * ) malloc ( sizeof ( char ) * 4 ) ; memset ( renum, 0 , 4 ) ; if ( num[ 0 ] >= num[ 1 ] && num[ 0 ] >= num[ 2 ] ) { if ( renum[ 0 ] == 0 ) renum[ 0 ] = '0' ; else if ( renum[ 1 ] == 0 ) renum[ 1 ] = '0' ; else if ( renum[ 2 ] == 0 ) renum[ 2 ] = '0' ; } if ( num[ 1 ] >= num[ 2 ] && num[ 1 ] >= num[ 0 ] ) { if ( renum[ 0 ] == 0 ) renum[ 0 ] = '1' ; else if ( renum[ 1 ] == 0 ) renum[ 1 ] = '1' ; else if ( renum[ 2 ] == 0 ) renum[ 2 ] = '1' ; } if ( num[ 2 ] >= num[ 1 ] && num[ 2 ] >= num[ 0 ] ) { if ( renum[ 0 ] == 0 ) renum[ 0 ] = '2' ; else if ( renum[ 1 ] == 0 ) renum[ 1 ] = '2' ; else if ( renum[ 2 ] == 0 ) renum[ 2 ] = '2' ; } return renum;
}
2.编写一程序,将字符数组s1和字符数组s2中的两个字符串连接起来,并且存放在数组s1中,然后再将连接后的s1中的字符串拷贝到数组s2中;
#include <stdio.h> #include <string.h> main ( ) { char str_1[ 500 ] , str_2[ 500 ] ; int i, j; printf ( "Input a string s1:\n" ) ; gets ( str_1) ; printf ( "Input a string s2:\n" ) ; gets ( str_2) ; for ( i= 0 ; str_1[ i] != '\0' ; i++ ) ; for ( j= 0 ; str_2[ j] != '\0' ; j++ ) str_1[ i+ j] = str_2[ j] ; str_1[ i+ j] = '\0' ;
for ( i= 0 ; str_1[ i] != '\0' ; i++ ) ; for ( j= 0 ; str_2[ j] != '\0' ; j++ ) str_2[ j] = str_1[ i] ; str_2[ j] = '\0' ; printf ( "str_1 is:\n%s\n" , str_1) ;
strcpy ( str_2, str_1) ;
printf ( "str_2 is:\n%s\n" , str_2) ;
}
3. 求一个4 x 4的整型矩阵的对角线元素之和
#include <stdio.h>
int main ( )
{
int i, j, a[ 4 ] [ 4 ] ;
for ( i= 0 ; i< 4 ; i++ )
{
for ( j= 0 ; j< 4 ; j++ )
{
scanf ( "%d" , & a[ i] [ j] ) ;
}
}
int sum= a[ 0 ] [ 0 ] ;
for ( i= 1 ; i< 4 ; i++ )
{
for ( j= 1 ; j< 4 ; j++ )
{
if ( i== j)
{
sum+ = a[ i] [ j] ;
}
}
}
printf ( "%d\n" , sum) ;
return 0 ;
}
4. 任意输入两个矩阵,计算矩阵的乘积
#include <stdio.h>
int main ( )
{ int i, j, k;
int matrix_2_3[ 2 ] [ 3 ] ;
int matrix_3_2[ 3 ] [ 2 ] ;
int result[ 2 ] [ 2 ] ;
printf ( "请为第一个矩阵赋值:\n" ) ;
for ( i= 0 ; i< 2 ; i++ )
{ for ( j= 0 ; j< 3 ; j++ ) { scanf ( "%d" , & matrix_2_3[ i] [ j] ) ; }
}
printf ( "请为第二个矩阵赋值:\n" ) ;
for ( i= 0 ; i< 3 ; i++ )
{ for ( j= 0 ; j< 2 ; j++ ) { scanf ( "%d" , & matrix_3_2[ i] [ j] ) ; }
}
for ( i= 0 ; i< 2 ; i++ )
{ for ( j= 0 ; j< 2 ; j++ ) { int temp = 0 ; for ( k= 0 ; k< 3 ; k++ ) { temp + = matrix_2_3[ i] [ k] * matrix_3_2[ k] [ j] ; } result[ i] [ j] = temp; }
}
printf ( "两矩阵相乘后:\n" ) ;
for ( i= 0 ; i< 2 ; i++ )
{ for ( j= 0 ; j< 2 ; j++ ) { printf ( "%d " , result[ i] [ j] ) ; } printf ( "\n" ) ;
} }
5. 输出下列杨辉三角的前10行
#include <stdio.h> main ( ) { int i, j, a[ 11 ] [ 11 ] ; for ( i = 1 ; i < 11 ; i++ ) { a[ i] [ i] = 1 ; a[ i] [ 1 ] = 1 ; } for ( i = 3 ; i < 11 ; i++ ) for ( j = 2 ; j <= i - 1 ; j++ ) a[ i] [ j] = a[ i - 1 ] [ j - 1 ] + a[ i - 1 ] [ j] ; for ( i = 1 ; i < 11 ; i++ ) { for ( j = 1 ; j <= i; j++ ) printf ( "%4d" , a[ i] [ j] ) ; printf ( "\n" ) ;
}
}