21._do...while 与 while 和 for 的比较

do...while

  格式:

    do

    {

      ...

    } while (表达式)

  功能:主要用于人机交互

while 和 for 可以相互转换,而且它两当表达式为假时,不执行循环体。do...while则不同,至少执行循环体一次。dp...while并不等假于for,当然也不等价于while。

举例:一元二次方程

 1 /*
 2     2015年4月2日 10:09:39
 3     目的:用 do...while 实现一元二次方程
 4
 5
 6 */
 7
 8 # include <stdio.h>
 9 # include <math.h>
10
11 int main(void)
12 {
13     double a, b, c;
14     double delta;
15     double x1, x2;
16     char ch;
17
18     do
19     {
20
21         printf("请输入一元二次方程的三个系数:\n");
22         printf("a = ");
23         scanf("%lf", &a);
24
25         printf("b = ");
26         scanf("%lf", &b);
27
28         printf("c = ");
29         scanf("%lf", &c);
30
31         delta = b*b - 4*a*c;
32
33         if (delta > 0)
34         {
35             x1 = (-b + sqrt(delta))/(2*a);
36             x2 = (-b - sqrt(delta))/(2*a);
37             printf("有两个解,x1 = %f, x2 = %lf\n", x1, x2);
38         }
39         else if (delta == 0)
40         {
41             x1 = x2 = (-b) / (2*a);
42             printf("有唯一解,x1 = x2 = %lf\n", x1, x2);
43         }
44         else
45             printf("无实数解!\n");
46
47         printf("您想继续么(Y/N):");
48         scanf(" %c", &ch); //%c前面必须加一个空格,原因略
49
50     } while (‘y‘==ch || ‘Y‘==ch);
51
52
53
54     return 0;
55
56 }
57 /*
58     在VC6.0中运行结果是:
59 -----------------------------
60 请输入一元二次方程的三个系数:
61 a = 1
62 b = 2
63 c = 3
64 无实数解!
65 您想继续么(Y/N):y
66 请输入一元二次方程的三个系数:
67 a = 1
68 b = 5
69 c = 6
70 有两个解,x1 = -2.000000, x2 = -3.000000
71 您想继续么(Y/N):Y
72 请输入一元二次方程的三个系数:
73 a = 1
74 b = 1
75 c = 4
76 无实数解!
77 您想继续么(Y/N):y
78 请输入一元二次方程的三个系数:
79 a = 1
80 b = 4
81 c = 4
82 有唯一解,x1 = x2 = -2.000000
83 您想继续么(Y/N):n
84 -----------------------------
85     总结:
86
87 */

时间: 2025-01-31 00:42:42

21._do...while 与 while 和 for 的比较的相关文章

Educational Codeforces Round 21 G. Anthem of Berland(dp+kmp)

题目链接:Educational Codeforces Round 21 G. Anthem of Berland 题意: 给你两个字符串,第一个字符串包含问号,问号可以变成任意字符串. 问你第一个字符串最多包含多少个第二个字符串. 题解: 考虑dp[i][j],表示当前考虑到第一个串的第i位,已经匹配到第二个字符串的第j位. 这样的话复杂度为26*n*m*O(fail). fail可以用kmp进行预处理,将26个字母全部处理出来,这样复杂度就变成了26*n*m. 状态转移看代码(就是一个kmp

2016/5/21学习记录

1.重大教训!先上代码 1 package Pra; 2 3 public class Read { 4 5 public static void main(String[] args) { 6 T a = new T(); 7 Read.swap(a); 8 System.out.println("e1 = "+a.e1+"e2 = "+a.e2); 9 } 10 public static void swap(T t){ 11 int temp = t.e1;

JavaSE入门学习21:Java面向对象之接口(interface)(二)

一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.java源文件代码: public class Test{ public static void main(String[] args){ //实现接口Singer Singer s1 = new Student("Amy"); s1.sing(); s1.sleep(); s1.study

Java程序最容易犯的21种错误

1.Duplicated Code 代码重复几乎是最常见的异味了.他也是Refactoring的主要目标之一.代码重复往往来自于copy-and-paste的编程风格.与他相对应OAOO是一个好系统的重要标志. 2.Long method 它是传统结构化的"遗毒".一个方法应当具有自我独立的意图,不要把几个意图放在一起. 3.Large Class 大类就是你把太多的责任交给了一个类.这里的规则是One Class One Responsibility. 4.Divergent Cha

android studio :com.android.support:appcompat-v7:21.+ 报错

android studio :com.android.support:appcompat-v7:21.+ 报错: 在project——>app——>build.gradle修改: apply plugin: 'com.android.application' android { compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { applicationId "com.example.ri

数据结构上机测试2-1:单链表操作A (顺序建表+关键字删除)

数据结构上机测试2-1:单链表操作A Time Limit: 1000MS Memory limit: 4096K 题目描述 输入n个整数,先按照数据输入的顺序建立一个带头结点的单链表,再输入一个数据m,将单链表中的值为m的结点全部删除.分别输出建立的初始单链表和完成删除后的单链表. 输入 第一行输入数据个数n: 第二行依次输入n个整数: 第三行输入欲删除数据m. 输出 第一行输出原始单链表的长度: 第二行依次输出原始单链表的数据: 第三行输出完成删除后的单链表长度: 第四行依次输出完成删除后的

21 Guns -- Green Day

21 Guns Green Day (绿日乐队)的代表曲之一.歌曲的主题是反战,同时安慰了曾 经信任布什政府如今失望透顶的美国民众.这首歌也被电影<变形金刚2> 当作插曲. Do you know what's worth fighting for When it's not worth dying for? Does it take your breath away And you feel yourself suffocating1?Does the pain weigh out the

普林斯顿公开课 算法2-1:排序概述

目标 对所有类型的数据进行排序. 问题 排序函数如何知道比较的是哪种类型的数据呢? 回调函数 这时候就需要引入回调函数的概念了.回调函数就是将可执行的代码作为参数进行传递. 实现回调的方法 在Java中可以通过接口来实现,在C语言中可以通过函数指针来实现,C++中可以通过class-type functor,也就是重载操作符operator ()的类,在C#中可以使用Delegate委托,在Python/Perl/ML/javascript中可以直接传递函数. JDK中提供了Comparable

Java学习作业(14.4.21)

前三次作业都是基础语法.真的好水啊.从这次开始记录. 1.编写Java程序,把当前目录下扩展名为txt的文件的扩展名全部更名为back. 1 import java.io.*; 2 import java.lang.*; 3 4 5 public class Home { 6 7 public void reName(String path, String from, String to) { 8 File f = new File(path); //声明File对象,用于导入修改路径 9 Fi