c语言第二章作业答案,C语言第二章习题带答案

练习2-1答案

选择题

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

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

C.整型、字符型、逻辑型D.整型、实型、逻辑型、字符型

2.在C语言中,错误的short类型的常数是( A )。

A.32768B.0C.037D.0Xaf

3.下列常数中不能作为C的常量的是( D )。

A.0x45B.2.5e-2C.3e2D.0582

4.short类型的数据长度为2个字节,则unsigned short类型数据的取值范围是( B )。

A.0至255B.0~65535C.-32768~32767D.-256~255

5.下面4个选项中,均是合法转义字符的选项是( A )。

A.\,\\,\nB.\,\017,\

C.\018,\f,xabD.\\0,101,x1f

6.在C语言中,数字029是一个( D )。

A.八进制数B.十六进制数C.十进制数D.非法数

7.下列可以正确表示字符型常数的是( B )。

A."a"B.\tC."\n"D.297

8.以下( C )是错误的转义字符。

A.\\B.\C.\81D.\0

9.C语言中short类型的变量a的值为-8,则a在内存中的存储形式是( A )。

A.1111 1111 1111 1000B.100000000000 1000

C.000000000000 1000D.1111 1111 1111 0111

10.将字符g赋给字符变量c,正确的表达式是( C )。

A.c="g"B.c=101C.c=\147D.c=0147

11.字符串"\\\22a,0\n"的长度是( C )。

A.8B.7C.6D.5

12.为求出s=10!的值,则变量s的类型应当为( C )。

A.shortB.unsigned shortC.longD.以上三种类型均可

13.已知:unsigned short x=65535;,则执行以下语句输出是( D )。

printf("%d\n", x);

A.65535B.1C.无定值D.-1

14.下面4个选项中,均是合法整型常量的选项是( A )。

A.160,-0xffff,011B.-0xcdf,01,0xe

C.-01,986,012,0668D.-0x48a,2e5,0x

15.下面4个选项中,均是不合法的整型常量的选项是( D )。

A.--0f1,-0xffff,0011B.-0Xcdf,01a,0xe

C.-018,999,5e2D.-0x48eg,-068,03f

16.下面4个选项中,均是合法浮点数的选项是( B )。

A.+1e+1,5e-9.4,03e2B.-.60,12e-4,-8e5

C.123e,1.2e-.4,+2e-1D.-e3,.8e-4,5.e-0

- 4 -

练习2-2答案

选择题

1.已知:char a; int b; float c; double d;,执行语句c=a+b+c+d;后,变量c的数据类型是( C )。

A.intB.charC.floatD.double

2.已知int j, i=1;,执行语句j=-i++;后,j的值是( C )。

A.1B.2C.-1D.-2

3.已知int i, a;,执行语句i=(a=2*3, a*5), a+6;后,变量i的值是( C )。

A.6B.12C.30D.36

4.已知int i=5;,执行语句i+=++i;,i的值是( C )。

A.10B.11C.12D.A、B、C答案都不对

5.已知:float x=1, y;,则表达式y=++x*++x的结果为( B )。

A.9B.6C.1D.表达式是错误的

6.已知:int y; float x=-3;,执行语句:y=x%2;,则变量y的结果是( D )。

A. 1B.-1C.0D.语句本身是错误的

7.已知:char w; int x; float y; double z;,则表达式w*x+z-y结果的类型是( D )。

A.floatB.charC.intD.double

8.已知:int x=10, y=3, z;,则下列语句的输出结果是( D )。

printf("%d\n", z=(x%y, x/y));

A.1B.0C.4D.3

9.已知:int i=6, j;,则执行语句j=(++i)+(i++);后的j的值是( B )。

A.4B.14C.13D.15

10.已知:int x=1, y=-1;,则语句printf("%d\n", (x--&++y));的输出结果是( B )。

A.1B.0C.-1D.2

11.设a=2,b=3,计算表达式c=b*=a-1后,变量c的值是( B )。

