c语言数组括号内无数字 补上所有缺少的括号?

C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖语言,所以说学习C语言是进入编程世界的必修课。

注:在最新的C标准中,main函数前的类型为int而不是void

简单来说,一个C程序就是由若干头文件函数组成。

  • #include <stdio.h>就是一条预处理命令, 它的作用是通知C语言编译系统在对C程序进行正式编译之前需做一些预处理工作。

  • 函数就是实现代码逻辑的一个小的单元

一个C程序有且只有一个主函数,即main函数。

  • C程序就是执行主函数里的代码,也可以说这个主函数就是C语言中的唯一入口

  • main前面的int就是主函数的类型.

  • printf()格式输出函数,这里就记住它的功能就是在屏幕上输出指定的信息

  • return是函数的返回值,根据函数类型的不同,返回的值也是不同的。

  • \n是转义字符中的换行符。(注意:C程序一定是从主函数开始执行的)

  1. 一个说明或一个语句占一行,例如:包含头文件、一个可执行语句结束都需要换行

  2. 函数体内的语句要有明显缩进通常以按一下Tab键为一个缩进

  3. 括号要成对写,如果需要删除的话也要成对删除

  4. 当一句可执行语句结束的时候末尾需要有分号

  5. 代码中所有符号均为英文半角符号

注释是写给程序员看的,不是写给电脑看的。

C语言注释方法有两种:

有名有姓的C(标识符)

C语言规定,标识符可以是字母(A~Z,a~z)、数字(0~9)、下划线_组成的字符串,并且第一个字符必须是字母或下划线。在使用标识符时还有注意以下几点:

  1. 标识符的长度最好不要超过8位,因为在某些版本的C中规定标识符前8位有效,当两个标识符前8位相同时,则被认为是同一个标识符。

  2. 标识符是严格区分大小写的。例如Imoocimooc 是两个不同的标识符。

  3. 标识符最好选择有意义的英文单词组成做到"见名知意",不要使用中文。

  4. 标识符不能是C语言的关键字。想了解更多C语言关键字的知识。

变量就是可以变化的量,而每个变量都会有一个名字(标识符)。变量占据内存中一定的存储单元。使用变量之前必须先定义变量,要区分变量名变量值是两个不同的概念。

变量定义的一般形式为:数据类型 变量名;
多个类型相同的变量:数据类型 变量名, 变量名, 变量名...;

注意:在定义中不允许连续赋值,如int a=b=c=5;是不合法的。

变量的赋值分为两种方式:

C语言中,数据类型可分为:

  • 而其中short intlong int至少是表中所写范围, 但是int在表中是以16位编译环境写的取值范围。

  • 另外 c语言int的取值范围在于他占用的字节数 ,不同的编译器,规定是不一样。

  • ANSI标准定义int是占2个字节,TC是按ANSI标准的,它的int是占2个字节的。但是在VC里,一个int是占4个字节的。

浮点数据是指带小数的数字。

生活中有很多信息适合使用浮点型数据来表示,比如:人的体重(单位:公斤)、商品价格、圆周率等等。

注:C语言中不存在字符串变量,字符串只能存在字符数组中,这个后面会讲。

格式化输出语句,也可以说是占位输出,是将各种类型的数据按照格式化后的类型及指定的位置从计算机上显示。

其格式为:printf("输出格式符",输出项);

当输出语句中包含普通字符时,可以采用一下格式:

注意:格式符个数要与变量、常量或者表达式的个数一一对应

在程序执行过程中,值不发生改变的量称为常量

mtianyan: C语言的常量可以分为直接常量和符号常量。

  • 直接常量也称为字面量,是可以直接拿来使用,无需说明的量,比如:

    • 整型常量:13、0、-13;

    • 字符常量:‘a’、‘M’

在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义,其一般形式为:

符号常量不可以被改变。

数据类型存在自动转换的情况.
自动转换发生在不同数据类型运算时,在编译的时候自动完成

char类型数据转换为int类型数据遵循ASCII码中的对应值.

字节小的可以向字节大的自动转换,但字节大的不能向字节小的自动转换

强制类型转换是通过定义类型转换运算来实现的。其一般形式为:

(数据类型) (表达式)

其作用是把表达式的运算结果强制转换成类型说明符所表示的类型

在使用强制转换时应注意以下问题:

  1. 数据类型和表达式都必须加括号, 如把(int)(x/2+y)写成(int)x/2+y则成了把x转换成int型之后再除2再与y相加了。

  2. 转换后不会改变原数据的类型及变量值,只在本次运算中临时性转换

  3. 强制转换后的运算结果不遵循四舍五入原则。

※ 算术运算符
※ 赋值运算符
※ 关系运算符
※ 逻辑运算符
※ 三目运算符
如果相除的两个数都是整数的话,则结果也为整数,小数部分省略,如8/3 = 2;
而两数中有一个为小数,结果则为小数,如:9.0/2 = 4.500000

注:C语言中没有乘方这个运算符,也不能用×, ÷等算术符号。

  • 自增运算符为++,其功能是使变量的值自增1

  • 自减运算符为--,其功能是使变量值自减1。

它们经常使用在循环中。自增自减运算符有以下几种形式:

C语言中赋值运算符分为简单赋值运算符复合赋值运算符

简单赋值运算符=号了,下面讲一下复合赋值运算符:

复合赋值运算符就是在简单赋值符=之前加上其它运算符构成.

分析:定义整型变量a并赋值为3,a += 5;这个算式就等价于a = a+5; 将变量a和5相加之后再赋值给a

注意:复合运算符中运算符和等号之间是不存在空格的。

C语言中的关系运算符:

关系表达式的值是,在C程序用整数10表示。

C语言中的逻辑运算符:

逻辑运算的值也是有两种分别为,C语言中用整型的1和0来表示。其求值规则如下:

参与运算的两个变量都为真时,结果才为真,否则为假。例如:5>=5 && 7>5 ,运算结果为真;
参与运算的两个变量只要有一个为真,结果就为真。两个量都为假时,结果为假。例如:5>=5||5>8,运算结果为真;
参与运算的变量为真时,结果为假;参与运算量为假时,结果为真。例如:!(5>8),运算结果为真。

C语言中的三目运算符:?:,其格式为:

先判断表达式1的值是否为真,如果是真的话执行表达式2;如果是假的话执行表达式3。

运算符大比拼之优先级比较

优先级别为1的优先级最高,优先级别为10的优先级别最低。

分支结构之简单if语句

C语言中的分支结构语句中的if条件语句。

简单if语句的基本结构如下:

if(表达式)
{
执行代码块;
}

其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。

注意:if()后面没有分号,直接写{}

分支结构之简单if-else语句

简单的if-else语句的基本结构:

语义是: 如果表达式的值为真,则执行代码块1,否则执行代码块2。

if()后面没有分号,直接写{},else后面也没有分号,直接写{}

分支结构之多重if-else语句

C语言中多重if-else语句,其结构如下:

语义是:依次判断表达式的值,当出现某个值为真时,则执行对应代码块,否则执行代码块n。

注意:当某一条件为真的时候,则不会向下执行该分支结构的其他语句。

分支结构之嵌套if-else语句

C语言中嵌套if-else语句。嵌套if-else语句的意思,就是在if-else语句中,再写if-else语句。其一般形式为:

循环结构之while循环

反复不停的执行某个动作就是江湖人称的循环 。

C语言中有三种循环结构,先看一下C语言while循环的结构

其中表达式表示循环条件,执行代码块为循环体

