程序结构和数组

一、程序结构

  1、分类:顺序结构、循环结构、选择结构。

  2、顺序结构:程序是按照先后顺序执行

  3、循环结构;设置一个条件,当满足时就一直在这个条件内执行某一重复内容,当不满足时跳出,for循环、和while循环。

  4、选择结构:设置一条件,满足时执行一种程序,不满足时执行另一种,两种程序只能执行其中一个。if...esle判断语句和switch...case语句。

二、数组

  1、分类:一维数组、二维数组、多维数组

  2、形式:类型说明符+数组名+[常量表达式],例如:int a[20]

  3、特点:

      所有元素是同一类型

      元素内部排列是有顺序的

      元素的起始位置是0,例如:int a[10],第一个元素是a[0],最后一个元素是a[9]。

      数组必须声明类型,也就是有类型说明符

三、与数组和程序结构相关的例子

  1、求一个三位数的各个系数,例如a=1234,分别求出打印出个位、十位、百位、千位系数。

  此程序是由C语言编写,只有顺序结构。

  

#include "stdio.h"
void main()
{
    int a = 1234;
    int gw,sw,bw,qw;
    gw = a%10;
    sw = a/10%10;
    bw = a/100%10;
    qw = a/1000%10;
    printf("个位:%d\n",gw);
    printf("十位:%d\n",sw);
    printf("百位:%d\n",bw);
    printf("千位:%d",qw);

}

  2、整数的逆排,例如a=123456,结果要求为:654321

  此程序是用C语言编写,只有顺序结构和while循环结构

  

#include "stdio.h"
void main()
{
    int a = 123456;
    int b = 0;

    while(a>0)
    {
        b = b*10 + a%10;
        a = a/10;
    }
    printf("b=%d\n",b);

}

  分析:这个需要清楚每位的系数如何求,然后逆向计算就得出逆序排列

  3、在一个数组内实现移位循环

  分析:移位循环就是数值的位置移动,即下一个值赋给上一个位置,最后一个值给第一个位置。

  此程序是由python语言编写,包括了三大结构。

  

a = []
i = 0
while i<20:
    a.append(i)
    i += 1
print(a)

j = 0
while j < 10:
    c = a[0]
    i = 0
    while i<19:
        a[i] = a[i+1]
        i += 1
        if i == 19:
            a[19] = c
    j += 1
    print(a)

  4、有十个人,编号从1到10,从第一个人开始报数,从1到3报数,当报到3时,这个人蹲下,以后不再参与报数,依次循环,最后剩下的是哪个人?

  分析;此题有三个关键知识点:

    第一:十个人的循环,如果看成数组,如何让循环在10以内无限次循环?

    第二:如何有规律的改变数组内的值,即每循环依次就依据判断条件改变某一位置的值

    第三:如何设置有效的退出循环条件

  下面是由python语言编写的程序,python语言中的列表可以看成是C语言中的一维数组,包括了三大程序结构

  

a = [1,2,3,4,5,6,7,8,9,10]
i = 0
gs0 = 0
bs = 0
while True:
    if a[i] != 0:
        bs += 1
    if bs == 3:
        a[i] = 0
        gs0 += 1
        bs = 0
        print(a)
        if gs0 == 9:
            break

    i += 1
    i = i%10
i = 0
while i < 10:
    if a[i] != 0:
        print(‘下标是‘,i,‘的值是‘,a[i])
        break
    i += 1

原文地址:https://www.cnblogs.com/thoughtful-actors/p/9477887.html

时间: 2024-10-17 21:09:00

程序结构和数组的相关文章

情境三:程序结构与数组 4、循环实训

