我的c语言学习记录(蓝桥)————选择程序设计

本文详细介绍了C语言中的选择结构,包括if语句的使用,如何处理多个条件判断,以及switch语句的实现。通过示例代码,解释了如何在程序中加入条件判断以处理一元二次方程根的计算,以及如何根据用户输入实现不同条件下的输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

选择程序设计

大家应该还记得我们上一节课做过一个题目,这个题目是用来求一元二次方程的根的,原来的程序如下:

#include<stdio.h>

#include<math.h>               //程序中要调用求平方根函数 sqrt

int main(){

    double a,b,c,disc,x1,x2,p,q;

    scanf("%lf%lf%lf",&a,&b,&c);

    disc = b * b - 4 * a * c;

    p = -b / (2.0 * a);

    q = sqrt(disc) / (2.0 * a);

    x1 = p + q,x2 = p - q;

    printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);

    return 0;

}

这个程序我们并没有加入一个 b^2-4ac 是否大于等于 0 的一个判断,现在我们对这个程序做出一些改动,加入判断语句,输入以下代码:

#include<stdio.h>

#include<math.h>               //程序中要调用求平方根函数 sqrt

int main(){

    double a,b,c,disc,x1,x2,p,q;

    scanf("%lf%lf%lf",&a,&b,&c);

    disc = b * b - 4 * a * c;

    if(disc<0)

        printf("This equation hasn't real root!\n");

    else{

        p = -b / (2.0 * a);

        q = sqrt(disc) / (2.0 * a);

        x1 = p + q,x2 = p - q;

        printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);

    }

    return 0;

}

输入以下命令编译并运行

gcc -o 6-1 6-1.c -lm

./6-1

我们运行两次,分别输入 abc 不同的值。

会看到以下结果:

 

程序分析

这就是一个选择结构,if 对给定的条件 disc<0 进行判断后,形成了两条路径,如果 disc<0 成立,执行 printf("This equation hasn't real root!\n");,如果 disc<0 不成立,执行 else{} 中的内容。

知识点:

  • 可以把几个语句放在一个 {} 中,这样如果 disc<0 不成立,就会执行 else{} 里面所有的内容;
  • 假如没有 {} 同时 disc<0,这个时候执行完 printf("This equation hasn't real root!\n");
  • 语句以后会从 q=sqrt(disc)/(2.0*a);
  • 接着往下执行,大家可以自己思考下加不加 {} 的影响。

if 语句实现选择结构

C 语言中选择结构最常用的就是 if 语句,为了了解 if 语句的应用,我们举一个例子进行说明。

编写源程序 6-2.c

#include<stdio.h>

int main(){

    int number=0;

    printf("\nPlease enter an integer between 1 and 10:");

    scanf("%d",&number);

    if(number>5)

        printf("You entered %d which is greater than 5\n",number);

    if(number<6)

        printf("You enter %d which is less than 6\n",number);

    return 0;

}

运行两次,分别输入 6 和 2.结果如下:

 

程序分析

  1. main() 函数体的前三个语句如下:

int number&

### 蓝桥杯特别数求和问题的C语言解法 蓝桥杯中的“特别数”的定义通常是指满足某些特定条件的一类整数。例如,在一些题目中,“特别数”可能被定义为能被某个固定数值整除或者具有其他特殊性质的数字[^1]。 以下是基于假设的一个通用实现方法,即如果“特别数”指的是能够被7整除或包含数字7的正整数,则可以按照如下逻辑编写程序: #### 代码实现 ```c #include <stdio.h> #include <stdbool.h> // 判断一个数是否为特别数 bool isSpecialNumber(int num) { int temp = num; while (temp != 0) { // 检查每一位是否有'7' if ((temp % 10) == 7) { return true; // 如果某一位是7则返回true } temp /= 10; } return (num % 7 == 0); // 若不是含7位数,判断能否被7整除 } int main() { int n; scanf("%d", &n); long long sum = 0; // 使用long long防止大范围溢出 for (int i = 1; i <= n; ++i) { if (isSpecialNumber(i)) { sum += i; // 将符合条件的数累加到sum变量里 } } printf("%lld\n", sum); // 输出最终的结果 return 0; } ``` 上述代码通过`isSpecialNumber()`函数来检测每一个自然数是否属于所谓的“特别数”,并利用循环结构逐一验证区间内的所有候选者,最后计算它们总和[^2]。 #### 关键点解析 - **数据输入**: 用户需提供上限值 `n`, 表示要统计从1至该最大值范围内所有的特别数之和。 - **核心算法设计**: - 定义辅助功能——检查单个给定参数是不是符合预设标准(这里指含有‘7’字符或是可由七整除的情况)[^3]. - 主流程部分采用遍历方式处理整个序列,并调用前述判定子过程完成筛选操作. - **性能考量**: 对于较大规模的数据集来说,此方案效率尚可接受;但如果进一步优化需求存在的话,还可以探索更高效的数学模型替代逐项枚举策略.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值