1.分解质因数
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
。 分析:1. 对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: 2. 如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 3. 如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 4. 如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
#include "stdio.h"
#include "conio.h"
main ( )
{
int n, i;
printf ( "\nplease input a number:\n" ) ;
scanf ( "%d" , & n) ;
printf ( "%d=" , n) ;
for ( i= 2 ; i<= n; i++ )
while ( n!= i)
{
if ( n% i== 0 )
{
printf ( "%d*" , i) ;
n= n/ i;
}
else
break ;
}
printf ( "%d" , n) ;
getch ( ) ;
}
2.求公约数
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 分析:利用辗除法。
#include "stdio.h"
main ( )
{
int a, b, num1, num2, temp;
printf ( "please input two numbers:\n" ) ;
scanf ( "%d,%d" , & num1, & num2) ;
if ( num1< num2)
{
temp= num1;
num1= num2;
num2= temp;
}
a= num1; b= num2;
while ( b!= 0 )
{
temp= a% b;
a= b;
b= temp;
}
printf ( "gongyueshu:%d\n" , a) ;
printf ( "gongbeishu:%d\n" , num1* num2/ a) ;
}
3.统计字符
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
#include "stdio.h"
main ( )
{
char c;
int letters= 0 , space= 0 , digit= 0 , others= 0 ;
printf ( "please input some characters\n" ) ;
while ( ( c= getchar ( ) ) != '\n' )
{
if ( c>= 'a' && c<= 'z' || c>= 'A' && c<= 'Z' )
letters++ ;
else if ( c== ' ' )
space++ ;
else if ( c>= '0' && c<= '9' )
digit++ ;
else
others++ ;
}
printf ( "all in all:char=%d space=%d digit=%d others=%d\n" , letters,
space, digit, others) ;
}
4.数字累加
题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222
(此时共有5个数相加),几个数相加有键盘控制。
#include "stdio.h"
#include "conio.h"
main ( )
{
int a, n, count= 1 ;
long int sn= 0 , tn= 0 ;
printf ( "please input a and n\n" ) ;
scanf ( "%d,%d" , & a, & n) ;
printf ( "a=%d,n=%d\n" , a, n) ;
while ( count<= n)
{
tn= tn+ a;
sn= sn+ tn;
a= a* 10 ;
++ count;
}
printf ( "a+aa+...=%ld\n" , sn) ;
getch ( ) ;
}
5.查找完数
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数
#include "stdio.h"
int main ( )
{
static int k[ 10 ] ;
int i, j, n, s;
for ( j= 2 ; j< 1000 ; j++ )
{
n= - 1 ;
s= j;
for ( i= 1 ; i< j; i++ )
{
if ( ( j% i) == 0 )
{
n++ ;
s= s- i;
k[ n] = i;
}
}
if ( s== 0 )
{
printf ( "%d is a wanshu" , j) ;
for ( i= 0 ; i< n; i++ )
printf ( "%d," , k[ i] ) ;
printf ( "%d\n" , k[ n] ) ;
}
}
}
6.猴子吃桃
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
#include "stdio.h"
main ( )
{
int day, x1, x2;
day= 9 ;
x2= 1 ;
while ( day> 0 )
{
x1= ( x2+ 1 ) * 2 ;
x2= x1;
day-- ;
}
printf ( "the total is %d\n" , x1) ;
}
7.求解方程
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
#include "stdio.h"
main ( )
{
char i, j, k;
for ( i= 'x' ; i<= 'z' ; i++ )
for ( j= 'x' ; j<= 'z' ; j++ )
{
if ( i!= j)
for ( k= 'x' ; k<= 'z' ; k++ )
{
if ( i!= k&& j!= k)
{
if ( i!= 'x' && k!= 'x' && k!= 'z' )
printf ( "order is a--%c\tb--%c\tc--%c\n" , i, j, k) ;
}
}
}
}
8.打印棱形
题目:打印出如下图案(菱形),(扩展:矩形,三角形,圆形)
*
***
*****
*******
*****
***
*
#include "stdio.h"
int main ( )
{
int i, j, k;
for ( i= 0 ; i<= 3 ; i++ )
{
for ( j= 0 ; j<= 2 - i; j++ )
printf ( " " ) ;
for ( k= 0 ; k<= 2 * i; k++ )
printf ( "*" ) ;
printf ( "\n" ) ;
}
for ( i= 0 ; i<= 2 ; i++ )
{
for ( j= 0 ; j<= i; j++ )
printf ( " " ) ;
for ( k= 0 ; k<= 4 - 2 * i; k++ )
printf ( "*" ) ;
printf ( "\n" ) ;
}
}
9. 求解数列
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
#include "stdio.h"
main ( )
{
int n, t, number= 20 ;
float a= 2 , b= 1 , s= 0 ;
for ( n= 1 ; n<= number; n++ )
{
s= s+ a/ b;
t= a; a= a+ b; b= t;
}
printf ( "sum is %9.6f\n" , s) ;
}
10.计算阶乘
#include "stdio.h"
main ( )
{
float n, s= 0 , t= 1 ;
for ( n= 1 ; n<= 20 ; n++ )
{
t*= n;
s+= t;
}
printf ( "1+2!+3!...+20!=%e\n" , s) ;
}