循环编程题及解文档格式.docx
《循环编程题及解文档格式.docx》由会员分享,可在线阅读,更多相关《循环编程题及解文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
{
sum=sum+1;
printf("
%d%d%d\n"
i,j,k);
}
}
sumis%d\n"
sum);
return0;
}
【程序2】
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
请看具体分析:
#include"
math.h"
longinti,x,y,z;
for(i=1;
100000;
i++)
{
x=sqrt(i+100);
/*x为加上100后开方后的结果*/
y=sqrt(i+268);
/*y为再加上168后开方后的结果*/
if(x*x==i+100&
y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
printf("
\n%ld"
i);
}
return0;
【程序3】
打印出杨辉三角形(要求打印出10行如下图)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
inti,j;
inta[10][10];
for(i=0;
10;
{
a[i][0]=1;
a[i][i]=1;
for(i=2;
i;
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(j=0;
=i;
%5d"
a[i][j]);
printf("
【程序4】
输出9*9口诀。
分行与列考虑,共9行9列,i控制行,j控制列。
inti,j,result;
{
result=i*j;
%d*%d=%-3d"
i,j,result);
/*-3d表示左对齐,占3位*/
}
/*每一行后换行*/
【程序5】
两个乒乓球队进行比赛,各出三人。
甲队为a、b,、c三人,乙队为x,、y、z三人。
已抽签决定比赛名单。
有人向队员打听比赛的名单。
a说他不和x比,c说他不和x、,z比,请编程序找出三队赛手的名单。
main()
chari,j,k;
/*i是a的对手,j是b的对手,k是c的对手*/
for(i='
x'
;
='
z'
for(j='
if(i!
=j)
for(k='
{if(i!
=k)
{if(i!
k!
)
printf("
orderisa--%c\tb--%c\tc--%c\n"
}
}
}
==============================================================
【程序6】
打印出如下图案(菱形)
*
***
******
********
先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
=3;
=2-i;
"
for(k=0;
=2*i;
*"
=2;
=4-2*i;
【程序7】
每个苹果0.8元,第一天买2个苹果,第二天开始买前一天的2倍,直至购买的苹果个数达到不超过100的最大值。
编写程序求每天平均花多少钱。
参考程序:
{intday=0,buy=2;
floatsum=0,ave;
do
{sum=sum+0.8*buy;
day++;
buy=buy*2;
}while(buy<
=100);
ave=sum/day;
average=%f\n"
ave);
【程序8】
判断101-200之间有多少个素数,并输出所有素数。
判断素数的方法:
用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
intm,i,k,h=0,leap=1;
for(m=101;
m<
=200;
m++)
k=sqrt(m+1);
for(i=2;
=k;
if(m%i==0)
leap=0;
break;
if(leap)
%-4d"
m);
h++;
if(h%10==0)
printf("
leap=1;
\nThetotalis%d\n"
h);
return1;
【程序9】
打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如:
153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
利用for循环控制100-999个数,每个数分解出个位,十位,百位。
inti,j,k,n;
printf("
'
waterflower'
numberis:
"
for(n=100;
n<
1000;
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)
{
%-5d"
n);
【程序10】
将一个正整数分解质因数。
输入90,打印出90=2*3*3*5。
程序分析:
对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<
>
k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
/*zhengintisdividedyinshu*/
intn,i;
\npleaseinputanumber:
scanf("
%d"
&
n);
%d="
=n;
while(n!
=i)
if(n%i==0)
%d*"
n=n/i;
else
break;
%d\n"
【程序11】
输入两个正整数m和n,求其最大公约数和最小公倍数。
利用辗除法。
inta,b,num1,num2,temp;
pleaseinputtwonumbers:
%d,%d"
num1,&
num2);
if(num1>
num2)
temp=num1;
num1=num2;
num2=temp;
a=num1;
b=num2;
while(b!
=0)/*利用辗除法,直到b为0为止*/
temp=a%b;
a=b;
b=temp;
gongyueshu:
a);
gongbeishu:
num1*num2/a);
【程序12】
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
利用while语句,条件为输入的字符不为'
\n'
.
charc;
intletters=0,space=0,digit=0,others=0;
pleaseinputsomecharacters\n"
while((c=getchar())!
if(c>
a'
c<
||c>
A'
Z'
letters++;
elseif(c=='
'
space++;
elseif(c>
0'
9'
digit++;
else
others++;
thecharacterinall:
char=%dspace=%ddigit=%dothers=%d\n"
letters,space,digit,others);
【程序13】
一球从100米高度自由落下,每次落地后反跳回原高度的一半;
再落下,求它在第10次落地时,共经过多少米?
第10次反弹多高?
见下面注释
floatsn=100.0,hn=sn/2;
intn;
for(n=2;
=10;
sn=sn+2*hn;
/*第n次落地时共经过的米数*/
hn=hn/2;
/*第n次反跳高度*/
thetotalofroadis%f\n"
sn);
thetenthis%fmeter\n"
hn);
【程序14】
海滩上有一堆桃子,五只猴子来分。
第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。
第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
分析:
设x个桃子,因为第一只猴子拿一个扔入海中,正好可以分成5堆,所以,(x-1)mod5=0,
第一个猴子就拿了其中一堆,就是(x-1)*(1/5),剩下的桃子为:
4/5*(x-1)
第二只猴子又拿走了一堆(同样,包括老猴子的一个),同理,第三,第四和第五。
假设n=5,最后,剩下的桃子是(x-1)*(4/5)*(4/5)*(4/5)*(4/5)*(4/5)=(x-1)*(4/5)^5,这应该是个整数.
inttemp,total_num=1;
intkk=0;
inti;
while
(1)
total_num+=5;
temp=total_num;
for(i=1;
=5;
{
if((temp-1)%5!
=0)
kk=(temp-1)/5;
//每个猴子获得的桃子树
temp=temp-1-kk;
//每次拿后剩下的桃子树4*(temp-1)/5
if(i>
5)//说明每个猴子获得的桃子树都为整数
break;
thetotalis%d\n"
total_num);
【程序15】
判断一个素数是否能被999整除
math.h>
intk,n,i,count=0;
intflag;
while
(1)
k=sqrt(n);
flag=0;
{
flag=1;
//说明不是素数
if(flag==0)//说明是素数
}
if(n%999==0)
ncandivided9999"
else
ncannotdivided9999"
}
【程序16】
要求输出国际象棋棋盘。
用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
8;
if((i+j)%2==0)
%c%c"
219,219);
==============================================================
【程序17】
打印楼梯,同时在楼梯上方打印两个笑脸。
用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
\1\1\n"
/*输出两个笑脸*/
11;
【程序18】
编写程序,找出1至99之间的全部同构数。
同构数是这样一组数:
它出现在平方数的右边。
例如,5是25右边的数,25是625右边的数,5和25就是同构数。
#include<
100;
if(i*i%10==i||i*i%100==i)printf("
%3d"
【程序19】
5.107编写程序,求一个整数任意次方的最后三位数。
即求xy值的最后三位数,要求x,y从键盘输入。
intx,y,i,s=1;
Inputxandy:
%d%d"
x,&
y);
=y;
s=s*x%1000;
Thelast3digitof%d*%dis:
x,y,s);
【程序20】
编写程序,从键盘输入6名学生的五门成绩,分别统计出每个学生的平均成绩。
floats,sum,ave;
6;
sum=0;
scanf("
%f"
s);
sum=sum+s;
ave=sum/5;
No.%dave=%6.2f\n"
i+1,ave);