MENU

C语言应用单元测试 1

2017 年 11 月 23 日 • 日常作业

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

1、输入两个整数,交换他们的值,然后输出。

#include <stdio.h>

void swap(int *a,int *b){
    int tmp=*b;
    *b=*a;
    *a=tmp;
}
int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    swap(&a,&b);
    printf("a=%d,b=%d\n",a,b);
    return 0;
}

2、求123……10的值。

#include <stdio.h>

int f(int n){
    if(n==1) return 1;
    else return n*f(n-1);
}
int main()
{
    int result=f(10);
    printf("result=%d\n",result);
    return 0;
}

3、输入10个数字,找出它们的最大值和最小值。

#include <stdio.h>

int main()
{
    int i,n,min,max;
    for(i=1;i<=10;i++){
        scanf("%d",&n);
        if(i==1){
            min=n;
            max=n;
        }
        if(n>max) max=n;
        if(n<min) min=n;
    }
    printf("max=%d, min=%d\n",max,min);
    return 0;
}

4、有一分数序列:1/1,2/3,3/5,4/7,5/9,6/11...求出这个数列的前10项之和。

#include <stdio.h>

float f(int n){
    if(n==1) return 1.0/1.0;
    else return n/(2.0*n-1)+f(n-1);
}
int main()
{
    float result=f(10);
    printf("result=%f\n",result);
    return 0;
}

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

#include <stdio.h>

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

6、输入两个正整数m和n,求其最大公约数和最小公倍数。

#include <stdio.h>

int yue(int a,int b){
    if(a<=1||b<=1) return 0;
    int rtn;
    for(rtn=a<b?a:b;a%rtn!=0||b%rtn!=0;rtn--) ;
    return rtn;
}
int bei(int a,int b){
    if(a<=1||b<=1) return 0;
    int rtn;
    for(rtn=a>b?a:b;rtn%a!=0||rtn%b!=0;rtn++) ;
    return rtn;
}
int main()
{
    int n1,n2;
    printf("m=");scanf("%d",&n1);
    printf("n=");scanf("%d",&n2);
    if(n1>1&&n2>1) printf("zdgys=%d  zxgbs=%d\n",yue(n1,n2),bei(n1,n2));
    else printf("ERR: Input error!");
    return 0;
}

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

#include <stdio.h>

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

原发于 2016-12-02 17:41