08-黑马程序员------C 语言学习笔记---C语言的循环结构

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

循环结构

01 当型循环while

格式:

while(表达式)

语句;

*先计算while后面表达式的值,如果岂值为真,则执行循环体

*执行完循环体后,再次执行计算while后的表达式,其值还为真则继续执行循环体,其值为假,则退出循环。

*一开始表达式为假,则一次循环也不执行

*循环体有多个语句,用{}括起来

*循环体中应有使循环体结束的语句,避免死循环

*循环初始值,累加常设置为0,累乘常设置为1

// 输入若干字符,如果是大写字母,则转换为小写,如果不是则不转换,输入0程序结束

#include <stdio.h>
int main()
{
    char ch;
    while ((ch=getchar())!=0)
    {
        ch = ((ch>=‘A‘&&ch<=‘Z‘)?(ch+32):ch);
        printf("%c",ch);
    }

}

02 do-while

格式:

do

{

语句;

}while(表达式)

*执行do后面的循环体语句,然后再计算表达式,如果表达式为真,则继续执行循环体,如果表达式为假,则退出循环。

*while后面必须加;

// 计算:1+1/2+1/4+....+1/50

#include <stdio.h>
int main()
{
    int i=2;
    float sum=1;
    while (i<=50)
    {
        sum = sum+1.0/i;
        i+=2;
    }

    printf("sum=%f\n",sum);

    return 0;
}

03 for循环

for(表达式1;表达式2;表达式3)

循环体;

*先计算表达式1,再计算表达式2,如果其值为真,则执行循环体,再执行表达式3,然后再继续循环。其值为假,则退出循环。

四 break语句和continue语句

01           break语句

格式:break;

*终止对switch语句或循环语句的执行,而转移到其后的语句处执行。

02 continue语句

格式:continue;

*continue的作用是结束本次循环,即跳过本次循环中余下尚未执行的语句,接着进行下一次循环的判定。

*与break语句不同,执行continue语句并没有使整个循环终止。

// 求正整数n的阶乘n!,其中n由用户输入

#include <stdio.h>
int main()
{
    float fact;

    int n,i;

    printf("请输入整数:\n");

    scanf("%d",&n);

    for (i=1,fact=1.0; i<=n; i++)
    {
        fact = fact*i;
    }

    printf("fact=%f\n",fact);

    return 0;
}

五 指针程序设计

01 指针变量的含义:指针变量就是一类存取其他变量或函数的地址的变量。

02           指针变量的定义:

基类型 *指针变量名【=初始值】

03           指针变量的赋值:

*通过地址运算符&赋值,可以把一个变量的地址赋给指针变量。

如:float f,*p;

p=&f;

*定义指针变量的同时赋值

如:float f,*p=&f;

*通过其他指针赋值

如:int i,*p1=&i,*p2;

p2=p1;

注意:两个指针类型所指的数据类型必须相等

// 输出九九乘法口诀
#include <stdio.h>
int main()
{
    int i,j;
    for (i=1; i<=9; i++)
    {
        for (j=1; j<=i; j++)
        {
            printf("%d*%d=%-3d",j,i,i*j);

        }
         printf("\n");
    }

    return 0;
}

04           指针运算符

指针运算符*是单目运算符,可以用来存取所指向的存储单元中得数据。

如:int x,*p;

p=&x;

说明指针p指向x,x是p指向的对象,可以用*p来引用x。

// 从键盘上连续输入字符,并统计其中大写字母的个数,直到输入“换行”字符时结束

#include <stdio.h>
int main()
{
    char ch ;
    int sum = 0;
    while (1)
    {
        ch = getchar();

        if (ch==‘\n‘)
        {
            break;
        }
        if (ch>=‘A‘&&ch<=‘Z‘)
        {
            sum++;
        }

    }

     printf("%d\n",sum);
    return 0;
}
// 从键盘输入30个字符,统计其中数字字符的个数

#include <stdio.h>
int main()
{
    char ch;
    int i,sum=0;
    for (i=1; i<=30; i++)
    {
        ch =getchar();
        if (ch<‘0‘||ch>‘9‘)
        {
            continue;

        }
        sum++;

    }

    printf("%d\n",sum);    

    return 0;
}
// 由键盘输入一个正整数,求出其最高位数字

#include <stdio.h>
int main()
{
    int i,*P;
    P=&i;
    printf("请输入一个正整数:\n");
    scanf("%d",&i);
    while (*P>=10)
    {
        *P= *P/10;
    }

    printf("最高位数字是:%d\n",*P);

    return 0;
}
时间: 2024-10-25 18:59:35

08-黑马程序员------C 语言学习笔记---C语言的循环结构的相关文章

黑马程序员--java基础学习笔记5

黑马程序员--java基础学习笔记6 一.笔记内容概述: 数组-第二种定义格式.数组-常见操作-遍历-最值-选择排序-冒泡排序-排序位置置换代码提取.数组-排序的性能问题.数组-常见功能-查找-折半查找.进制转换-查表法-整合. 二.常用内容介绍: 1.数组初始化的三种方式: int[] arr = new int[3]; int[] arr = new int[]{1,2,3}; int[] arr = {1,2,3}; 2.查表法: 如果数据中出现了对应关系,而且对应关系的一方是有序的数字编

