第一部分:选择结构
1. 输入一个华氏温度f,要求输出摄氏温度c。公式为c=5/9(f-32)。输出要求有文字说明,取2位小数。
#include <stdio.h>
int main()
{
    double fahrenheit, celsius;
    printf("请输入华氏温度:");
    scanf("%lf", &fahrenheit);
    celsius = 5 * (fahrenheit - 32) / 9;
    printf("%.1lf华氏度 = %.2lf摄氏度\n", fahrenheit, celsius);
}
2. 有一函数,用scanf函输入x的值,y值。
#include <stdio.h>
int main()
{
    double x, y;
    printf("请输入x");
    scanf("%lf", &x);
    if (x < 1)
        y = x;
    else if (x < 10)
        y = 2 * x - 1;
    else
        y = 3 * x - 11;
    printf("x= %f, y= %lf\n", x, y);
}
3. 从键盘上输入一个正整数,判断这个数能否同时被35整除
方法一:直接使用嵌套的if … else …. 来判断完成
#include <stdio.h>
int main()
{
    int n;
    printf("请输入n");
    scanf("%d", &n);
    if (n % 3 == 0)
    {
        if (n % 5 == 0)
printf怎么加两个条件            printf("%d 能同时被3 5 整除\n", n);
        else
            printf("%d 只能被3 整除\n", n);
    }
    else
    {
        if (n % 5 == 0)
            printf("%d 只能被5 整除\n", n);
        else
            printf("%d 既不能被 3,也不能被 5 整除\n", n);
    }
}
方法二:使用标志法来完成
#include <stdio.h>
int main()
{
    int n, tag = 0;  /*  tag 为状态标志  */
    printf("请输入n");
    scanf("%d", &n);
    if (n % 3 == 0)
        tag += 1;
    if (n % 5 == 0)
        tag += 2;
    switch (tag)
    {
    case 0:
        printf("%d 既不能被 3,也不能被 5 整除\n", n);
        break;
    case 1:
        printf("%d 只能被3 整除\n", n);
        break;
    case 2:
        printf("%d 只能被5 整除\n", n);
        break;
    case 3:
        printf("%d 能同时被3 5 整除\n", n);
        break;
    }
}
4. 设计算法输入一个四位正整数,将它们倒排,例如输入1234,输出4321
方法一:直接使用顺序程序设计从个位开始往前分割
#include <stdio.h>
int main()
{
    unsigned int n, a, b, c, d;
    printf("请输入n(四位数)");
    scanf("%d", &n);
    a = n % 10;            /*  个位  */
    b = n / 10 % 10;        /*  十位  */
    c = n / 100 % 10;        /*  百位  */
    d = n / 1000;            /*  千位  */
    if (d > 9)
        printf("%d 超过了四位\n", n);
    else
        printf("颠倒 %d%d%d%d 得到 %d%d%d%d\n", d, c, b, a, a, b, c, d);
}
方法二:使用循环完成
#include <stdio.h>
int main( )
{
    int n;
    printf("请输入n(四位数)");
    scanf("%d", &n);
    if (n < 1000 || n > 9999)
    {
        printf("输入的数据不在范围内!\n");
        return -1;
    }
    printf("%d 颠倒后是 ", n);
    while (n > 0)
    {
        printf("%d", n % 10);
        n /= 10;
    }
    printf("\n");
    return 0;
}
方法三:使用递归函数完成
#include <stdio.h>
void Reverse(int m);/*  颠倒函数原型  */
int main( )
{
    int n;
    printf("请输入n(四位数)");
    scanf("%d", &n);
    if (n < 1000 || n > 9999)
    {
        printf("输入的数据不在范围内!\n");
        return -1;
    }
    printf("%d 颠倒后是 ", n);
    Reverse(n);
    printf("\n");
    return 0;
}
void Reverse(int m)
{
    if (m > 0)
    {
        printf("%d", m % 10);
        Reverse(m / 10);
    }
}
5. 由键盘输入3个整数abc,作为三角形的三条边,判断能否构成三角形,若不能构成,请给出提示信息;若能构成三角形,指出构造的是何种三角形(等腰三角形、直角三角形、一般三角形)。
下面的示例程序使用了标志法来枚举所有的条件,也可以用嵌套的if … else … 来实现功能,但程序流程略重复,如果事先对输入的3 个边长来排一下序,也可以减少部分判断条件。
另外,实际运行中手工输入的数据不可能满足等腰直角三角形的条件。
#include <stdio.h>
int main()
{
    int a, b, c, tag = 0;  /*  tag 为状态标志  */
    printf("请输入三角形的三个边长(用空格分隔)");
    scanf("%d%d%d", &a, &b, &c);
    if (a <= 0 || b <= 0 || c <= 0)
        printf("输入的边长数据错误\n");
    else if (a + b <= c || a + c <= b || b + c <= a)
        printf("输入的边长无法构成三角形\n");
    else
    {
        if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a)
            tag += 1;    /*  直角三角形  */
        if (a == b || b == c || a == c)
        {
            if (a == b && b == c)
                tag += 4;    /*  等边三角形  */
            else
                tag += 2;    /*  等腰三角形  */
        }
        switch (tag)
        {
        case 1:
            printf("边长 %d, %d, %d 构成直角三角形\n", a, b, c);
            break;
        case 2:
            printf("边长 %d, %d, %d 构成等腰三角形\n", a, b, c);
            break;
        case 3:
            printf("边长 %d, %d, %d 构成等腰直角三角形\n", a, b, c);
            break;
        case 4:
            printf("边长 %d, %d, %d 构成等边三角形\n", a, b, c);
            break;
        default:
            printf("边长 %d, %d, %d 构成普通三角形\n", a, b, c);
            break;
        }
    }
}
有兴趣可以和前面的第3题对照起来考虑,标志应当如何设置才能区分出各个情况,如果逻辑条件更复杂时又应当如何设置?
6. 从键盘上输入一个百分制成绩score,按下列原则输出其等级:A=90~100 B=80~89C=70~79D=60~69F=0~59,高于100或低于0显示错误信息。
方法一:使用嵌套的if … else … 来完成
#include <stdio.h>
int main()
{
    int score;
    printf("请输入百分制的成绩:");
    scanf("%d", &score);
    if (score < 0 || score > 100)
        printf("%d 分不是正确的分数\n", score);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。