计算机与软件工程实习出口考核之基础能力考核
一、《计算思维导论(C 语言)》
1、程序的基本逻辑
①、变量声明与定义
- 变量的赋值分为两种方式:
- 先声明再赋值
int num; num = 10;
- 声明的同时赋值
int num = 10;
- c语言中,数据类型可分为:
最常用的 整型、浮点型、字符型。
-
格式化输出语句:
格式为:
printf("输出格式符",输出项);
-
运算符号:
除法运算中,需注意:
若相除的两个数都是整数,则结果也为整数,小数部分省略
。如 8/3=2;
若两个数中有一个为小数,结果则为小数。如 9.0/2=4.500000
取余运算中,需注意:
若运算只是和用两个整数进行取余运算,如 10%3=1;
但 10.0%3则是错误的。
运算后的符号取决于被模数的符号。
如 (-10)%3=-1; 而 10%(-3)=1;
自增与自减运算符:
逻辑运算符:
② 条件语句:
-
if-else
条件语句if(表达式){ 执行代码块1; }else { 执行代码块2; } // 如果表达式为真,则执行代码块1,否则执行代码块2。
-
多重 if-else
条件语句if(表达式){ 执行代码块 1; } ………… else if(表达式 m){ 执行代码块 m; }else{ 执行代码块 n; } // 依次判断表达式的值,当出现某个值为真时,则执行对应代码块,否则执行代码块n。 // 注意:当某一条件为真的时候,则不会向下执行该分支结构的其他语句。
-
嵌套if-else
条件语句会读下面这段代码就可。
#include <stdio.h> int main () { /* 局部变量定义 */ int a = 100; int b = 200; /* 检查布尔条件 */ if( a == 100 ) { /* 如果条件为真,则检查下面的条件 */ if( b == 200 ) { /* 如果条件为真,则输出下面的语句 */ printf("a 的值是 100,且 b 的值是 200\n" ); } } printf("a 的准确值是 %d\n", a ); printf("b 的准确值是 %d\n", b ); return 0; } // a 的值是 100,且 b 的值是 200 // a 的准确值是 100 // b 的准确值是 200
③ 循环语句
-
while
循环while(表达式){ 执行代码块 } // 其中表达式为 循环条件,执行代码块为 循环体 // while 的语义是: 计算表达式的值,当值为真(非0)时, 执行循环体代码块。
-
do-while
循环do{ 执行代码块 }while(表达式); // 注意;这里有分号 // do-while循环语句的语义是: 它先执行循环中的执行代码块,然后再判断while中表达式是否为真,如果为真则继续循环;如果为假,则终止循环。 // 因此,do-while循环至少要执行一次循环语句。重要!!
-
for
循环for(表达式1;表达式2;表达式3){ 执行代码块 } // 执行过程如下: // 执行表达式1,对循环变量进行初始化; // 判断表达式2,若其值为真(非0),则执行for循环体中执行代码块,然后向下执行;若其值为假(0),则结束循环; // 执行表达式3,(i++)等对于循环变量进行操作的语句; // 执行for循环中执行代码块后执行第二步;第一步初始化只会执行一次。 // 循环结束,程序继续向下执行。
-
表达式1是一个或多个赋值语句,它用来控制变量的初始值;
-
表达式2是一个关系表达式,它决定什么时候退出循环;
-
表达式3是循环变量的步进值,定义控制循环变量每循环一次后按什么方式变化。
-
for循环中的“表达式1、2、3”均可不写为空,但两个分号
(;;)
不能缺省。 -
表达式1和表达式3可以是一个简单表达式也可以是多个表达式以逗号分割。
int sum,num; for(sum = 0,num = 0;num <= 3; num++ ,sum++){ sum += num; printf("num=%d,sum=%d\n",num,sum); }
-
④ break 和 continue 语句
-
break
语句在没有循环结构的情况下,break不能单独在if-else语句中。
在多层循环中,一个break只能跳出当前循环。
-
continue
语句continue语句的作用是结束本次循环开始执行下一次循环。
例题:
-
执行以下程序段后,输出结果和a的值是()
int a=10; printf("%d",a++);
A、11 和 10
B、11 和 11
C、10 和 11
D、10 和 10
答案:c
-
能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是()
A、a>=0 | a<=10
B、a>=10 or a<=0
C、a>=10 && a<=0
D、a>=10 || a<=0
答案:D
-
该程序的输出结果是( )
int main() { int x=1,a=0,b=0; switch (x) { case 0: b++; case 1: a++; case 2: a++; b++; } printf("a=%d,b=%d",a,b); }
A、2,2
B、2,1
C、1,1
D、1,0
答案:B
switch结构分支没加break;跳出语句,开始执行后,程序由x=1调到case 1 分支 a++(a由0自己加为1),由于没有break语句,程序继续执行到内case 2 分支 a++ b++(a由1自加变2,b由0自加为1),之后程序printf输出 a=2 ,b=1
-
以下程序中,while循环的循环次数是______
main() { int i=0; while(i<10) { if(i<1) continue; if(i==5) break; i++; } }
A、死循环,不能确定次数
B、6
C、4
D、1
A
-
执行以下代码块,若从键盘输入字符abc,并按回车键,则运行结果是( )
#include <stdio.h> int main() { char a; scanf("%c",&a); printf("%c",a); return 0; }
- A. ab
- B. a
- C. b
- D. 空白
答案:B
字符类型只能保存
2、数组
#### ① 数组的初始化与定义
-
数组的声明
数据类型 数组名称[长度]
// 声明一个一维数组 type arrayname [arraySize]; double bookNum [10]; // 现在 bookNum 是一个数组,可以容纳10个类型为double的数字。 // 声明一个二维数组 type arrayName [ x ][ y ]; int x[3][4]; // 可以想象成生成了一个三行四列的表格。
-
数组的初始化
- 一维数组的初始化
// 1、数据类型 数组名称[长度n] = {元素1,元素2 ..... ,元素n}; double bookPrice[5] = { 100.0,25.2,522.2,452.9,50.2}; // 2、数据类型 数组名称[] = {元素1,元素2…元素n}; 若省略掉了数组声明式在[]中指定的元素数目,则数组大小为初始化时元素的个数。 double bookPrice[] = { 100.0,25.2,522.2,452.9,50.2}; //则这个数组的长度就为5 // 3、数据类型 数组名称[长度n]; // 数组名称[0] = 元素1; // 数组名称[1] = 元素2; // 数组名称[n-1] = 元素n; double bookPrice[5]; bookPrice[0