while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体代码块。
  1. while语句中的表达式一般是关系表达或逻辑表达式,当表达式的值为假时不执行循环体,反之则循环体一直执行。

  2. 一定要记着在循环体中改变循环变量的值,否则会出现死循环(无休止的执行)。

  3. 循环体如果包括有一个以上的语句,则必须用{}括起来,组成复合语句。

C语言中的do-while循环,一般形式如下:

它先执行循环中的执行代码块,然后再判断while中表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句

循环结构之for循环(一)

c语言中for循环一般形式:

  1. 执行表达式1,对循环变量做初始化;

  2. 判断表达式2,若其值为真(非0),则执行for循环体中执行代码块,然后向下执行;若其值为假(0),则结束循环;

  3. 执行表达式3,(i++)等对于循环变量进行操作的语句;

  4. 执行for循环中执行代码块后执行第二步;第一步初始化只会执行一次。

  5. 循环结束,程序继续向下执行。

注意:for循环中的两个分号一定要写

循环结构之for循环(二)

  • 表达式1是一个或多个赋值语句,它用来控制变量的初始值

  • 表达式2是一个关系表达式,它决定什么时候退出循环;

  • 表达式3是循环变量的步进值,定义控制循环变量每循环一次后按什么方式变化。

使用for语句应该注意

  1. for循环中的“表达式1、2、3”均可不写为空,但两个分号(;;)不能缺省。

  2. 省略“表达式1(循环变量赋初值)”,表示不对循环变量赋初始值。

  3. 省略“表达式2(循环条件)”,不做其它处理,循环一直执行(死循环)。

  4. 省略“表达式3(循环变量增减量)”,不做其他处理,循环一直执行(死循环)。

  5. 表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式

  6. 表达式1和表达式3可以是一个简单表达式也可以是多个表达式以逗号分割。

  1. 表达式2一般是关系表达式逻辑表达式,但也可是数值表达式或字符表达式,只要其值非零,就执行循环体。

  2. 各表达式中的变量一定要在for循环之前定义

怎么获得一个数的百位,十位和个位

循环结构之三种循环比较

while, do-while和for三种循环在具体的使用场合上是有区别的,如下:

  1. 知道循环次数的情况下更适合使用for循环;

  2. 在不知道循环次数的情况下适合使用while或者do-while循环:

  • 如果有可能一次都不循环应考虑使用while循环

  • 如果至少循环一次应考虑使用do-while循环。

但是从本质上讲,while,do-while和for循环之间是可以相互转换的。

多重循环就是在循环结构的循环体中又出现循环结构。

在实际开发中一般最多用到三层重循环

因为循环层数越多,运行时间越长,程序越复杂,所以一般用2-3层多重循环就可以了。另外不同循环之间也是可以嵌套的。

多重循环在执行的过程中,外层循环为父循环,内层循环为子循环

父循环一次,子循环需要全部执行完,直到跳出循环。父循环再进入下一次,子循环继续执行...

使用for循环打印9×9乘法表

结束语句之break语句

那么循环5次的时候,需要中断不继续训练。在C语言中,可以使用break语句进行该操作.

使用break语句时注意以下几点:

  1. 在没有循环结构的情况下,break不能用在单独的if-else语句中。

  2. 在多层循环中,一个break语句只跳出当前循环。

那么循环5次的时候,需要中断后继续训练。在C语言中,可以使用continue语句进行该操作

continue语句的作用是结束本次循环开始执行下一次循环。
break是跳出当前整个循环,continue是结束本次循环开始下一次循环。

分支结构之switch语句

  1. 在case后的各常量表达式的值不能相同,否则会出现错误。

  2. 在case子句后如果没有break;会一直往后执行一直到遇到break;才会跳出switch语句。

  3. switch后面的表达式语句只能是整型或者字符类型

  4. 在case后,允许有多个语句,可以不用{}括起来。

  5. 各case和default子句的先后顺序可以变动,而不会影响程序执行结果。

  6. default子句可以省略不用。

臭名远扬之goto语句

C语言中也有这样的语句,就是goto语句,goto语句是一种无条件分支语句.

goto 语句的使用格式为:

C语言提供了大量的库函数: 比如stdio.h提供输出函数

自定义函数的一般形式:

  1. [] 包含的内容可以省略,数据类型说明省略,默认是 int 类型函数; 参数省略表示该函数是无参函数,参数不省略表示该函数是有参函数;

  2. 函数名称遵循标识符命名规范;

  3. mtianyan: 自定义函数尽量放在 main 函数之前,如果要放在main函数后面的话, 需要在main函数之前先声明自定义函数,声明格式为:

[数据类型说明] 函数名称([参数]);

我们需要用到自定义的函数的时候,就得调用它,那么在调用的时候就称之为函数调用

在C语言中,函数调用的一般形式为:

  1. 对无参函数调用的时候可以将[]包含的省略。

  2. []中可以是常数,变量或其它构造类型数据及表达式,多个参数之间用逗号分隔。

在函数中不需要函数参数的称之为无参函数,在函数中需要函数参数的称之为有参函数。

有参和无参函数的一般形式如下:

有参函数和无参函数的唯一区别在于:函数 () 中多了一个参数列表。

  • 有参函数更为灵活,输出的内容可以随着n的改变而随意变动,只要在main函数中传递一个参数就可以了

  • 而在无参函数中输出的相对就比较固定,当需要改动的时候还需要到自定义的方法内改变循环变量的值。

函数的参数分为形参实参两种。

  • 形参是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。

就类似小明,说了的话而不实际行动;
  • 实参是在调用时传递该函数的参数。

就如小刚能实际行动起来。

函数的形参和实参具有以下特点:

  • 形参只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。

函数调用结束返回主调函数后则不能再使用该形参变量。
  • 实参可以是常量、变量、表达式、函数等。

无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值等办法使实参获得确定值。
  • 在参数传递时,实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配的错误。

函数的返回值是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。

函数的返回值要注意以下几点:

  • 函数的值只能通过return语句返回主调函数。

return语句的一般形式为:
  • 函数值的类型和函数定义中函数的类型应保持一致。

notes: 如果两者不一致,则以函数返回类型为准,自动进行类型转换。
  • 没有返回值的函数,返回类型为 void

递归就是一个函数在它的函数体内调用它自身。

执行递归函数将反复调用其自身,每调用一次就进入新的一层。

注意递归函数必须有结束条件

5的阶乘这个例子进行一下剖析,看一看他的运算过程:

程序在计算5的阶乘的时候,先执行递推,当n=1或者n=0的时候返回1,再回推将计算并返回。由此可以看出递归函数必须有结束条件。

  1. 每一级函数调用时都有自己的变量,但是函数代码并不会得到复制,如计算5的阶乘时每递推一次变量都不同;

  2. 每次调用都会有一次返回,如计算5的阶乘时每递推一次都返回进行下一次;

  3. 递归函数中,位于递归调用前的语句和各级被调用函数具有相同的执行顺序;

  4. 递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反;

  5. 递归函数中必须有终止语句。

一句话总结递归:自我调用且有完成状态

猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天在想吃的时候就剩一个桃子了,问第一天共摘下来多少个桃子?并反向打印每天所剩桃子数。

有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第3个人,又说比第2人大两岁。问第2个人,说比第1个人大两岁。最后 问第1个人,他说是10岁。请问第5个人多大?

利用递归的方法,递归分为回推和递推两个阶段。要想知道第5个人岁数,需知道第4人的岁数,依次类推,推到第1人(10岁),再往回推。

C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量。

  • 局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的。在复合语句中也可定义变量,其作用域只在复合语句范围内。

  • 全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。

