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

这个作业属于哪个课程 <班级的链接>
这个作业要求在哪里 <作业链接>
学号 092300303
姓名 池博洋

@


作业基本信息

运行程序

(1)

fee18ebb9ec55de4c7d36acbe0092ed4

(2)

2d9383730ec14e8b863f32bf631670e9

求π近似值

while方式:

点击查看代码
#include <stdio.h>
#include <math.h>

int main() {
    double sum = 0.0;
    int k = 0;
    double term = 1.0;
    while (fabs(term) >= 1e-4) {
        term = pow(-1, k) / (2 * k + 1);
        sum += term;
        k++;
    }
    double pi = 4 * sum;
    printf("π的近似值: %f\n", pi);
    return 0;
}

结果:
d641b0140b0ec3102c0dace721b6a3d3

do while方式:

点击查看代码
#include <stdio.h>
#include <math.h>

int main() {
    double sum = 0.0;
    int k = 0;
    double term;
    do {
        term = pow(-1, k) / (2 * k + 1);
        sum += term;
        k++;
    } while (fabs(term) >= 1e-4);
    double pi = 4 * sum;
    printf("π的近似值: %f\n", pi);
    return 0;
}

结果:
QQ_1762501233646

实现逻辑表达式中的运算符

点击查看代码
#include <stdio.h>

int func1() {
    printf("func1 executed\n");
    return 0;
}

int func2() {
    printf("func2 executed\n");
    return 1;
}

int main() {
    int a = 0, b = 1;
    
    // 使用 &&,左侧为假时右侧不执行
    if (a && func1()) {
        printf("Condition 1 true\n");
    } else {
        printf("Condition 1 false\n");
    }
    
    // 使用 ||,左侧为真时右侧不执行
    if (b || func2()) {
        printf("Condition 2 true\n");
    } else {
        printf("Condition 2 false\n");
    }
    
    return 0;
}

结果:
image

for循环输出六行

点击查看代码
#include <stdio.h>

int main() {
    for (int i = 0; i < 6; i++) {
        for (char c = 'F'; c >= 'A' + i; c--) {
            printf("%c", c);
        }
        printf("\n");
    }
    return 0;
}

结果:
image

for循环计算值

点击查看代码
#include <stdio.h>

int main() {
    int n, i, j;
    long s = 0, sum;

    printf("请输入n: ");
    scanf("%d", &n);

    for (i = 1; i <= n; i++) {
        sum = 0;  // 计算第i项(1+2+...+i)
        for (j = 1; j <= i; j++) {
            sum += j;
        }
        s += sum; // 累加所有部分和
    }

    printf("s = %ld\n", s);
    return 0;
}


结果:
image

for循环数组赋值求和

点击查看代码
#include <stdio.h>

