c语言练习

可以搜索一下编程的妙处。

-

程序1

题目:经典问题:有一对兔子。他们从出生后的第三个月开始,每个月生一对兔子,兔子长到第三个月。

之后,每个月都有一对兔子出生。如果兔子不死,每个月兔子总数是多少?

1.程序分析:兔子的规律是1,1,2,3,5,8,13,21的序列。....

2.程序源代码:

主()

{

long f1,F2;

int I;

f 1 = F2 = 1;

for(I = 1;我& lt=20;i++)

{ printf(" % 12ld % 12ld ",f1,F2);

if(I % 2 = = 0)printf(" \ n ");/*控制输出,每行四个*/

f 1 = f 1+F2;/*将前两个月相加,分配给第三个月*/

F2 = f 1+F2;/*将前两个月相加,分配给第三个月*/

}

}

==============================================================

程序2

题目:判断101-200之间有多少素数,输出所有素数。

1.程序分析:判断素数的方法:用一个数除2到sqrt(这个数),如果能整除,

意味着这个数不是质数,而是质数。

2.程序源代码:

#包含“math.h”

主()

{

int m,I,k,h=0,leap = 1;

printf(" \ n ");

for(m = 101;m & lt=200;m++)

{ k = sqrt(m+1);

for(I = 2;我& lt= k;i++)

如果(m%i==0)

{ leap = 0;打破;}

if(leap) {printf("%-4d ",m);h++;

if(h%10==0)

printf(" \ n ");

}

leap = 1;

}

printf(" \ n总数为%d ",h);

}

==============================================================

程序3

标题:打印出所有的“水仙号”。所谓“水仙花数”是指一个三位数,其位数的立方和等于这个数。

本身。例如,153是一个“水仙花数”,因为153=1立方+5立方+3立方。

1.程序分析:用for循环控制100-999的数,每个数分解成个位、十位、百位。

2.程序源代码:

主()

{

int i,j,k,n;

printf(“‘水花’号为:“);

for(n = 100;n & lt1000;n++)

{

I = n/100;/*分解成几百个*/

j = n/10% 10;/*分解成十位数*/

k = n % 10;/*分解成比特*/

if(I * 100+j * 10+k = = I * I * I+j * j * j+k * k * k)

{

printf("%-5d ",n);

}

}

printf(" \ n ");

}

==============================================================

程序4

题目:将一个正整数分解成质因数。例如,输入90,打印90=2*3*3*5。

程序分析:分解n的质因数,首先要找到一个最小的质数k,然后按照以下步骤完成:

(1)如果这个质数刚好等于n,说明分解质因数的过程结束了,打印出来就行了。

(2)如果n

重复第一步。

(3)如果n不能被k整除,用k+1作为k的值,重复第一步。

2.程序源代码:

/*郑int被瓜分*/

主()

{

int n,I;

printf(" \ n请输入一个数字:\ n ");

scanf("%d ",& ampn);

printf("%d= ",n);

for(I = 2;我& lt= n;i++)

{

而(n!=i)

{

如果(n%i==0)

{ printf("%d* ",I);

n = n/I;

}

其他

打破;

}

}

printf("%d ",n);}

==============================================================

计划5

题目:利用条件运算符的嵌套完成此题:学习成绩>;= 90分的同学用A表示,60-89分的同学用B表示,

60分以下的用c表示。

1.程序分析:(a & gtb)?这是一个条件操作符的基本例子。

2.程序源代码:

主()

{

int分数;

炭化等级;

printf("请输入分数\ n ");

scanf("%d ",& amp分数);

等级=分数& gt=90?a ':(分数& gt=60?b ':' C ');

printf("%d属于%c ",分数,等级);

}

==============================================================

程序6

题目:输入两个正整数M和N,求它们的最大公约数和最小公倍数。

1.程序分析:使用滚动除法。

2.程序源代码:

主()

