7.12 求第N项的值
# include <stdio.h>
int f ( int n)
{
if ( n== 1 || n== 2 )
return 1 ;
if ( n& 1 )
return ( f ( n- 1 ) - f ( n- 2 ) ) ;
else
return ( f ( n- 1 ) + f ( n- 2 ) ) ;
}
void main ( )
{
int n;
printf ( "输入N:" ) ;
scanf ( "%d" , & n) ;
printf ( "第n项是%d" , f ( n) ) ;
}
7.7 长整型截短
# include <stdio.h>
void fun ( unsigned long * n)
{ unsigned long x= 0 , i; int t;
i= 1 ;
while ( * n)
{ t= * n % 10 ;
if ( t% 2 )
{ x= x+ t* i; i= i* 10 ; }
* n = * n / 10 ;
}
* n= x;
}
int main ( )
{ unsigned long n= - 1 ;
while ( n> 99999999 || n< 0 )
{ printf ( "Please input(0<n<100000000): " ) ;
scanf ( "%ld" , & n) ; }
fun ( & n) ;
printf ( "\nThe result is: %ld\n" , n) ;
}
8.01 排序与查找
# include <stdio.h>
# define N 70
int ReadScore ( int score[ ] ) ;
void DataSort ( int score[ ] , int n) ;
void PrintScore ( int score[ ] , int n) ;
int main ( )
{
int score[ N] , n;
n = ReadScore ( score) ;
printf ( "Total students are %d\n" , n) ;
DataSort ( score, n) ;
printf ( "Sorted scores:" ) ;
PrintScore ( score, n) ;
return 0 ;
}
int ReadScore ( int score[ ] )
{
int i = - 1 ;
do
{
i++ ;
printf ( "Input score:" ) ;
scanf ( "%d" , & score[ i] ) ;
}
while ( score[ i] >= 0 ) ;
return i;
}
void DataSort ( int score[ ] , int n)
{
int i, j, temp;
for ( i = 0 ; i < n - 1 ; i++ )
{
for ( j = i + 1 ; j < n; j++ )
{
if ( score[ j] > score[ i] )
{
temp = score[ j] ;
score[ j] = score[ i] ;
score[ i] = temp;
}
}
}
}
void PrintScore ( int score[ ] , int n)
{
int i;
for ( i = 0 ; i < n; i++ )
{
printf ( "%4d" , score[ i] ) ;
}
printf ( "\n" ) ;
}
5.21 判断字符类型
# include <stdio.h>
void main ( )
{
char c;
printf ( "请输入一个字符\n" ) ;
c= getchar ( ) ;
if ( c>= '0' && c<= '9' )
printf ( "%c是figure\n" , c) ;
else if ( c>= 'A' && c<= 'Z' )
printf ( "%c是captial\n" , c) ;
else if ( c>= 'a' && c<= 'z' )
printf ( "%c是lowercase\n" , c) ;
else
printf ( "%c是other\n" , c) ;
}
5.16 计算一元二次方程的根
# include <stdio.h>
# include <math.h>
float main ( )
{
float a, b, c, x1, x2, flag= 0 ;
scanf ( "%f,%f,%f" , & a, & b, & c) ;
if ( a!= 0 )
{
flag= b* b- 4 * a* c;
if ( flag< 0 )
printf ( "No real roots." ) ;
if ( flag>= 0 )
{
x1= ( - b+ sqrt ( flag) ) / ( 2 * a) ;
x2= ( - b- sqrt ( flag) ) / ( 2 * a) ;
printf ( "x1=%.0f,x2=%.0f" , x1, x2) ;
}
}
else
printf ( "Not quadratic equation with one unknown." ) ;
}