A.5B.3C.2D.4

12.若定义了int x;,则将x强制转化成双精度类型应该写成( A )。

A.(double)x B.x(double)C.double(x)D.(x)double

13.下述程序的输出是( A )。

main()

{int x=023;

printf("%f", 2.5+1*7%2/4); }

A.2.500000B.2.750000C.3.375000D.3.000000

14.若有定义:int a=7; float x=2.5, y=4.7;,则表达式x+a%3*(int)(x+y)%2/4的值是( A )。

A.2.500000B.2.750000C.3.500000D.0.000000

15.设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第3位进行四舍五入运算的表达式是( B )。

A.n=(n*100+0.5)/100.0B.m=n*100+0.5, n=m/100.0

C.n=n*100+0.5/100.0D.n=(n/100+0.5)*100.0

16.已知ch是字符型变量,下面不正确的赋值语句是( A )。

A.ch=a+b;B.ch=\0;C.ch=7+9;D.ch=5+9;

展开阅读全文

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 顺序存储结构数据数据元素之间逻辑关系是由( )表示的,链接存储结构的数据元素之间的逻辑关系是由( )表示的。 A.线性结构 B.非线性结构 C.存储位置 D.指针 2. 线性表是( )。 A.一个有限序列,可以为空 B. 一个有限序列,不能为空 C. 一个无限序列,可以为空 D. 一个无限序列,不能为空 3. 已知一维数组A采用顺序存储结构,每个元素占用4个存储单元,第9个元素的地址为144,则第一个元素的地址是( )。 A. 108 B. 180 C. 176 D. 112 4. 在单链表删除指针p所指结点的后继结点,则执行( )。 A. p->next= p->next->next B. p->next= p->next C. p= p->next->next D. p= p->next; p->next= p->next->next 5. 若某链表最常用的操作是在最后一个结点之后插入一个结点删除最后一个结点,则采用( )存储方式最节省时间。 A. 单链表 B. 双链表 C. 头结点的双循环链表 D. 单循环链表 6.二维数组A[7][8]以列序为主序的存储, 计算数组元素A[5][3] 的一维存储空间下标 k=( )。 A. 38 B. 43 C. 26 D. 29 二、完成下列填空题(每空3分,共9分)。 1.在顺序表L第i个位置上插入一个新的元素e: Status ListInsert_Sq(SqList &L , int i , ET e){ if ( iL.length+1) return ERROR; if(L.length >= L.listsize){ p=(ET*)realloc(L.elem,(L.listsize+10)*sizeof(ET)); if (p==NULL) exit(OVERFLOW); L.elem=p; } for( j=L.length ; j>=i ; --j ) L.elem[j]=L.elem[j-1] ; L.elem[j]=e ; ++L.length ; return OK; } 2. 删除双向链表p所指向的节点算法: status delete(DuLinkList L, DuLinkList p) { if (p= =L) return ERROR; else { p->prior->next=p->next; p->next->prior=p->prior ; } free(p); return OK; } 三、编程题(共27分)。 1. (共12分)用顺序表表示集合,设计算法实现集合的求差集运算,要求不另外开辟空间。 顺序表的存储结构定义如下: #define Maxsize 100 typedef struct { ElemType data[MaxSize]; // ElemType表示不确定的数据类型 int length; // length表示线性表的长度 }SqList; 将如下函数,伪码补充完整(8分),代码前先用文字描述自己的算法思想(4分)。 文字描述算法:略(4分) void Difference(SqList A, SqList B) {//参考代码如下如下(8分) for (i=0;i<A.length;i++) for(j=0;j<B.length;j++) if(A.data[i]==B.data[j]) { A.data[i]=’#’; break; } for (k=0,i=0;inext == L) return; p = L; while (p->next != L)   { if (p->next->data != e) P = p->next; else { q = p->next;p->next = q->next; free(q);} } } 时间复杂度分析:(2分) 时间复杂度为O(n)。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值