《C语言开发入门教程》习题答案Word下载.docx
- 文档编号:18557000
- 上传时间:2022-12-27
- 格式:DOCX
- 页数:23
- 大小:23.17KB
《C语言开发入门教程》习题答案Word下载.docx
《《C语言开发入门教程》习题答案Word下载.docx》由会员分享,可在线阅读,更多相关《《C语言开发入门教程》习题答案Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
例
单目运算符
1个
++、--、!
、sizeof、~、…
双目运算符
2个
+、-、*、/、%、<
<
、==、…
三目运算符
3个
?
:
2、在进行自增(++)和自减(--)的运算时,如果运算符(++或--)放在操作数的前面则是先进行自增或自减运算,再进行其他运算。
反之,如果运算符放在操作数的后面则是先进行其他运算再进行自增或自减运算。
floata=1.5,b=2.6,h=5;
floats;
s=(a+b)*h;
梯形的面积为:
%.2f\n"
s);
//%.2f输出小数点后2位数字
2、参考答案
#include<
inta=3,b=4;
a=a^b;
b=b^a;
a=%d,b=%d\n"
a,b);
第3章流程控制
1、break
2、顺序
3、循环
4、if、if…else、if…elseif…else
5、3
1、C2、A、C3、B、C、D4、D5、A
1、跳转语句
●break当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。
当它出现在循环语句中,作用是跳出当前循环语句,执行后面的代码
●continue在循环语句中,立即终止本次循环,并执行下一次循环。
●goto语句可以跳出外层循环,需要对外层循环添加标记,然后使用goto语句可以跳转到标记的语句处。
2、for与while的相同之处都是完成一定次数的循环;
其不同之处是:
whie一般用于未知次数的循环;
for一般用于次数已知的循环;
两者声明变量的作用域不同,如果定义一个变量i,在while循环后i的值会存在,但for循环后,i的值不存在了;
intx=5;
if(x%2==0)
printf("
%d为偶数\n"
x);
else
%d为奇数\n"
inti,sum=0;
for(i=0;
i<
100;
i++)//控制i在1-100之间
{
if(i%2!
=0)//如果是奇数
sum+=i;
//就加起来
}
sum=%d\n"
sum);
第4章函数
1、return
2、有参、无参
3、scanf()
4、递归
5、全局、局部
1、√2、×
3、×
1、B2、D3、A、B、C4、B、C5、A、B、C
1、
●局部变量
局部变量就是在函数部声明的变量,它只在本函数有效,也就是说,只能在本函数使用它。
此外,局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量就会失去作用。
●全局变量
全局变量(包括main()函数),它不属于哪一个函数,而是属于源程序。
因此全局变量可以为程序中的所有函数所共用。
它的有效围从定义处开始到源程序结束。
2、
●外部函数
可以被其他源文件调用的函数称为外部函数,在调用外部函数之前,需要在当前源文件中定义外部函数。
定义外部函数的方式是在函数的返回值类型前面添加extern关键字。
●部函数
函数只在它的定义文件中有效,该类函数称为部函数。
在定义部函数时,需要在函数的返回值类型前面添加static关键字(又称为静态函数)。
它不可以被别的源文件调用,只在当前源文件中有效。
int_sum(inti)
if(i==1)
return1;
if(i>
1)
returni+_sum(i-1);
//函数自身调用自身
intsum;
sum=_sum(10);
#define_CRT_SECURE_NO_WARNINGS//scanf()函数是不安全的,调用它要关闭安全检查
stdlib.h>
intsum(inta,intb)
returna+b;
inta,b,he;
scanf("
%d%d"
&
a,&
b);
//用户从键盘输入数据
he=sum(a,b);
he=%d\n"
he);
system("
pause"
//包含在stdlib.h头文件中,也可以让运行结果界面暂停
第5章数组
1、集合
2、首
3、变量
4、下标
5、9
4、×
1、D2、A3、C4、A、C5、A、B、C、D
1、一维数组指的是只有一个下标的数组,其定义方式如下所示:
类型说明符数组名[常量表达式];
其初始化有三种方法:
●直接对数组中的所有元素赋值;
如inti[5]={1,2,3,4,5};
●只对数组中的一部分元素赋值;
如inti[5]={1,2,3};
●对数组全部元素赋值,但不指定长度;
如inti[]={1,2,3,4};
2、一维数组和二维数组区别如下
●一维数组只有一个下标,二维数组有两个下标;
●二维数组有行与列之分,一维数组则没有;
●赋值时一维数组下标可以略,二维数组可以省略第一个下标,第二个下标不能省略。
int_max(inta[5])//数组作为函数参数
inti;
intmax=a[0];
;
for(i=1;
5;
i++)
if(max<
a[i])
max=a[i];
returnmax;
inta[5]={3,4,6,9,13};
max=%d\n"
_max(a));
}
void_sort(inta[],intn)
inti,j,temp;
n-1;
for(j=0;
j<
n-i-1;
j++)
{
if(a[j]>
a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
intb[]={25,24,12,76,101,96,28};
排序前:
7;
%d"
b[i]);
_sort(b,7);
//数组名作为函数参数
\n排序后:
第6章指针
1、指针
2、字符数
3、&
4、函数指针
5、二级指针
1、√2、√3、×
4、√5、×
1、C2、A3、B4、C5、A
1、在程序运行过程中,数据都是保存在存中的,存是以字节为单位的连续存储空间,每个字节都有一个编号,这个编号称为地址。
变量也是有地址的,专门用于存放其他变量的地址,这种变量称为指针变量,通常简称指针。
通过指针可以操作它指向的存中的变量。
取存的地址或取存中的值进行运算。
如chararr[10],*p;
p=arr;
arr是大小为10的指针数组,p是指向这个数组的指针。
2、数组指针是指向数组的指针,数组中存储的是统一的其他数据类型的变量;
指针指向这一块存的首地址。
可以通过指针的移动来依次访问数组中的元素。
指针数组是指数组中存储的是指针,数组中指针的数据类型必须一致,指针数组的定义方式与普通数组类似,只需在类型前面加上“*”,如int*arr[10];
存储了10个int类型的指针。
voidswap(int*a,int*b)
inttemp;
temp=*a;
*a=*b;
*b=temp;
inta,b;
请输入两个数:
\n"
a,&
swap(&
交换后:
\n%d%d\n"
voidcopystr(char*form1,char*form2)
while(*form1)
*form2=*form1;
form2++;
form1++;
*form2='
\0'
charstr1[20]="
HelloWorld"
charstr2[20]="
IamChinese"
复制前:
\nstr1:
%s\nstr2:
%s\n"
str1,str2);
copystr(str1,str2);
复制后:
第7章字符串
1、strlen()
2、换行
3、b
4、strcmp()
5、字符串
3、√4、√5、×
1、A2、C3、A、C、D4、C、D5、A
1、字符串比同等字符数组多占一个字符的存空间。
2、Puts()函数接收的参数是一个字符串指针,该指针指向要输出的字符串,并且会自动在字符串末尾追加换行符‘\n’,调用成功时返回int类型的数,否则返回EOF。
strcat()函数在使用前,第一个参数对应的字符数组必须要有足够的空间来容纳连接后的字符串,否则会造成缓冲区溢出。
#define_CRT_SECURE_NO_WARNINGS//gets()也要关闭安全检查
string.h>
chars1[100],s2[100];
请输入两个字符串:
gets(s1);
gets(s2);
i=strcmp(s1,s2);
0)
第1个字符串较大\n"
elseif(i<
第2个字符串较大\n"
两个字符串相等\n"
inta,b,c;
chars1[100],s2[100],s3[100];
gets(s3);
a=atoi(s1);
b=atoi(s2);
c=atoi(s3);
s1+s2+s3=%d\n"
a+b+c);
}
第8章预处理
1、#define
2、#include
3、#if/#else/#endif、#ifdef、#ifndef
4、#include<
文件名>
、#include“文件名”
5、880
1、C2、D3、B4、B5、B
1、预处理指令有三种:
宏定义、文件包含、条件编译。
宏定义使用#define来表示,当一些常量在程序中频繁使用,为了避免书写错误,可以使用宏定义来表示。
文件包含是指在C语言程序中经常会使用到一些函数,这些函数需要引用相关的头文件,引用方式为#include<
或者是#include"
stdio.h"
。
条件编译是指C语言程序为了完成某些功能,只有在指定条件下才进行编译。
2、条件编译的格式有三种。
第一种是#if/#else/endif指令,只有符合判断条件才会执行相应的编译。
第二种是#ifdef指令,如果想判断某个宏是否被定义可以使用该指令。
第三种是#ifndef指令,用来判断某个宏是否被定义,如果没有定义那么就会编译#ifndef到#endif中间的容,否则就跳过。
#defineFUNC(x,y)x%y
两个数的余数为:
%d\n"
FUNC(a,b));
#definePI3.1415926
#defineCIR_S(r)PI*r*r
#defineCIR_L(r)2*PI*r
floatr;
请输入圆的半径:
%f"
r);
圆的面积:
CIR_S(r));
圆的周长:
CIR_L(r));
第9章结构体与共用体
四、填空题
1、构造
2、struct
3、union
4、stu.num
5、8
五、判断题
1、√2、√3、√4、×
5、×
六、选择题
1、A2、AC3、C4、B5、D
1、结构体类型的定义方式如下所示:
struct结构体类型名称
数据类型成员名1;
数据类型成员名2;
…
数据类型成员名n;
};
共用体在定义上与结构体类型十分相似,共用体类型的定义方式如下所示:
union共用体类型名称
数据类型成员名1;
数据类型成员名2;
……
2、在程序执行的任何特定时刻,结构体变量中的所有成员是同时驻留在该结构体变量所占用的存空间中,而共用体变量仅有一个成员驻留在共用体变量所占用的存空间中。
#define_CRT_SECURE_NO_WARNINGS
//存储学生信息的结构体
structST
intID;
charname[20];
floatscore[3];
//_avg()求平均成绩的函数
float_avg(structST*s,intn)
inti,j;
intsum=0;
floatavg;
n;
3;
sum+=s[i].score[j];
return(sum/n)/3;
//_get()函数找最高分学生,输出该学生的信息
void_get(structST*s,intn)
intmax=0;
intindex=0;
if((s[i].score[0]+s[i].score[1]+s[i].score[2])>
max)
max=s[i].score[0]+s[i].score[1]+s[i].score[2];
index=i;
\n最高分学生信息:
学号:
(s+index)->
ID);
:
name);
成绩:
%.2f,%.2f,%.2f\n"
s[index].score[0],s[index].score[1],s[index].score[2]);
structSTsts[20];
//输入学生信息
20;
请输入第%d个学生信息:
i+1);
scanf("
%d"
sts[i].ID);
%s"
sts[i].name);
scanf("
sts[i].score[j]);
//输入各科成绩
3门课的总平均成绩为:
_avg(sts,20));
_get(sts,20);
第10章数据结构
1、数据域指针域
2、指针
3、栈顶栈底
4、栈
5、入队出队
1、B2、B3、D4、D5、D
四、简单题
1、链表是一种常用的线性存储结构,它由一系列节点组成,节点可以在运行时动态生成,链表可以充分利用计算机存空间,灵活实现存动态管理。
2、栈是只允许在其一端进行插入和删除操作的线性表,它遵循的是后进先出原则;
而队列是一个线性表,元素是从表的一端进行插入,从表的另一端进行删除,它遵循的是先进先出的原则。
structNode//结点
intdata;
structNode*next;
structLink//链表头
intlength;
structNode*head;
void_init(structLink*L)//初始化
L->
length=0;
head=NULL;
structLink*_create()
intret=1;
structLink*pHead=(structLink*)malloc(sizeof(structLink));
_init(pHead);
//初始化链表
structNode*pNode=NULL,*temp=NULL;
请输入数据,输入0结束\n"
while(ret)
ret);
if(ret)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言开发入门教程 语言 开发 入门教程 习题 答案