高级语言程序设计课程第三次个人作业

高级语言程序设计课程第三次个人作业

这个作业属于哪个课程:2026高级语言程序设计(福州大学)
这个作业要求在哪里:高级语言程序设计课程第三次个人作业
学号:072506135
姓名:张锦程

第4章 4.8 编程练习

第2题:姓名格式化

#include <stdio.h>
#include <string.h>

int main(void) {
    char first[40], last[40];
    char full[82];
    printf("请输入名和姓:");
    scanf("%39s %39s", first, last);
    snprintf(full, sizeof full, "%s %s", first, last);
    printf("a. \"%s\"\n", full);
    printf("b. \"%20s\"\n", full);
    printf("c. \"%-20s\"\n", full);
    printf("d. \"%*s\"\n", (int)strlen(full) + 3, full);
    return 0;
}

运行结果截图:

ch4_q2运行结果

第3题:小数与指数记数法

#include <stdio.h>

int main(void) {
    float value;
    printf("请输入一个浮点数:");
    scanf("%f", &value);
    printf("fixed: %f\n", value);
    printf("exponential: %e\n", value);
    return 0;
}

运行结果截图:

ch4_q3运行结果

第4题:身高换算

#include <stdio.h>

int main(void) {
    char name[40];
    float inches;
    printf("请输入身高(英寸):");
    scanf("%f", &inches);
    printf("请输入姓名:");
    scanf("%39s", name);
    printf("%s, you are %.3f feet tall\n", name, inches / 12.0f);
    return 0;
}

运行结果截图:

ch4_q4运行结果

第6题:姓名与字母数对齐

#include <stdio.h>
#include <string.h>

int main(void) {
    char first[40], last[40];
    int lf, ll;
    printf("请输入名和姓:");
    scanf("%39s %39s", first, last);
    lf = (int)strlen(first);
    ll = (int)strlen(last);
    printf("%s %s\n", first, last);
    printf("%*d %*d\n", lf, lf, ll, ll);
    printf("%s %s\n", first, last);
    printf("%-*d %-*d\n", lf, lf, ll, ll);
    return 0;
}

运行结果截图:

ch4_q6运行结果

第7题:float 与 double 精度

#include <float.h>
#include <stdio.h>

int main(void) {
    double d = 1.0 / 3.0;
    float f = 1.0f / 3.0f;
    printf("float 6:  %.6f\n", f);
    printf("float 12: %.12f\n", f);
    printf("float 16: %.16f\n", f);
    printf("double 6:  %.6f\n", d);
    printf("double 12: %.12f\n", d);
    printf("double 16: %.16f\n", d);
    printf("FLT_DIG = %d, DBL_DIG = %d\n", FLT_DIG, DBL_DIG);
    return 0;
}

运行结果截图:

ch4_q7运行结果

第8题:燃油经济性换算

#include <stdio.h>

#define GALLON_TO_LITER 3.785f
#define MILE_TO_KM 1.609f

int main(void) {
    float miles, gallons;
    printf("请输入行驶里程(英里)和耗油量(加仑):");
    scanf("%f %f", &miles, &gallons);
    printf("miles per gallon: %.1f\n", miles / gallons);
    printf("liters per 100 km: %.1f\n",
           gallons * GALLON_TO_LITER / (miles * MILE_TO_KM) * 100.0f);
    return 0;
}

运行结果截图:

ch4_q8运行结果

第5章 5.11 编程练习

第1题:分钟转换

#include <stdio.h>

#define MIN_PER_HOUR 60

int main(void) {
    int minutes;
    while (1) {
        printf("请输入分钟数(<=0 退出):");
        if (scanf("%d", &minutes) != 1 || minutes <= 0) break;
        printf("%d 分钟 = %d 小时 %d 分钟\n", minutes,
               minutes / MIN_PER_HOUR, minutes % MIN_PER_HOUR);
    }
    puts("结束。");
    return 0;
}

运行结果截图:

