第二章 算法

简介: 第二章 算法

1.基本概念

(1)对数据的描述

(2)对操作的描述

算法+数据结构=程序

2.算法的特性

  • 有穷性
  • 确定性
  • 有零个或多个输入
  • 有一个或多个输出
  • 有效性

3.判断素数

#include<stdio.h>
int main(void){
    int a;
    printf("输入一个整数:");
    scanf("%d",&a);
    if(a<=1){
        printf("非素数");    
    }
    else if(a==2){
        printf("是素数");    
    }
    else{
        for(int i=2;i<a;i++){
            if(a%i==0){
                printf("非素数!\n");
                return 0;            
            }       
            else{
                printf("成功通过1次\n");            
            } 
        }    
        printf("是素数!");
    }
    return 0;
}

4.判断闰年

#include<stdio.h>
int main(void){
    int a;
    printf("输入一个整数:");
    scanf("%d",&a);
    if(a%4 ==0 && a%100! =0){
        printf("是闰年!\n");    
    }else if(n%400==0){
        printf("是闰年!\n");    
    }
    else{
        printf("非闰年!\n");    
    }
    return 0;
}

5.判断回文数

#include<stdi0.h>
int main(void){
    int a=0,b=0,i=0;
    printf("输入一个整数:");
    scanf("%d",&i);
    a=i;
    while(a>0){
        b=b*10+a%10;
        a=a/10;    
    }
    if(b==i)
        printf("是回文数!");
    else{
        printf("非回文数!");
        return 0;    
    }
}

重难点:

1.使用printf和scanf函数时,要在最前面加上#include"stdio.h"

2.printf可以只有一个参数,也可以有两个参数

3.printf("a=%d,b=%d",12,34) 显示的是a=12,b=34

4.printf(“a=%d, \n b=%d",12,34) 输出的结果是

a=12

b=34

格式说明

表示内容

格式说明

表示内容

%d

整型 int

%c

字符char

%Id

长整型 long int

%s

字符串

%f

浮点型 float

%o

八进制

%If

double

%#o

带前导的八进制

%%

输出一个百分号

%x

十六进制

%5d

%#x

带前导的十六进制

printf("%2d",123);第二部分有三位,大于指定的两位,原样输出123

printf("%5d",123);第二部分有三位,小于指定的五位,左边补两个空格 123

printf("%10f",1.25);小数要求补足6位,没有六位的补0。结果为 1.250000

printf("%5.3f",125);小数三位,整个五位,结果为1.250

printf("%3.1f",1.25);小数一位,整个三位,结果为1.3(要四舍五入)

int x=97;

printf("%d,x); 结果为97

printf("%c,x);结果为a

指定输入的长度(考试重点)

终端输入:1234567

scanf("%2d%4d%d",&x,&y,&z);x为12,y为3456,z为7

什么叫结构化的算法?为什么要提倡结构化的算法?

结构化算法:由一些顺序,选择,循环等基本结构按照顺序组成,在基本结构之间不存在向前或向后的跳转,流程的控制只存在于一个基本的范围之内。

三种基本结构:

顺序结构:顺序结构是一种线性,有序的结构,它依次执行各语句模块。

选择结构:根据条件成立与否选择程序执行的通路。

循环结构:重复执行一个或多个模块,直到满足某一条件为止。

伪代码:

   1.依次将10个数输入,要求输出其中最大的数。

begin
   input 10个数据=>array
   array[0]=>max
   //循环9次,依次取剩余的9个数据
   1=>i
   while i<10{
       array[i]=>temp
       if temp > max{
           temp => max       
       }   
   }     
  1. 有3个数a,b,c,要求按大小顺序把它们输出。
begin
    input a
    input b 
    input c
    if a > b{
        a =>t
        b =>a
        t =>b    
    }
    if a > c{
        c =>t
        a =>c
        t =>a    
    }
    if b>c{
        c =>t
        b =>c
        t =>b    
    }
    print a
    print b
    print c
    end
  1. 求1+2+3...+100。
begin
    1=>i
    0=> sum
    while i <= 100
    {
        sum + i =>sum
        i + 1=>i    
    }
    print sum
end
  1. 判断一个数n能否同时被3和5整除。
begin
    input n
    if n%3==0{
        if n%5==0{
            print 能同时被整除        
        }  
        else{
            print 不能同时被整除        
        }  
    }
end
  1. 将100~200之间的素数输出。
begin
    100 =>i
    200 =>N
    while i <= N{
        2=>k
        while k<i{
            if i%k==0
            break;
            k+1=>k        
        }
        if k==i
        print i
        i+1=>i    
    }
    end
  1. 求两个数m和n的最大公约数。
begin
    input m
    input n
    if m<n{
        m=>t
        n=>m
        t=>n    
    }
    while n!=0{
        m%n=>r
        m=>n
        r=>n    
    }
    print m
end


相关文章
|
存储 Java 关系型数据库
全网最全、最新Maven构建工具核心知识,这篇文章包你这辈子也忘不掉Maven!!
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
全网最全、最新Maven构建工具核心知识,这篇文章包你这辈子也忘不掉Maven!!
C4.
|
C语言
C语言的运算符
C语言的运算符
C4.
90 0
|
11月前
|
存储 缓存 关系型数据库
滴滴面试:单表可以存200亿数据吗?单表真的只能存2000W,为什么?
40岁老架构师尼恩在其读者交流群中分享了一系列关于InnoDB B+树索引的面试题及解答。这些问题包括B+树的高度、存储容量、千万级大表的优化、单表数据量限制等。尼恩详细解释了InnoDB的存储结构、B+树的磁盘文件格式、索引数据结构、磁盘I/O次数和耗时,以及Buffer Pool缓存机制对性能的影响。他还提供了实际操作步骤,帮助读者通过元数据找到B+树的高度。尼恩强调,通过系统化的学习和准备,可以大幅提升面试表现,实现“offer直提”。相关资料和PDF可在其公众号【技术自由圈】获取。
|
消息中间件 关系型数据库 MySQL
从零玩转Docker之docker-compose快捷部署中间件2
从零玩转Docker之docker-compose快捷部署中间件
1492 0
基于jeecgboot的flowable流程增加节点表单的支持(三)
基于jeecgboot的flowable流程增加节点表单的支持(三)
210 1
|
存储 安全 数据安全/隐私保护
使用cpolar内网穿透实现内网SeaFile私有云盘的公网访问
现在我们身边的只能设备越来越多,各种智能手机、平板、智能手表和数码相机充斥身边,需要存储的数据也越来越大,一张手机拍摄的照片都可能有十多M,电影和视频更是按G计算。而智能设备的存储空间也用的捉襟见肘。能存储大量文件的,最合适的也就是家用电脑了。但家用电脑又存在无法随时随地调阅文件资料的问题。但只要经过简单几步,就能让家里的电脑秒变随时随地调阅存取文件的私有云盘。今天,笔者就为大家介绍,如何使用两个简单软件,让家里的电脑变身安全高效的私有云盘。
|
移动开发 前端开发 UED
深入理解Rem适配:移动端网页设计的利器
深入理解Rem适配:移动端网页设计的利器
|
监控 小程序 安全
微信小程序使用GoEasy实现websocket实时通讯
手把手的教您用GoEasy在微信小程序里,最短的时间快速实现一个websocket即时通讯Demo。
|
JavaScript
Vue 获取当前日期(时间,格式为YYYY-MM-DD HH:mm:ss)
Vue 获取当前日期(时间,格式为YYYY-MM-DD HH:mm:ss)
1367 0