训练题11111

给定三条边,请你判断一下能不能组成一个三角形。

#include<stdio.h>int main() {
    int n;
    float a, b, c; *边不一定为整形!!!*
        scanf("%d", &n);
    while (n--) {
        scanf("%f%f%f", &a, &b, &c);
        if (b + c > a&&a + b > c&&a + c > b) {
            printf("YES\n");
        }
        else {
            printf("NO\n");
        }
    }
    return 0;
}

**输入一个英文句子,将每个单词的第一个字母改成大写字母。
**

#include<stdio.h>
int main() {
    char a[100];
    while (gets(a) != NULL) {
        int i = 0;
        a[0] = a[0] - 32;
        while (a[i] != '\0') {
            if (a[i] == ' ') {
                a[i + 1] = a[i + 1] - 32;
            }
            i++;
        }
        puts(a);
    }
    return 0;
}

**给定两个正整数,计算这两个数的最小公倍数。 **

#include<stdio.h>int main() {
    int m, n, t;
    int x, y, p;
    while (scanf("%d%d", &m, &n) != EOF) {
        x = m;
        y = n;
        if (m < n) {
            t = m;
            m = n;
            n = t;
        }
        while (n != 0) {
            t = n;
            n = m % n;
            m = t;
        }
        p = x * y / m;
        printf("%d\n", p);
    }
    return 0;
}

**在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。 **

#include <stdio.h>
int main() {
    int n;
    int sum, i, t;
    while (scanf("%d", &n) != EOF) {
        sum = n / 3 + 1; *n / 3个3可换成1,就有n / 3种方法,加一种全为3的方法*
            for (i = 0; i <= n / 3; i++) {
                t = (n - 3 * i) / 2; *有0个3时,有几个2就有几种方法;有1个3时有几个2...依次累加*
                    sum = sum + t;
            }
        printf("%d\n", sum);
    }
    return 0;
}

Sample Input
青菜 1 2
罗卜 2 1.5
鸡腿 2 4.2
Sample Output
13.4

#include<stdio.h> 
int main()
{
    char s[100];
    double n, m, sum = 0;
    while (scanf("%s%lf%lf", s, &n, &m) != EOF) {
        sum += n * m;
    }
    printf("%.1lf\n", sum);
    return 0;
}

输入数据的第一行是一个整数C, 表示测试实例的个数,然后是C 行数据,每行包含一个整数n(1 < n <= 20), 表示参加抽奖的人数。
Output
对于每个测试实例,请输出发生这种情况的百分比,每个实例的输出占一行, 结果保留两位小数(四舍五入),具体格式请参照sample output。
Sample Input
1
2
Sample Output
50.00%

 #include<stdio.h> 
 int main()
{
       int c, n, j; 
       double sum, i, b;
       long long a[21];
       a[1] = 0; 
       a[2] = 1;
       for (j = 3; j < 21; j++) { 
            a[j] = (j - 1)*(a[j - 1] + a[j - 2]);
       } 
       scanf("%d", &c);
       while (c--){
           sum = 1;                                               
            scanf("%d", &n);                             *不太懂*
            for (i = 1; i <= n; i++) { 
                 sum = sum * i;
            } 
            b = a[n] / sum * 100;
           printf("%.2lf", b);
            printf("%%\n");           *%%输出为%*
       } 
        return 0; 
 } 
             
        

(上网搜的) 装错信封问题(错排): 用A、B、C……表示写着n位友人名字的信封,a、b、c……表示n份相应的写好的信纸。把错装的总数为记作D(n)。假设把a错装进B里了,包含着这个错误的一切错装法分两类:
(1)b装入A里,这时每种错装的其余部分都与A、B、a、b无关,应有D(n-2)种错装法。
(2)b装入A、B之外的一个信封,这时的装信工作实际是把(除a之外的)n-1份信纸b、c……装入(除B以外的)n-1个信封A、C……,显然这时装错的方法有D(n-1)种。总之在a装入B的错误之下,共有错装法D(n-2)+D(n-1)种。a装入C,装入D……的n-2种错误之下,同样都有D(n-1)+D(n-2)种错装法,因此D(n)=(n-1)[D(n-1)+D(n-2)]

猜你喜欢

转载自blog.csdn.net/weixin_43726468/article/details/84254751