mtianyan: C语言根据变量的生存周期来划分,可以分为静态存储方式和动态存储方式。

  • 静态存储方式:是指在程序运行期间分配固定的存储空间的方式。静态存储区中存放了在整个程序执行过程中都存在的变量,如全局变量。

  • 动态存储方式:是指在程序运行期间根据需要进行动态的分配存储空间的方式。动态存储区中存放的变量是根据程序运行的需要而建立和释放的,通常包括:函数形式参数;自动变量;函数调用时的现场保护和返回地址等。

C语言中存储类别又分为四类:

1、用关键字auto定义的变量为自动变量,auto可以省略,auto不写则隐含定为“自动存储类别”,属于动态存储方式。如:

2、用static修饰的为静态变量,如果定义在函数内部的,称之为静态局部变量;如果定义在函数外部,称之为静态外部变量。如下为静态局部变量:

注意:静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放;静态局部变量在编译时赋初值,即只赋初值一次;如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。

3、为了提高效率,C语言允许将局部变量得值放在CPU中的寄存器中,这种变量叫“寄存器变量”,用关键字register作声明。例如:

mtianyan: 注意:只有局部自动变量和形式参数可以作为寄存器变量;一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量;局部静态变量不能定义为寄存器变量。

4、用extern声明的的变量是外部变量,外部变量的意义是某函数可以调用在该函数之后定义的变量。如:

  • 在C语言中不能被其他源文件调用的函数称谓内部函数 ,内部函数由static关键字来定义,因此又被称谓静态函数,形式为:

  • 这里的static是对函数的作用范围的一个限定,限定该函数只能在其所处的源文件中使用,因此在不同文件中出现相同的函数名称的内部函数是没有问题的。

  • 在C语言中能被其他源文件调用的函数称谓外部函数 ,外部函数由extern关键字来定义,形式为:

  • C语言规定,在没有指定函数的作用范围时,系统会默认认为是外部函数,因此当需要定义外部函数时extern也可以省略。

而对于test.c并没有引入,可以通过声明来调用另一个源文件中暴露出来的方法。

北京市出租车打车计费规则如下:
1. 每公里单价计费2.3元
3. 晚上23点(含)至次日凌晨5点(不含)打车,每公里单价计费加收20%。
4. 每次乘车加收1元钱的燃油附加税。
小明每天上下班都要打车,公司和家的距离为12公里,上午上班时间为9点,下午下班时间为6点。
请编写一个小程序计算小明每天打车的总费用。

程序中也需要容器,只不过该容器有点特殊,它在程序中是一块连续的,大小固定并且里面的数据类型一致的内存空间,它还有个好听的名字叫数组。可以将数组理解为大小固定,所放物品为同类的一个购物袋,在该购
物袋中的物品是按一定顺序放置的。

我们来看一下如何声明一个数组:

数据类型 数组名称[长度];

数组只声明也不行啊,看一下数组是如何初始化的。说到初始化,C语言中的数组初始化是有三种形式的,分别是:

  1. 数据类型 数组名称[长度n] = {元素1,元素2…元素n};

  2. 数据类型 数组名称[] = {元素1,元素2…元素n};

我们将数据放到数组中之后又如何获取数组中的元素呢?

获取数组元素时:数组名称[元素所对应下标];
  1. 数组的下标均以0开始

  2. 数组在初始化的时候,数组内元素的个数不能大于声明的数组长度;

  3. mtianyan: 如果采用第一种初始化方式,元素个数小于数组的长度时,多余的数组元素初始化为0;

  4. 在声明数组后没有进行初始化的时候,静态(static)和外部(extern)类型的数组元素初始化元素为0,自动(auto)类型的数组的元素初始化值不确定。

数组就可以采用循环的方式将每个元素遍历出来,而不用人为的每次获取指定某个位置上的元素,例如我们用for循环遍历一个数组:

  1. 最好避免出现数组越界访问,循环变量最好不要超出数组的长度.

  2. C语言的数组长度一经声明,长度就是固定,无法改变,并且C语言并不提供计算数组长度的方法

由于C语言是没有检查数组长度改变或者数组越界的这个机制,可能会在编辑器中编译并通过,但是结果就不能肯定了,因此还是不要越界或者改变数组的长度

数组可以由整个数组当作函数的参数,也可以由数组中的某个元素当作函数的参数:

  1. 整个数组当作函数参数,即把数组名称传入函数中,例如:

  1. 数组中的元素当作函数参数,即把数组中的参数传入函数中,例如:

数组作为函数参数时注意以下事项:

  1. 数组名作为函数实参传递时,函数定义处作为接收参数的数组类型形参既可以指定长度也可以不指定长度。

  2. 数组元素作为函数实参传递时,数组元素类型必须与形参数据类型一致。

以升序排序为例冒泡排序的思想:相邻元素两两比较,将较大的数字放在后面,直到将所有数字全部排序。就像小学排队时按大小个排一样,将一个同学拉出来和后面的比比,如果高就放后面,一直把队伍排好。

数组的应用(二)[数组查找功能]

当我们购物之后,拎着购物袋回到家,会一一检查购物袋中的物品看是否缺少或者都是想购之物。

那么应用到程序中,可以使用数组查找功能,看看是否存在该数据,如果存在并返回该元素的下标。

C语言中,是没有办法直接定义字符串数据类型的,但是我们可以使用数组来定义我们所要的字符串。一般有以下两种格式:

  1. []中的长度是可以省略不写的;

  2. 采用第2种方式的时候最后一个元素必须是'\0','\0'表示字符串的结束标志;

  3. 采用第2种方式的时候在数组中不能写中文。
    在输出字符串的时候要使用:printf(“%s”,字符数组名字);或者puts(字符数组名字);。

使用字符串函数注意以下事项:

  1. strlen()获取字符串的长度,在字符串长度中是不包括‘\0’而且汉字和字母的长度是不一样的。比如:

  1. strcmp()在比较的时候会把字符串先转换成ASCII码再进行比较,返回的结果为0表示s1和s2的ASCII码相等,返回结果为1表示s1比s2的ASCII码大,返回结果为-1表示s1比s2的ASCII码小,例如:

  1. strcpy()拷贝之后会覆盖原来字符串且不能对字符串常量进行拷贝,比如:

  1. strcat在使用时s1与s2指的内存空间不能重叠,且s1要有足够的空间来容纳要复制的字符串,如:

多维数组的定义格式是:
数据类型 数组名称[常量表达式1][常量表达式2]...[常量表达式n];

定义了一个名称为num,数据类型为int的二维数组。其中第一个[3]表示第一维下标的长度,就像购物时分类存放的购物;第二个[3]表示第二维下标的长度,就像每个购物袋中的元素。

多维数组的初始化与一维数组的初始化类似也是分两种:

  1. 数据类型 数组名称[常量表达式1][常量表达式2]...[常量表达式n]; 数组名称[下标1][下标2]...[下标n] = 值;

多维数组初始化要注意以下事项:

  1. 采用第一种始化时数组声明必须指定列的维数。mtianyan: 因为系统会根据数组中元素的总个数来分配空间,当知道元素总个数以及列的维数后,会直接计算出行的维数;

  2. 采用第二种初始化时数组声明必须同时指定行和列的维数。

二维数组定义的时候,可以不指定行的数量,但是必须指定列的数量

二维数组定义的时候,可以不指定行的数量,但是必须指定列的数量。

多维数组也是存在遍历的,和一维数组遍历一样,也是需要用到循环。不一样的就是多维数组需要采用嵌套循环

注意:多维数组的每一维下标均不能越界

大学《C语言》试题及答案1

  改错题(每个程序只有一个错误,填入错误语句所在的行号以及修改后的语句)

  1、下段程序的功能是先输入一个整数,然后将输入的整数输出。

  2、下段程序的功能是求1+2+3+4+……+99+100的和。

  3、下段程序的.功能是当输入x的值为90时,输出“right”,否则输出“error”。

  (4)下面程序的功能是输出字符串S

  (5)下面程序的功能是按照下面的格式输入a和b的值,计算y=a2+b2并输出。