ch5_q1运行结果

第2题:连续整数

#include <stdio.h>

int main(void) {
    int n;
    printf("请输入一个整数:");
    scanf("%d", &n);
    for (int i = n; i <= n + 10; ++i) printf("%d%c", i, i == n + 10 ? '\n' : ' ');
    return 0;
}

运行结果截图:

ch5_q2运行结果

第3题:天数转换

#include <stdio.h>

int main(void) {
    int days;
    while (1) {
        printf("请输入天数(<=0 退出):");
        if (scanf("%d", &days) != 1 || days <= 0) break;
        printf("%d 天 = %d 周 %d 天。\n", days, days / 7, days % 7);
    }
    puts("结束。");
    return 0;
}

运行结果截图:

ch5_q3运行结果

第4题:厘米转换

#include <stdio.h>

int main(void) {
    double cm;
    while (1) {
        printf("请输入身高厘米数(<=0 退出):");
        if (scanf("%lf", &cm) != 1 || cm <= 0) break;
        double inches = cm / 2.54;
        printf("%.1f 厘米 = %d 英尺 %.1f 英寸\n", cm, (int)(inches / 12),
               inches - (int)(inches / 12) * 12);
    }
    puts("结束。");
    return 0;
}

运行结果截图:

ch5_q4运行结果

第5题:整数累加

#include <stdio.h>

int main(void) {
    int n, sum = 0;
    printf("请输入一个正整数:");
    scanf("%d", &n);
    for (int i = 1; i <= n; ++i) sum += i;
    printf("总和 = %d\n", sum);
    return 0;
}

运行结果截图:

ch5_q5运行结果

第6题:平方和

#include <stdio.h>

int main(void) {
    int n, sum = 0;
    printf("请输入一个正整数:");
    scanf("%d", &n);
    for (int i = 1; i <= n; ++i) sum += i * i;
    printf("平方和 = %d\n", sum);
    return 0;
}

运行结果截图:

ch5_q6运行结果

第7题:立方函数

#include <stdio.h>

static void print_cube(double x) { printf("%.3f 的立方 = %.3f\n", x, x * x * x); }

int main(void) {
    double x;
    printf("请输入一个数:");
    scanf("%lf", &x);
    print_cube(x);
    return 0;
}

运行结果截图:

ch5_q7运行结果

第8题:求模运算

#include <stdio.h>

int main(void) {
    int divisor, value;
    printf("请输入第二个操作数:");
    scanf("%d", &divisor);
    printf("请输入第一个操作数(<=0 退出):");
    while (scanf("%d", &value) == 1 && value > 0) {
        printf("%d %% %d = %d\n", value, divisor, value % divisor);
        printf("请输入下一个数(<=0 退出):");
    }
    puts("结束。");
    return 0;
}

运行结果截图:

ch5_q8运行结果

第9题:温度转换

#include <stdio.h>

static void Temperatures(double fahrenheit) {
    const double C_SCALE = 5.0 / 9.0;
    const double K_OFFSET = 273.16;
    double celsius = C_SCALE * (fahrenheit - 32.0);
    double kelvin = celsius + K_OFFSET;
    printf("%.2f 华氏度 = %.2f 摄氏度 = %.2f 开尔文\n", fahrenheit, celsius, kelvin);
}

int main(void) {
    double f;
    printf("请输入华氏温度(输入 q 退出):");
    while (scanf("%lf", &f) == 1) {
        Temperatures(f);
        printf("请输入华氏温度(输入 q 退出):");
    }
    puts("结束。");
    return 0;
}

运行结果截图:

ch5_q9运行结果

题目给定程序运行结果

程序(1):字符串与 sizeof

#include <stdio.h>
#include <string.h>
#define PRAISE "What a super marvelous name!"

