• 第3周


    3.1 if语句

    else总是和离它最近的if配对。

    3.2 switch语句

    表达式的值必须是整数类型(int, char...)。

    常量表达式必须是整数类型的常量(int, char...),不能包含变量。

    3.3 for循环

    循环控制变量定义在“表达式1”中,则只在for语句内部起作用,可以不用担心循环控制变量重名。

    循环结构里的“表达式1”和“表达式3”都可以是用逗号连接的若干个表达式。

    “表达式1”“表达式2”“表达式3”都可以不写,但是“;”必须保留。

    3.4 whie循环和do while循环

     

    作业

    1.奇偶数判断

    Description:给定一个整数,判断该数是奇数还是偶数。

    Input:输入仅一行,一个大于零的正整数n。

    Output:输出仅一行,如果n是奇数,输出odd;如果n是偶数,输出even。

    Sample Input:5

    Sample Output:odd

     1 #include <cstdio>
     2 
     3 int main()
     4 {
     5     int a;
     6     scanf("%d", &a);
     7 
     8     if(a%2 == 0) printf("even
    ");
     9     else printf("odd
    ");
    10 
    11     return 0;
    12 }

    2.求一元二次方程的根

    Description:利用公式x1 = (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - sqrt(b*b-4*a*c))/(2*a)求一元二次方程ax2+ bx + c =0的根,其中a不等于0。

    Input:输入一行,包含三个浮点数a, b, c(它们之间以一个空格分开),分别表示方程ax2 + bx + c =0的系数。

    Output:

    输出一行,表示方程的解。

    若b2 = 4 * a * c,则两个实根相等,则输出形式为:x1=x2=...。

    若b2 > 4 * a * c,则两个实根不等,则输出形式为:x1=...;x2 = ...,其中x1>x2。

    若b2 < 4 * a * c,则有两个虚根,则输出:x1=实部+虚部i; x2=实部-虚部i,即x1的虚部系数大于等于x2的虚部系数,实部为0时不可省略。实部 = -b / (2*a), 虚部 = sqrt(4*a*c-b*b) / (2*a)

    所有实数部分要求精确到小数点后5位,数字、符号之间没有空格。

    Sample Input:(1)1.0 2.0 8.0  (2)1 0 1

    Sample Output:(1)x1=-1.00000+2.64575i;x2=-1.00000-2.64575i  (2)x1=0.00000+1.00000i;x2=0.00000-1.00000i

     1 #include <cstdio>
     2 #include <cmath>
     3 
     4 #define EPS 1e-7
     5 
     6 int main()
     7 {
     8     double a, b, c;
     9     scanf("%lf %lf %lf", &a, &b, &c);
    10 
    11     double tmp = b*b-4*a*c;
    12     if(tmp<EPS && tmp>-EPS)
    13         printf("x1=x2=%.5f
    ", (-b)/(2*a)+EPS);
    14     else if(tmp > EPS) {
    15         double x1 = (-b+sqrt(tmp))/(2*a);
    16         double x2 = (-b-sqrt(tmp))/(2*a)+EPS;
    17         if(x1-x2 > EPS)
    18             printf("x1=%.5f;x2=%.5f
    ", x1+EPS, x2+EPS);
    19         else
    20             printf("x1=%.5f;x2=%.5f
    ", x2+EPS, x1+EPS);
    21     }
    22     else {
    23         printf("x1=%.5f+%.5fi;x2=%.5f-%.5fi
    ", (-b)/(2*a)+EPS, sqrt(-tmp)/(2*a)+EPS, (-b)/(2*a)+EPS, sqrt(-tmp)/(2*a)+EPS);
    24     }
    25 
    26     return 0;
    27 }

     3.点和正方形的关系

    Description:有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),x是横轴,y是纵轴。写一个程序,判断一个给定的点是否在这个正方形内(包括正方形边界)。

    Input:输入一行,包括两个整数x、y,以一个空格分开,表示坐标(x,y)。

    Output:输出一行,如果点在正方形内,则输出yes,否则输出no。

    Sample Input:1 1

    Sample Output:yes

     1 #include <cstdio>
     2 
     3 int main()
     4 {
     5     int x, y;
     6     scanf("%d %d", &x, &y);
     7 
     8     if(x>=-1 && x<=1 && y>=-1 && y<=1)
     9         printf("yes
    ");
    10     else
    11         printf("no
    ");
    12 
    13     return 0;
    14 }

    4.苹果和虫子

    Description:你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?

    Input:输入仅一行,包括n,x和y(均为整数)。

    Output:输出也仅一行,剩下的苹果个数

    Sample Input:10 4 9

    Sample Output:7

     1 #include <cstdio>
     2 
     3 int main()
     4 {
     5     int n, x, y;
     6     scanf("%d %d %d", &n, &x, &y);
     7 
     8     int tmp = y/x;
     9     if(y%x != 0)
    10         tmp++;
    11     if(n >= tmp)
    12         printf("%d
    ", n-tmp);
    13     else
    14         printf("0
    ");
    15 
    16     return 0;
    17 }

    5.简单计算器

    Description:一个最简单的计算器,支持+, -, *, / 四种运算。仅需考虑输入输出为整数的情况,数据和运算结果不会超过int表示的范围。

    Input:输入只有一行,共有三个参数,其中第1、2个参数为整数,第3个参数为操作符(+,-,*,/)。

    Output:

    输出只有一行,一个整数,为运算结果。然而:
    1. 如果出现除数为0的情况,则输出:Divided by zero!
    2. 如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!

    Sample Input:1 2 +

    Sample Output:3

     1 #include <cstdio>
     2 
     3 int main()
     4 {
     5     int x, y;
     6     char c;
     7     scanf("%d %d %c", &x, &y, &c);
     8 
     9     if(c!='+' && c!='-' &&c!='*' &&c!='/')
    10         printf("Invalid operator!
    ");
    11     else if(c == '+') {
    12         printf("%d
    ", x+y);
    13     } else if(c == '-') {
    14         printf("%d
    ", x-y);
    15     } else if(c == '*') {
    16         printf("%d
    ", x*y);
    17     } else {
    18         if(y == 0)
    19             printf("Divided by zero!
    ");
    20         else
    21             printf("%d
    ", x/y);
    22     }
    23 
    24     return 0;
    25 }

    6.求整数的和与均值

    Description:读入n(1 <= n <= 10000)个整数,求它们的和与均值。

    Input:输入第一行是一个整数n,表示有n个整数。第2~n+1行每行包含1个整数。每个整数的绝对值均不超过10000。

    Output:输出一行,先输出和,再输出平均值(保留到小数点后5位),两个数间用单个空格分隔。

    Sample Input:

    4

    344

    222

    343

    222

    Sample Output:1131 282.75000

     1 #include <cstdio>
     2 
     3 int main()
     4 {
     5     int n, sum = 0;
     6     scanf("%d", &n);
     7     for(int i=0; i<n; i++) {
     8         int tmp;
     9         scanf("%d", &tmp);
    10         sum += tmp;
    11     }
    12 
    13     printf("%d %.5f
    ", sum, (double)sum/n);
    14 
    15     return 0;
    16 }

    7.整数序列的元素最大跨度值

    Description:给定一个长度为n的非负整数序列,请计算序列的最大跨度值(最大跨度值 = 最大值减去最小值)。

    Input:一共2行,第一行为序列的个数n(1 <= n <= 1000),第二行为序列的n个不超过1000的非负整数,整数之间以一个空格分隔。

    Output:输出一行,表示序列的最大跨度值。

    Sample Input:

    6

    3 0 8 7 5 9

    Sample Output:9

     1 #include <cstdio>
     2 
     3 int main()
     4 {
     5     int n, minN = 1001, maxN = -1;
     6     scanf("%d", &n);
     7     for(int i=0; i<n; i++) {
     8         int tmp;
     9         scanf("%d", &tmp);
    10         if(tmp < minN)
    11             minN = tmp;
    12         if(tmp > maxN)
    13             maxN = tmp;
    14     }
    15 
    16     printf("%d
    ", maxN-minN);
    17 
    18     return 0;
    19 }

    8.奥运奖牌计数

    Description:2008年北京奥运会,A国的运动员参与了n天的决赛项目(1≤n≤17)。现在要统计一下A国所获得的金、银、铜牌数目及总奖牌数。

    Input:输入n+1行,第1行是A国参与决赛项目的天数n,其后n行,每一行是该国某一天获得的金、银、铜牌数目,以一个空格分开。

    Output:输出1行,包括4个整数,为A国所获得的金、银、铜牌总数及总奖牌数,以一个空格分开。

    Sample Input:

    3

    1 0 3

    3 1 0

    0 3 0

    Sample Output:4 4 3 11

    #include <cstdio>
    
    int main()
    {
        int n, a, b, c, gold = 0, silver = 0, copper = 0;
        scanf("%d", &n);
        for(int i=0; i<n; i++) {
            scanf("%d %d %d", &a, &b, &c);
            gold += a;
            silver += b;
            copper += c;
        }
    
        printf("%d %d %d %d
    ", gold, silver, copper, gold+silver+copper);
    
        return 0;
    }

    9.乘方计算

    Description:给出一个整数a和一个正整数n,求乘方an

    Input:一行,包含两个整数a和n。-1000000 <= a <= 1000000,1 <= n <= 10000。

    Output:一个整数,即乘方结果。题目保证最终结果的绝对值不超过1000000。

    Sample Input:2 3

    Sample Output:8

     1 #include <cstdio>
     2 
     3 int main()
     4 {
     5     int a, n;
     6     scanf("%d %d", &a, &n);
     7     int num = a;
     8     for(int i=1; i<n; i++) {
     9         num *= a;
    10     }
    11 
    12     printf("%d
    ", num);
    13 
    14     return 0;
    15 }

    a.鸡尾酒疗法

    Description:

    鸡尾酒疗法,原指“高效抗逆转录病毒治疗”(HAART),由美籍华裔科学家何大一于1996年提出,是通过三种或三种以上的抗病毒药物联合使用来治疗艾 滋病。该疗法的应用可以减少单一用药产生的抗药性,最大限度地抑制病毒的复制,使被破坏的机体免疫功能部分甚至全部恢复,从而延缓病程进展,延长患者生 命,提高生活质量。人们在鸡尾酒疗法的基础上又提出了很多种改进的疗法。为了验证这些治疗方法是否在疗效上比鸡尾酒疗法更好,可用通过临床对照实验的方式 进行。假设鸡尾酒疗法的有效率为x,新疗法的有效率为y,如果y-x大于5%,则效果更好,如果x-y大于5%,则效果更差,否则称为效果差不多。下面给 出n组临床对照实验,其中第一组采用鸡尾酒疗法,其他n-1组为各种不同的改进疗法。请写程序判定各种改进疗法效果如何。

    Input:

    第一行为整数n( 1 < n <= 20);
    其余n行每行两个整数,第一个整数是临床实验的总病例数(小于等于10000),第二个疗效有效的病例数。
    这n行数据中,第一行为鸡尾酒疗法的数据,其余各行为各种改进疗法的数据。

    Output:有n-1行输出,分别表示对应改进疗法的效果:如果效果更好,输出better;如果效果更差,输出worse;否则输出same

    Sample Input:

    5

    125 99

    112 89

    145 99

    99 97

    123 98

    Sample Output:

    same

    worse

    better

    same

     1 #include <cstdio>
     2 
     3 #define eps 1e-6
     4 
     5 int main()
     6 {
     7     int n;
     8     int total, valid;
     9     scanf("%d", &n);
    10     scanf("%d %d", &total, &valid);
    11     double x = (double)valid/total;
    12     while(--n) {
    13         scanf("%d %d", &total, &valid);
    14         double y = (double)valid/total;
    15         if(y-x-0.05 > eps)
    16             printf("better
    ");
    17         else if(x-y-0.05 > eps)
    18             printf("worse
    ");
    19         else
    20             printf("same
    ");
    21     }
    22 
    23     return 0;
    24 }
  • 相关阅读:
    Python基础检测:20171105
    Python中斐波那契数列的四种写法
    Python中斐波那契数列的四种写法
    学习Python3:20171031
    学习Python3:20171031
    9.3 Trains and Evaluates the MNIST network using a feed dictionary
    9.3 Trains and Evaluates the MNIST network using a feed dictionary
    学习Python3:201701030
    学习Python3:201701030
    周末微光
  • 原文地址:https://www.cnblogs.com/VincentValentine/p/5656323.html
Copyright © 2020-2023  润新知