大学《C语言》试题及答案3篇扩展阅读

大学《C语言》试题及答案3篇(扩展1)

——C语言程序设计模拟试题及答案3篇

C语言程序设计模拟试题及答案1

  2、C语言中普通整型变量的类型说明符为______,在内存中占______字节,有符号普通整型的数据范围是______ .

  3、整数-35在机内的补码表示为______.

  6、符号“a”和‘a’的区别是______.

  7、所谓“指针”就是______.“&”运算符的作用是______.“*”运算符的作用是______.

  (1)整型、实型、字符型。

  (6)“a”是字符串常量,而‘a’是字符常量。

  (7)存放地址值的变量或常量,或者答地址。

  (8)取运算对象的.地址。取指针变量所指的内容。a=1,b=3,c=2

  1、设整型变量a为5,使b不为2的表达式是( C )。

  2、为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与( C )组成配对关系。

  A. 缩排位置相同的if B. 在其之前未配对的if

  C. 在其之前未配对的最近的if D.同一行上的if

  3、以下程序的输出结果是( D )。

  4、设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i 个元素的地址为( B )。

  5、选出下列标识符中不是合法的标识符的是( D )。

  6、以下程序的输出结果是( B )。

  A. N个指向double型变量的指针。

  B. 指向N个double型变量的函数指针。

  C. 一个指向由N个double型元素组成的一维数组的指针。

  D.具有N个指针元素的一维指针数组,每个元素都只能指向double型量。

  A. 对函数func的定义。 B. 对函数func的调用。

  C.对函数func的原型说明。 D. 不合法的。

  9、以下程序的输出结果是( D )。

  10、分析以下程序的输出结果是( A )。

  11、下列描述中不正确的是( C )。

  A. 字符型数组中可能存放字符串。

  B. 可以对字符型数组进行整体输入、输出。

  C. 可以对整型数组进行整体输入、输出。

  D. 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。

  12、以下程序的输出结果是( A )。

  15、以下对二维数组a进行正确初始化的是( B )

  16、两次运行下面的程序,如果从键盘上分别输入6和3,则输出结果是( C )。 int x;

  A)aa数组成元素的值分别是“abcd”和ABCD“

  B)aa是指针变量,它指向含有两个数组元素的字符型一维数组

  C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址

  D)aa数组的两个元素中各自存放了字符‘a’和‘A’的地址

  ?18、下列程序的输出结果是( D )。

  20、不能把字符串:Hello!赋给数组b的语句是( B )。

大学《C语言》试题及答案3篇(扩展2)

——C语言程序设计试题及答案3篇

C语言程序设计试题及答案1

  A.系统将开辟一个名为P的二维数组,“o][o]中的值即为a[o][o]中的值

  C.P中将存放a数组的首地址

  D.P+2代表a数组最后一行的首地址

  参考解析:(+P)[4]定义了一个数组指针。P可以指向类似于arry[][4]的数组,题设中,P不是一个二维数组,只是可以指向这类二维数组,因此选项A错误。P+1代表了第一行第一个元素的地址,P=a指向数组a的首地址,则B、C选项正确,同理可知选项D也正确。故答案为A选项。

  2[单选题] 以下叙述中正确的是()

  A.在算法设计时,可以把复杂任务分解成一些简单的子任务

  B.在C语言程序设计中,所有函数必须保存在一个源文件中

  C.只要包含了三种基本结构的算法就是结构化程序

  D.结构化程序必须包含所有的三种基本结构.缺一不可

  参考解析:C语言的程序中,函数不一定都放在同一个源文件中,可以分别放在不同源文件中,通过#inClude命令来引用,所以B错误。结构化程序可以包含三种基本结构中的一种或几种,所以C,D错误。

  3[单选题] 有三个关系R、S和T如下:

  则由关系R和S得到关系T的操作是( )。

  参考解析:如果S=T/R,则s称为T除以R的商。在除运算中s的域由T中那些不出现在R中的域所组成,对于s中的任一有序组,由它与关系R中每个有序组所构成的有序组均出现在关系T中。所以本题选择C2017年计算机二级C语言练习题及答案2017年计算机二级C语言练习题及答案。

  4[单选题] 以下叙述错误的是( )。

  A.一个算法所包含的操作步骤应该是有限的

  B.任何能通过编译和运行的算法都一定能得到所期望的结果

  C.算法中每一条指令必须有确切的含义

  D.算法可以用各种描述方法来进行描述

  参考解析:算法的特点:零个或多个输入,至少一个输出,可行性(能编程实现),有穷性(有限步出结果),确定性(描述不能有歧义)。可知选项A,c,D正确。c语言中。通过编译,可以运行的程序,不一定符合题目的本意,因此即使可以运行得到结果,也不一定和预期的结果一样,否则就不需要调试和修改程序了,故B选项错误。答案为B选项。

  5[单选题] 设有定义:

  以下语句中执行效果与其他三个不同的是( )。

  参考解析:由于a小于b,所以所有选项中的条件都为假,c选项中实际执行了a=b;b=c;两个操作。而A、B、D选项由于条件不成立,所以什么也没有做,所以选择c选项。

  6[单选题] 以下叙述中正确的是

  A.两个字符串可以用关系运算符进行大小比较

  B.函数调用strlen(s);会返回字符串S实际占用内存的大小(以字节为单位)

  C.C语言本身没有提供对字符串进行整体操作的运算符

  D.当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和

  参考解析:本题考查字符串处理函数strien、strcat、strcmp。B选项中strlen返回的是字符串s实际占用内存大小加上结尾符,A选项中不能用关系运算符进行大小比较,可以使用strcmp。D选项当使用连接函数strcat时,内存空间会减少一个字符位置。

  7[单选题] 一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是( )。

  A.一对一 B.一对多 C.多对多 D.多对一

  参考解析:因为一个人可以操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之间是多对多的关系。

  8[单选题] 对于while(!E)s;,若要执行循环体s,则E的取值应为:

  参考解析:while语句的一般形式为:while(表达式)语句;其中表达式是循环条件,语句为循环体。while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。该题中如要执行语句s,则!E应为真,因此E应等于0,D选项正确。

  9[单选题] 在软件设计中不使用的工具是( )。

  参考解析:系统结构图是对软件系统结构的总体设计的图形显示2017年计算机二级C语言练习题及答案计算机等级。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的

  PAD图是在详细设计阶段用到的。程序流程图是对程序流程的图形表示,在详细设计过程中用到。数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以选择C。

  A.说明不合法 B.包含1个字符 C.包含2个字符 D.包含3个字符

  参考解析:char a='\82',定义字符量a,char型变量值为1个字节长度,并从右侧开始运算,所以a的值应为'2'。因此B选项正确。

大学《C语言》试题及答案3篇(扩展3)