int main(void) {
    char name[40];
    printf("What's your name?\n");
    scanf("%39s", name);
    printf("Hello, %s. %s\n", name, PRAISE);
    printf("Your name of %d letters occupies %d memory cells.\n", (int)strlen(name), (int)sizeof name);
    printf("The phrase of praise has %d letters and occupies %d memory cells.\n", (int)strlen(PRAISE), (int)sizeof PRAISE);
    return 0;
}

运行结果截图:

given_1_string运行结果

程序(2):棋盘麦粒问题

#include <stdio.h>
#define SQUARES 64
#define CROP 1E15

int main(void) {
    double current, total;
    int count = 1;
    printf("square grains total fraction\n");
    total = current = 1.0;
    printf("%2d %13.2e %13.2e %13.2e\n", count, current, total, total / CROP);
    while (count < SQUARES) {
        ++count;
        current *= 2.0;
        total += current;
        printf("%2d %13.2e %13.2e %13.2e\n", count, current, total, total / CROP);
    }
    puts("That's all.");
    return 0;
}

运行结果截图:

given_2_wheat运行结果

程序(3):自动类型转换

#include <stdio.h>

int main(void) {
    char ch;
    int i;
    float fl;
    fl = i = ch = 'C';
    printf("ch = %c, i = %d, fl = %.2f\n", ch, i, fl);
    ch = ch + 1;
    i = fl + 2 * ch;
    fl = 2.0f * ch + i;
    printf("ch = %c, i = %d, fl = %.2f\n", ch, i, fl);
    ch = 5212205.17;
    printf("Now ch = %c\n", ch);
    return 0;
}

运行结果截图:

given_3_cast运行结果

程序(4):函数参数类型转换

#include <stdio.h>

static void pound(int n) {
    while (n-- > 0) putchar('#');
    putchar('\n');
}

int main(void) {
    int times = 5;
    char ch = '!';
    float f = 6.0f;
    pound(times);
    pound(ch);
    pound((int)f);
    return 0;
}

运行结果截图:

given_4_pound运行结果

运算符优先级展示

示例程序:自增与四则运算混用

#include <stdio.h>

int main(void) {
    int a = 3;
    int result = ++a * 2 + 5;
    int b = 3;
    int result2 = b++ * 2 + 5;
    printf("++a * 2 + 5: a=%d, result=%d\n", a, result);
    printf("b++ * 2 + 5: b=%d, result=%d\n", b, result2);
    return 0;
}

运行结果截图:

operator_demo运行结果

优先级从高到低

#include <stdio.h>

int main(void) {
    const char *levels[] = {
        "1  postfix: () [] -> . x++ x--",
        "2  unary: ++x --x + - ! ~ (type) * & sizeof",
        "3  multiplicative: * / %",
        "4  additive: + -",
        "5  shift: << >>",
        "6  relational: < <= > >=",
        "7  equality: == !=",
        "8  bitwise AND: &",
        "9  bitwise XOR: ^",
        "10 bitwise OR: |",
        "11 logical AND: &&",
        "12 logical OR: ||",
        "13 conditional: ?: ",
        "14 assignment: = += -= *= /= %=",
        "15 comma: ,"
    };
    for (size_t i = 0; i < sizeof levels / sizeof levels[0]; ++i) puts(levels[i]);
    return 0;
}

运行结果截图:

operator_priority运行结果

编写和运行过程中遇到的问题及解决方法

无

总结和思考

本次作业集中练习了 printf 格式控制、字符串长度、浮点数精度、自动类型转换、while 循环、函数参数传递以及运算符优先级。通过实际编译和运行,我更加直观地理解了格式说明符对输出的影响,也看到浮点数并不能精确表示所有十进制小数。

在循环题中,结束条件决定了程序是否能够正常停止;在输入题中,scanf 的返回值和输入缓冲区处理同样重要。运算符优先级可以减少不必要的括号,但为了提高可读性,复杂表达式仍然应该主动使用括号。后续编程中还需要继续注意类型范围、隐式转换和边界输入。

posted @ 2026-10-31 14:03  Pentyd  阅读(6)  评论(0)    收藏  举报