{

int a,b,num1,num2,temp

printf("请输入两个数字:\ n ");

scanf("%d,%d ",& ampnum1。num 2);

if(num 1 { temp = num 1;

num 1 = num 2;

num2 = temp

}

a = num 1;b = num2

而(b!=0)/*使用滚动除法,直到b为0 */

{

temp = a % b;

a = b;

b =温度;

}

printf("gongyueshu:%d\n ",a);

printf("拱北舒:%d\n ",num 1 * num 2/a);

}

==============================================================

程序7

题目:输入一行字符,统计英文字母、空格、数字等字符的个数。

1.程序分析:使用while语句,前提是输入字符不是' \n '。

2.程序源代码:

#包含“stdio.h”

主()

{ char c;

int字母=0,空格=0,数字=0,其他= 0;

printf("请输入一些字符\ n ");

while((c=getchar())!='\n ')

{

if(c & gt;= ' a ' & amp& ampc & lt= ' z ' | | c & gt= ' A ' & amp& ampc & lt='Z ')

字母++;

else if(c== ' ')

space++;

else if(c & gt;= ' 0 ' & amp& ampc & lt='9')

digit++;

其他

其他++;

}

printf(" all in all:char = % d space = % d digit = % d others = % d \ n ",字母,

空格、数字、其他);

}

==============================================================

程序8

题目:求s=a+aa+aaa+aaaa+aa的值...A,其中A是一个数。例如2+22+222+2222+22222(此时

* * *加了五个数字),几个数字的相加由键盘控制。

1.程序分析:关键是计算每一项的价值。

2.程序源代码:

主()

{

int a,n,count = 1;

long int sn=0,TN = 0;

printf("请输入a和n \ n ");

scanf("%d,%d ",& amp一,& ampn);

printf("a=%d,n=%d\n ",a,n);

while(count & lt;=n)

{

TN = TN+a;

sn = sn+TN;

a = a * 10;

++计数;

}

printf("a+aa+...=%ld\n ",序列号);

}

==============================================================

程序9

题目:如果一个数恰好等于它的因子之和,则称为“完全数”。比如6 = 1+2+3。编程;编排

找出1000以内的所有完全数。

1.方案分析:请参考方案

2.程序源代码:

主()

{

静态int k[10];

int i,j,n,s;

for(j = 2;j & lt1000;j++)

{

n =-1;

s = j;

for(I = 1;我{

如果((j%i)==0)

{ n++;

s = s-I;

k[n]= I;

}

}

如果(s==0)

{

printf("%d是一个万树",j);

for(I = 0;i printf("%d ",k[I]);

printf("%d\n ",k[n]);

}

}

}

==============================================================

程序10

题目:一个球从100米的高度自由落体,每次落地后反弹回原来高度的一半;再次坠落,要求它在那里。

* * *第10次落地时过了多少米?10的反弹有多高?

1.程序分析:参见下面的注释。

2.程序源代码:

主()

{

float sn=100.0,HN = sn/2;

int n;

for(n = 2;n & lt=10;n++)

{

sn = sn+2 * HN;/*第n次落地时* * *通过的米数*/

HN = HN/2;/*第n次反弹的高度*/

}

printf("道路合计为%f\n ",sn);

printf("第十个是%f米\n ",HN);

}

程序11

题目:有1,2,3,4个数。你能编多少个不同的三位数?它们一共多少钱?

1.程序分析:能填百、十、单位的数都是1、2、3、4。走之前把所有的事情都安排好

删除不符合条件的安排。

2.程序源代码:

主()

{

int i,j,k;

printf(" \ n ");

for(I = 1;我& lt5;I++)/*以下是三重循环*/

for(j = 1;j & lt5;j++)

for(k = 1;k & lt5;k++)

{

如果(我!= k & amp& amp我!= j & amp& ampj!=k) /*确保I、J和K互不相同*/

printf("%d,%d,%d\n ",I,j,k);

}

}

==============================================================

程序12

题目:企业发奖金是以利润为基础的。利润(I)小于或等于654.38+万元时,可增加奖金654.38+00%;高利润

654.38+万元时,不足20万元的,654.38+万元以下部分支付654.38+00%的佣金,654.38+万元以上部分可提。

7.5%;20-40万元之间,20万元以上部分可扣除5%;40万到60万之间高于

40万元的部分可以扣除3%;60万元至654.38+0万元之间,60万元以上部分可抵扣654.38+0.5%,高于。

1万元时,超过1万元的部分扣除1%。从键盘输入当月的利润I,要求支付奖金总额。

1.程序分析:请用数轴标定定位。注意,奖金应该被定义为一个增长整数。

2.程序源代码:

主()

{

long int I;

int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;

scanf("%ld ",& ampI);

bonus 1 = 100000 * 0.1;bonus 2 = bonus 1+100000 * 0.75;

bonus 4 = bonus 2+200000 * 0.5;

bonus 6 = bonus 4+200000 * 0.3;

bonus 10 = bonus 6+400000 * 0.15;

如果(我& lt=100000)

奖金= I * 0.1;

else if(I & lt;=200000)

bonus = bonus 1+(I-100000)* 0.075;

else if(I & lt;=400000)

bonus = bonus 2+(I-200000)* 0.05;

else if(I & lt;=600000)

bonus = bonus 4+(I-400000)* 0.03;

else if(I & lt;=1000000)

bonus = bonus 6+(I-600000)* 0.015;

其他

bonus = bonus 10+(I-1000000)* 0.01;

printf("奖金=%d ",奖金);

}

==============================================================

程序13

题目:一个整数,加100后是一个完整的平方数,加168后是一个完整的平方数。数字是多少?

1.方案分析:如果判断在65438+百万以内,开药前在这个数上加100,再开药前在这个数上加268。如果是规定的,

的结果满足以下条件,就是结果。请看具体分析:

2.程序源代码:

#包含“math.h”

主()

{

long int i,x,y,z;

for(I = 1;我& lt100000;i++)

{ x = sqrt(I+100);/*x是处方加100后的结果*/

y = sqrt(I+268);/*y是168相加后的结果*/

if(x * x = = I+100 & amp;& ampY*y==i+268)/*如果一个数的平方根的平方等于该数,则说明该数是完全平方数*/

printf("\n%ld\n ",I);

}

}

==============================================================

程序14

题目:输入某年的某一天,决定这一天是一年中的哪一天。

1.方案分析:以3月5日为例,先把前两个月加起来,再加5天,就是今年的这一天,比较特殊。

如果是闰年,输入月份大于3,应考虑多加一天。

2.程序源代码:

主()

{

int日、月、年、和、闰;

printf(" \ n请输入年、月、日\ n ");

scanf("%d,%d,%d ",& amp年份& amp月份& amp天);

Switch(month)/*计算某个月之前一个月的总天数*/

{

案例1:sum = 0;打破;

情况二:sum = 31;打破;

案例三:sum = 59打破;

情况四:sum = 90打破;

情况5:sum = 120;打破;

案例6:sum = 151;打破;

案例7:sum = 181;打破;

案例8:sum = 212;打破;

案例9:sum = 243;打破;

案例10:sum = 273;打破;

案例11:sum = 304;打破;

案例12:sum = 334;打破;

默认值:printf("数据错误");打破;

}

总和=总和+天;/*加上一天中的天数*/

if(year % 400 = = 0 | |(year % 4 = = 0 & amp;& amp年份%100!=0))/*判断是否是闰年*/

leap = 1;

其他

闰= 0;

if(leap = = 1 & amp;& amp月份& gt2)/*如果是闰年,月份大于2,总天数要加一天*/

sum++;

printf("今天是第%dth天。",sum);}

==============================================================

程序15

题目:输入三个整数x,Y,z Y,Z,请从小到大输出这三个数。

1.程序分析:我们尽量把最小的数放在X上,先比较X和Y。如果X >;交换x和y的值,

然后比较x和z,如果x >;z交换x和z的值,可以使x最小。

2.程序源代码:

主()

{

int x,y,z,t;

scanf("%d%d%d ",& ampx & amp;y & amp;z);

if(x & gt;y)

{ t = x;x = y;y = t;}/*交换x和y的值*/

if(x & gt;z)

{ t = z;z = x;x = t;}/*交换x和z的值*/

如果(y & gtz)

{ t = y;y = z;z = t;}/*交换z和y的值*/

printf("从小到大:%d %d %d\n ",x,y,z);

}

==============================================================

程序16

标题:用*输出字母C的图案。

1.程序分析:可以先用' * '在纸上写字母C,然后逐行输出。

2.程序源代码:

#包含“stdio.h”

主()

{

printf("你好C-world!\ n ");

printf(" * * * * \ n ");

printf(" * \ n ");

printf(" * \ n ");

printf(" * * * * \ n ");

}

==============================================================

程序17

题目:输出特殊图案,请在C环境下运行看看,非常漂亮!

1.程序分析:有256个字符* * *。不同的角色,不同的图形。

2.程序源代码:

#包含“stdio.h”

主()

{

char a=176,b = 219;

printf("%c%c%c%c%c\n ",b,a,a,a,b);

printf("%c%c%c%c%c\n ",a,b,a,b,a);

printf("%c%c%c%c%c\n ",a,a,b,a,a);

printf("%c%c%c%c%c\n ",a,b,a,b,a);

printf("%c%c%c%c%c\n ",b,a,a,a,b);}

==============================================================

程序18

标题:输出9*9公式。

1.程序分析:分支列考虑,***9行9列,I控制行,J控制列。

2.程序源代码:

#包含“stdio.h”

主()

{

int i,j,result

printf(" \ n ");

for(I = 1;我& lt10;i++)

{ for(j = 1;j & lt10;j++)

{

结果= I * j;

printf("%d*%d=%-3d ",I,j,result);/*-3d表示左对齐,占3位数*/

}

printf(" \ n ");/*每行后换行*/

}

}

==============================================================

计划19

标题:要求输出棋盘。

1.程序分析:用I控制行,用J控制列,根据I+J之和的变化控制输出黑方块还是白方块。

2.程序源代码:

#包含“stdio.h”

主()

{

int i,j;

for(I = 0;我& lt8;i++)

{

for(j = 0;j & lt8;j++)

如果((i+j)%2==0)

printf("%c%c ",219,219);

其他

printf(" ");

printf(" \ n ");

}

}

==============================================================

计划20

标题:打印楼梯,同时在楼梯顶端打印两张笑脸。

1.程序分析:I控制行,J控制列,J根据I的变化控制输出黑方块的个数。

2.程序源代码:

#包含“stdio.h”

主()

{

int i,j;

printf(" \ 1 \ 1 \ n ");/*输出两张笑脸*/

for(I = 1;我& lt11;i++)

{

for(j = 1;j & lt= I;j++)

printf("%c%c ",219,219);

printf(" \ n ");

}

}

程序21

题目:猴子吃桃子:第一天,猴子摘了许多桃子,马上吃了一半。他不上瘾,又吃了一个。

第二天早上,我吃了一半剩下的桃子,又吃了一个。我每天早上都吃前一天的剩菜。

一半和一。10早上,再想吃的时候,看到只剩下一个桃子。问你第一天摘了多少。

1.程序分析:采用逆向思维的方法,由后向前推断。

2.程序源代码:

主()

{

int day,x1,x2;

日= 9;

x2 = 1;

while(day & gt;0)

{ x 1 =(x2+1)* 2;/*第一天的桃子数是第二天桃子数的两倍加上1 */

x2 = x 1;

日-;

}

printf("合计为%d\n ",x 1);

}

==============================================================

计划22

题目:两支乒乓球队比赛,每队三名队员。A队由A、B、C三个人组成,B队由x、Y、z、Y、z三个人组成,已经抽签决定了

比赛名单。有人问球员关于比赛的名单。a说他不会跟X比,C说他不会跟X和z比,请做个程序了解一下。

第三队选手的名单。

1.程序分析:判断素数的方法:用一个数除2到sqrt(这个数),如果能整除,

意味着这个数不是质数,而是质数。

2.程序源代码:

主()

{

char i,j,k;/*i是A的对手,J是B的对手,K是C的对手*/

for(I = ' x ');我& lt= ' zi++)

for(j = ' x ');j & lt= ' zj++)

{

如果(我!=j)

for(k = ' x ');k & lt= ' zk++)

{如果(我!= k & amp& ampj!=k)

{如果(我!= ' x ' & amp& ampk!= ' x ' & amp& ampk!='z ')

printf("order是a - %c\tb - %c\tc - %c\n ",I,j,k);

}

}

}

}