——C语言测试题及答案3篇

  1.(A )是构成C语言程序的基本单位。

  2.C语言程序从 C 开始执行。

  A、 程序中第一条可执行语句

  B、 程序中第一个函数

  C、 程序中的main函数

  D、包含文件中的第一个函数

  3、以下说法中正确的是( C )。

  A、C语言程序总是从第一个定义的函数开始执行

  B、在C语言程序中,要调用的函数必须在main( )函数中定义

  C、C语言程序总是从main( )函数开始执行

  D、C语言程序中的main( )函数必须放在程序的开始部分

  4.下列关于C语言的说法错误的是( B ) 。

  A、 C程序的工作过程是编辑、编译、连接、运行

  B、 C语言不区分大小写。

  C、 C程序的三种基本结构是顺序、选择、循环

  D、C程序从main函数开始执行

  5.下列正确的标识符是(C )。

  5~8题为相同类型题

  考点:标识符的命名规则

  只能由字母、数字、下划线构成

  数字不能作为标识符的开头

  关键字不能作为标识符

  选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)

  6.下列C语言用户标识符中合法的是(B )。

  选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);

  7.下列四组选项中,正确的C语言标识符是( C )。

  选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)

  8、下列四组字符串中都可以用作C语言程序中的标识符的是( A)。

  选项B中的“”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)

  9.C语言中的简单数据类型包括(D )。

  A、整型、实型、逻辑型

  B、整型、实型、逻辑型、字符型

  C、整型、字符型、逻辑型

  D、整型、实型、字符型

  10.在C语言程序中,表达式5%2的结果是 C 。

  /为求商运算符,该运算符能够对整型、字符、浮点等类型的数据进行运算,5/2=2

  表达式1?表达式2:表达式3

  若表达式1成立, 则选择计算表达式2,并表达式2的值作为整个大表达式的值;

  若表达式1不成立,则选择计算表达式3,并将表达式3的值作为整个大表达式的值

  13.C语言中,关系表达式和逻辑表达式的值是( B ) 。

  D、‘T’或’F’

  14~16题为同一类型

  (1)相同数据类型的元素进行数*算(+、-、*、/)得到结果还保持原数据类型。

  (2)不同数据类型的元素进行数*算,先要统一数据类型,统一的标准是低精度类型转换为高精度的数据类型。

  选项A,11与3为两个整数,11/3结果的数据类型也应为整数,因此将3.666666的小数部分全部舍掉,仅保留整数,因此11/3=3.

  选项B,11.0为实数,3为整数,因此首先要统一数据类型,将整型数据3转换为3.0,转换后数据类型统一为实型数据,选项B变为11.0/3.0,结果的数据类型也应为实型数据,因此选项B 11.0/3=3.666666

  选项C,先将整数11强制类型转换,转换为实型11.0,因此选项C变为11.0/3,其后计算过程、结果与选项B同

  选项D,首先计算11.0/3,其计算过程、结果与选项B同,得到3.666666;再计算3..5=4.166666,最后将4.166666强制类型转换为整型,即将其小数部分全部舍掉,结果为4

  15.设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是( B )

  “(int)f“表示将f中的值强制类型转换为整型,即将13.8的小数部分舍掉,转换为13;然后计算13%3,结果为1,再将结果赋给变量n,因此n的值为1

  17. 以下对一维数组a的正确说明是: D

  详见教材P143~144,一维数组的定义、初始化

  类型符 数组名 [常量表达式]

  类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;常量表达式是指数组的长度(数组中包含元素的个数),其值只能是整数,不可以是变量,而且从1开始计数。

  选项A,常量表达式只能放在中括号 [ ]中

  选项B,只有在对数组初始化(即赋值)的时候才可以省略数组的长度,B中并未对a进行初始化。

  选项C,常量表达式不能为变量。

  18.以下能对一维数组a进行初始化的语句是:( C )

  详见教材P145,一维数组的定义、初始化

  选项B,D,常量表达式只能放在中括号 [ ]中

  选项A,数组可以看做是若干个相同数据类型元素的有序集合,因此以集合的形式对其初始化,使用{ }对其初始化,选项A用了().

  19.在C语言中对一维整型数组的正确定义为 D 。

  详见教材P144,数组元素的引用

  引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数

  int a[10]表示定义了一个包含10个整型数据的数组a,数组元素的逻辑地址下标范围为0~9,即a[0] 表示组中第1个元素; a[1] 表示组中第2个元素; a[2] 表示组中第3个元素; ......;a[9] 表示组中第10个元素.

  选项A,超过了数组a的逻辑地址下标范围;

  选项B,逻辑地址下标只能为整数

  选项C,逻辑地址下标只能放在[ ]中

  21.若有以下数组说明,则i=10;a[a[i]]元素数值是(C )。

  a[9]对应下面数组中的元素为6. 因此a[9]即为6

  二维数组的一维大小,即指二维数组的行数,在本题中,按行对二维数组赋值,因此内层有几个大括号,数组就有几行

  23.对二维数组的正确定义是(C )

  详见教材P149~152,二维数组的定义、初始化

  类型符 数组名 [常量表达式][常量表达式]

  二维数组可以看做是矩阵

  类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;第一个常量表达式是指数组的行数;第二个常量表达式是指数组的列数;常量表达式的值只能是整数,不可以是变量,而且从1开始计数。

  一维数组初始化时可以省略数组长度

  二维数组初始化时可以省略行数,但不能省略列数

  选项A,B,都省略了列数

  选项D,不符合二维数组定义的一般形式,行、列常量表达式应该放在不同的[]中

  详见教材P150,数组元素的引用

  数组名[下标] [下标]

  引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数

  第一个[下标]表示行逻辑地址下标,第二个[下标]表示列逻辑地址下标。

  本题图示详见P149图6.7

  因此a的行逻辑地址范围0~2;a的列逻辑地址范围0~3;

  选项A,列逻辑地址下标超过范围

  选项B,D,的引用形式不正确。

  25.C语言中函数返回值的类型是由 A 决定的.

  A、函数定义时指定的类型

  B、 return语句中的表达式类型

  C、 调用该函数时的实参的数据类型

  D、形参的数据类型

  26. 在C语言中,函数的数据类型是指(A )

  A、 函数返回值的数据类型

  B、 函数形参的数据类型

  C、 调用该函数时的实参的数据类型

  D、任意指定的数据类型

  27.在函数调用时,以下说法正确的是( B )

  A、函数调用后必须带回返回值

  B、实际参数和形式参数可以同名

  C、函数间的数据传递不可以使用全局变量

  D、主调函数和被调函数总是在同一个文件里

  28. 在C语言中,表示静态存储类别的关键字是: ( C )

  29.未指定存储类别的变量,其隐含的存储类别为(A )。

  30. 若有以下说明语句:

  则下面的叙述不正确的是: (D )

  A、 struct是结构体类型的关键字

  D、 stu是用户定义的结构体类型名

  31.若有以下说明语句:

  则下面的叙述不正确的是__C___.

  A、 struct是声明结构体类型时用的关键字

  B、 struct date 是用户定义的结构体类型名

  C、 brithday是用户定义的结构体类型名

  D、year,day 都是结构体成员名

  32. 以下对结构变量stul中成员age的非法引用是 B

  33.设有如下定义:

  若要使P指向data中的a域,正确的赋值语句是 C

  34.设有以下说明语句:

  则下面叙述中错误的是( D )。

  A、struct是结构类型的关键字

  B、struct stu是用户定义的`结构类型

  C、a和b都是结构成员名

  D、stutype是用户定义的结构体变量名

  A、p是指向一维数组的指针

  B、p是指向函数的指针,该函数返回一int型数据

  C、p是指向int型数据的指针 // 指针的定义教材P223

  D、p是函数名,该函数返回一指向int型数据的指针

  36.下列不正确的定义是( A )。

  选项A先定义一个整型指针变量p,然后将变量i的地址赋给p。然而此时还未定义变量i因此编译器无法获得变量i的地址。(A与C对比,选项C先定义变量i,则在内存中为i分配空间,因此i在内存空间的地址就可以确定了;然后再定义p,此时可以为p赋i的地址,C正确)

  p,q同为整型指针变量,二者里面仅能存放整型变量的地址。

  选项A,q中为地址,因此可将此地址赋给p

  选项B,*p表示p所指向对象n的内容,即一个整数;*q表示q所指向对象的内容,由于在定义q时为其初始化,将p中n的地址给q,因此p中存放n的地址,*q表示q所指向对象n的内容.因此*p=*q 相当于 n=n;

  选项D,p中只能存放地址,不能将n中的整数值赋给p

  38.有语句:int a[10],;则 B 是对指针变量p的正确定义和初始化。

  选项A,a是数组名,不是指针变量名,因此不可用*标注数组名a

  选项C,a是数组名,数组名就是地址,无需再用地址符号。而且在定义指针变量p时,应在变量名前加*,标明p是指针变量

  选项D,a是数组名,数组名就是地址,无需再用地址符号。

  首先定义一个整型数组a,a的长度为5,然后定义一个指针变量p,并同时对p进行初始化,将数组a的地址赋给p。因此此时p中存放的数组a的首地址,即数组中第一个元素a[0]的地址。

  对于数组元素下标的引用(详见p144), 一般形式 数组名[下标] 其中下标为逻辑地址下标,从0开始计数,方括号中的下标可以是变量,可以是表达式,但结果一定要是整数。

  选项A,p中存放的是地址,不是整数,不能做数组元素的下标

  选项B,a是数组名,数组名就是地址,不是整数,不能做数组元素的下标

  选项C,(重点!!!详见p231~234) p+2表示指向同一数组中的下两个元素的地址,当前p指向a[0],则p+2表示a[2]的地址,因此*(p+2)表示a[2]的内容

  40. 有如下程序

  则数值为9的表达式是 B

  首先定义一个整型数组a,a的长度为5,然后定义一个指针变量P,并同时对P进行初始化,将数组a的地址赋给P。因此此时P中存放的数组a的首地址,即数组中第一个元素a[0]的地址。

  数组中9对应的是a[8], 选项B,P+8表示数组中后8个元素的地址,即a[8]的地址。*(P+8)则表示该地址内所存放的内容,即a[8]的值。

  选项D,P+8表示数组中后8个元素的地址,即a[8]的地址,而非a[8]中的值。

  41. 在C语言中,以 D 作为字符串结束标志

  42.下列数据中属于“字符串常量”的是( A )。

  若干个字符构成字符串

  在C语言中,用单引号标识字符;用双引号标识字符串

  选项B,C,分别用{}和’’标识字符串

  选项D,标识字符。

  D、以上答案都不对

  C语言中,字符串后面需要一个结束标志位'',通常系统会自动添加。

  对一维数组初始化时可采用字符串的形式(例如本题数组x),也可采用字符集合的形式(例如本题数组y)。在以字符串形式初始化时,数组x不尽要存储字符串中的字符,还要存储字符串后的结束标志位,因此数组x的长度为6;在以字符集合形式初始化时,数组y,仅存储集合中的元素,因此数组y长度为5。

  (1)算法的时间复杂度是指_______。

  A)执行算法程序所需要的时间

  B)算法程序的长度

  C)算法执行过程中所需要的基本运算次数

  D)算法程序中的指令条数

  评析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。

  (2)下列叙述中正确的是________。

  A)线性表是线性结构B)栈与队列是非线性结构

  C)线性链表是非线性结构D)二叉树是线性结构

  评析:一般将数据结构分为两大类型:线性结构与非线性结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。

  (3)下面关于完全二叉树的叙述中,错误的是_________。

  A)除了最后一层外,每一层上的结点数均达到最大值

  B)可能缺少若干个左右叶子结点

  C)完全二叉树一般不是满二叉树

  D)具有结点的完全二叉树的深度为[log2n]+1

  评析:满二叉树指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点(叶子结点)的二叉树。

大学《C语言》试题及答案3篇(扩展4)

——C语言数组的定义及引用3篇

C语言数组的定义及引用1

  1.1 一维数组的定义、初始化和引用

  1.一维数组的定义方式为:

  类型说明符 数组名[常量表达式]

  (1)数组名的命名方法与变量名相同,遵循标识符命名规则;

  (2)数组是用方括号括起来的常量表达式,不能用圆括号;

  (3)常量表达式表示数组元素的个数,即数组的长度,数组的下标从0开始,下标的最大值为:常量表达式-1;

  (4)常量表达式中可以包括常量和符号常量,不能包括变量。

  可以用赋值语句或输入语句使数组中的元素得到值,但要占用运行时间。可以使数组在运行之前初始化,即在编译阶段使之得到初值。

  2.对数组初始化可以用以下方法实现:

  (1)在定义数组时对数组元素赋以初值。如:

  (2)初始化时可以只对一部分元素赋初值。例如:

  定义的数组有10个元素,但只对其中前5个元素赋了初值,后5个元素初值为0。

  (3)如果想使一个数组的元素值全部为0,可以用下面的方法:

  如果对static型数组不赋初值,系统会对定义的所有数组元素自动赋以0值。

  (4)在对全部数组元素赋初值时,可以不指定数组长度。

  3.一维数组的引用方法是:

  C语言规定不能一次引用整个数组,引用时只能逐个元素引用,数组元素的表示形式为:

  下标可以是整型常量或整型表达式。如:

  1.2 二维数组的定义、初始化和引用

  1.二维数组定义的一般形式为

  类型说明符数组名[常量表达式][常量表达式]

  C语言采用上述定义方法,我们可以把二维数组看做是一种特殊的一维数组:它的元素又是一维数组。在C语言中,二维数组中元素的排列顺序是:先按行存放,再按列存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素。

  2.二维数组的初始化:二维数组可以用下面的方法初始化:

  (1)分行给二维数组赋初值。如:

  以上赋值把第一个花括号内的数据赋给第一行元素,第二个花括号内数据赋给第二元素…,即按行赋值。

  (2)可以将所有的数据写在一个花括号内,按数组排列的顺序对各元素赋值。

  (3)可以对数组的部分元素赋初值。如:

  以上赋值的结果是:数组第一列的元素分别赋了初值1,5,9,其余元素的值都是0。

  (4)如果对二维数组的全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。

  3.二维数组的'引用:二维数组的元素可以表示为:

  数组[下标][下标]

  在引用二维数组时,必须是单个元素,不能是整个数组名。下标可以是一个表达式,但不能是变量。如果下标是一个表达式,注意表达式的值不能超出数组定义的上、下限。

C语言数组的定义及引用2

  指针数组说明的一般形式为:

  类型说明符 *数组名[数组长度]

  其中类型说明符为指针值所指向的变量的类型。例如:

  表示pa是一个指针数组,它有三个数组元素,每个元素值都是一个指针,指向整型变量。

  【例10-33】通常可用一个指针数组来指向一个二维数组。指针数组中的每个元素被赋予二维数组每一行的首地址,因此也可理解为指向一个一维数组。

  本例程序中,pa是一个指针数组,三个元素分别指向二维数组a的各行。然后用循环语句输出指定的数组元素。其中*a[i]表示i行0列元素值;*(*(a+i)+i)表示i行i列的元素值;*pa[i]表示i行0列元素值;由于p与a[0]相同,故p[i]表示0行i列的值;*(p+i)表示0行i列的值。读者可仔细领会元素值的各种不同的表示方法。

  应该注意指针数组和二维数组指针变量的区别。这两者虽然都可用来表示二维数组,但是其表示方法和意义是不同的。

  二维数组指针变量是单个的变量,其一般形式中"(*指针变量名)"两边的括号不可少。而指针数组类型表示的是多个指针(一组有序指针)在一般形式中"*指针数组名"两边不能有括号。例如:

  表示一个指向二维数组的指针变量。该二维数组的列数为3或分解为一维数组的长度为3。

  表示p是一个指针数组,有三个下标变量p[0],p[1],p[2]均为指针变量。

  指针数组也常用来表示一组字符串,这时指针数组的每个元素被赋予一个字符串的首地址。指向字符串的指针数组的初始化更为简单。例如在例10.32中即采用指针数组来表示一组字符串。其初始化赋值为:

  指针数组也可以用作函数参数。

  【例10-34】指针数组作指针型函数的参数。在本例主函数中,定义了一个指针数组name,并对name 作了初始化赋值。其每个元素都指向一个字符串。然后又以name作为实参调用指针型函数day_name,在调用时把数组名name赋予形参变量name,输入的整数i作为第二个实参赋予形参n。在day_ name函数中定义了两个指针变量pp1和pp2,pp1被赋予name[0]的值(即*name),pp2被赋予name[n]的值即*(name+ n)。由条件表达式决定返回pp1或pp2指针给主函数中的指针变量ps。最后输出i和ps的值。

  【例10-35】输入5个国名并按字母顺序排列后输出。现编程如下:

在以前的例子中采用了普通的排序方法,逐个比较之后交换字符串的位置。交换字符串的物理位置是通过字符串复制函数完成的。反复的交换将使程序执行的速度很慢,同时由于各字符串(国名)的长度不同,又增加了存储管理的负担。用指针数组能很好地解决这些问题。把所有的字符串存放在一个数组中,把这些字符数组的首地址放在一个指针数组中,当需要交换两个字符串时,只须交换指针数组相应两元素的内容(地址)即可,而不必交换字符串本身。

  2) 本程序定义了两个函数,一个名为sort完成排序,其形参为指针数组name,即为待排序的各字符串数组的指针。形参n为字符串的个数。另一个函数名为print,用于排序后字符串的输出,其形参与sort的形参相同。主函数main中,定义了指针数组name 并作了初始化赋值。然后分别调用sort函数和print函数完成排序和输出。值得说明的是在sort函数中,对两个字符串比较,采用了strcmp函数,strcmp函数允许参与比较的字符串以指针方式出现。name[k]和name[j]均为指针,因此是合法的。字符串比较后需要交换时,只交换指针数组元素的值,而不交换具体的字符串,这样将大大减少时间的开销,提高了运行效率。


大学《C语言》试题及答案3篇(扩展5)

——大学《国际金融》试题及答案3篇

大学《国际金融》试题及答案1

  一、名词解释(每题4分,共16分)

  二、填空题(每空2分,共20分)

  1、信用证以其是否附有单据、分为____和____, 国际贸易中主要使用的是____。

  2、国际收支*衡表经常帐户包括:____ 、____和____三大项目。

  3、 外汇期货交易基本上可分为两大类:____和____。

  4、出口押汇可分为____和____两大类。

  三、判断题(正确的打√,错误的打X。每题1分,共lo分)

  1、套汇是指套汇者利用不同时间汇价上的差异,进行贱买或贵卖,并从中牟利的外汇交易。( )

  2、在外汇市场上,如果投机者预测日元将会贬值,美元将会升值,即进行卖出美元买入日元的即期外汇交易。( )

  3、是否进行无抛补套利,主要分析两同利率差异率和预期汇率变动率。( )

  4、由于远期外汇交易的时间长、风险大,一般要收取保证金。( )

  5、 把某种货币的国际借贷和交易转移到货币发行国境外进行以摆脱该国国内的金融管 制便形成了离岸金融市场。( )

  6、在美国按规定人多数机构投资者都能够购买以外币计价的外国债券。( )

  7、货币互换与外汇市场上掉期交易基本没有区别。( )

  8、固定利率是借贷双方在贷款协议中明确规定并在整个贷款期限内不得变动的利率。 ( )

  9、混合贷款即*贷款,上要是发达国家向发展*家*提供贷款。( )

  10、对于担保行来说,福费廷的主要优点足给他提供厂获取可观的保费收入的机会。 ( )

  四、单项选择题(每题1分,共10分)

  1、发展*家认为浮动汇率制的消极影响主要是( )

  A、增加了国际贸易和金融活动中的风险

  B、削弱了货币纪律

  C、 助长了利率浮动

  D、加剧了发展中同家贸易条件的恶化

  2、会计风险又被称为( )和折算风险。

  A、记帐风险 B、帐面风险

  C、帐目风险 D、 评价风险

  3、对于风险较大的福费廷业务,包买商通常还要请( )进行风险参与。

  A、 * B、 担保人

  C、 金融机构 D、贴现公司

  4、以下哪种说法是错误的( )

  A、外币债权人和出口商在预测外币汇率将要上升时,争取延期收汇,以期获得该计价货币汇率上涨的利益

  B、外币债务人和进口商在预测外币汇率将要下降时,争取提前付汇,以免受该计价货币贬值的风险

  C、 外币债权人在预测外币汇率将要下降时,争取提前收汇

  D、外币债务人在预测外币汇率将要上升时,争取推迟付汇

  5、 在国际银行贷款中以下哪一种贷款是最流行的形式。( )

  A、 国际银团贷款 B、世界银行贷款

  C、 福费廷 D、出口信贷

  6、在国际银团贷款巾,借款人对未提取的贷款部分还需支付( )

  A、 担保费 B、承诺费

  C、代理费 D、损失费

  7、最上要的国际金融组织是( )。

  C、 美洲开发银行

  D、 国际货币基金组织

  8、包买商从出口商那里无追索权的购买经过进口商承兑和进口方银行担保的远期票据,向出口商提供中期贸易融资、被称之为( )

  A、出口信贷 B、福费廷

  C、打包放款 D、远期票据贴现

  9、对出口商来说,通过福费廷业务进行融资最大的好处是( )

  A、转嫁风险 B、获得保费收入

  C、 手续筛单 D、收益率较高

  10、判断债券风险的主要依据是( )

  A、 市场汇率 B、 债券的期限

  C、发行人的资信程度 D、 市场利率

  五、多项选择题(每题1分,共10分)

  1、掉期交易的主要特点有( )。

  C、 买卖同时进行

  D、货币买卖数额相同

  E、 交易的期限和结构各不相同

  2、决定外汇期权的主要因素有( )

  A、 外汇期权协定汇价与即期汇价的关系

  B、外汇期权的期限

  3,被称为金融市场四大发明的`是( )

  A、 回购协议 B、互换业务

  C、 浮动利率债券 D、金融期货

  E、 票据发行便利 F、金融期权

  4、根据货币的购买力,汇率又可分为( )汇率。

  A、即期 B、 远期

  C、 套算 D、名义

  5、影响汇率变动的主要因素。( )

  6、外汇管制所针对的物包括( )。

  C、 外币有价证券

  7、金融危机爆发时的表现主要有( )

  A、 股票市场爆跌 B、资本外逃

  C、 市场利率急剧下降 D、银行支付体系与混乱

  E、 外汇储备激增 F、 本国货币升值

  8、牙买加体系的内在缺陷主要表现为( )

  A、 多种汇率制度并存

  B、汇率体系不稳定,货币危机不断

  C、 国际资本流动缺乏有效监督

  D、多元化的国际储备体系

  E、国际收支调节与汇率体系不适应,IMF协调能力有限

  F、在国际储备多元化基础上出现了一‘些货币区

  9、国际金本位制的基本特点有( )

  A、各国货币以黄金为基础,保持固定比价关系

  B、实行自由多边的国际结算制度

  C、 特别提款权作为主要的国际储备资产

  D、国际收支依靠市场机制自发调节

  E、 纸币与黄金自由兑换

  F、在市场机制自发作用下的国际货币制度需要国际金融组织的监督

  10、易货贸易的共同特点是( )

  A、交易双方不存在任何风险

  B、 交易尤需支付外汇

  E、 双方互换货物的单价确定F来保持不变

  六、问答题(共34分)

  1、外汇期货交易有何特点?(±o分)

  2、经济主体在进行外汇风险管理时应遵循哪些原则?(8分)

  3、 布雷顿森林体系的积极作用与缺陷土要表现在哪些方面?(8分)

  4、 什么是出口信贷?出口信贷有哪些特点?(8分)


