c上机作业4答案(循环).doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C第4次上机练习
—、编程题
1、编程输出1〜200之间所有能被12整除的整数。
—|AII global members 二][
# include < s t d i o. h > vo i d ma i n ()
{
i n t i ;
For (i = l; i < = 2 0 0; i++)
{
i f ( i%l2==0)
pr i n t f (n%d ”,i); } p r i n t f (”\n M);
2、从键盘输入n和k的值,求r?的值(要求不调用库函数pow())。
#include <s t d i o. h> vo i d ma i n ()
{
i n t i;
doub1e n,k,p=l;
scanf (n%lf%lf n,&n, &k); for (i = l; i <=k; i++) (
p=p*n;
}
pr i n t f (n% 1 f \n ”,p|);
3、任意输入一个正整数,将它逆序打印出来。
如:输入12345,则输出54321,输入234,则输出432。
#i n c 1 LI d e < s t d i o. h>
vo i d ma i n ()
<
i n t x;
printf (n PLease i npu t x:"); scanf (n%d n, &x);
do
{
printf x%l0);
x/ = l 0;
} wh i 1 e (x ! = 0);
}
4、下面的公式可以用来计算圆周率PI的近似值:
Jz
l
a
P 1/8=1 / (1*3) +1/ (5*7) +1/ (9*11) +…… 请编程序计算公式的 前15项,看PI 的近似值是多少。
方法一:”
include <或如禺>+, 逊 mainO”
诞i ;"
float bi=O,P ;v
敷ii=l;i<=60;i+=4)”
2
p=1.0 氐*(i+2));”
N
BXi 威TPI 母&3如",pi*8);“ }* include
逊 mainO”
{”
圾顼 =l;i<=15;i++)”
n=4*i-3;” p=l 』心i*(n+幼屮
pnntfC'PI=%.&3 如",pi*8);v
5、求Sn=a+aa+aaa+aa...aa(n 个a),其中a, n 由键盘输入。
(例如 2+22+222+2222+22222,此时 n 为 5, a 为 2)
|AII giooai memDeri^J
#include<stdio. h> void mainO { int i, a, n, s=0, t=0; printf("input 2 integer(a n):"); scanf ("%d%d",&a, &n); for (i=l; i<=n; i++) { t=10*t+a; //t 是累加项,t 初值为0,第一次循环t=a; s=s+t; } printf ("结杲=%d\n", s);
6、若口袋里放12个球,3个红的,3个白的,6个黑的,从中任取8 个,编写程序,列出所有可能的取法。
#include<stdio. h>
void mainO
I
int r,w, b;
for (r=0; r<=3; r++)
for (w=l); w<=3; w++)
for(b=0; b<=6; b++)
I
if (r+w+b==8)
printf("^=H 白iHd, XlMd \n',r,w, b);
)
)l
7、有一分数序列2/1、3/2、5/3、8/5、13/8...,从第2项开始,每—项
的分子为前一项的分子与分母之和,每一项的分母为前一项的分子,编程求这个数列的前n项之和。
#include <stdio.h>
void main (void)
{
int a=2, b=l, t, i, n; double sum=0. 0; scanf ("%d",&n);
for (i = l; i<=n; i++)
{
sum=sum+l. 0*a/b;
t=a; a=a+b; b=t;
pr intf("sum=%lf\n",sum);
8、从键盘输入2个非负整数,求两数最小公倍数。
global members 二main 二|翌・够曹:' !勻苗
〃根据最小公倍数的定义,豪,小数应该在max(a,b)a*b之间, 〃窗为求最小,所以从小往去求,瘠a,b均为素数,最小公倍数为a*b。
#include<stdio. h>
void inainO
I
int i, a, b;
scanf (叫d%d",&a,&b);
for (i=(a>b?a: b); i<a*b; i++)
(
if(i%a==0&&i%b==0)
break;
)
printf("%d",i);
9、从键盘输入2个非负整数,求两数最大公约数。
global member』―耳邑▼ 0 !訂论
〃根据最大公约教的定义,最大公约教应该在「min(a,b)之间〃因为求最大,所以从大往小求。
#include<stdio. h>
void mainO
{
int i, a, b;
scanf ("W%d",&a,&b); for(i=(a>b?b:a); i>l; i—) {
if (a%i==0&&b%i==0)
break;
}
printf ("W\n", i);。