c语言习题及答案Word文档格式.docx

上传人:b****2 文档编号:235796 上传时间:2023-04-28 格式:DOCX 页数:18 大小:23.77KB
下载 相关 举报
c语言习题及答案Word文档格式.docx_第1页
第1页 / 共18页
c语言习题及答案Word文档格式.docx_第2页
第2页 / 共18页
c语言习题及答案Word文档格式.docx_第3页
第3页 / 共18页
c语言习题及答案Word文档格式.docx_第4页
第4页 / 共18页
c语言习题及答案Word文档格式.docx_第5页
第5页 / 共18页
c语言习题及答案Word文档格式.docx_第6页
第6页 / 共18页
c语言习题及答案Word文档格式.docx_第7页
第7页 / 共18页
c语言习题及答案Word文档格式.docx_第8页
第8页 / 共18页
c语言习题及答案Word文档格式.docx_第9页
第9页 / 共18页
c语言习题及答案Word文档格式.docx_第10页
第10页 / 共18页
c语言习题及答案Word文档格式.docx_第11页
第11页 / 共18页
c语言习题及答案Word文档格式.docx_第12页
第12页 / 共18页
c语言习题及答案Word文档格式.docx_第13页
第13页 / 共18页
c语言习题及答案Word文档格式.docx_第14页
第14页 / 共18页
c语言习题及答案Word文档格式.docx_第15页
第15页 / 共18页
c语言习题及答案Word文档格式.docx_第16页
第16页 / 共18页
c语言习题及答案Word文档格式.docx_第17页
第17页 / 共18页
c语言习题及答案Word文档格式.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c语言习题及答案Word文档格式.docx

《c语言习题及答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《c语言习题及答案Word文档格式.docx(18页珍藏版)》请在冰点文库上搜索。

c语言习题及答案Word文档格式.docx

的正确结果是(B)。

A)67B)C)不确定D)67L

 执行printf("

%x"

100);

后的输出结果是(C)。

A)100B)0x100C)0X64D)64

 存储字符串"

\\\'

abc\376"

需要的字节数是(D)。

A)11B)13C)6D)7

【习题3】

一、计算题

+7%3*11%2/4(答案:

5/2+2+7%6(答案:

3.3a=12,a*=2+3(答案:

a=60)

3.4a=3,b=4,c=5,a+b>

c&

&

b==c(答案:

0)

3>

53:

5<

825:

40(答案:

25)

设a=1,b=2,c=3,d=4,m=n=1,有表达式(m=a>

b)&

(n=c>

d),计算表达式后m,n的值

(答案:

m=0,n=1)

 设intb=7;

floata=,c=;

求下面表达式的值。

a+(int)(b/2*(int)(a+c)/2)%4(答案:

二、单项选择题

 若有代数式

,则不正确的C语言表达式是(C)。

A)x/b/c*y*8B)8*x*y/b/c

C)8*x*y/b*cD)x*y/c/b*8

 有如下类型说明:

intk,a,b;

unsignedlongw=8;

doublex=

则以下不符合C语言语法的表达式是(A)。

A)x%(-3)B)w*=-2

C)k=(a=6,b=4,a-b)D)a*=a+=a-=(b=4)*(a=3)

 有如下类型说明:

floatn;

intm;

则以下能实现将n中的数值保留小数点后两位,第三位四舍五入的表达式是(B)。

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

C)n=n*100+D)n=(n/100+*

 设k=7,x=12;

则下列表达式值为3的是(D)。

A)x%=(k%=5)B)x%=(k-k%5)

C)x%=k-k%5D)(x%=k)-(k%=5)

 已知m=48,ch='

n=0;

则表达式(m>

=n&

ch<

'

n)的值是(B)。

A)0B)1C)真D)非0

 下面哪个式子在b为奇数时结果为假(C)。

A)a%2==1B)!

(a%2==0)C)!

(a%2)D)a%2

%f"

(x=3,y=5,x>

y1:

);

后的输出结果是(D)。

A)语法错误B)1C)D)

 能表示条件0≤x≤100的表达式是(D)。

A)0<

=x<

=100B)x>

=0,x<

=100

C)0≤x≤100D)x>

=0&

x<

 判断char型变量ch为数字的正确表达式是(B)。

A)ch>

="

0"

9"

B)ch>

='

0'

9'

C)'

≤ch≤'

D)ch>

||ch<

三、编程题(应用条件运算)

输入一个整型成绩x,如果大于等于60分,输出“pass”,否则输出“fail”。