大学《C语言》试题及答案3篇(扩展6)

——大学《数据结构》试题及答案3篇

大学《数据结构》试题及答案1

  1.属性与服务相同的对象构成类,类中的每个对象称为该类的一——·

  2.在类的继承结构中,位于上层的类叫做一——,其下层的类则 叫做 类.

  4.线性表的链接存储只能通过—————————顺序访问。

  5.设链栈中结点的结构为(data,link),栈顶 指针为top,则向该链栈插入、—个新结点*p

  时,应依次执行—————————————和一————操作。

  6.广义表的深度定义为广义表中括号被嵌套的——一·

  7.在一棵高度为h的完全二又树中,最少含有——个结点.假定树根结点的高度为O.

  8.从有序击(12,10,30,43,56,78,02,95)中折半搜索56和98元素时,其搜索长度分别为——和——·

  9。n个(n>o)顶点的连通无向图中各顶点的度之和最少为————·

  10.设图的顶点数为n,则求解最短路径的Dijkstra算法的时间复杂度为————·

  11.给定一组数据对象的关键码为{46,79,56,38,40,84},则利用堆排序方法建立的初始最大堆的堆首和堆尾的关键码分别为——和——·L2.在索引表中,着一个索引项对应数据对象表中的一个表项,0C称此索引为稠密索引

  若对应数据对象表中的若干表项,则称此索引为——一索引.

  2.基类 派生(或于类)


