c语言期中复习
C语言期中试卷(含答案)
《 C语言》课程期中考试试卷一. 在A B C D四个选项中,选择一个正确的答案填入括号内( )1、用char定义的变量在IBM PC机中能表示的数的范围是:A) 0 ~+255 B) 0 ~+65535C) -128 ~+127 D) 只能存字符,不能存数( )2、设有int k=2; 则执行printf(“%d”,k++);的输出为:A) 0 B) 1 C) 2 D) 3()3、在while(!x)中,!x与______等价。
A) x==0 B) x!=0 C) x==1 D) x!=1()4、设有声明int value=‟5‟;,则执行下列选项的赋值语句后,value的值不等于5的是_____。
A.) value=value - ‟0‟; B) value=value - 0x30;C) value=value - 49; D) value=value - ‟\060‟;()5、如int k=7;float x=2.5,y=4.7; 则表达式 x+k%3*(int)(x+y)%2/4 运算后的值是:A) 0 B) 2 C) 2.5 D) 2.75( ) 6、若有int a,b;则语句:printf("%d",(a=2)&&(b=-2);的输出结果是:A)无输出 B)结果不确定 C)-1 D)1( ) 7、设有int a=2; 则执行printf("%d",5>a>1);的输出为:A)0 B)1 C)2 D)3( ) 8、执行语句c=(a=2,a+1,b=a++);后, a,b,c的值依次为:A)2,3,4 B)3,3,3 C)4,5,4 D)3,2,2( )9、以下程序的输出结果是A)2 0 B)3 1 C)3 2 1 D)2 1 0main( ){ int n=4;while(n--)printf("%d ",--n);}( )10、给出以下定义:char x[ ]="abcdef";char y[ ]={'a','b','c','d','e','f'};则正确的叙述为A) 数组x和数组y等价 B) 数组x和数组y的长度相同C) 数组x的长度大于数组y的长度 D) 数组x的长度小于数组y的长度( )11、若对一个函数调用在前, 定义在后,C语言将视其返回值为__________类型。
C语言期中试卷
C语言期中试卷《C语言程序设计》期中考试卷一、选择题1.下面程序段的运行结果是。
for(x=3; x<6; x++) printf((x%2)? (“**%d”): (“##%d\n”), x); A.**3##4**5 B.##3**4##5C.##3**4##5D.**3##4**52.下面程序的运行结果是。
#includeint main(){int i;for(i=1; i<=5; i++)switch(i%5){case 0: printf("*");break;case 1: printf("#");break;default: printf("\n");case 2: printf("&");} return 0;}A.#&&&*B.#&& &* C.#&&&*D.#&*3.下面程序的功能是求算式xyz+yzz=532中的x,y,z的值(其中xyz和yzz分别表示一个三位数),请选择填空。
#include int main( ){ int x,y,z,I,result=532;for(x=1;x<10;x++)for(y=1;y<10;y++)for( ; z<10; z++){ i=100*x+10*y+z+100*y+10*z+z;if ( )printf(“x=%d,y=%d,z=%d\n”,x,y,z);}return 0;}A1.z=x B1.z=1 C1.z=0 D1.z=yA2.i/result==1 B2.i=result C2.i!=result D2.i==result4.以下正确的描述是。
A.continue语句的作用是结束整个循环的执行B.只能在循环体和switch语句体使用break语句C.在循坏体使用break语句或continue语句的作用相同D.从多层循环嵌套中退出,只能使用goto语句5.在下面的程序中,。
C语言期中试卷(含答案)
《 C语言》课程期中考试试卷一. 在A B C D四个选项中,选择一个正确的答案填入括号内( )1、用char定义的变量在IBM PC机中能表示的数的范围是:A) 0 ~+255 B) 0 ~+65535C) -128 ~+127 D) 只能存字符,不能存数( )2、设有int k=2; 则执行printf(“%d”,k++);的输出为:A) 0 B) 1 C) 2 D) 3()3、在while(!x)中,!x与______等价。
A) x==0 B) x!=0 C) x==1 D) x!=1()4、设有声明int value=‟5‟;,则执行下列选项的赋值语句后,value的值不等于5的是_____。
A.) value=value - ‟0‟; B) value=value - 0x30;C) value=value - 49; D) value=value - ‟\060‟;()5、如int k=7;float x=2.5,y=4.7; 则表达式 x+k%3*(int)(x+y)%2/4 运算后的值是:A) 0 B) 2 C) 2.5 D) 2.75( ) 6、若有int a,b;则语句:printf("%d",(a=2)&&(b=-2);的输出结果是:A)无输出 B)结果不确定 C)-1 D)1( ) 7、设有int a=2; 则执行printf("%d",5>a>1);的输出为:A)0 B)1 C)2 D)3( ) 8、执行语句c=(a=2,a+1,b=a++);后, a,b,c的值依次为:A)2,3,4 B)3,3,3 C)4,5,4 D)3,2,2( )9、以下程序的输出结果是A)2 0 B)3 1 C)3 2 1 D)2 1 0main( ){ int n=4;while(n--)printf("%d ",--n);}( )10、给出以下定义:char x[ ]="abcdef";char y[ ]={'a','b','c','d','e','f'};则正确的叙述为A) 数组x和数组y等价 B) 数组x和数组y的长度相同C) 数组x的长度大于数组y的长度 D) 数组x的长度小于数组y的长度( )11、若对一个函数调用在前, 定义在后,C语言将视其返回值为__________类型。
C语言程序设计期中复习.ppt
北京理工大学 李书涛
§1
基本数据类型
C语言的基本数据类型
整型 int 基本类型 字符型 char 单精度 float 实型
基本 常量 类型 变量
双精度 double
按照数据在程序中的取值分为两类: 值保持不变-----常量
x=2 + y
值随程序运行变化-----变量
2019/3/29 5
printf(“%c,%c,%c\n”,a,b,c); 输出: A,a,0 printf(“%c,%c,%c\n”,x,y,z); 输出: A,a,0
2019/3/29 22
北京理工大学 李书涛
一个字符变量只 1. 定义形式: char 变量表 能包含一个字符 2. 占存储空间 一个字节
3. 输入输出形式 %c 4. 字符型数据在内存中以相应的ASCII值存储
数组类型
char
实型(浮点型)
单精度实型 float 双精度实型 double
数据类型
构造类型 指针类型
结构类型
struct
联合类型
枚举类型
union
enum
空类型(无值类型)
2019/3/29 3
void
李书涛
北京理工大学
§1
基本数据类型
数据类型的含义
1. 不同类型数据采取不同的存储形式; 2. 不同类型数据在内存中占有不同的 存储空间; 3. 不同类型数据对应不同的取值范围; 4.不同类型数据确定了允许对其进行不 同的操作类型。
三、字符串常量
“china”
字符串结 束标记 2. n个字符组成的字符串常量,在 内存中占空间为 n+1 个字节。
1. 双引号内的一串字符
C语言知识点复习梳理
C语言知识点复习梳理C语言是一种通用的高级编程语言,它是许多编程新手的第一门语言。
复习C语言的知识点可以帮助我们巩固基础,为更深入的学习和应用打下坚实的基础。
接下来,我将对C语言的一些重要知识点进行梳理和复习。
1.语法结构:C语言的语法结构主要包括变量、数据类型、运算符、控制语句和函数等。
变量表示存储数据的容器,数据类型指定了变量可以存储的数据的类型。
运算符用于进行各种运算操作。
控制语句用于控制程序的执行流程。
函数是程序的基本单元,用于封装可重复使用的代码块。
2.基本数据类型:C语言提供了一些基本数据类型,包括整型、浮点型、字符型和指针类型等。
整型包括short、int、long和long long等;浮点型包括float和double等;字符型包括char类型;指针类型用于表示内存地址。
3.常量和变量:常量是程序中固定不变的值,可以使用const关键字进行定义;变量是可以改变的值,使用变量可以用于存储和操作数据。
4.运算符:C语言提供了一系列的运算符,包括算术运算符、关系运算符、逻辑运算符、赋值运算符和位运算符等。
运算符用于对数据进行各种运算操作。
5.控制语句:C语言提供了三种基本的控制语句:顺序结构、分支结构和循环结构。
顺序结构按照代码的先后顺序执行;分支结构使用if语句和switch语句根据条件进行不同的执行分支;循环结构使用for循环、while循环和do-while循环等进行重复执行。
6.数组和字符串:数组是一种用于存储多个相同类型数据的容器,可以通过索引访问数组中的元素。
字符串是字符数组的特例,用于存储和操作文本数据。
7.函数:函数是C语言中的基本代码块,用于封装可重复使用的代码。
函数可以接受参数并返回值,我们可以根据需要调用不同的函数来完成特定的任务。
8.结构体和联合体:结构体是一种可以包含多个不同类型成员的数据类型,用于组织和管理相关数据;联合体是一种可以持有不同类型数据的数据类型。
C语言总复习
C语言总复习C语言是一种广泛应用于计算机编程的高级编程语言。
作为一名程序员,熟练掌握C语言的基础知识对于开发高质量的软件至关重要。
本文将对C语言的基础知识进行全面复习,包括数据类型、控制语句、函数、指针等内容。
一、数据类型C语言提供了丰富的数据类型,包括基本数据类型和派生数据类型。
基本数据类型包括整型、浮点型、字符型和布尔型,分别用于表示整数、小数、单个字符和真假值。
派生数据类型包括数组、结构体和联合体,用于组织和表示复杂的数据结构。
1. 整型数据类型C语言提供了不同字节长度的整型数据类型,如char、short、int和long。
这些类型可以表示不同范围的整数值,具体使用时需要根据需求选择适当的类型。
2. 浮点型数据类型浮点型数据类型用于表示带有小数部分的数值,包括float和double。
float可以表示较小范围的浮点数,而double则可以表示更大范围的浮点数,并提供更高的精度。
3. 字符型数据类型字符型数据类型用于表示单个字符,使用char关键字。
每个字符在内存中占用一个字节的空间,可以存储ASCII码或Unicode码中的字符。
4. 布尔型数据类型C语言提供了stdbool.h头文件中定义的bool类型,用于表示真假值。
bool类型只有两个取值:true和false,分别用1和0表示。
二、控制语句控制语句用于控制程序的流程和执行次数。
C语言提供了条件语句和循环语句来实现不同的控制需求。
1. 条件语句条件语句用于根据条件判断来执行不同的代码块。
常用的条件语句有if语句、if-else语句和switch语句。
if语句根据条件的真假执行对应的代码块,if-else语句在条件为真时执行if块,否则执行else块,switch语句根据表达式的值执行对应的case块。
2. 循环语句循环语句用于重复执行相同或类似的代码块。
C语言提供了while循环、do-while循环和for循环三种形式。
while循环在满足条件时执行代码块,do-while循环先执行一次再判断条件,for循环在指定的条件范围内循环执行代码块。
大一计算机专业C语言期中测试试题
《程序设计基础》期中考试试卷班级姓名学号一、填空题(每题1分,共5分)1.上机运行C程序大致分四个步骤,分别是编辑、编译、和运行。
2.结构化程序设计方法的基本思想是自顶向下,逐步细化,和结构化编码。
3.C语言的控制结构有:顺序结构、和循环结构。
4.算法特点包括确定性、可行性、输入、输出和5. 77的2字节补码是,-77的2字节补码表示为(用十六进制表示)二、选择题(每题1分,共15分)1.判断下面标识符中哪个是C语言中合法的用户定义标识符()A. 2a1bB. a%bdC. _123D. char2.设有以下定义int a=0; double b=1.25; char c=‟A‟; #define M 2则下面语句中错误的是( )A. a--;B. b--;C. c--;D. M--;3.有两条语句:static char x[]=”abcde”;static char y[]={…a‟,‟b‟,‟c‟,‟d‟,‟e‟};则下列说法中正确的是( )A. 数组x和数组y长度相同B.数组x长度大于数组y长度C. 数组x长度小于数组y长度D. 以上三种说法均错误;4.设整型变量a=13,则经运算a+= a/=a%=5后,a的值为()A. 17.333B. 17C. 0D. 25. 已知:int n,i=1,j=2;执行语句n=i<j?i++:++j;后,i和j的值是( ).A. 1,2B. 1,3C. 2,2D. 2,36.有函数定义如下:当自变量x<0时y=-1;当x=0时y=0;当x>0时y=1;以下程序片段能实现该函数功能的是( ):A. if(x>=0)B. y=-1;C. if(x>=0)D. y=0;if(x>0) y=1; if(x!=0) if(x>0) y=1; if(x>=0) else y=-1; if(x>0) y=1 ; else y=0; if(x>0) y=1;else y= 0; else y=0; else y= -1; else y=-1;7.当a=2,b=1,c=3,d=4,m和n值为1时,(m=a>b)||(n=c>d)的值是( )A. TRUEB. FALSEC. 1D.08.在C语言程序中,以下说法正确的是( )A. main函数内部可嵌套定义子函数B. main函数必须出现在所有函数之前C. main函数必须出现在所有函数之后D. main函数是程序执行的入口9.关于局部变量和全局变量说法正确的是():A. 在main函数中定义的变量都为全局变量B. 当全局变量与局部变量同名时,全局变量起作用C. 当全局变量与局部变量同名时,局部变量起作用D. 以上说法都不正确10.下列关于switch和break语句的讨论中,只有()是正确的。
C语言考试复习要点
C语言考试复习要点第一篇:C语言考试复习要点C语言考试复习要点:一.题型:1.选择题——最基本的知识点,概念——共20分2.程序运行结果分析——10道程序题——共30分(来源于课本例题和作业,复习的重点是多看课本程序和作业程序)3.程序填空题——一个完整的程序挖掉一些空格——共四个程序,10个空格——共30分4.编程题——有两道——一道课后作业,比较容易,8分——另外一道比较难,12分——共20分二.了。
2.第五章到第八章的内容是核心内容,要重点复习,题型覆盖所有题目。
3.第九章主要复习宏定义和宏替换。
4.第十章考的不多,集中在10.2和10.3两节。
复习策略:1.第一章到第四章的内容比较少,基本是考概念一些小题,以选择题为主,浏览一下就行第二篇:小班下学期语言复习要点小班下学期语言复习要点《妈妈》儿歌P5妈妈下雨了,别让小松鼠淋着,松鼠妈妈用她的大尾巴,给小松鼠撑着伞。
老鹰来了,别让小鸡给老鹰抓走,母鸡妈妈用她的翅膀,把小鸡紧紧地护住。
天黑了,别让宝宝害怕,妈妈用她好听发的声音,给宝宝哼着摇篮曲。
《拔萝卜》P24重点:能重复里边的对白。
“哎呦,哎呦”拔呀拔,还是拔不动。
“小姑娘,小姑娘。
快来帮忙拔萝卜!”《熊猫的客人》P52重点:知道小兔有礼貌。
小熊没有礼貌。
《小猴请客》P55重点:模拟对话,如何招待客人!《迎春花》重点:知道春天的花——迎春花迎春花,开黄花,朵朵张开小嘴巴;它是公园小号手,迎着春天吹喇叭:滴滴答,滴滴答,它把春天迎来啦!《花路》P83重点:理解故事内容以及里边的(问话)。
《毛毛虫》P90重点:学习量词:个、根、颗、块、片:学说词语:我吃了······《坐火车》P96重点:看幼儿画册复习词语:绿油油、金黄色、钻、瞧。
《春风》P100重点:春风(儿歌)春风吹,芽儿发,吹绿了柳树,吹红了桃花,吹来了蝴蝶,吹醒了青蛙,吹得小雨轻轻地下,我们一起去种花。
C语言全部知识点复习资料
C语言全部知识点复习资料C语言知识点复资料在复C语言知识点时,需要掌握以下内容:1.程序中基本的控制结构包括三种:顺序结构、选择结构(分支结构)和循环结构。
2.读程序时应从main()入口开始,按顺序往下读,遇到循环就处理循环,遇到选择就处理选择。
每个C语言程序中只有一个main函数。
3.计算机中的数据以二进制形式保存,其存放位置即为其地址。
bit指的是0或1,而byte指的是8个bit。
4.编译预处理不是C语言的一部分,不占用运行时间,不要在#define语句中加入分号,否则会出现错误。
5.每个C语言程序中只有一个main函数,它是程序运行的起点。
6.C语言程序的源代码扩展名为.c,必须经过编辑、编译、链接和运行四个步骤才能得到运行结果。
注意。
c和.obj文件无法直接运行,必须先编译链接生成.exe文件才能运行。
7.C语言书写格式是自由的,每行可以写多个语句,一条语句也可以写在多行。
8.标识符是由字母、数字和下划线组成的,第一个字符必须是字母或下划线。
标识符分为关键字、预定义标识符和用户标识符。
关键字不能作为用户标识符,而预定义标识符可以作为用户标识符,但一般不建议这样做。
9.C语言中只有八进制、十进制和十六进制整数,没有二进制整数。
在运行时,所有进制都要转换成二进制来进行处理。
八进制数必须以0开头,而十六进制数必须以0x开头。
10.实型常量可以写成小数的形式,如果小数点两边有一个是零,则可以省略。
自增、自减表达式:自加、自减表达式的值取决于它们在变量名前面还是后面。
例如,如果a=5,则++a的值为6,而a++的值为5.记忆口诀是“++在前先加后用,++在后先用后加”。
逗号表达式:逗号表达式的优先级最低,其数值为逗号后面的表达式的值。
例如,(2,3,4)的值为4.在赋值表达式中,z=(2,3,4)时,z的值为4;而在逗号表达式中,z=2,3,4时,z的值为2.关系表达式:关系表达式的值只能为1(真)或0(假)。
C语言期中试卷
期中复习题3一、选择题(30题)1.以下关于预处理命令的叙述中错误的是____(21)____。
A. 预处理命令由预处理程序解释B. 程序中的预处理命令是以#开始的C. 若在程序的一行中出现多条预处理命令,这些命令都是有效的D. 预处理命令既可以出现在函数定义的外部,也可以出现在函数体内部2.已有声明“int x,a=3,b=2;”,则执行赋值语句“x=a>b++?a++:b++;”后,变量x、a、b的值分别为___(26)___。
A. 3 4 3B. 3 3 4C. 3 3 3D. 4 3 43.下列选项中可用作变量名的是_____(27)_____A. CaseB. a-bC. $cdD. 2ab4.执行以下程序后的结果是_____(28)_____。
#include<stdio.h>void main(){ int x=3;do{printf(“%d\t”,x=x-3);}while(!x);}A. 输出一个数:0B. 输出一个数:3C. 输出2个数:0和-3D. 无限循环,反复输出数5.以下关于c语言函数的叙述中,正确的是_____(29)_____。
A. 在一个函数体中可以定义另一个函数,也可以调用其他函数B. 在一个函数体中可以调用另一个函数,但不能定义其他函数C. 在一个函数体中不可以调用另一个函数,也不能定义其他函数D. 在一个函数体中可以定义另一个函数,但不能调用其他函数6.设有声明“int a=4,b=3,c=5;”,以下4个程序段中有3个程序段的执行效果是相同的,另一个执行效果不同的是_____(30)_____。
A. if(a>b)c=a,a=b,b=c;B. if(a>b)c=a;a=b;b=c;C. if(a>b){c=a,a=b,b=c;}D. if(a>b){c=a;a=b;b=c;}7. 某程序需要使用一个代表常数3.14的符号常量P,以下定义中正确的是(21)A.#define P 3.14 ;B. #define P(3.14)C.#define P=3.14 ; D. #define P 3.148. 下列四个选项中,属于C语言关键字的是(22)A. FloatB. singleC. doubleD. real9. 已知某编译系统中signed int 类型数据的长度是16位,该类型数据的最大值是(23)A. 32767B. 32768C. 127D. 6553510. 以下关于if语句和switch语句的叙述中错误的是(24)A. if语句和switch语句都可以实现算法的选择结构B. if语句和switch语句都能实现多路(两路以上)选择C. if语句可以嵌套使用D. switch语句不可以嵌套使用11.以下选项中不符合C语言标识符命名规则的是 ___22___ 。
C语言期中复习
• char chx; int m; • chx=‘A’; m=12*3; • scanf(“%d”,&m); /* 变量的定义 */ /* 赋值语句 */ /* 键盘输入语句 */
① ②
•
– 在程序运行时,将数据存入制定内存空间。
③
– 变量初始化:定义变量时同时确定变量初值。 变量初始化:
– 循环结构
• for(){…..;} • while(){……;} • do{ ……;} while();
选择结构
• 单分支结构 if(a==b) printf(“yes”); • 双分支结构 if(a==b) printf(“yes”); else printf(“no”); • 多分支结构 switch_case
C语言概述 语言概述
1.C程序由一个或多个函数构成,有且只有一个主函数 程序由一个或多个函数构成, 程序由一个或多个函数构成 main()函数。 ()函数。 ()函数 2.主函数的位置是任意的,程序的执行总是从主函数 主函数的位置是任意的, 主函数的位置是任意的 开始,并在主函数结束。 开始,并在主函数结束。 3.C程序一般用小写字母书写,只有符号常量或其他特 程序一般用小写字母书写, 程序一般用小写字母书写 殊符号才使用大写字母。 殊符号才使用大写字母。 4.注释的两种方法: 注释的两种方法: 注释的两种方法 多行注释) “ /* ……. */”(多行注释 和 “//”(单行注释) 多行注释 (单行注释)
一、C语言的数据表示 语言的数据表示
• 1. 1 常量和变量 常量和 • 1. 2 表达式 • 1. 3 数据类型
– 简单类型、结构类型、指针类型
• 1.4
输入、 输入、输出
C语言期中机考试卷及答案
C语言期中测试(解压缩后运行examstar.exe,密码426008)一、单项选择题(30分,每题3分)每小题的四个选项中只有一个符合题目要求,请将正确选项前字母填在括号中。
1.一个C语言程序执行时总是从【______】开始。
DA. 主程序B. 子程序C. 函数D. 主函数2.下列标识符中,_______是关键字。
CA)Int B)INTC)int D)printf3.下列用户自定义标识符中,_______是正确的。
BA)long B)LongC)data.1 D)while4.以下能正确定义整型变量a、b、c的是_______。
BA)a,b,c; B)int a, b, c;C)float a, b, c; D)int a; b; c;5.下面正确的输入语句是______。
BA)scanf("a=b=%d",&a,&d); B)scanf("%d,%f",&a,&b);C)scanf("%a", a); D)scanf("%f", f);6.下面程序的输出结果是【______】。
B#include "stdio.h"void main(void){int i,sum1=0,sum2=0;for(i=1;i<10; i++)if( i%2==0 ) sum1+=i;else sum2+=i;printf("%d%d\n",sum1,sum2);}A. 5050B. 2025C. 20D. 257.下面程序的输出结果是【______】。
CA. YesB. NoC. NoYesD. YesNo #include "stdio.h"void main(void){char str[]="stdiopidts";int i, n=0;while(str[n])n++;for(i=0;i<n/2;i++)if(str[i]!=str[n-1-i]){printf("No");break;}printf("Yes");}8.完善程序求输入的十个整数中正数的个数及其和、平均值:【______】。
C语言期中考试题目及答案
一、选择题:【1】在 C 语言中,用户能使用的正确标识符是。
A) 5f B) _for C) struct D) _f.5答案: B分析:标识符只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线;大小写敏感;不能使用关键字;最长 32 个字符。
【2】以下那个是正确的 C 语言常量。
A) 0678 B) '\0101' C) 1.2E3.5 D) 123L答案: D【3】以下对 C 语言源程序有关常识正确的描述是。
A) main 函数必须位于文件的开头B) 每个语句必须单独一行C) 标识符中大小写字母没有区别D) 宏定义#define 部分不一定要放在程序的最开头位置答案: D【4】以下 for 循环的执行次数是。
for(x=0,y=0;(y=123)&&(x<4);x++)A)是无限循环 B)循环次数不定 C) 执行 4 次 D)执行 3 次答案: C分析:若要判断(y=123)&&(x<4)假,因为 y=123 永远为真,所以只需要判断 x<4 为假即可。
【5】对 for(表达式 1;;表达式 3)可理解为。
A) for(表达式 1;0;表达式 3)B) for(表达式 1;1;表达式 3)C) for(表达式 1; 表达式 1;表达式 3)D) for(表达式 1; 表达式 3;表达式 3)答案: B【6】设有程序段int k=10;while(k=0) k=k-1;则下面描述中正确的是。
A) while 循环执行 10 次 B)循环是无限循环C)循环体语句一次也不执行 D)循环体语句执行一次答案: C分析:因为 k=0 为假,所以程序不执行其后的语句。
【7】C 语言中 while 和 do-while 循环的主要区别是。
A) do-while 的循环体至少无条件执行一次B) while 的循环控制条件比 do-while 的循环控制条件严格C) do-while 允许从外部转到循环体内D) do-while 的循环体不能是复合语句答案: A【8】设有: int a=1,b=2,c=3,d=4,m=2,n=2; 执行(m=a>b)&&(n=c>d) 后 n 的值为。
C语言程序设计期中知识点串讲
期中串讲考试范围指针之前的内容都在考试范围内,包括但不限于:转义字符、输⼊输出、数学计算、循环、分⽀、数据范围、位运算、⼀维数组、多维数组(主要是⼆维)、函数、递归、字符串等等总体提纲演示字符画知识点讲解典型例题板⼦如何debug彩蛋1 演示字符画⾏转义,转义字符,百分号,多次替换/* printing long strings */#include <stdio.h>int main(void){printf("Here's one way to print a ");printf("long string.\n");printf("Here's another way to print a \long string.\n");printf("Here's the newest way to print a ""long string.\n"); /* ANSI C */return0;}热身赛- B佛像C1-A北航欢迎你E5-A有些奇怪的字符画不要再错了2 知识点讲解2 知识点讲解输⼊格式化输⼊输出#include <stdio.h>#include <math.h>#include <stdlib.h>int main(void){int a=1;char b='A';double pi=acos(-1);long long c=0x7fffffff;c++;unsigned int d=2147483748;unsigned long long big_num=(1u ll<<35);//scanf("%lf",&pi);printf("%d\n",a);printf("%c\n",b);printf("%f\n",pi);printf("%lld\n",c);printf("%u\n",d);printf("%llu\n",big_num);//整型格式化putchar('\n');printf("%5d\n",a);//输出占5位,不⾜位补空格,默认居右printf("%-5d\n",a);//输出占5位,不⾜位补空格,居左printf("%05d\n",a);//输出占5位,不⾜位补0printf("%+d\n",a);//输出符号位printf("%+d\n",-a);//输出符号位//浮点型//printf("%m.nf\n",pi);printf("%10f\n",pi);printf("%.3f\n",pi);printf("%10.3f\n",pi);printf("%.0f\n",pi);//四舍五⼊保留整数//m的格式控制同整型printf("%010.3f\n",pi);printf("%+f\n",pi);return0;}// floats.c -- some floating-point combinations// 有兴趣⾃⼰运⾏#include <stdio.h>int main(void){const double RENT=3852.99; // const-style constantprintf("*%f*\n", RENT);printf("*%e*\n", RENT);printf("*%4.2f*\n", RENT);printf("*%3.1f*\n", RENT);printf("*%10.3f*\n", RENT);printf("*%10.3E*\n", RENT);printf("*%+4.2f*\n", RENT);printf("*%010.2f*\n", RENT);return0;}固定格式输⼊(1+1i)+(3+2i)(3+2i)+(3-2i)while(scanf("(%lf%lfi)%c(%lf%lfi)",&a,&b,&sym,&c,&d)!=EOF) {char ctemp=getchar();while(ctemp!='\n'&&ctemp!=EOF){ctemp=getchar();//code}I-⽇期指示器混合格式输⼊%c 读取⼀个字符,包括空⽩符%d,%s 略过空⽩符,读取整数/字符串#include <stdio.h>int a,sum;int main(void){printf("input some numbers(q to qiut):\n");while(scanf("%d",&a)!=0){sum+=a;}printf("sum=%d\n",sum);return0;}当整型和字符串混合输⼊时82Rupert Litteer434.52Otha Daughtertydouble a;char laji[5];scanf("%lf", &a);gets(laji);// Use gets normally多组数据输⼊不定组数据输⼊,以EOF结尾E-⼆进制逆序#include <stdio.h>unsigned int n,a;int main(void){while(scanf("%u",&n)!=EOF){//code}return0;}固定组输⼊F-ZJD学组合数#include <stdio.h>typedef unsigned long long ull;ull arr[120][120];int a,n,m;int main(void){scanf("%d",&a);while(a--){scanf("%d%d",&n,&m);//code}//orfor(int i=0;i<a;i++){scanf("%d%d",&n,&m);//code}return0;}字符串的不定组输⼊G-PHP是最好的语⾔#include <stdio.h>#include <string.h>char lang[25][25];int main(void){char s[25];while(scanf("%s",s)!=EOF){//code}//orwhile(gets(s)!=NULL){//code}//注意区别return0;}特殊形式H-⼩兔⼦乖乖拔萝⼘#include <stdio.h>int n,k;int main(void){while(~scanf("%d",&n)){while(n--){scanf("%d",&k);//code}//code}}<math.h>//⼀些常⽤的函数double acos(double x)//计算pidouble cos(double x)double exp(double x)double log(double x)//lnxdouble log10(double x)double pow(double x, double y)//x^ydouble sqrt(double x)double ceil(double x)double floor(double x)double round (double a)double fabs(double x)循环与分⽀作⽤范围while,for,if,else if,else等如果后⾯不加⼤括号的话,只有其后的⼀条语句属于其作⽤范围#include <stdio.h>int a,sum;int main(void){printf("input some numbers(q to qiut):\n");while(scanf("%d",&a)!=0);//注意这个分号{sum+=a;}printf("sum=%d\n",sum);return0;}注意:循环时注意变量是否需要重新赋值灵活的for循环for(expression1;expression2;expression3){//code}下⾯给出⼀系列例⼦,请理解⼀下for循环的灵活性/* for_13s.c */#include <stdio.h>int main(void){int n; // count by 13s from 2for (n=2; n<60; n=n+13)printf("%d \n", n);return0;}int main(void){char ch;for (ch='a'; ch<='z'; ch++)printf("The ASCII value for %c is %d.\n", ch, ch);return0;}/* for_cube.c -- using a for loop to make a table of cubes */ #include <stdio.h>int main(void){int num;printf(" n n cubed\n");for (num=1; num<=6; num++)printf("%5d %5d\n", num, num*num*num);return0;}/* for_down.c */#include <stdio.h>int main(void){int secs;for (secs=5; secs>0; secs--)printf("%d seconds!\n", secs);printf("We have ignition!\n");return0;}int main(void){double debt;for (debt=100.0; debt<150.0; debt=debt* 1.1) printf("Your debt is now $%.2f.\n", debt);return0;}/* for_none.c */#include <stdio.h>int main(void){int ans, n;ans=2;for (n=3; ans<=25; )ans=ans*n;printf("n = %d; ans = %d.\n", n, ans);return0;}/* for_show.c */#include <stdio.h>int main(void){int num=0;for (printf("Keep entering numbers!\n"); num!=6; ) scanf("%d", &num);printf("That's the one I want!\n");return0;}int main(void){int x;int y=55;for (x=1; y<=75; y= (++x*5) +50)printf("%10d %10d\n", x, y);return0;}/* zeno.c -- series sum */#include <stdio.h>int main(void){int t_ct; // term countdouble time, power_of_2;int limit;printf("Enter the number of terms you want: ");scanf("%d", &limit);for (time=0, power_of_2=1, t_ct=1; t_ct<=limit;t_ct++, power_of_2*= 2.0){time+= 1.0/power_of_2;printf("time = %f when terms = %d.\n", time, t_ct); }return0;}分⽀的逻辑#include <stdio.h>int main(void){int number=15;if(number>6)if(number<12)printf("You're closed!\n");elseprintf("Sorry, you lose a turn!\n");return0;}//荷荷学妹赚基⾦#include <stdio.h>int n;double money, tax;int main(void){scanf("%d", &n);while (n--){scanf("%lf", &money);if (money<=800)tax=money;else if (money<=1500)tax=800+ (money-800) *0.8;elsetax=800+700*0.8+ (money-1500) *0.75;printf("%.2f\n", tax);}return0;}数据范围int的范围是~,⼩于的整数可以声明为int型long long的范围是~,⼩于的整数可以声明为long long型溢出如何溢出?/* toobig.c-exceeds maximum int size on our system */ #include <stdio.h>int main(void){int i=2147483647;unsigned int j=4294967295;printf("%d %d %d\n", i, i+1, i+2);printf("%u %u %u\n", j, j+1, j+2);return0;}何为真值#include <stdio.h>int main(void){int n=3;while (n)printf("%2d is true\n", n--);printf("%2d is false\n", n);n=-3;while (n)printf("%2d is true\n", n++);printf("%2d is false\n", n);return0;}/* true and false values in C */#include <stdio.h>int main(void){int true_val, false_val;true_val= (10>2); // value of a true relationshipfalse_val= (10==2); // value of a false relationshipprintf("true = %d; false = %d \n", true_val, false_val);return0;}位运算如何理解位运算,与⼗进制运算相⽐较,计算器演示基本运算:&,|,~,>>,<<常⽤数值/* toobig.c-exceeds maximum int size on our system */#include <stdio.h>int main(void){unsigned int a=0xff000000; //11111111 00000000 00000000 00000000 unsigned int b=0x00ff0000; //00000000 11111111 00000000 00000000 unsigned int c=0x0000ff00; //00000000 00000000 11111111 00000000 unsigned int d=0x000000ff; //00000000 00000000 00000000 11111111 int n=13;unsigned int e= (1<<n) -1; //00000000 00000000 00011111 11111111return0;}常⽤⽅法利⽤基本运算例题:真位运算,字节清零,YesOK!练习:⼆进制逆序浮点数精度浮点数精度考虑如下代码#include <stdio.h>#include <math.h>#include <stdlib.h>int main(void){//浮点数精度举例double a=0.00026;double b=a*100000;int c=(int)b;printf("%d\n",c);printf("%.0f\n",b);printf("%.15f\n",b);return0;}//仅做示例,不同编译器上可能输出不同判断两个浮点数是否相等、浮点数转为整数时需特别注意⼀维数组数组越界#include <stdio.h>#include <math.h>#include <stdlib.h>int main(void){int arr[100];//arr[0]~arr[99]return0;}局部数组初始化#include <stdio.h>int main(void){int arr[100]={0};return0;}全局变量#include <stdio.h>int arr[100];int main(void){//codereturn0;}变⻓数组#include <stdio.h>int main(void){int n;scanf("%d",&n);int arr[n];//int arr[n]={0}; 不要这样做return0;}//不建议⽤变⻓数组哈希表将读⼊的值映射到数组下标E- ONOS⼤班的班⻓选举H-ZJD想当ManagerI-计数排序⼆维数组⼆维数组⼆维数组的元素是⼀维数组#include <stdio.h>#define ROWS 3#define COLS 4int main(void){int junk[ROWS][COLS] = {{2,4,6,8},{3,5,7,9},{12,10,8,6}};return0;}⼀维数组与指针#include <stdio.h>int main(void){//数组名是数组⾸元素的地址int arr[10]={0};printf("%d\n",arr==&arr[0]);int n;scanf("%d",&n);for(int i=0;i<n;i++)scanf("%d",arr+i);//scanf("%d",&arr[i]);return0;}⼆维数组做函数参数// array2d.c -- functions for 2d arrays#include <stdio.h>#define ROWS 3#define COLS 4void sum_rows(int ar[][COLS], int rows);void sum_cols(int [][COLS], int ); // ok to omit names int sum2d(int (*ar)[COLS], int rows); // another syntax int main(void){int junk[ROWS][COLS] = {{2,4,6,8},{3,5,7,9},{12,10,8,6}};sum_rows(junk, ROWS);sum_cols(junk, ROWS);printf("Sum of all elements = %d\n", sum2d(junk, ROWS));return0;}void sum_rows(int ar[][COLS], int rows){int r;int c;int tot;for (r=0; r<rows; r++){tot=0;for (c=0; c<COLS; c++)tot+=ar[r][c];printf("row %d: sum = %d\n", r, tot);}}void sum_cols(int ar[][COLS], int rows){int r;int c;int tot;for (c=0; c<COLS; c++){tot=0;for (r=0; r<rows; r++)tot+=ar[r][c];printf("col %d: sum = %d\n", c, tot);}}int sum2d(int ar[][COLS], int rows){int r;int c;int tot=0;for (r=0; r<rows; r++)for (c=0; c<COLS; c++)tot+=ar[r][c];return tot;}字符串字符数组与字符串#include <stdio.h>#include <string.h>int main(void){char arr1[10]={'b','u','a','a'};char arr2[10]={'b','u','a','a','\0'};char arr3[10];arr3[0]='b';arr3[1]='u';arr3[2]='a';arr3[3]='a';char arr4[]="buaa";//arr1,arr2,arr3,arr4是否相同printf("%lu %lu\n",sizeof(arr1),sizeof(arr4));return0;}字符串的输⼊输出#include <stdio.h>int main(void){char str[100];//输⼊scanf("%s", str); //遇到空⽩符停⽌gets(str); //读取⼀整⾏,读取换⾏符但不储存fgets(str, 100, stdin); //读取⼀整⾏,储存换⾏符//输出printf("%s\n", str);puts(str); //额外输出⼀个换⾏符return0;}⼆维字符数组当需要储存多个字符串时,就需要⼆维的字符数组了;⼆维数组的每个元素是⼀个⼀维数组,所以⼆维数组的每个元素储存⼀个字符串;#include <stdio.h>#include <string.h>int main(void){char str[100][1000]; //可以储100个字符串,每个字符串的⻓度最多是999//输⼊for (int i=0; i<10; i++){scanf("%s", str[i]); //遇到空⽩符停⽌//等价于scanf("%s",&str[i][0]);//or//gets(str[i]);}//访问字符串的每⼀个字符for (int i=0; i<10; i++) //先遍历每⼀个字符串{int len=strlen(str[i]);for (int j=0; j<len; j++) //然后遍历字符串的每⼀个字符{char ch=str[i][j];// code}}/*假如输⼊的字符串是buaaBUAA那么ch依次遍历的是字符'b','u','a','a','B','U','A','A'*///输出for (int i=0; i<10; i++){printf("%s\n", str[i]);//or//puts(str[i]);}return0;}字符串函数⼀些常⽤的字符串函数⻅梁助教发的《字符串函数》,也可参考菜⻦教程--<string.h>强调⼏点:字符串函数⼀般是以空字符'\0'为结束标志的;字符串之间的⽐较不能⽤==,得⽤strcmp,两个字符串相等返回0;#include <stdio.h>#include <string.h>int main(void){char str1[10]={'b','u',0,'a'};char str2[10]={'b','u','\0'};printf("%d\n",strcmp(str1,str2));//输出0return0;}要善于⽤⼀些常⽤的字符串函数###函数与递归函数声明#include <stdio.h>int sum(int a,int);//这⾥的三个int分别是什么意思int main(void){printf("%d\n",sum(3,5));return0;}int sum(int a,int b){return a+b;}递归先看⼀个例⼦/* recur.c -- recursion illustration */#include <stdio.h>void up_and_down(int);int main(void){up_and_down(1);return0;}void up_and_down(int n){printf("Level %d: n location %p\n", n, &n); // 1if (n<4)up_and_down(n+1);printf("LEVEL %d: n location %p\n", n, &n); // 2 }有公式递归简单的递归函数~#include <stdio.h>#define MOD 1000007#define MAX 11int a,b;int fun(int a,int b){if(b==0)return1;else if(b%2==0)return fun(a*a,b/2)%MOD;else return fun(a*a,b/2)*a%MOD;}int main(void){while(scanf("%d%d",&a,&b)!=EOF)printf("%d\n",fun(a,b)%MOD);return0;}阿克曼函数// C program to illustrate Ackermann function#include <stdio.h>int ack(int m, int n){if (m==0){return n+1;}else if ((m>0) && (n==0)){return ack(m-1, 1);}else if ((m>0) && (n>0)){return ack(m-1, ack(m, n-1));}}int main(){int A;A=ack(1, 2);printf("%d", A);return0;}// This code is contributed by Amiya Rout⽆公式递归⼀般倾向于应⽤,需要将递归函数看作⼀个⿊盒,明⽩其整体作⽤,不必过于考虑其实现过程,详⻅下⽅典型例题讲解。
C语言期中复习
3.4 关系运算符和关系表达式
1.关系运算符及其优先次序 1. < (小于) 2. <= (小于或等于) 优先级相同(高) 3. > (大于) 4. >= (大于或等于) 5. == (等于) 优先级相同(低) 6. != (不等于)
说明:
关系运算符的优先级低于算术运算符 关系运算符的优先级高于赋值运算符
执行
5.3 用for 语句实现循环
说明:
(1) for语句的一般形式中的‚表达式1”可以省略,此时应在for语句之 前给循环变量赋初值。注意省略表达式1时,其后的分号不能省略。如 for(;i<=100;i++) sum=sum+i; 执行时,跳过‚求解表达式1”这一步,其他不变。
5.3 用for 语句实现循环 说明:
例:(m=a>b)&&(n=c>d)
当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“a>b”的值 为0,因此m=0,而“n=c>d”不被执行,因此n的值不是0而 仍保持原值1。
4.选择结构程序设计
4.1 if语句
1.条件运算符(p84) •格式: •功能: 表达式1?表达式2∶表达式3 判断表达式1的值,如果成立就执行表 达式2,否则就执行表达式3 •使用场合:若在if语句中,当被判别的表达式的 值为“真”或“假” 时,都执行一个赋值语 句且向同一个变量赋值时,可以用一个 条件运算符来处理。
5.2 用do-while语句实现循环
do-while语句的特点: 先执行循环体, 后判断循环条件是否成立。 一般形式: do
循环体语句 while (表达式);
执行过程:先执行一次指定的循环体语句,然后判别 表达式,当表达式的值为非零(“真”) 时,返回重 新执行循环体语句,如此反复,直到表达式的值等 于0为止,此时循环结束。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
输出10-100之间每位数的乘积大于每位数 的和的数,如24 2×4>2+4 for(n=10; n<100; n++) if((n%10)*(n/10)>(n%10)+(n/10)) printf(“%5d”,n); for(x=1; x<=9; x++) for(y=1; y<=9; y++) if (x*y>x+y) printf(“%5d”,10*x+y);
输出1-999中能被3整除,且其中至少有一位 数字是2的所有整数,每输出10个数换行。 main() {int i, n; for(i=1; i<=999; i++) { if(i%3==0 && (i%10==2 || i/100==2 || i/10%10==2)) {printf(“%5d”, sum); n++; if(n%10==0) printf(“\n”); } } }
main() { int i, j, x=0; for (i=0; i<2; i++) {x++ ; for(j=0; j<=3; j++) {if (j%2) continue; x++; } x++;} printf(“x=%d \n”,x); }
main() { int i=15; while(i>0) {switch(i%9) {case 6: i--; break; case 3: i--;} i--; i--; printf(“%d ”,i); } }
习题5.1
main() { int a, b, i; a=1; b=3; i=1; do {printf(“%d, %d,” , a, b); a=(b-a)*2+b; b=(a-b)*2+a; if(i++%2==0) printf(“\n”); } while(b<100); }
main() { int i; for (i=1; i<=5; i++) {if ( i%2) printf(“*”); printf(“#”); } printf(“$\n”); }
输入任意10个整数,分别统计其中偶数、奇 数和0的个数 for (i=1; i<10; i++) {scanf(“%d”, &n); if (n>0) a++; if (n<0) b++; if (n==0) c++; } printf(“a=%d, b=%d, c=%d\n”, a,b,c);
思考题:打印如下图形(用循环)
已知xyz+yzz=532,其中x、y、z都是数字, 编写一个程序求出x、y、z的值 main() {int x,y,z; for(x=1;x<=4;x++) for(y=0;y<=4;y++) for(z=0;z<=4;z++) if(x*100+y*10+z+y*100+z*10+z= =532) printf(“x=%d,y=%d,z=%d\n",x,y,z); }
AAAA O AAA O B AA O B B AOBBB OBBBB
main() { int n,i,j; scanf("%d",&n); for (i=1;i<=n;i++) {for (j=1;j<=n;j++) { if(i+j= =n+1) printf(”O”); if(i+j < n+1) printf(”A”); if(i+j > n+1) printf(”B”);} printf("\n");} }
将一元人民币换成一分、两分、五分(每种分值至少 一个)的所有兑换方案。(其中 i 表示五分的个数,j 表示两分的个数,k表示一分的个数)
main() {int i, j, k, m=1; for (i=1; i<=20; i++) for (j=1; j<=50; j++) { k=_____________________; if(k>=0){printf(“%2d%2d%2d”,i,j,k); m++; if(m%5= =0) printf(“\n”); } }}
编程思路
1. 数据类型(char, int, long, float, double) 2. 数据结构(简单变量、一维数组、二维
数组) 3. 输入数据和输入方式 数据:a=3; scanf(“%d”, &a) ; a=3; 字符:a=’x’; a=getchar(); gets(a); 用循环语句遍历 4. 算法设计(条件、循环) 5. 输出结果(注意:结果是否在循环体内) 注意:输入输出的格式须与定义的数据类型保
编程求1000以内的完数。完数:一个数 恰好等于该数的各个因子之和,如 28=1+2+4+7+14 (6=1*2*3=1+2+3)。
main() {int n,s,i; for(n=1;n<1000;n++) {for(s=0,i=1;i<n;i++) if(n%i==0) s=s+i; if(n= =s) printf("%d\n",n); } } 答案: 、 、 答案:6、28、496
猴子吃桃问题。第一天吃掉总数的一半 多一个,以后每天吃剩下的一半多一个, 第十天只剩下一个。问桃子总数是多少? main() { int i, s=1; for(i=1;i<=10;i++) s=2*(s+1); printf("s=%d\n",s); }
输入2个整数, 输入 个整数,输出它们的最小公倍 个整数 数和最大公约数。 数和最大公约数。 main() {int m,n,t,s; scanf (_____________); for(t=m;___________;t=t+m); s=________________; printf(__________________) ; }
循环体内的控制语句
continue语句
– 用于结束本次循环,continue后的部分循环体 被忽略,进入下一次循环 – continue 语句只能在循环中使用
break语句(有两个用处)
– 在循环体内,用于结束本循环,不仅break后的 部份循环体被忽略,而且整个循环提前结束, 执行本循环后的后继语句 – 在switch的case分支处,结束本switch语句,转 向它的后继语句
遍历查找有某些特征的数
输出1-999中能被3整除,且最后一位数字是 2的所有整数,控制每输出10个数换行。 main() {int i, n; for(i=1; i<=999; i++) { if(i%3==0 && i%10==2) {printf(“%5d”, sum); n++; if(n%10==0) print
素,计算方阵中所有靠边元素的和,打印输出 main() {int a[5][5], i, j, sum; for(i=0; i<5; i++) for(j=0; j<5; j++) scanf(“%d”, &a[i][j]); for(i=0; i<5; i++) for(j=0; j<5; j++) if(i==0 && i==4 && j==0 && j==4) sum=sum+a[i][j]; printf(“sum=%d\n”, sum); }
1. 编写程序,打印所有的“水仙花数”。
所谓“水仙花数”是指一个三位数,其各位 数字的三次方和等于该数本身。例如:153 是一个“梅花数”,因为153=13+53+33
2. 输入一个整数,计算该数各位数字的和. 3. 输入一个整数后逆序输出该数的各位数 字(如输入13672则输出2 7 6 3 1)。
循环复习
– 循环中的语句可以是任何语句,包括各种循环语句, 形成嵌套循环(“多重循环”) – 对这三种循环来说,循环体后的第一个语句就是后 继语句 – for语句在循环语句中使用最灵活 – 一般在循环次数确定时多用for语句,而循环次数 不确定时则用另外两种循环语句 – for语句中表达式1用于循环初值,表达式2用于循 环的条件判断,表达式3用作循环增量; – 由于程序设计的灵活性,表达式1和表达式3往往派 生出其它用处
打印字符图形
从键盘上输入一个正整数n, 从键盘上输入一个正整数 ,要求程序输出一 的字符图形。 个n×n的字符图形。 × 的字符图形 输入5,则输出5× 的方形图形 的方形图形。 如:输入 ,则输出 ×5的方形图形。
算法: 算法: 设行号为i 列号为j 设行号为i,列号为j i+j=n+1,打印“ 则i+j=n+1,打印“O” i+j<n+1,打印“ i+j<n+1,打印“A” i+j>n+1,打印“ i+j>n+1,打印“B”
循环复习
循环语句有三种形式
– while (表达式) 语句; 称“当型循环” – do { 语句;} while (表达式); 称“直到型循环” – for (表达式1;表达式2;表达式3) 语句; – 这里的“语句”就是“循环体”,可以是复合 语句 – 前两种循环的共同点是表达式非0时执行循环, 不同点是当型循环先判断表达式的值,再决定 是否执行循环,直到型循环是先执行一次循环, 再判断是否继续循环