MENU

C语言实验+应用作业 2

2017 年 11 月 23 日 • 日常作业

这是我的作业和答案,供将来自己检索,和大家参考之用。

1.编程题1
已知a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。
输入输出示例
a/b的商=7
a/c的商=3
a%b的余数=10
a%c的余数=15

#include <stdio.h>
int main(){
    int a=150,b=20,c=45;
    printf("a/b的商=%d\na/c的商=%d\na%%b的余数=%d\na%%c的余数=%d\n",a/b,a/c,a%b,a%c);
    return 0;
}

2.编程题2
已知a=160,b=46,c=18,d=170, 编写求 的程序。
输入输出示例
(a+b)/(b-c)*(c-d)=-1064.000000

#include <stdio.h>
int main(){
    int a=160,b=46,c=18,d=170;
    float result=(a+b)/(b-c)*(c-d);
    printf("(a+b)/(b-c)*(c-d)=%f\n",result);
    return 0;
}

3.编程题3
设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符)
输入输出示例
c=-10

#include <stdio.h>
int main(){
    int a=0,b=-10,c;
    if (a>b) c=b;
    else c=a;
    printf("c£½%d\n",c);
    return 0;
}

4.编程题4
当n为24时,求出n的个位数字、十位数字的值。
输入输出示例
24的个位数字是4,十位数字是2
思考:如果n是三位数或四位数时,怎样求它的各位数字?

#include <stdio.h>
int main(){
    int n=24;
    printf("%d的个位数字是%d,十位数字是%d\n",n,n%10,n/10);
    return 0;
}

1、一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。

#include <stdio.h>

int main()
{
    int n,i=2,sum=1,howmany=0;
    for (n=1;n<=1000;n++,sum=1,i=2){
        for (;i<n;i++){
            if (n%i==0) sum+=i;
        }
        if (n==sum){
            printf("%6d",n);
            howmany++;
        }
        if (howmany%5==0) printf("\n");
    }
    if (howmany%5!=0) printf("\n");
    return 0;
}

2、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

#include <stdio.h>

int main()
{
    int i;
    float sum,hi;
    hi=100;
    i=1;
    sum=hi;
    do{
        sum+=hi;
        hi/=2;
        i++;
    }while(i<10);
    printf("In all %fm. The 10th height is %fm.\n",sum,hi/2);
}

3、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

#include <stdio.h>

int main()
{
    int day=10,n=1;
    while (day>1){
        n=(n+1)*2;
        day--;
    }
    printf("%d\n",n);
}

4、两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

#include <stdio.h>

int main()
{
    //这题用简单的数学一分析就有答案了
    printf("c vs y\na vs z\nb vs x\n");
}

5、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

include <stdio.h>

int main()
{
    int a=0,b=1,c=2,i=1; //c is Fenzi and b is fenmu
    float sum=c/float(b);
    do{
        a=b;
        b=c;
        c=a+b;
        sum+=c/float(b);
        i++;
    }while(i<20);
    printf("%f\n",sum);
}

6、用递归算法求1+2!+3!+...+20!的和。

#include <stdio.h>

int main()
{
    int i=1,ij=1,sum=1;
    while (i<20){
        i++;
        ij*=i;
        sum+=ij;
    }
    printf("1+2!+3!+...+20!=%d\n",sum);
}

原发于 2016-12-02 16:05