大学《C语言》试题及答案3篇(扩展7)

——大学面试题目及最佳答案3篇

大学面试题目及最佳答案1

  1. 当你被安排做一件事情,主管你的一把手和主管副手意见不一致时你怎么办?

  专家点评:这类问题可以判断出应聘者对自我要求的意识及问题处理的能力,这既是一个陷阱,又是一次机会。对于一个工作了几年的人来说,也是个头痛的问题,何况是个涉足未深的大学生。回答时,出发点必须站在领导的角度和对工作负责的态度回答:“作为具体执行工作任务的我来说,我会服从上级的安排,并尽快做好。本着对工作负责的态度,我会从实际工作的具体情况,给上级以必要的信息和提醒。并

  分别与两位领导在没有别人的情况下,说出该领导和另一位领导意见的合理地方,并综合他们的合理之处说出我对这个问题的建议,让他们都能考虑实际情况和对方的意见,并欣然接受我的想法。”这样,面试官会觉得你有责任心、有头脑,还服从领导。

  2. 你是学生物的,为什么不去做生物和医药?

  专家点评:这个问题提的很尖锐,迫使你不得不暴露自己在专业上的弱点,你可以这样回答:“我虽然学的是生物专业,但我更喜欢计算机,在校期间,我经常自学这方面的知识,而且两年前,就拿到高级程序员证书。这次又通过职业测评,咨询诊断结果我作销售比较合适,而且我性格开朗,亲和力强,所以,我认为我完全胜任贵公司计算机市场开发工作。”这样,既没有说到对生物不感兴趣,没有学好专业等缺欠,又把咨询师给的合理建议端出,使面试官引起重视。

  3. 谈谈你人生旅途中最大的成功和失败是什么?

  专家点评:这个问题很常见,但能有效反映一个人生命历程的深度和广度,接踵而至可以判断出你思想的深度和悟性。如:你只能答出类似高考因未能考到满意的大学而痛哭了好几天,那就容易判断你是一个经历单纯、对逆境没有承受力的人。所以,当你谈到最成功的一件事时,你要谈到从成功中得到的经验和升华,但不要眉飞色舞、夸夸其谈,给面试官以浅薄自大的感觉;谈到最失败的一件事时,要谈到从失败中吸取的教训和自己战胜失败的过程,不要垂头丧气、苦闷彷徨,给面试官以没有挫折商的感觉。

  4. 谈谈你的星座、血型、八字及家庭情况。

  专家点评:这类问题对于了解应聘者的性格、观念、心态等有一定的作用,这是招聘单位提出该问题的主要原因。回答时要说:“职业是人生最大事,要靠科学的职业生涯规划来科学定位,从而找到各阶段的发展*台。不能相信星座、血型、八字等学说,那样会贻误前途,赔上时间成本。”谈到家庭时,可以简单地罗列家庭人口、宜说温馨和睦的家庭氛围、父母对自己教育的重视、各位家庭成员的良好状况、家庭成员对自己工作的支持、自己对家庭的责任感。

  5. 如果xxx公司和另一家公司同时给你Office,你怎么办?

  专家点评:面试官试图从中了解你求职的动机、愿望以及对此项工作的态度。一般大家都会以公司名气和工资高低作为取舍依据,你如果这样回答:“我会把企业文化、公司发展前景、个人在公司的发展、工作部门、职位、将来的顶头上司和团队成员是什么样的人等因素进行综合分析比较做出结论,决定我的舍取。” 面试官将对你刮目相看。

