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);
}
}
}
}