前言
又到了一周一次的计算机程序课堂,今天老师讲的内容也是比较简单。今天大概讲了注释的两种方式,如果代码错误会发生什么,并让我们自己探索输入和比较两到三个数的大小,那我今天就来记录下我的代码。
上一篇关于环境设置的在:
注释方式
C 语言有两种注释方式:
第一种是以 // 开始的单行注释,这种注释可以单独占一行。
例如:
//单行注释
第二种是以/* */ 这种格式的注释,可以单行或多行。
例如:
/*
多行注释
多行注释
多行注释
*/
数据输入
对于数据,我们在之前的学习中已经知道了printf()语句是c语言中标准的输出语句,是在stdio.h这个头文件中定义的。那么同样的我们也有一个与之对应的输入语句:scanf()
scanf语句的定义是参数是这样的:scanf(const char *format, ...); 即:
函数从标准输入流 stdin 读取输入,并根据提供的 format 来浏览输入。
format 可以是一个简单的常量字符串,但是也可以和printf一样分别指定 %d、%c、%f 等来输出或读取整数、字符、浮点数等。还有许多其他可用的格式选项,可以根据需要使用。
例如:
#include<stdio.h>
int main(void)
{
int a;
scanf("%d",&a);//输入了一个a
printf("The number is %d.\n",a);
return 0;
}
显而易见,就是当上面的代码被编译和执行时,它会等待你输入一个整数,当您输入一个整数并按下回车键时,程序会继续并读取输入这个a,然后再输出来。
还有一个问题:&
是一个取地址运算符,&
后面加变量名表示“该变量的地址”,所以&a
就表示变量 a 的地址。&a
又称为“取地址a”,就相当于将数据存入以变量 a 的地址为地址的变量中。
那么以变量 a 的地址为地址的变量是哪个变量呢?就是变量 a。所以程序中 scanf 的结果就把输入的值,例如:123 放到变量a中。
综上所述,scanf 语句的意思就是:从键盘上输入字符 123,然后%d
将这三个字符转化成十进制数 123,最后通过“取地址 a”找到变量 a 的地址,再将数字 123 放到以变量 a 的地址为地址的变量中,即变量 a 中,所以最终的输出结果就是The number is 123.
另外,在读取字符串时,只要遇到一个空格,scanf() 就会停止读取,所以 "this is test" 对 scanf() 来说是三个字符串。
这些就是简单的scanf()语句输入格式,当然还有更复杂的,但没必要在这里写。
判断语句
这个老师上课没有讲,但让我们自己去探索,索性我就直接写出来吧。
判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。
C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。
下面是大多数编程语言中典型的判断结构的一般形式:
C 语言提供了两种判断语句,分别是if...(else)...或者是switch,在这里只讲用得多的if()语句和if()...else...语句。
if 语句
if(boolean_expression)//括号内为一个判断表达式,作为是否成立的条件。
{
/* 这里面写如果表达式为真将执行的语句 */
}
如果布尔表达式为 true,则 if 语句内的代码块将被执行。如果布尔表达式为 false,则 if 语句结束后的第一组代码(闭括号后)将被执行。
C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。
if...else 语句
if(boolean_expression) //如果真的意思
{
/* 如果布尔表达式为真将执行的语句 */
}
else //否则的意思
{
/* 如果布尔表达式为假将执行的语句 */
}
如果布尔表达式为 true,则执行 if 块内的代码。如果布尔表达式为 false,则执行 else 块内的代码。
C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。
举个例子:
#include <stdio.h>
int main ()
{
int a=10;
/* 使用 if 语句检查布尔条件 */
if(a<20)
{
/* 如果条件为真,则输出下面的语句 */
printf("1\n" );
}
printf("a 的值是 %d\n", a);
return 0;
}
这个代码中因为a确实是小于20,那么就会执行输出“1”的代码,故最后输出为:
1
a的值是10
还有一个例子:
#include <stdio.h>
int main ()
{
int a=30;
/* 使用 if 语句检查布尔条件 */
if(a<20)
{
/* 如果条件为真,则输出下面的语句 */
printf("1\n" );
}
else
{
/* 如果条件为假,则输出下面的语句 */
printf("2\n");
}
return 0;
}
这个代码中因为a是大于20,那么就会执行输出“2”的代码,故最后输出为:
2
这些大概就是基本的if()判断语句的写法了。
比较大小
比较两个数的大小
比较两个数的大小这个很简单,在C语言中没有max函数,我们可以自己定义,也可以用最基本的if()判断句写法。
不用函数:
#include<stdio.h>
#include<math.h> //不是必要的头文件
int main(void)
{
int a,b,c=-32767;//定义c为int 的最小值,其实就是防止最大值比初始值还小的情况
scanf("%d %d",&a,&b);
if(a>c) c=a;
if(b>c) c=b;
printf("Max number is %d.\n",c);
return 0;
}
这里就引入了一个第三方变量c,这个用来存储最大的答案。算法大概是先把c赋值到比较小的数,如果a比c大,则把a赋值到c中,同理b,这样就有最大值了。
有函数版(进阶,建议别看):
#include<stdio.h>
#include<math.h>
int max(int x,int y)
{
if(x>y) return x;
else return y;
}
int main(void)
{
int a,b;
scanf("%d %d",&a,&b);
printf("Max number is %d.\n",max(a,b));
return 0;
}
这个要解释的有点多,因为大家没学到一些表达,所以就让我这个曾经考过noip的人先写着。
比较三个数的大小
这个比上面稍微复杂一点点,不过和之前的思想是一样的
#include<stdio.h>
#include<math.h>
int main(void)
{
int a,b,c,t=-32767;
scanf("%d %d %d",&a,&b,&c);
if(a>t) t=a;
if(b>t) t=b;
if(c>t) t=c;
printf("Max number is %d.\n",t);
return 0;
}
有函数版(进阶,真的别看)
#include<stdio.h>
#include<math.h>
int max(int x,int y,int z)
{
int t,tmp[3]={0};
tmp[1]=x;tmp[2]=y;tmp[3]=z;
t=x;
for(int i=2;i<=3;i++) if(tmp[i]>t)
t=tmp[i];
return t;
}
int main(void)
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("Max number is %d.\n",max(a,b,c));
return 0;
}
Comments 1 条评论
博主 10337260089
跪了!