int main() {
    int arr[8];
    int sum = 0;

    // 赋值
    for (int i = 0; i < 8; i++) {
        arr[i] = i + 1; // 赋值1到8
    }

    // 输出
    printf("数组元素: ");
    for (int i = 0; i < 8; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    // 求和
    for (int i = 0; i < 8; i++) {
        sum += arr[i];
    }
    printf("数组和: %d\n", sum);

    return 0;
}

结果:
image

分支程序

if-else分支

点击查看代码
#include <stdio.h>

int main() {
    int score;
    printf("输入分数: ");
    scanf("%d", &score);
    char grade;
    if (score >= 90) {
        grade = 'A';
    } else if (score >= 80) {
        grade = 'B';
    } else if (score >= 70) {
        grade = 'C';
    } else if (score >= 60) {
        grade = 'D';
    } else {
        grade = 'F';
    }
    printf("等级: %c\n", grade);
    return 0;
}

switch语句

点击查看代码
#include <stdio.h>

int main() {
    int score;
    printf("输入分数: ");
    scanf("%d", &score);
    char grade;
    switch (score / 10) {
        case 10:
        case 9:
            grade = 'A';
            break;
        case 8:
            grade = 'B';
            break;
        case 7:
            grade = 'C';
            break;
        case 6:
            grade = 'D';
            break;
        default:
            grade = 'F';
    }
    printf("等级: %c\n", grade);
    return 0;
}

条件运算符:

点击查看代码
#include <stdio.h>

int main() {
    int a, b;
    printf("输入两个数: ");
    scanf("%d %d", &a, &b);
    int max = (a > b) ? a : b;
    printf("较大值: %d\n", max);
    return 0;
}

结果:
image

循环程序再循环中用break和continue语句

点击查看代码
#include <stdio.h>

int main() {
    // 使用break:当i=5时终止循环
    printf("使用break:\n");
    for (int i = 1; i <= 10; i++) {
        if (i == 5) {
            break;
        }
        printf("%d ", i);
    }
    printf("\n");

    // 使用continue:当i=5时跳过当前迭代
    printf("使用continue:\n");
    for (int i = 1; i <= 10; i++) {
        if (i == 5) {
            continue;
        }
        printf("%d ", i);
    }
    printf("\n");
    return 0;
}

结果:

image

求100~200间的全部素数

点击查看代码
#include <stdio.h>
#include <math.h>

int main() {
    int i, j, flag;
    for (i = 100; i <= 200; i++) {
        flag = 1;
        for (j = 2; j <= sqrt(i); j++) {
            if (i % j == 0) {
                flag = 0;
                break;
            }
        }
        if (flag == 1) {
            printf("%d ", i);
        }
    }
    printf("\n");
    return 0;
}

结果:
image

传统流程图:
开始

for i从100到200

flag = 1

for j从2到√i

如果 i % j == 0

flag = 0

break内层循环

如果 flag == 1

输出 i

结束

算法思想:
素数是指大于1且只能被1和自身整除的数。对于每个数i(100到200),检查是否能被2到√i之间的任何整数整除。如果不能,则是素数。

6.16

6.16-1

点击查看代码
#include <stdio.h>

int main(void)
{
    char letters[26];
    
    // 在数组中存储26个小写字母
    for (int i = 0; i < 26; i++) {
        letters[i] = 'a' + i;
    }
    
    // 打印数组的所有内容
    for (int i = 0; i < 26; i++) {
        printf("%c ", letters[i]);
    }
    printf("\n");
    
    return 0;
}

结果:
image

6.16-5

点击查看代码
#include <stdio.h>

int main(void)
{
    char ch;
    int i, j, k, n;
    
    // 提示用户输入大写字母
    printf("请输入一个大写字母: ");
    scanf("%c", &ch);
    
    // 计算行数(从A到输入字母的行数)
    n = ch - 'A' + 1;
    
    // 外层循环处理每一行
    for (i = 0; i < n; i++) {
        // 第一个内层循环:打印前导空格
        for (j = 0; j < n - i - 1; j++) {
            printf(" ");
        }
        
        // 第二个内层循环:升序打印字母
        for (k = 0; k <= i; k++) {
            printf("%c", 'A' + k);
        }
        
        // 第三个内层循环:降序打印字母
        for (k = i - 1; k >= 0; k--) {
            printf("%c", 'A' + k);
        }
        
        printf("\n");  // 换行
    }
    
    return 0;
}

结果:
image

6.16-7

点击查看代码
#include <stdio.h>
#include <string.h>

int main(void)
{
    char word[100];
    int length, i;
    
    printf("请输入一个单词: ");
    scanf("%s", word);
    
    length = strlen(word);
    
    printf("倒序打印: ");
    for (i = length - 1; i >= 0; i--) {
        printf("%c", word[i]);
    }
    printf("\n");
    
    return 0;
}

结果:
image

6.16-10

点击查看代码
#include <stdio.h>

int main(void)
{
    int lower, upper, i;
    long sum;
    
    printf("Enter lower and upper integer limits: ");
    while (scanf("%d %d", &lower, &upper) == 2 && lower < upper) {
        sum = 0;
        
        // 计算从lower到upper的平方和
        for (i = lower; i <= upper; i++) {
            sum += i * i;
        }
        
        printf("The sums of the squares from %d to %d is %ld\n", 
               lower * lower, upper * upper, sum);
        printf("Enter next set of limits: ");
    }
    
    printf("Done\n");
    return 0;
}

结果:
image

6.16-13

点击查看代码
#include <stdio.h>

int main(void)
{
    int powers[8];
    int i, value = 1;
    
    // 使用for循环设置数组元素的值(2的前8次幂)
    for (i = 0; i < 8; i++) {
        value *= 2;
        powers[i] = value;
    }
    
    i = 0;  // 重置索引
    printf("2的前8次幂: ");
    
    // 使用do while循环显示数组元素的值
    do {
        printf("%d ", powers[i]);
        i++;
    } while (i < 8);
    
    printf("\n");
    return 0;
}

结果:
image

6.16-16

点击查看代码
#include <stdio.h>

int main(void)
{
    double daphne_balance = 100.0;    // Daphne的投资余额(单利)
    double deirdre_balance = 100.0;   // Deirdre的投资余额(复利)
    int years = 0;
    
    printf("年份\tDaphne余额\tDeirdre余额\n");
    printf("-----------------------------------\n");
    
    // 循环直到Deirdre的投资超过Daphne
    while (deirdre_balance <= daphne_balance) {
        years++;
        
        // Daphne: 单利,每年增加原始本金的10%
        daphne_balance += 100.0 * 0.10;
        
        // Deirdre: 复利,每年增加当前余额的5%
        deirdre_balance *= 1.05;
        
        printf("%d\t$%.2f\t\t$%.2f\n", years, daphne_balance, deirdre_balance);
    }
    
    printf("\n经过 %d 年,Deirdre的投资额超过了Daphne\n", years);
    printf("Daphne的投资额: $%.2f\n", daphne_balance);
    printf("Deirdre的投资额: $%.2f\n", deirdre_balance);
    
    return 0;
}

结果:
image

6.16-18

点击查看代码
#include <stdio.h>

#define DUNBAR_NUMBER 150

int main(void)
{
    int friends = 5;      // 初始朋友数量
    int week = 0;
    
    printf("周数\t朋友数量\n");
    printf("--------------\n");
    printf("%d\t%d\n", week, friends);
    
    // 循环直到朋友数量超过邓巴数
    while (friends <= DUNBAR_NUMBER) {
        week++;
        
        // 第N周:少了N个朋友,然后剩下的朋友数量翻倍
        friends = (friends - week) * 2;
        
        printf("%d\t%d\n", week, friends);
    }
    
    printf("\n在第 %d 周,Rabnud博士的朋友数量超过了邓巴数(%d)\n", 
           week, DUNBAR_NUMBER);
    
    return 0;
}

结果:
image

7.12

1

点击查看代码
#include <stdio.h>

int main(void)
{
    char ch;
    int space_count = 0, newline_count = 0, other_count = 0;
    
    printf("请输入字符(以#结束): ");
    
    while ((ch = getchar()) != '#') {
        if (ch == ' ') {
            space_count++;
        } else if (ch == '\n') {
            newline_count++;
        } else {
            other_count++;
        }
    }
    
    printf("空格数: %d\n", space_count);
    printf("换行符数: %d\n", newline_count);
    printf("其他字符数: %d\n", other_count);
    
    return 0;
}

结果:
image

2

点击查看代码
#include <stdio.h>

int main(void)
{
    char ch;
    int count = 0;
    
    printf("请输入字符(以#结束): ");
    
    while ((ch = getchar()) != '#') {
        printf("'%c'-%d ", ch, ch);
        count++;
        
        // 每打印8个字符换行
        if (count % 8 == 0) {
            printf("\n");
        }
    }
    
    printf("\n");
    return 0;
}

结果:
image

4

点击查看代码
#include <stdio.h>

int main(void)
{
    char ch;
    int replace_count = 0;
    
    printf("请输入字符(以#结束): ");
    
    while ((ch = getchar()) != '#') {
        if (ch == '.') {
            putchar('!');
            replace_count++;
        } else if (ch == '!') {
            putchar('!');
            putchar('!');
            replace_count++;
        } else {
            putchar(ch);
        }
    }
    
    printf("\n总共进行了 %d 次替换\n", replace_count);
    return 0;
}

结果:
image

5

点击查看代码
#include <stdio.h>

int main(void)
{
    char ch;
    int replace_count = 0;
    
    printf("请输入字符(以#结束): ");
    
    while ((ch = getchar()) != '#') {
        switch (ch) {
            case '.':
                putchar('!');
                replace_count++;
                break;
            case '!':
                putchar('!');
                putchar('!');
                replace_count++;
                break;
            default:
                putchar(ch);
                break;
        }
    }
    
    printf("\n总共进行了 %d 次替换\n", replace_count);
    return 0;
}

结果:
image

7

点击查看代码
#include <stdio.h>

#define BASIC_WAGE 10.00
#define OVERTIME_RATE 1.5
#define OVERTIME_HOURS 40
#define TAX_RATE1 0.15
#define TAX_RATE2 0.20
#define TAX_RATE3 0.25
#define TAX_LIMIT1 300
#define TAX_LIMIT2 450

int main(void)
{
    float hours, gross_pay, taxes, net_income;
    
    printf("请输入一周工作的小时数: ");
    scanf("%f", &hours);
    
    // 计算工资总额
    if (hours <= OVERTIME_HOURS) {
        gross_pay = hours * BASIC_WAGE;
    } else {
        gross_pay = OVERTIME_HOURS * BASIC_WAGE + 
                   (hours - OVERTIME_HOURS) * BASIC_WAGE * OVERTIME_RATE;
    }
    
    // 计算税金
    if (gross_pay <= TAX_LIMIT1) {
        taxes = gross_pay * TAX_RATE1;
    } else if (gross_pay <= TAX_LIMIT2) {
        taxes = TAX_LIMIT1 * TAX_RATE1 + 
               (gross_pay - TAX_LIMIT1) * TAX_RATE2;
    } else {
        taxes = TAX_LIMIT1 * TAX_RATE1 + 
               (TAX_LIMIT2 - TAX_LIMIT1) * TAX_RATE2 + 
               (gross_pay - TAX_LIMIT2) * TAX_RATE3;
    }
    
    // 计算净收入
    net_income = gross_pay - taxes;
    
    printf("\n工资总额: $%.2f\n", gross_pay);
    printf("税金: $%.2f\n", taxes);
    printf("净收入: $%.2f\n", net_income);
    
    return 0;
}

结果:
image

posted @ 2025-11-07 20:03  aaa(zzz)  阅读(13)  评论(0)    收藏  举报