BUAA程设第一周上机总结

判断相等

在C语言中,判断两个数是否相等应当使用双等号==,而不是等号=

有些时候,当我们在判断条件中写 = 并不会报错,这很可能导致在Dbug的时候一直看不到错误的地方,导致做无用功。

解决这个问题的根本方法是把写 == 刻进DNA里(雾)。

此外还有一种可以使用的方法:比如我们想比较 a a a 1 1 1 的大小,我们可以写成这样:if(1 == a)

这样写的好处是,如果我们将 == 错误写成了 = ,即写成了 if(1 = a)那么编译器将会在这个地方报错。(因为1是不可修改的左值)

此外,使用 != 判断不等,使用 x >= 1 && x <= 10 而不是 1 <= x <= 10 来判断范围。

最后不要把赋值的 = 写成判断相等的 == 。(x

char型变量的判断

c h a r char char 型变量可以视作范围是 0 − 127 0 - 127 0127 的整型变量,这意味我们可以对其进行加减操作。如果我们想得知一个字符的ASCII码,我们可以用单引号将其括起来。

if(c == 'A')//判断char型变量是否是大写字母A

关于判断表达式的一些拓展

实际上诸如 i f , w h i l e , f o r if,while,for if,while,for 等语句对判断条件进行测试时,实质上测试的是括号中表达式的值是否为 0 0 0

在C语言中, 0 0 0 的值代表假;所有非 0 0 0 的值都代表真。

举例而言,==对左右数字的判断会返回一个值,如果左右两数相等,则返回值为 1 1 1,否则为 0 0 0

同理,<><=>=对左右数字的判断也会返回一个值,如果表达式成立则返回 1 1 1,否则返回 0 0 0

这也是未来同学们可能读到类似下面的代码:while(T--),这就是将变量 T T T 直接用作 w h i l e while while 语句的测试条件,当 T T T 的值为 0 0 0 的时候自动退出循环。

此外在这部分还可能会犯的错诸如

while(T--); //多打了一个分号!这个while毫无意义!
{
//code
}

就需要同学们编写代码时细心检查了。

顺便讲一下赋值式的返回值。诸如 a = 1 这样的赋值表达式,它的返回值就是你赋给左侧的值。即 a = 1 的返回值是 1 1 1 ,这个特性使得连续赋值可能成立,如 a = b = 1 。这也是为什么将赋值表达式写在判断条件里不会报错,因为它确实是正确的返回了一个值的(虽然返回的值往往不合心意)。

同学们对于这些内容如果读不懂,可以先不管,以后慢慢理解就好。

判断条件中的与和或

在判断条件中,如果想表达当两个条件同时成立时才判断成立,可以使用 && ,如果想表达两个条件有任一条件成立就判断成立,可以使用 ||

使用例:

if(a == 1 && b == 1){ //当a和b同时为1时条件成立
	printf("a and b are 1");
}
else if(a == 1 || b == 1){ / 当a或b有一个为1时条件就成立
	printf("a is 1 or b is 1");
}

关于全局变量

遇到了几个同学问我变量为什么可以定义在 m a i n main main 函数外,和定义在 m a i n main main 内有什么区别。这个问题如果太具体的解释会有点超纲,等以后同学们学的东西更多的时候再详细解释。

现在同学们只需要知道以下几点:

  1. 定义在 m a i n main main 函数外的变量叫做全局变量,而定义在 m a i n main main 函数(包括其他自己写的函数)内部的变量叫做局部变量。
  2. 全局变量在定义的时候如果没有赋初值则会被自动初始化为 0 0 0 ,而局部变量则没有这一行为。
  3. 在全局变量开的数组可以开得更大一些。(局部变量数组不要超过 1 e 6 1e6 1e6 ,全局变量数组不要超过 1 e 8 1e8 1e8
  4. 若是定义了一个全局变量,那么在剩余部分的代码不要有任何变量与这个全局变量重名。
  5. 在任何一处修改全局变量,都会造成这个全局变量值的改变。(这句话等同学们学到函数就明白是什么意思了)

现阶段,局部变量完全可以满足做题的需求,因此目前同学们开局部变量就可以了。

赋初值问题

在使用局部变量的时候要确保它是有一个值的,不要使用未初始化的局部变量参与任何运算。

赋值的手段包括:

  1. 在定义时直接赋值,如 int a = 1; ,就在定义变量 a a a 的时候将初值赋为 1 1 1
  2. 使用输入函数赋值,如 scanf("%d", &a); ,这样变量 a a a 也会被成功赋值。

如果使用任何未被赋值的变量,都将导致未知的错误。将变量赋初值是一个良好的习惯,希望同学们能培养这个习惯。

代码风格

在同学们学习代码时,希望能从初学开始就逐渐培养良好的码风。

首先是多写注释。在将来特别是写一些大体量的代码时,注释的存在是十分重要的。

C语言的注释写法:

单行注释:

//这是一个单行注释

多行注释:

/*
这是一个多行注释
*/

注释的存在不仅是为了方便别人读懂自己的代码,也可以减轻自己给自己 D b u g Dbug Dbug 时候的痛苦。有时自己写的代码,过了几天回头来读就读不懂了,而如果代码有注释的话就会让自己更容易读懂之前的代码,减少工作量。

其次是空格问题。在代码中合理使用空格会增强代码可读性。

一般而言,在一行中使用 , 后会跟一个空格,双目运算符如 + - * / 等,运算符左右都要加空格。与之相同的还有 = == || && 等。

然后是代码的缩进。这个就不解释了,直接看对比:

//不缩进,无空格
#include <stdio.h>
int main()
{
int a,b,c;
scanf("%d%d",&a,&b);
c=a+b;
printf("%d",c);
return 0;
}
//有缩进,有空格
int main(){
	int a, b, c;
	scanf("%d", &a, &b);
	c = a + b;
	printf("%d", c);
	return 0;
}

怎么样,对比是不是就出来了呢?

(大括号换不换行都可以,这个目前完全是看个人习惯)

最后是变量命名问题。变量命名应尽可能做到让人一读便懂。

这个问题在规模较小的程序里尚不明显。同学们在未来写大规模的代码时可能要同时使用数十个变量,如果全都按照 a 、 b 、 c 、 x 、 y a、 b、 c、 x、 y abcxy 的风格命名,那代码的可读性将大大降低,甚至无人能懂。

C语言变量命名规则有许多,同学们可以自行了解,选择自己喜欢的方式,但无论哪种方式都应做到让自己定义的变量含义易懂。这真的很重要!!!

第一周的总结拓展就先到这里,同学们要继续努力呀!

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我无法提供关于具体学校或课程的第四次上机内容。但是,我可以为您提供一些关于数据结构的基本知识和常见的上机题目类型。 数据结构是计算机科学中非常重要的一门课程,它研究如何组织和存储数据以及如何有效地操作和管理数据。第四次上机可能涉及以下内容之一: 1. 树和图的应用:树和图是常见的数据结构,可以用于解决各种实际问题,比如搜索、排序、最短路径等。在上机中,您可能需要实现树或图的基本操作,如插入、删除、遍历等。 2. 排序算法:排序是数据结构中的一个重要问题,常见的排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序等。您可能需要实现其中一个排序算法,并对给定的数据进行排序。 3. 查找算法:查找是另一个常见的问题,常见的查找算法有线性查找、二分查找、哈希查找等。您可能需要实现其中一个查找算法,并根据给定的条件查找特定的数据。 4. 动态规划:动态规划是一种解决最优化问题的方法,它将问题分解为子问题,并通过保存子问题的解来避免重复计算。您可能需要使用动态规划来解决给定的问题,并实现相应的算法。 以上只是一些可能的内容,具体的上机要求可能会根据课程教学大纲和教师的要求而有所不同。如果您有具体的问题或需要更详细的帮助,请提供更多信息,我将尽力回答您的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值