黑马程序员--java基础学习笔记3

一.笔记内容概述: 比较运算符&逻辑运算符.位运算符.移位运算符.三元运算符.if语句.局部代码块.switch语句.while语句.do-while语句.for循环语句.循环结构的使用场景. 二.常用内容介绍: 1.>>>无符号右移,数据进行右移时,高位出现的空位,无论原来的最高位是什么,空位都用0补. 2.^运算符的特点: true ^ true = false; true ^ false = true; false ^ true = true; true ^ true =

黑马程序员--java基础学习笔记8

 一.笔记内容概述: 面向对象(数组工具对象建立-文档注释-单例设计模式&内存图解).继承.单继承和多重继承. 二.常用内容介绍: 1.继承的好处:提高了代码的复用性;让类与类之间产生了关系;开发最终的核心内容:不断地创建对象,使用对象,并维护着对象之间的关系. 2.什么时候使用继承? 当类与类之间存在着所属关系的时候,就定义继承;java不直接支持多继承,因为多个父类中如果有相同成员时,就会出现调用的不确定性;java中通过多实现implements的方式来间接体现多继承; 3.如何学习一

黑马程序员_ 基础学习笔记总结

------- android培训.java培训.期待与您交流! ---------- 1.java api System.getProperties()方法 该方法返回一个Properties对象,这个对象里存储的是java虚拟机启动时系统的基本资料,如操作系统类型(windows.linux..),系统使用语言,系统默认字符集等.当java开发跨平台代码时常常需要根据运行程序的操作系统类型做一些特定操作,就可以通过System.getProperties()返回的对象检查系统类型. 2.ja

黑马程序员--Java基础学习笔记【单例设计模式、网络编程、反射】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 设计模式分类: 创建模式:是对类的实例化过程的抽象化,又分为类创建模式和对象创建模式 类创建模式:工厂方法模式 对象-:简单工厂(静态工厂方法)模式.抽象工厂模式.单例模式.建造模式- 结构模式:描述如何将类或者对象结合在一起形成更大的结构 适配器模式.缺省模式.合成模式.装饰模式(包装模式).门面模式- 行为模式:对不同的对象之间划分责任和算法的抽象化 不变模式.策略模式.迭代子模式.命令模

黑马程序员--Java基础学习笔记【序列化、多线程】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 序列化流与反序列化流 ObjectOutputStream 对象输出流 writeObject(Object obj) 可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中 ObjectInputStream对象输入流 readObject(Objectobj) 从源输入流中读取字节序列,反序列化为一个对象并返回 序列化:将数据分解成字节流,以便存储在文件中或在网络上传输

黑马程序员--Java基础学习笔记【异常处理】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 异常 异常就是Java程序在运行过程中出现的导致程序无法正常运行的错误. Java 中异常继承体系,顶层的类 java.lang.Throwable java.lang.Exception 所有异常的超类 RuntimeException 运行时异常可以不处理 非RuntimeExceptioin非运行时异常必须捕获处理 java.lang.Error 所有错误的超类 异常处理机制 当程序中抛

黑马程序员--Java基础学习笔记【正则表达式、常用API】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 正则表达式 正则表达式的组成规则 java.util.regex.Pattern 常见组成规则 字符集合 [abc] a.b.c中任意一个字符 [^abc] 除了a.b.c的任意字符 [a-z] a-z中的任意一个字符 [a-zA-Z0-9] a-z.A-Z.0-9中任意一个字符 [a-z&&[^bc]] a-z中除了b和c以外的任意一个字符 预定义字符集 .任意一个字符 \d 任意一个

黑马程序员--java基础学习笔记6

一.笔记内容概述: 面向对象(概述&举例).类与对象的之间的关系.类与对象体现&细节.对象的内存体现.成员变量和局部变量的区别.类类型参数.匿名对象.基本数据类型参数传递图解.引用数据类型参数传递图解.封装&代码示例.面向对象(封装&思想).二维数组&定义方式&内存图解&另一种定义方式&应用场景. 二.常用内容介绍: 1.面向对象的特征: a.封装:将具体动作封装起来,方便调用,提高了代码的复用性和安全性. b.继承:继承某个类后,可以直接调

黑马程序员--java基础学习笔记4

一.笔记内容概述: 函数-定义.函数-格式.函数-细节-void.函数-细节-错误格式.函数-细节-定义思想错误.函数-两个明确.函数-内存加载过程.函数-重载.数组-概述.数组-定义.数组-内存空间划分.数组-栈内存-堆内存.数据常见问题. 二.常用内容介绍: 1.编写函数体时,两个明确: a.这个功能的结果是什么?(其实就是在明确函数的返回值类型). b.这个功能的实现过程中是否需要未知内容参与运算?(其实就是在明确参数列表). c.函数返回值类型与参数列表中的参数类型没有关系.(看下面)