版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章C语言程序的结构1.程序的构成,main函数和其他函数。p5-p6 例题:判断:C语言程序是由过程和函数组成的。(错) 2.预定义命令,类型定义,变量定义,组成程序的各个函数,程序中的注释。3. 源程序后缀:.c第2章 数据1基本数据类型:整型数据,浮点型数据,指针型数据2常量:字面常量,符号常量3变量:标识符,变量的定义,变量的初始化,变量的引用4 输出与输入:基本输出,基本输入输入输出函数的调用,正确输入数据并正确理解和设计输出格式。l 整数的表示范围、溢出情况:n 在整常量后加字母l或L,认为它是long int 型常量n 整常量后面加一个字母u或U,认为是unsigned int
2、型n 16位整数的表数范围为:-32768- +32767若有声明"short int x;"且sizeof(x)的值为2,则当x值为 时"x+1>x"为假。l 字符型与整型char i=2;char i=2;int i=2;int i=2;l 浮点数的表示n 指数形式:e或E之前必须有数字;指数必须为整数。例题1:下列选项中,不能作为合法常量的是( )。A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0例题2:下列选
3、项中可作为C 语言合法常量的是( )。A)-80 B)-080 C)-8e1.0 D)-80.0el 字符常量:用单引号括起来的单个普通字符或转义字符l 转义字符:反斜线后面跟一个字符或一个代码值表示main() printf("101 x42 Cn"); printf("I say:"How are you?"n"); printf("C Programn"); printf("Tur
4、bo 'C'");l 常见字符的ASCII码A 65 0x41a 97 0x610 48 0x30char a=b-'A'+'0'a=A+32;l 合法的用户标识符下列不能定义的用户标识符是( )。A)Main B)_0 C)_int D)sizeofl printf的使用n 字符串结尾应以0结束,才能整体输出l scanf的使用u scanf的输入分隔符的指定l 一般以空格、TAB或回车键作为分隔符l 其它字符做分隔
5、符:格式串中两个格式符间字符n scanf读入字符注意点:空格和转义字符作为有效字符输入例题1:欲使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,scanf("%d%c%d%c",&a1,&c1,&a2,&c2);输入形式应为:12a34b例题2:有下列程序:main( ) int m,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%dn",m,n,p);若想从键盘上输入数据,使变量m 的值为123,n的值为
6、456,p 的值为789,则正确的输入是:m=123 n=456 p=789 例题3:char a,b,c,d;scanf(“%c%c”,&a,&b);c=getchar(); d=getchar();printf(“%c%c%c%cn”,a,b,c,d);输入:abcd输出为:abc例题4:#include <stdio.h>main( ) int i=0, j=0, k=0;scanf("%d%*d%d",&i,&j,&k); /p28-31四张表格printf("%d %d %dn",
7、i,j,k);输入:10 20 30输出为:10 30 0n 以整数格式为字符变量输入main( ) char b;scanf("%d", &b);b=b*2;printf("%cn",b);输入:33输出为:Bn 用scanf读入字符串u 字符串名或数组名本身就是地址,不需加&有定义语句:int b; char c10;,则正确的输入语句是( )。A)scanf("%d%s",&b,&c); B)scanf("%d%s",&b,c);C)scanf(
8、"%d%s",b,c); D)scanf("%d%s",b,&c);u 不能将一行带有空格的字符串读入若准备将字符串“This is a string.”记录下来,错误的输入语句为:(A)scanf(“%20s”,s);(B)for(k=0;k<17;k+) sk=getchar();(C)while(c=getchar()!=n) sk+=c;(D)gets(s);第3章 运算与表达式1算术运算基本算术运算符、优先级与结合性、数据类型转换、自增、自减运算2关系运算3逻辑运算4位运算按位逻辑运
9、算移位运算位运算符的含义和使用。简单的位运算。5指针运算取地址运算、操作指针变量、移动指针、比较指针6其它运算sizeof运算、逗号运算、条件运算7赋值运算赋值运算符和赋值表达式、复合赋值运算熟练运用各种运算符、掌握运算优先级和结合性。P237附录B不同类型数据间的转换与运算。表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。l 基本运算、优先级例题1:下列程序的输出结果是( )。main( ) int m=12, n=34;printf("%d%d", m+,+n);printf("%d%dn",n+,+m
10、);A)12353514 B)12353513 C)12343514 D)12343513例题2:下列程序的输出结果是( )。main( ) int a,b,d=25;a= d/10%9;b=a&&(-1);printf("%d,%dn",a,b); A)6,1 B)2,1 C)6,0 D)2,0例题3:main( ) c
11、har s ="159",*p;p=s;printf("%c",*p+);/先输出*p,再p+,即先去表达式值输出,再p+printf("%c",*p+);15例题4: int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”);注意区分“=”与“=”l %操作的使用n %操作只能针对整数(字符)#include <stdio.h>main() char *s="ABC" do printf("%d&
12、quot;,*s%10);s+; while(*s); 运行结果:567n 经常用于求解某个整数的尾数,将整数进行分离等。l 位运算举例main( ) int c=35; printf("%dn",c&c);运行结果:35main( ) char x=040;printf("%d",x=x<<1);注意:040为八进制运行结果:64main( ) char a=3,b=6,c;c=ab<<2;printf("%d",c);运行结果:27 左移<<优先级高于按位异或第4章 程序控制结构顺序程序
13、设计基本语句1.控制语句、函数调用语句、表达式语句,空语句,复合语句。选择结构程序设计1.用if语句实现选择结构。 2.条件运算表达式 (a>b)?a:b3.用switch语句实现多分支选择结构。4.选择结构的嵌套。l xyz的c语言表达式:(x<=y && y<=z)l C语言中没有逻辑类型逻辑运算和关系运算的结果为1或0;2 && 0a=10; b=20; c=(a%b<1)|(a/b>1);5>2>7>8的值( a=1)|(a!=1)的值0参与逻辑运算表示假;非0参与运算表示真; int b=5;if (!b
14、) (等价于if (b=0)b-;l if () 多条语句 main( ) int a=3,b=4,c=5,t=99;if(b<a&&a<c)t=a;a=c;c=t;if(a<c&&b<c)t=b,b=a,a=t;printf("%d %d %dn",a,b,c); l else 总是与最近的if配对if(a=1)if(b!=2)if(c=3) d=1;else d=2;else if ( )l switch中的每个case,如不遇到break,则继续执行下一个case语句,直至遇到breakl switch 后面的表
15、达式的含义int a=3,b=5;switch(a=1)case 1:a=b;break;case 0:a+; switch (a)case 1:a=b;break;case 0:a+;l 短路特性:逻辑表达式求解时,有时并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符下列程序的输出结果是( )。main( ) int i=1,j=2,k=3;if(i+=1&&(+j=3|k+ =3) printf("%d %d %dn",i,j,k);A)1 2 3 B)2 3
16、 4 C)2 2 3 D)2 3 3l 条件表达式的计算结合方向:自右向左如 a<b?a:c<d?c:d Û a<b?a:(c<d?c:d)若整型变量a、b、c、d 中的值依次为:1、4、3、2。则条件表达式a<b? a:c<d? c:d 的值是( )。A)1 B)2 C)3 D)4循环控制1.for循环结构。2.while和do-while循环结构。3.continue语句和bre
17、ak语句。4.循环的嵌套。l 循环用列表法分析,以确保不发生低级错误例题1:main( ) char c1,c2;for(c1='0',c2='9'c1<c2;c1+,c2-) printf("%c%c",c1,c2);printf("n");输出:0918273645例题2:main( ) int a=1,b;for(b=1;b<=10;b+ +) if(a>=8) break;if(a%2= =1)a+=5; continue;a=3;printf("%dn",b);输出:4例题3
18、:main()int i,j,m=1;for(i=1;i<3;i+)for(j=3;j>0;j-)if (i*j)>3)break;m=i*j;printf("m=%dn",m); 运行结果:m=1第5章 数组数组的定义和引用1.一维数组和二维数组的定义、初始化和数组元素的引用。2.字符串与字符数组。l 数组的长度必须是一个常数!int N=90;int aN;错误下列叙述中错误的是( )。A)对于double 类型数组,不可以直接用数组名对数组进行整体输入或输出B)数组名代表的是数组所占存储区的首地址,其值不可改变C)在程序执行中,数组元素的下标超出所定
19、义的下标范围时,系统将给出“下标越界”的出错信息D)可以通过赋初值的方式确定数组元素的个数l 数组元素的引用例题1main( ) int p8=11,12,13,14,15,16,17,18,i=0,j=0;while(i+<7)if(pi%2) j+=pi;printf("%dn",j);A)42 B)45 C)56 D)60+优先级高于<例题2有下列程序:main( ) int num44=1,2,3,4,5,6,7,8,9,1
20、0,11,12,13,14,15,16,i,j;for(i=0;i<4;i+ +) for(j=0;j<i;j+ +)printf("%4c",' ');for(j=i;j<4;j+ +)printf("%4d",numij);printf("n");输出:右上半三角。1 2 3 4 6 7 8 11 12 16例题3下列程序的输出结果是( )。main( ) int a33,*p,i; p=&a00;for(i=0;i<9;i
21、+ +) pi=i;for(i=0;i<3;i+ +) printf("%d",a1i); A)0 1 2 B)1 2 3 C)2 3 4 D)3 4 5例题4int a5=1,2,3,4,5,b5=0,2,1,3,0,i,s=0;for(i=0;i<5;i+)s=s+abi;printf("%dn", s);11l 数组/字符数组/字符串的初始化例题1:能正确初始化的是:A)char *
22、s;s="Olympic"/把"Olympic"的地址赋给sB)char s7;s="Olympic"/s是数组名,是数组地址,不是变量C)char *s;s="Olympic"D)char s7;s="Olympic"例题2:下列能正确定义一维数组的选项是( )。A)int a5=0,1,2,3,4,5; B)char a =0,1,2,3,4,5;C)char a='A', 'B', 'C'
23、60; D)int a5="0123"l 串长度/数组长度/串在内存中所占的字节数char s110="abcd!",*s2="n123"/将串的首地址赋给s2,见p56printf("%d %d %d %d %dn",strlen(s1),strlen(s2),sizeof(s1),sizeof(s2),sizeof("n123");5 5 10 4 6下列程序的输出结果是( )。main( ) char a7="a00a0 0&quo
24、t; int i,j;i=sizeof(a);j=strlen(a);printf("%d %dn",i,j);A)2 2 B)7 6 C)7 2 D)6 2已有定义:char a ="xyz",b ='x', 'y', 'z',下列叙述中正确的是( )。A)数组a 和b 的长度相同
25、;B)a 数组长度小于b 数组长度C)a 数组长度大于b 数组长度 D)上述说法都不对l 指针相关内容1.地址与指针变量的概念,运算符*与&。2.一维、二维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的定义。通过指针引用以上各类型数据。3.用指针作函数参数。4.返回地址值的函数。5.指针数组,指向指针的指针。l 指针与数组 main( ) int a=1,2,3,4,5,6,7,8,9,0,*p;for(p=a;p<a+10;p+)printf("%d,",*p);
26、l 指针与字符串 main( )char *s="12347"s+=2;printf("%ldn",s);下列语句或语句组中,能正确进行字符串赋值的是( )。A)char *sp; sp="right!" B)char s10; s="right!"C)char s10; *s="right" D)char *sp="right!"char *sp; sp=
27、"right!"有下列函数:fun(char *a,char *b)/ 1234 1231 while(*a! ='0')&&(*b! = '0')&&(*a= =*b) a+ +; b+ +;return(*a-*b);该函数的功能是( )。A)计算a 和b 所指字符串的长度之差B)将b 所指字符串复制到a 所指字符串中C)将b 所指字符串连接到a 所指字符串后面D)比较a 和b 所指字符串的大小l 二维数组与指向数组的指针变量main( ) /本题较难选做 int a32=0,(*ptr)2,i,j;/注意
28、,ptr是一个指针,并非数组,只不过指向的内容是一/个长度为2的int数组for(i=0;i<2;i+) ptr=a+i; scanf("%d",ptr);for(i=0;i<3;i+) for(j=0;j<2;j+)printf("%2d",aij);printf("n");输入1 1输出1 0 1 00 0#include <stdio.h>int fun(int (*s)3,int n, int k)/本题较难选做int m, i;m=s0k;for(i=1; i<n; i+) if(sik&
29、gt;m) m=sik;return m;main() int a33=1,2,3,11,12,13,2l,22,23;printf("%dn", fun(a,2,0);11l 当两个指针p,s指向数组元素时,p在s之后,p-s指的是两个指针相差的元素个数.如s指向a1,p指向a3,p-s为2。main() int a8,*p,*s;for(p=a;p-a<8;p+) scanf("%d",p);for(p=a,s=a;p-a<8;p+) if(*p>*s) s=p;printf(“index=%dn”,s-a);l 通过指针访问数组元
30、素设有定义double a10=2,2,3,4,*s=a;,以下能够代表数组元素a3的是 。A)(*s)3 /语法错误,*s为一个数B)*(s+3)C)*s3 /s3即为a3D)*s+3 /数组首元素的值加3int x8, *p=x; 则对x数组元素的正确引用是 。A)*&x8 /越界B)*(x+3) C)*(p+8) /越界D)p+3 l 指针数组main()char *a=“ef","gh","ijk" int i;for(i=0;i<3;i+)printf("%c",*ai); egi第6章 其它数据类型
31、1.用typedef说明一个新类型。2.结构体和共用体类型数据的定义和成员的引用。l struct结构体变量及分量的赋值方法例1:设有定义:struct complex int real,unreal; data1=1,8,data2;data2=data1;data2=(2,6);错data2.real=data1.real;例2:有以下定义和语句struct workers int num;char name20;char c;structint day; int month; int year; s;struct workers w,*pw;pw=&w;能给w中year成员赋19
32、80的语句是*pw.year=1980;错w.year=1980; 错pw->year=1980; 错w.s.year=1980;例3:#include <stdio.h>struct st int x, y; data2=1,10,2,20;main() struct st *p=data;printf("%d,", p->y); printf("%dn",(+p)->x);10,2l union的定义和使用例1union dt int a; char b; double c;data;下列叙述中错误的是( )。A)dat
33、a 的每个成员起始地址都相同B)变量data 所占内存字节数与成员c 所占字节数相等C)程序段:data.a=5;printf("%fn",data.c);输出结果为5.000000D)data 可以作为函数的实参l typedef的使用例1:设有如下说明:typedef struct ST long a; int b; char c2; NEW;则下列叙述中正确的是( )。A)以上的说明形式非法 B)ST 是一个结构体类型C)NEW 是一个结构体类型名
34、 D)NEW 是一个结构体变量例2:下列对结构体类型变量td 的定义中,错误的是( )。A)typedef struct aa B)struct aa int n; int n;float m;
35、; float m;AA; td;AA td; struct aa td;C)struct
36、60; D)struct int n; int n;float m; float
37、m;aa; td;struct aa td;第7章 函数1.库函数的正确调用。2.函数的定义方法。3.函数的类型和返回值。4.形式参数与实在参数,参数值传递。5.函数的正确调用,嵌套调用,递归调用。6.局部变量和全局变量。7.变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。l void函数不返回值#define P 3void F(int x)retu
38、rn(P*x*x); main( ) printf("%dn",F(3+5); 编译出错l C语言函数可以嵌套调用例如:fun(fun(x),fun(3*a,fun(b,c)下列程序的输出结果是( )。int f1(int x,int y)return x>y?x:y;int f2(int x,int y)return x>y?y:x;main( ) int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d);f=f1(f2(a,b),f2(c,d);g=a+b+c+d-e-f;printf("%d,%d,%dn&qu
39、ot;,e,f,g);A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7l 函数参数单向传递(1)普通变量,值传递(2)指针作参数,但未对指针所指的内容作修改函数参数的传递和返回例题1:函数参数传递时的类型转换#include<stdio.h>int f(int x,int y)return x+y; void main()double a=7.5,b=2.5;printf(&q
40、uot;%d",f(a,b);9例题2:#include <stdio.h>void fun(int *a,int *b)int *c;c=a;a=b;b=c;main()int x=2,y=8,*p=&x,*q=&y;fun(p,q);printf("%d%d",*p,*q);fun(&x,&y);printf("%d%dn",*p,*q);2828例题3:point(char*p) p+=3; main( ) char b4='a','b','c',
41、'd',*p=b;point(p); printf("%cn",*p);al 函数参数双向传递(1)地址传送,包括数组,指针传递(2)结构体分量作为参数时,值传递下列程序的输出结果是( )。void f(int *x, int *y) int t;t=*x,*x=*y;*y=t;main( ) int a8=1,2,3,4,5,6,7,8,i,*p,*q;p=a;q=&a7;while(p<q) f(p,q); p+; q-;for (i=0;i<8;i+) printf("%d,",ai);A)8,2,3,4,5,6
42、,7,1 B)5,6,7,8,1,2,3,4C)1,2,3,4,5,6,7,8 D)8,7,6,5,4,3,2,1l 函数与数组#include <stdio.h>void fun(int a, int n) int i, t;for(i=0; i<n/2; i+) t=ai; ai=an-1-i; an-1-i=t;main() int a10=0,1,2,3,4,5,6,7,8,9, i;fun(a,7);for(i=3; i<9; i+) printf("%d
43、", ai);printf("n");321078下列程序的输出结果是( )。#define N 20fun(int a ,int n,int m) int i,j;for(i=m;i>n;i-)ai+1=ai;main( ) int i,aN=1,2,3,4,5,6,7,8,9,10;fun(a,2,8);for(i=0;i<5;i+) printf("%d",ai);A)10234 B)12344 C)12334 D)12
44、234l static 变量的特殊性为保证一个变量在未赋初值的情况下初值为0,应选择的存储类别是static#include <stdio.h>int fun()static int x=2;x=x*3; return x;main()int i,s=1;for(i=1;i<=2;i+) s=fun();printf("%dn",s);18l 指向函数的指针程序中若有下列说明和定义语句:char fun(char *);main( ) char *s="one",a5=0,(*f1)( )=fun,ch;下列选项中对fun()函数的正确
45、调用语句是( )。A)(*fl)(a); B)*fl(*s); C)fun(&a); D)ch=*fl(s);第8章 内存使用通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入。例:有下列结构体说明和变量定义,如图所示,指针p、q、r 分别指向此链表中的三个连续结点。 struct node int data;struct node *next;*p,*q,*r;现要将q 所指结点从链表中删除,同时要保持链表的连续,下列不能完成指定操作的语句是(
46、 )。A)p->next=q->next; B)p-next=p->next->next;C)p->next=r; D)p=q->next;第9章 文件1.文件类型指针(FILE类型指针)。2.文件的打开与关闭(fopen,fclose)。3.文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函数的应用),文件的定位(rewind,fseek函数的应用)。FILE *f;f=fopen("filea.txt","w");fprintf(f,"ab
47、c");fclose(f);下列与函数fseek(fp,0L,SEEK_SET)有相同作用的是( )。A)feof(fp) B)ftell(fp) C)fgetc(fp) D)rewind(fp)有下列程序:#include <stdio.h>void WriteStr(char *fn,char *str) FILE *fp;fp=fopen(fn,"w"); fputs(str,fp); fclose(fp
48、);main( ) WriteStr("t1.dat","start");WriteStr("t1.dat","end");程序运行后,文件t1.dat 中的内容是( )。A)start B)end C)startend D)endrt第10章 预处理命令1.宏定义和调用(不带参数的宏,带参数的宏)。2.“文件包含”处理。l 概念辨析下列叙述中正确的是( )。A)预处理命令行必须位于源文件的开头B
49、)在源文件的一行上可以有多条预处理命令C)宏名必须用大写字母表示D)宏替换不占用程序的运行时间l 当宏定义的宏体或参数未带括号时,宏展开的方法#define MAX(x,y) (x)>(y)?(x):(y)main() int a=5,b=2,c=3,d=3,t;t=MAX(a+b,c+d)*10;printf(“%dn”,t);7#define S(x) 4*x*x+1main( ) int i=6, j=8;printf("%dn",S(i+j); 81l #define不是C语句其它习题针对不同对象(数/字符串/数对)进行冒泡排序,简单选择排序#include <stdio.h>#include <string.h>void fun(int n, char
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建漳浦县储备粮管理有限公司公开招聘4人笔试参考题库附带答案详解
- 2025福建宁德三都澳城澳建设发展公司招聘笔试笔试参考题库附带答案详解
- 2025烟台业达经济发展集团有限公司社会公开招聘笔试笔试参考题库附带答案详解
- 2025湖北襄阳高新城乡基础设施建设维护有限公司招聘延期笔试参考题库附带答案详解
- 2025浙江郡安里文旅发展有限公司招聘3人笔试参考题库附带答案详解
- 2025浙江温州乐清市事业单位(国有企业)招聘43人笔试参考题库附带答案详解
- 2025河南艾瑞环保科技有限公司招聘3人笔试参考题库附带答案详解
- 中远海运船员管理有限公司2026招聘笔试历年典型考点题库附带答案详解
- 蠡县2025年河北保定蠡县县直事业单位公开招聘工作人员28名笔试历年参考题库典型考点附带答案详解
- 烟台市2025山东烟台高新技术产业开发区福山园管理委员会选聘园区工作人员1笔试历年参考题库典型考点附带答案详解
- 2026年合肥市产业投资控股(集团)有限公司招聘笔试参考题库附带答案详解
- 湖北省三重一大监督制度
- 门店会员绩效考核制度
- 湖北省宜昌市2026届高三下4月考数学试题含解析
- 财务部门工作流程手册
- 2026年广东省初中学业水平考试模拟(一) 英语
- 房地产 -2025年下半年长沙写字楼市场报告
- 三维图解2021版高支模施工方案(含计算书)通俗易懂
- 小米培训方法教程课件
- 2025-2030全球与中国辉绿岩行业销售渠道及未来发展态势研究报告
- 盘扣式脚手架施工材料管理方案
评论
0/150
提交评论