1.要求用户输入一个0到2之间的整数, 如果用户输入0输出"你出的是石头", 如果用户输入1就输出"你出的是剪刀", 如果用户输入的是2就输出"你出的是布", 然后再问是否要继续出拳, 如果回答"y"就重复以上过程,否则结束程序. 2.计算2000年1月1日到2008年1月1日相距多少天.(注意闰年). 3.循环输入大于0的数字进行累加,直到输入的数字为0,就结束循环,并最后输出累加的结果. 实训课结束后,由学委收集实验报告(

黑马程序员-----结构体数组

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ----- 第一讲  结构体数组 一.结构体数组的概念       数组的元素也可以是结构类型的.因此可以构成结构型数组.结构数组的每一个元素都是具有相同结构类型的下表结构变量.在实际应用中,经常用结构数组来表示具有相同数据结构的一个群体.如一个班的学生

【C语言】用结构体数组实现:有三个候选人,每个选民只能选一个人,编写一个选票程序,最终输出候选人的票数

//用结构体数组实现:有三个候选人,每个选民只能选一个人,编写一个选票程序,最终输出候选人的票数(假设有十个选民) #include <stdio.h> #include <stdio.h> struct Person //声明结构体 { char name[20]; int count; }leader[3]={"li",0,"zhang",0,"sun",0}; //定义结构体数组并初值化 int main() { i

黑马程序员---C基础12【结构体数组】【结构体指针】【结构体嵌套】【作为函数参数】【枚举类型】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [结构体数组] 1.结构体数组: 结构体数组的每一个元素都是具有相同结构类型的下标结构变量:(可以表示一个群体,一个班学生档案) 2.结构数组定义: 定义格式: struct    结构名{ 成员列表: }数组名[数组长度]: 1 1)定义结构体的同时定义数组: 2 3 struct stu{ 4 5 int num; 6 7 char name[10]; 8 9 int age; 10 11

NumPy-快速处理数据--ndarray对象--多维数组的存取、结构体数组存取、内存对齐、Numpy内存结构

本文摘自<用Python做科学计算>,版权归原作者所有. 上一篇讲到:NumPy-快速处理数据--ndarray对象--数组的创建和存取 接下来接着介绍多维数组的存取.结构体数组存取.内存对齐.Numpy内存结构 一.多维数组的存取 多维数组的存取和一维数组类似,因为多维数组有多个轴,因此它的下标需要用多个值来表示,NumPy采用组元(tuple)作为数组的下标.如二维数组需要(x, y)的元组标记一个数组元素:三维数组需要(x, y, z)的元组标记一个元素. 如下图所示,a为一个6x6的二

C#引用c++DLL结构体数组注意事项(数据发送与接收时)

本文转载自:http://blog.csdn.net/lhs198541/article/details/7593045 最近做的项目,需要在C# 中调用C++ 写的DLL,因为C# 默认的编码方式是Unicode,而调用的DLL规定只处理UTF8编码格式的字符串,DLL中的输入参数类型char*被我Marshal成byte[],输出参数类型char**被我Marshal成了string(C++和C#之间的类型转换请参阅相关资料),于是我就经历了无数次用于接收时的string-->string(

第五章 程序结构

返回值 系统自动生成返回值的副本,该副本可以在程序中的返回点获得 函数原型声明 除非函数的定义在相同源文件的前面,否则必须使用函数原型声明(通常在#include和using之后): #include <iostream> using namespace std; double power(double x,int y);  //函数原型声明,形参可以和函数实现不同甚至只写double,int int main() { x=power(y,z); } double power(double x

元宵节后第一发(数据决定程序结构)

放假回家好久没写代码了,来一发牛客网的题.(这个题再次说明我一直强调的问题数据的特性决定了程序结构) 题目描述 实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符. 保证字符串中的字符为ASCII字符.字符串的长度小于等于3000. /* * 解题思路 * 1:可以用位图来做,由于是accii码,所以字符取值范围为0~255,只需建立

结构体数组与用malloc申请结构体空间的对比

结构体数组与用malloc申请结构体空间的对比 文章标题听起来很拗口,可能我描述的不太清楚,还是看例程吧: 我先写以前最早会用的malloc: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 struct student 6 { 7 char *name; 8 int age; 9 }; 10 11 int main() 12 { 13 struct student *p_stud