printf("

%s"

x>

60"

pass"

:

"

fail"

 输入一个年份y,如果是闰年,输出“yisaleapyear”,否则输出“yisnotaleapyear.”

%dis%s"

y%4==0&

y%100!

=0||y%400==0"

aleapyear."

notaleapyear."

 输入三条边a,b,c,如果它们能构成一个三角形,输出“Yes”,否则输出“No”。

a+b>

a+c>

b&

b+c>

Yes"

No"

 输入三个数x,y,z,按从小到大的输出结果。

分别用max0,min0代表最大、最小值,mid0表示中间值。

max0=(x>

yx:

y)>

z(x>

y):

z;

max0=(x<

y)<

z(x<

mid0=x+y+z-max0-min0;

【习题4】

 编程实现,输入一个整数,判断它是否为偶数,并显示相应的信息。

x代表输入的整数,if(x%2==0)printf("

\neven"

elseprintf("

\nodd"

编程实现,输入一个平面上的点,判断它是否落在单位圆上,并显示相应的信息。

x,y代表平面坐标,if(x*x+y*y==1)printf("

\nYes"

\nNo"

编程实现,输入一个成绩等级(A-E),显示相应的百分制成绩段。

A:

90-100

B:

80-89

C:

70-79

D:

60-69

E:

<

60

chargrade;

if(grade=='

)printf("

\n90-100"

elseif(grade=='

B'

\n80-89"

....

写出下面程序的运行结果:

#include<

>

main()

{

inta=-1,b=1,c=5;

switch(a>

0){

case1:

switch(b-2<

break;

case2:

*"

}

case0:

switch(c==5){

!

#"

default:

%%"

@"

运行结果:

#@

编程实现,使用循环结构打印以下图案。

*

***

*****

*******

输出时,本图案要按向上三角形和向下三角形进行输出。

每行输出中包括空格输出,‘*’号输出。

输出空格和‘*’号个数要与行循环控制变量关联起来。

【习题5】

填空题:

若有定义inta[3][5];

则排列在数组中的第9个元素是(a[1][3])。

strlen("

Howareyou\n"

)的值是(12)。

5.3C语言中字符串结束的标志是('

\0'

)。

写出一个名为s的单精度实型一维数组,长度是6,所有元素初值均为0,其数组定义语句是(floats[6]={0};

strcmp("

how"

"

How"

)的值是(32或>

0)。

选择题:

若有ints[4]={1,2,3,4};

,则s[s[0]+2*s[2]-s[3]]的值是(D)

.2C

对数组的描述正确的是(B)。

A.数组一旦定义其大小是固定的,但数组元素的类型可以不同。

B.数组一旦定义其大小是固定的,但数组元素的类型必须相同。

C.数组一旦定义其大小是可变的,但数组元素的类型可以不同。

D.数组一旦定义其大小是可变的,但数组元素的类型必须相同。

对字符串"

Boy"

进行完整赋值的操作是(B)。

A.chars[3]={'

'

o'

y'

};

B.chars[]="

;

C.chars[3]={"

s[3];

s="

在c语言中引用数组元素时,其数组下标的数据类型允许是(C)。

A.整型常量B.整型表达式

C.整型常量或整型表达式D.任何类型的表达式

对以下说明语句的正确理解是(B)。

inta[10]={6,7,8,9,10};

A.将5个初值依次赋给a[1]至a[5]

B.将5个初值依次赋给a[0]至a[4]

C.将5个初值依次赋给a[6]至a[10]

D.因为数组长度与初值的个数不相同,所以此语句不正确

三、看程序写结果

main()

{inta[3][3]={{1,0,2},{2,2},{0,2}},c[3][3],i,j;

for(i=0;

i<

3;

i++)

{

for(j=0;

j<

j++)

{

c[i][j]=a[a[i][j]][a[j][i]];

printf("

%5d"

c[i][j]);

运行结果为:

220002201

当运行以下程序时,从键盘输入:

Ah2MAA3ha,请写出输出结果。

{chars[80],c='

inti=0;

s);

while(s[i++]!

if(s[i]==c)s[i]=s[i]-32;

elseif(s[i]==c-32)s[i]=s[i]+32;

puts(s);

运行结果为:

AH2Ma

四、编程题

用数组方法定义一个矩阵,求其转置矩阵。

已知a[3][2],转置后的结果存放在b[2][3];

则b[j][i]=a[i][j];

从键盘输入9个不同的整数,组成三行三列的二元数组,找出每一列中的最大元素,并输出其行、列下标。

已知a[3][3],max,row,col分别用来存放一列的最大值,行下标和列下标。

利用一个二维数组,打印出以下杨辉三角形,要求打印出10行。

1

1  1

1  2  1

1  3  3  1

1  4  6  4  1

1  5  10 10  5  1

定义一个10行10列的二维数组,并且通过两重循环对第1列所有元素赋值1,主对角线也赋值。

根据a[i][j]=a[i-1][j]+a[i-1][j-1]求出其它元素的值。

把30个学生的学号和两门课程的成绩输入到一个二维数组中,求出的每个学生的两门课程的总成绩也放于此数组中,请按学生总分的高低打印出成绩单(包括学号、两门课程成绩和总分)。

定义一个30行4列的数组。

为了先快速测试算法是否正确可以定义一个3行4列的数组,并且通过赋初始值,减少调试程序时反复输入数据的麻烦,算法调试成功后在加上输入数据部分。

实现从高到低打印出成绩可以通过排序(降序);

也可以通过另外定义1个一维数组作为索引,再通过索引打印成绩。

从键盘上输入一串字符,将其逆向显示。

首先计算字符串的长度,在从右边逐一显示字符,直到下标等于0为止。

 

【习题6】

填空题

6.1C语言程序执行的开始处是main函数。

6.2C程序中的一个函数由两部分组成,即声明部分和执行部分。

为了保证被调用函数不返回任何值,其函数定义的类型应为void。

若一个局部变量的存储类型是static,则该变量的值在程序执行完成时被释放。

预处理命令#include的作用是文件包含。

定义一个宏,功能是判断两个数是否相等,相等为1,不等为0。

#defineEQU(a,b)(a)==(b)1:

0

变量的存储类别有自动型、静态型、寄存器型、和外部类型共4种,它们分别用auto、static、register、extern标识。

选择题

下述函数定义形式正确的是(C)。

A.intf(intx;

inty)B.intf(intx,y)

C.intf(intx,inty)D.intf(x,y:

int)

关于函数参数,说法正确的是(A)。

A.实参与其对应的形参各自占用独立的内存单元

B.实参与其对应的形参共同占用一个内存单元

C.只有当实参和形参同名时才占用同一个内存单元

D.形参是虚拟的,不占用内存单元

用数组名作为函数的实参时,传递给形参的是(A)。

A.数组的首地址B.数组的第1个元素

C.数组中的全部元素D.数组的元素个数

复合语句中定义的变量的作用范围是(D)。

A.整个源文件B.整个函数

C.整个程序D.所定义的复合语句

一个函数的返回值由(D)确定。

A.return语句中的表达式B.调用函数的类型

C.系统默认的类型D.被调用函数的类型

在一个C源文件中,若要定义一个只允许本源文件所有函数使用的全局变量,其他文件中不允许使用,则该变量需要使用的存储类别是(D)。

A.autoB.registerC.externD.static

判断题

若定义的函数没有参数,则函数名后的圆括号可以省略。

(′)

函数的函数体可以是空语句(?

)。

只有main函数才能调用其他函数。

(?

语句中表达式的类型必须与函数定义的类型一致。

函数的实参和形参可以是相同的名字。

函数调用中,形参与实参的类型和个数必须保持一致。

外部类型的变量只能定义一次,但可在不同地方声明多次。

外部类型的变量作用范围大,编程中应多用外部变量。

预处理命令行必须以#开头,且最后要用分号结尾。

宏命令的处理占用编译时间,而不占用运行时间。

看程序写结果

intfun(intn)

{intf=1;

f=f*n*2;

return(f);

{inti,j;

for(i=1;

=5;

%d\t"

fun(i));

}

程序运行结果:

246810

intx1=30,x2=40;

{intx3=10,x4=20;

sub(x3,x4);

sub(x2,x1);

x1=%d,x2=%d,x3=%d,x4=%d"

x1,x2,x3,x4);

sub(intx,inty)

{intx1=x;

x=y;

y=x1;

x1=30,x2=40,x3=10,x4=20

#defineA4

#defineB(x)A*x/2

{floatc,a=;

c=B(a);

c=%5.1f"

c);

c=

编程题

写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。

两个整数由键盘输入。

最大公约数可以采用“辗转相除法”,最小公倍数将两数乘积除于最大公约数。

“辗转相除法”:

设两个数分别用m,n表示且m>

n,临时变量t,t=m%n;

m=n;

n=t;

直到n等于0。

有3′3的矩阵A和3′2的矩阵B,编制一个函数,求C=AX′B。

参照习题,A,B,C三个数组作为函数参数。

编写一函数,使输入的一个字符串按反序存放,在主函数中输入输出字符串。

一维字符数组用来存放字符串,并且将它传递到函数,在函数中通过元素值交换来完成反序存放。

编制一个函数,由参数传入一个字符串,统计此字串中字母、数字、和其他字符的个数,在主函数中输入字符串并显示统计结果。

参照例题。

【习题7】

语句inta,*p=&

a;

的含义是什么

答:

定义整型变量a,和整型指针变量p,并且p指向变量a。

写出下列数组元素的指针法表示。

(1)num[3]

(2)data[4][2]

(1)*(num+3)

(2)*(*(data+4)+2)

写出下列数组元素的下标法表示。

(1)*(*(a+1)+2)

(2)(*(a+3))[4](3)*(a[2]+5)

(1)a[1][2]

(2)a[3][4](3)a[2][5]

分析程序,写出程序输出结果。

(1)main()

{inta[5]={1,2,3,4,5};

int*p=&

a[1];

%d"

p[2]);

}

输出结果:

4

(2)main()

{chara[]="

IloveChina!

char*p=a;

p=p+2;

p);

loveChina!

(3)main()

{inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

int(*pa)[4]=a;

pa++;

*(*(pa+1)+2));

11

(4)main()

{char*str[]={"

zhao"

qian"

sun"

li"

inti;

for(i=0;

i<

4;

i++)

%c"

str[i][0]);

zqsl

(5)voidsub(intx,inty,int*z)

{*z=y-x;

{

inta,b,c;

sub(10,5,&

a);

sub(7,a,&

b);

sub(a,b,&

c);

%4d,%4d,%4d\n"

a,b,c);

-5,-12,-7

(6)#include<

fun(char*s)

{char*p=s;

while(*p)p++;

return(p-s);

{char*str="

abcd"

i=fun(str);

i);

定义语句int*f();

和int(*f)();

的含义分别是什么

答:

int*f();

表示函数返回一个整型指针;

int(*f)();

表示f是函数指针,指向整型函数。

在二维数组中存放有4个学生,5门课程的成绩,用指针编程实现:

(1)求出每门课程的平均成绩。

(2)求每个学生的总成绩和平均成绩。

(3)在屏幕上列出各课成绩在85分以上的学生名单。

(4)在屏幕上列出补考通知单。

(1)

(2)(3)略,(4)根据成绩小于60分,由于有5门课程的成绩,所以需要使用elseif结构。

输入一个字符串,内有数字和非数字字符,例如:

a345dsaf412x371+89tah74

编程将其中连续的数字作为一个证书,一次存放到一个数组d中,例如:

345放在d[0],412放在d[1],......。

统计共有多少个证书,并输出这些整数。

从字符串中提取"

345"

t=ch-'

t=t*10+(ch-'

t='

3'

-'

=3;

t=3*10+('

4'

)=34;

t=34*10+('

5'

)=345

编写把十六进制数字字符串变换成整数的函数:

inthtoi(char*s)。

编写把十进制整数变换成二进制数字字符串的函数:

char*itob(intn)。

用字符指针实现字符串拷贝功能,不能使用库函数。

定义两个字符数组a,b,复制操作b[i]=a[i];

用字符指针实现字符串连接功能,不能使用库函数。

定义两个字符数组a,b,先将下标定位到a的末尾'

,在将b的元素赋值给a的对应元素,注意:

别忘了添加字符串结束标志'

用指向指针的指针的方法对5个字符串排序并输出。

一个指针数组和一个指向指针的指针变量。

【习题8】

定义复数结构体,并写出复数的加、减、乘、除、的计算函数。

复数包括两个部分:

实部和虚部。

定义一个结构体变量(包括年、月、日)。

计算该日在本年中是第几天。

注意闰年问题。

计算该日是本年中的第几天,是从本年1月1日起。

有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生数据,要求在屏幕上显示出3门课程的平均成绩,以及最高分数的学生的数据(包括学号、姓名、3门课程成绩、平均分)。

定义结构体数组。

最高分数是指每个学生3门课程的平均分最高。

编写求链表长度的函数。

从链表指针头往表尾移动计算结点的个数。

已有两个链表a、b,每个链表的结点包括学号、成绩。

要求把两个链表合并,按学号升序排列。

可以定义一个新的链表,先从链表a,再从链表b中取出结点,依次按学号升序插入到新的链表中。

利用节中的structcard结构编写一个程序实现5个人员数据输入和在屏幕上显示的功能:

如果job项为'

t'

,则在position项为教师的职称(助教、讲师、副教授、教授);

s'

,则class项为学生的班级号,如501。

在结构体中嵌入共用体position,根据job成员确定position的具体值。

口袋中有红、黄、兰3中颜色的球若干个。

每次从口袋中取出1个球,根据颜色的不同,输入相应的颜色英文字符串。

要求用枚举变量实现。

参照例。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2