MENU

C语言应用单元测试 2

2017 年 11 月 23 日 • 日常作业

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

输入两个整数,然后输出其中的较大值。

#include <stdio.h>

int main(){
    int a,b;
    scanf("%d%d",&a,&b);
    printf("%d\n",a>b?a:b);
    return 0;
}

求n!的值。

//递归法
#include <stdio.h>
__int64 jc(int n){
    __int64 result;
    if (n==0 || n==1) result=1;
    else if (n>0) result=n*jc(n-1);
    else result=0;
    return result;
}
int main(){
    int n;
    __int64 result;
    scanf("%d",&n);
    result=jc(n);
    if (result) printf("Result: %I64d\n",result);
    else printf("Input Error!\n");
    return 0;
}

/* //迭代法
#include <stdio.h>
__int64 jc(int n){
    __int64 result;
    int i;
    if (n==0) result=1;
    else if (n>0) for(result=1,i=1;i<=n;i++) result*=i;
    else result=0;
    return result;
}
int main(){
    int n;
    __int64 result;
    scanf("%d",&n);
    result=jc(n);
    if (result) printf("Result: %I64d\n",result);
    else printf("Input Error!\n");
    return 0;
} */

输入20个数字,求出它们的平均值。

#include <stdio.h>

int main(){
    int arr[20],i,sum=0;
    for(i=0;i<20;i++){
        scanf("%d",&arr[i]);
        sum+=arr[i];
    }
    printf("Avg: %.2f\n",sum/20.0);
    return 0;
}

有一分数序列:1/3,3/5,5/7,7/9,9/11,11/13...求出这个数列的前20项之和。

#include <stdio.h>

float S(int n){
    if(n==1) return 1.0/3.0;
    else return S(n-1)+(2*n-1.0)/(2*n+1.0);
}
int main(){
    printf("%f\n",S(20));
    return 0;
}

输入一个整数,判断其是否为素数,如果是,就直接输出;如果不是请输出其所有因子。

#include <stdio.h>

int main(){
    int n,a,i;
    scanf("%d",&n);
    if(n>1){
        for(a=n,i=2;i*i<=a;i++){
            if(a%i==0){
                printf("%d*",i);
                a=a/i;
                i=1;
            }
        }
        if(a==n)
            printf("%d\n",n);
        else
            printf("%d\n",a);
    }else{
        printf("ERROR: Please input an positive integer that is greater than 1. \n");
    }
    return 0;
}

打印水仙花数。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个“水仙花数”,因为153=13+53+33。

#include <stdio.h>

int main(){
    int i,l3,l2,l1;
    for(i=100;i<=999;i++){
        l3=i/100;
        l2=i/10%10;
        l1=i%10;
        if(i==l3*l3*l3+l2*l2*l2+l1*l1*l1)
            printf("%d\t",i);
    }
    printf("\n");
    return 0;
}

一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 

#include <stdio.h>

int main(){
    int n,l1,l2,l3,l4,l5;
    scanf("%d",&n);
    if(n>=10000&&n<=99999){
        l1=n%10;
        l2=n/10%10;
        l3=n/100%10;
        l4=n/1000%10;
        l5=n/10000%10;
        if (l5==l1 && l4==l2) printf("Yes.\n");
        else printf("No.\n");
    }else{
        printf("ERR: Please input a 5-bit integer.\n");
    }
    return 0;
}

(此文系定时发布)

原发于 2016-12-08 23:34