大学面试题目及最佳答案2

  例一:“谈谈你的家庭情况”

  答题思路:1、简单地罗列家庭人口。2、宜强调艰苦节俭的家庭环境对自己品质的磨练。3、宜强调温馨和睦的家庭氛围。4、宜强调父母对自己教育的重视。5、宜强调家庭成员对自己工作的支持和生活的关心。6、宜强调自己对家庭的责任感。

  例二:“你有什么课余爱好?”

  答题思路:1、不要说自己没有课余爱好。2、所说的课余爱好一定是自己最熟悉、最擅长的内容,经得起刨根问底。3、不要说不良爱好。4、最好不要说自己爱好仅限于读书、听音乐、上网,否则可能被视为性格孤僻。5、最好能有一些户外的课余爱好来“点缀”你的形象。

  (二)职业观、价值观方面的问题:

  答题规律:职业观和价值观往往是问你的工作理想、人生计划、入生追求等问题,必须*时训练有素才能完美作答,要求回答问题要有条理性和层次感,每个问题都学会说出1、2、3条内容,由浅入深,山近及远,体现自己胸有成竹、充满自信。

  例三:“你最理想的工作是什么?”

  答题思路:1、能够发挥我的专业特长。2、能够在工作岗位得到进一步的学习和锻炼。3、公司能够为个人发展提供广阔的空间。4。能够获得一份稳定的收入,减轻家庭负担。

  例四:“你希望的薪水是多高?”

  答题思路:1、这个问题很棘手,必须学会巧妙作答。2、可以答“薪水对我固然重要,但这份工作伴随而来的责任更吸引我”。3、可以答“我到贵公司后会努力工作,完成各项工作任务,我相信公司会给我一份合适的薪水”。4、可以答“我到贵公司主要是追求更多的学习和锻炼的机会,薪水不是我的唯一目的。”5、如果面试官要求应聘者必须说出薪水的具体数目,可以说当今发达地区的基本工资标准。6、应聘者要始终牢记:薪水的高低企业都有明文规定,不因你要求高就高,更不因你要求低就低,所以回答时宁低毋高。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

从xxx行开始的注解尚未结束文件不能结束

开始的条件语句尚未结束文件不能结束

-出自百度贴吧 C语言吧

我要回帖

更多关于 c语言数组括号内无数字 的文章

 

随机推荐