zoukankan      html  css  js  c++  java
  • 第二周学习内容

    转载请注明出处:http://www.cnblogs.com/Christen/p/5986489.html

    自学内容:

    1. while语句
    2. 循环嵌套
    3. 数组
    4. 排序
    

    1. while

    由于上节课时间有限,介绍完for循环后没有来得及讲while语句。
    简单来讲,while也是一种循环结构,先看一个例子:

    int i = 0;
    while (i < 10)
    {
    	printf("%d
    ", i);
    	i++;
    }
    

    这是一个输出0~9的程序片段。

    与for一样,while后面是一个空格加一对小括号,小括号里面是循环执行的条件。下面是一对大括号,里面是循环的内容。

    程序先判断是否满足小括号内的条件:
    如果满足条件,就执行大括号中的内容,执行之后返回while开头,判断是否满足条件,满足继续执行,不断循环,直到不满足条件就退出循环。

    这是先判断,后执行。

    还有一种循环结构do-while,是先执行,后判断。例如,要求用户从屏幕不断输入数,直到这个数在1~100之间。看下面的代码片段:

    do {
    	scanf("%d", &n);
    } while (n > 100 || n < 1);
    

    这次,while放在了后面。注意后面有一个分号。程序执行的时候,会先执行循环体内容,然后判断while的条件是否成立。假如用户第一次输入-1,scanf读入之后,while判断,发现符合(n>100或n<1)这个条件,所以回到开头,再一次执行scanf...直到用户输入一个1~100的数,不符合条件,就结束这个循环。

    while和do-while的区别:
    第一次循环的时候,while是要判断条件的,而do-while是一定会执行的。
    所以while语句会出现1次都不执行的情况,而do-while至少执行1次。


    练习1

    运行程序,输入不限量的数字,以回车分隔,直到0为止。输出所有数字的和。
    

    样例:

    注释:Please input numbers为提示语,可用printf实现。前6行为输入的数,到了0就停止读入,并输出以上所有数字之和为119


    2. 循环嵌套

    前面学过if-else的分支嵌套,这个循环嵌套也是很好理解的。举一个栗子:

    for (i = 0; i < 10; i++)
    {
    	for (j = 0; j < i; j++)
    	{
    		printf("%d", i);
    	}
    	printf("
    ");
    }
    

    能不能分析出来这个程序是实现什么功能?试着写出运行结果,然后在电脑上敲一遍代码,验证自己的答案。


    练习2

    打印如下数字矩形:
    01234
    12345
    23456
    34567
    45678
    

    3. 数组

    我们知道,要保存一个整数,要用到一个整型变量。若要保存2个整数,就要定义两个整型变量;三个数以此类推...

    int n;	//n用于存放一个int类型的数据
    int a,b,c;	//a,b,c分别放
    

    那如果要保存一个班级的所有人的成绩呢?此时我们就要用到数组。

    int score[50];
    

    这就是定义一个长度为50的整型数组,注意,它的下标是从0开始,分别为score[0], score[1], score[2], ..., score[49]。

    读入这50个成绩:

    for (i = 0; i < 50; i++) {
    	scanf("%d", &score[i]);
    }
    

    如果我们要找出这50个数中的最大数:

    int max = score[0];			//max用于存放最大数。一开始假定第一个数为最大
    for (i = 1; i < 50; i++) {
    	if (score[i] > max)		//每当后门遇到一个比max大的数,就更新max的值
    		max = score[i];
    }
    printf("%d
    ", max);
    

    这里的if语句没有加大括号,因为只有一条语句执行,所以{ }可以省略。读懂上面的程序片段,并完成以下练习。


    练习3

    读入10个数,输出最大值和最小值
    

    4. 排序

    两个数a,b进行排序,要求a<=b,一条if语句就可以完成:

    if (a > b) {		//若a>b, 则交换a,b的值
    	temp = a;		//temp为一个临时变量,用于存放a的值
    	a = b;
    	b = a;
    }
    

    三个数a,b,c从小到大排序:首先,让a分别与b,c比较,一旦有比a小的数,就进行交换。当a确定了最小数后,剩下b,c比较。

    if (a > b) {
    	temp = a; a = b; b = temp;
    }
    if (a > c) {
    	temp = a; a = c; c = temp;
    }
    if (b > c) {
    	temp = b; b = c; c = temp;
    }
    

    10个数从小到大排序呢?假设这10个数是a[0]~ a[9]。与上同理,先将a[0]与后面所有的数a[1],a[2],...,a[9]进行比较,一旦发现有比自身小的数,就进行交换。这一轮下来,保证a[0]是存放的最小值。第二轮,让a[1]与后面的数a[2],...,a[9]进行比较,以此类推。当进行到第9轮的时候,a[8]与a[9]进行比较,确定了a[8]的同时,a[9]也相应的确定下来了。所以一共九轮,就可以完成排序了。

    程序样例如下:

    for (i = 0; i < 9; i++) {
    	for (j = i+1; j < 10; j++) {
    		if (a[i] > a[j]) {
    			temp = a[i];
    			a[i] = a[j];
    			a[j] = temp;
    		}
    	}
    }
    

    理解并完成以下练习:


    练习4

    输入一个整数n,然后依次读入n个数. 2<=n<=100.
    将这n个数从大到小排序,并输出。
    

    样例如下:

  • 相关阅读:
    win7下配置JAVA环境变量
    使用PLSQL Developer和DbVisualizer、SQLDBx查询oracle数据库时出现乱码
    PL/SQL连接ORACLE失败,ORA-12154: TNS: could not resolve the connect identifier specified
    分布式计算开源框架Hadoop入门实践(三)
    分布式计算开源框架Hadoop入门实践(二)
    js使用WebSocket,java使用WebSocket
    springboot管理类,springboot注入类
    博客园点击弹出桃心的js样式、自动落雪花 、复制放进去即可实现
    jquery提交表单 提交form表单
    vue下拉列表
  • 原文地址:https://www.cnblogs.com/Christen/p/5986489.html
Copyright © 2011-2022 走看看