C程序设计期末复习
如皋网站建设公司创新互联公司,如皋网站设计制作,有大型网站制作公司丰富经验。已为如皋上1000家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的如皋做网站的公司定做!第一章程第二章算法的五个特性?
1、有穷性:算法的有穷性是指算法必须能在执行有限个步骤之后终止
2、确切性:算法的每一步骤必须有确切的定义;
3、输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
4、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
5、可行性:算法中执行的任何计算步都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成。
1、程序流程图中的带有箭头的线段表示的是( ) 。
A. 图元关系
B. 数据流
C. 控制流
D. 调用关系
答案:C
2、结构化程序设计的基本原则不包括( )。
A. 多态性
B. 自顶向下
C. 模块化
D. 逐步求精
答案: A
基本原则:自顶向下,逐步细化,模块化设计,结构化编码
第三章简单程序设计•书写格式:分号结束、注释
•标识符1)对变量、函数、数组等命名的有效字符
2)命名规则:只能由字母数字下划线组成,且第一个字符必须为字母或下划线
•整型常量:包括十进制整数、八进制整数【以0开头eg0123=十进制83】、十六进制整数【以0x开头的数字0x123=十进制291】 103L, 256U
•实型常量:默认double包括十进制小数形式、指数形式 1.25f 1.25e-2f 1.25L (louble double)
•字符常量 1、普通字符:eg‘a’,‘1’,‘#’(字符常量:只能是一个字符)
2、转义字符:eg’\t’
•字符串常量
•符号常量 #define
•变量:强制类型转换、自动类型转换
•注意数据的溢出问题
•各种运算符:优先级与结合性
•自增自减运算符
•算术运算、关系运算、逻辑运算优先级
•数据类型的自动转化:
1)若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
2)转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。
a.若两种类型的字节数不同,转换成字节数高的类型
b.若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型
3)所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
4)char型和short型参与运算时,必须先转换成int型。
5)在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。
•&& || 短路现象
1、以下合法的字符常量是( )。
A. '\109'
B. '\x64a'
C. '\t'
D. 'ab'
答案: C
2、以下选项中不合法的整型常量是( )。
A. -012
B. 8E2.5
C. 123L
D. 0x35
答案:B
解析:以e或E表示以十为底的指数,特别的e或E前必须有数字,其后必须为整数
3、若已定义x和y为double型,变量,则表达式x=1,y=x+3/2的值是( )
答案: 2.0
4、下面程序的输出结果是( )。
int a;printf("%d\n",(a=3*5,a*4,a+5));
答案:20
解:逗号表达式结果取最后一个表达式
5、已知int x=5,y=5,z=5;则执行语句x%=y+z;后,x的值是
答案:5
解:x=x%(y+z)
6、C语言中,数字029是一个( )。
A. 十进制数
B. 八进制数
C. 十六进制数
D. 不合法
答案:D
解:八进制数,每位上的数只能为0~7
7、代数式2lnxcosx/3x,则正确的C语言表达式是( )。
A. 2*ln(x)*cos(x)/3*x
B. 2*ln(x)*cos(x)/(3*x)
C. 2*log(x)*cos(x)/3*x
D. 2*log(x)*cos(x)/(3*x)
答案:D
8、对于数据类型的自动转换,正确的说法是( )。
A. 字符型与单精度实型进行运算时都转换为双精度实型
B. 字符型与字符型进行转换时不进行转换
C. 整型与字符型进行运算时根据字符的ASCII码值来决定是否进行类型转换
D. 单精度实型之间进行运算时不进行转换。
答案:A
9、下列程序的输出结果是____。
#include
void main()
{int a,b=322;
float x,y=8.88;
char c1='k',c2;
a=y;
x=b;
a=c1;
c2=b;
printf("%d,%f,%d,%c",a,x,a,c2);}
答案:107,322.000000,107,B
10、下列程序的输出结果是____。
#include
void main()
{
int i=8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);
}
答案:9 8 8 9 -8 -9
11、设 int x=1,y=1; 表达式(!x||y--)的值
答案:1
解析:短路
12、以下哪个直接量是十进制的124?
A.0124 B.0x124 C.124d D.0174
答案:D
解:C语言无d这种后缀
13、以下代码的输出是
int x=0,y=0,z=0;
z =(x==1)&&(y=2);printf("%d ", y);
答案:0
14、对于以下代码
int i
scanf("%d",&i);
i %= 4;执行后,i会有几种可能性?
答案:7
解:①能被整除:即余数为 0 时,即 i = 0;
②不能被整除:即余数为位于区间 ( - 4 , 0 ) U ( 0 , 4 ) 的整型数,则 i={ - 3,- 2,- 1,1,2,3 } 。
第四章选择结构程序设计1)If else配对问题
2)switch break
3)循环体内的break、continue
1、
#include
void main(){
int a=1,b=2,c=3;
if(c=a) printf("%d\n",c);
else printf("%d\n",b);}
答案:1
解:注意是赋值还是判断
2、#include
void main()
{char c1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar(); c6=getchar();
putchar(c1); putchar(c2);
printf("%c%c\n",c5,c6);
}
程序运行后,若从键盘输入
(从第一列开始)
123↙
45678↙
则运行结果是
答案:1245
3、下面程序的运行结果是____。
#include
void main( )
{
int a=1,b=2,c=2;
switch(a)
{ case 1:switch(b)
{
case 1: printf ("@" ); break;
case 2: printf("!" ); break;
}
case 0: switch(c)
{
case 0: printf("*"); break;
case 1: printf("#"); break;
case 2: printf("$"); break;
}
default : printf(" &");
}
printf(" \n ");
}
答案:!$&
4、对于以下代码int i=6if(i<= 6 )
printf("hello\n");;
else
printf("bye-bye\n");哪句话是对的?
A.打印出"hello bye-bye
B.打印出"bye-bye'
C.不能通过编译
D.打印出"hello"
else未能找到配对的if
第五章循环求素数、穷举法、取各位数字、数学公式
1、设有int i=0;对以下语句描述正确的是______。
while( i =1 )
{ …… }
A. 循环条件表达式的值为0
B. 循环条件表达式的值为1
C. 循环条件表达式不合法
D. 以上说法都不对
答案: B
2、以下程序的运行结果是______。
#include
void main( )
{int x=20;
do
{printf("%d\n", x--);
} while(!x) ;
}
A. 20
B. 19
C. 不打印任何内容
D. 陷入死循环
答案: A
解:!表示取反
3、当从键盘上输入question? 下面程序的运行结果是____。
#include
void main( )
{while( putchar(getchar( )) != '? ') ;
}
答案:question?
解:先输出后判断
4、在代码while (!e )中,!e等价于
答案:e == 0
第六章数组•越界问题
•初始化
•字符串的操作:比较、赋值、求长度、连接、结束标记
•求大值、最小值及其位置。
•折半查找
•冒泡排序
•插入有序数组
•二维数组、转置
第七章函数1、)以下叙述中不正确的是()。
A.一个函数中可以有多个return语句
B.函数通过return语句传回函数值
C.主函数可以有形参
D.调用函数须独立语句完成
答案: D
解析: 选项A是正确的,函数中可以有多条return 语句,例如在分支结构中,可以从不同的分支返回到主调函数.
选项D是错误的,C语言中,调用函数方式3种:一是函数调用作为一条独立的语句,二是函数作为表达式的一项,出现在表达式中,以函数返回值参与表达式的运算。三是函数作为另一个函数调用的实际参数出现。故答案选D。
2、以下叙述中不正确的是( ).
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
我的答案: C正确答案: D
答案解析:在一个函数或复合语句定义的变量,称为局部变量。局部变量仅在定义它的函数或复合语句内有效。函数的形参也是局部变量。
不同函数或者并列复合语句各自定义的同名变量互不干扰。故答案选D。
第八章指针•简单指针
•数组与指针
•字符串与指针 结束标记
•二维数组与指针
1、假如有语句char * s1 = “abc”; char s2[] = “xyz”; 下列_____
语句是错误的。
A *s1++; B *s2++; C *(s1 + 1); D *(s2 + 1);
答案:B
2、分析下面程序的运行结果
int a[3] [3]={10,9,8,7,6,5,4,3,2};
int *pa[3]={a[0],a[1],a[2]};
int *p=a[0];
main ( ) {
int i;
for (i = 0 ; i<3 ; i++)
printf("%d\t%d\t%d\n", *a[i], *(*(pa+i)) , p [i]) ;
}
10 10 10
7 7 9
4 4 8
第九章结构体定义方法
结构体与指针
例:
设有如下定义:struct jan{int a;float b;}c2,*p;若有p=&c2;则对c2中的成员a的正确引用是
A、(*p) c2 a B、(*p).a C、p->c2.a D、p.c2.a
答案:B
解:三种方式
c2.a
(*p).a
p->a
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