第一部分 语言篇 第一章 程序设计入门

1.1 算术表达式

1、基本的算术运算符

+ - * / % 加、减、乘、除、取余
除的运算分为整数浮点数两种类型

  • 整数
    输出:%d
    例子:8/5=1;
    意义:取整数,余数舍去
  • 浮点数
    输出:%f
    例子:8.0/5=1.6;或8/5.0=1.6;或8.0/5.0=1.6;
    意义:数学意义上的除法
  • 注:进行浮点数小数点的保留位数处理时,用%m.nf输出:m表示输出时的位数,输出位数多出时,按照原位数输出,少于时,进行补零;当m为正数时,表示在左侧补位,复数时在右侧补位。n表示输出小数的位数,默认为6位。

1.2 变量及输入

1、使用变量前一定要声明变量
2、在进行变量的读入的时候使用scanf读入,变量前一定要加上&
3、double(双精度类型)的输入关键字为%lf
float(单精度类型)的输入关键字为%f
4、const关键字声明常数
这种声明方式于#define有所区别

1.3 顺序结构程序设计

  • 交换两个变量
//方法一
int a=1,b=2;
int c;//设置一个辅助变量,作为中间值
c=a;	a=b;	b=a;
//方法二
int a=1,b=2;
a=a+b;//a1=a0+b0;
b=a-b;//b1=a1-b0=a0;
a=a-b;//a2=a1-b1=b0;

1.4 分支结构程序设计

1、if(条件)语句1; else 语句2;
条件的判断有短路原则

练习

  1. 三角函数
    使用math.h库
    π使用const double pi=acos(-1);表示,因为cosπ=-1;
  2. 闰年的计算方法
    可以被4整除但不可被100整除,或者可以被400整除。
    代码如下:
#include 
#include 
void question_1(void)
{
     
    /*
    习题1-1 平均数(average)
    输入3个整数,输出它们的平均值,保留3位小数。
    */
    int a,b,c;  double avg;
    scanf("%d%d%d", &a,&b,&c);
    avg=(a+b+c)/3.0;
    printf("%.3lf",avg);
}
void question_2(void)
{
     
    /*
    习题1-2 温度(temperature)
    输入华氏温度f,输出对应的摄氏温度c,保留3位小数。提示:c=5(f-32)/9。
    */
    float f,c;
    scanf("%f", &f);
    c=5*(f-32)/9;
    printf("%.3f", c);
}
void question_3(void)
{
     
    /*
    习题1-3 连续和(sum)
    输入正整数n,输出1+2+…+n的值。提示:目标是解决问题,而不是练习编程。
    */
    int n,i,sum=0;
    scanf("%d", &n);
    for(i=1;i<=n;i++)
        sum+=i;
    printf("%d\n", sum);
}
void question_4(void)
{
     
    /*
    习题1-4 正弦和余弦(sin和cos)
    输入正整数n(n<360),输出n度的正弦、余弦函数值。提示:使用数学函数。
    */
    int n;  const double pi=acos(-1);
    scanf("%d", &n);
    printf("sin%d=%f,  cos%d=%f\n", n,sin(n*pi/180),n,cos(n*pi/180));
}
void question_5(void)
{
     
    /*
    习题1-5 打折 (discount)
    一件衣服95元,若消费满300元,可打八五折。输入购买衣服件数,输出需要支付的金
    额(单位:元),保留两位小数。
    */
    int num;
    scanf("%d", &num);
    if(num *95<300)
        printf("%d", 95*num);
    else    printf("%.2f", 95*0.85*num);
}
void question_6(void)
{
     
    /*
    习题1-6 三角形(triangle)
    输入三角形3条边的长度值(均为正整数),判断是否能为直角三角形的3个边长。如果
    可以,则输出yes,如果不能,则输出no。如果根本无法构成三角形,则输出not a triangle。
    */
    int a,b,c;
    scanf("%d%d%d", &a,&b,&c);
    if(a+b<=c||b+c<=a||a+c<=b)
        printf("not a triangle.\n");
    else if(a*a+b*b==c*c||b*b+c*c==a*a||a*a+c*c==b*b)
        printf("yes.\n");
    else    printf("no.\n");
}
void question_7(void)
{
     
    /*
    习题1-7 年份(year)
    输入年份,判断是否为闰年。如果是,则输出yes,否则输出no。
    提示:简单地判断除以4的余数是不够的。
    */
    int n;
    scanf("%d", &n);
    if(n%400==0||(n%100!=0&&n%4==0))
        printf("yes.\n");
    else    printf("no.\n");
}
void question_the_rest(void)
{
     
    /*
    问题1:int型整数的最小值和最大值是多少(需要精确值)?
    问题2:double型浮点数能精确到多少位小数?或者,这个问题本身值得商榷?
    问题3:double型浮点数最大正数值和最小正数值分别是多少(不必特别精确)?
    问题4:逻辑运算符号“&&”、“||”和“!”(表示逻辑非)的相对优先级是怎样的?也就是
    说,a&&b||c应理解成(a&&b)||c还是a&&(b||c),或者随便怎么理解都可以?
    问题5:if(a)if(b)x++;else y++的确切含义是什么?这个else应和哪个if配套?
    有没有办法明确表达出配套方法?
    */
    printf("int max = %d\nint min = %d\n", INT_MAX,INT_MIN);
}
int main()
{
     
    /*
    question_1();
    question_2();
    question_3();
    question_4();
    question_5();
    question_6();
    question_7();
    question_8();
    question_the_rest();
    */
}

你可能感兴趣的:(算法竞赛入门经典,c语言,程序设计)