c语言程序设计讲座ppt,ACM程序员大赛讲座 _____C语言程序设计要点 讲授人:王敬华....

Presentation on theme: "ACM程序员大赛讲座 _____C语言程序设计要点 讲授人:王敬华."— Presentation transcript:

ACM程序员大赛讲座 _____C语言程序设计要点 讲授人:王敬华

一、数据类型 1、int /short 2、char 3、unsigned int/short 4、unsigned char

5、float/double/long double

二、运算符 1、按位运算 &、|、^、~、<> 2、算术运算 ++、--、*、/、% 3、条件运算

&&、||、! 4、转义符 \ddd (8进制)、\xhh (16进制)

三、格式化输入/输出 1、printf(“格式控制字符”,表达式1,….,表达式n) %x、%X------无符号16进制整型

%d、%i 有符号10进制整型 %x、%X------无符号16进制整型 %o 无符号8进制整型 %u 无符号10进制整型 %c 字符型 %s 字符串 %f 浮点型(10进制小数形式) %e、%E------浮点型(指数形式)

三、格式化输入/输出 2、输出有符号整数 %[-][+][width][.precision]d -:表示左对齐,缺省时是右对齐;

+:输出正数时,在数前加上+号; width:对于无符号整数,表示输出整数的最小域宽(即占屏幕的多少格),若实际宽度超过了width,则按实际宽度输出; .precision:针对无符号整数,表示至少要输出precision位,如果整数的位数大于precision,则按实际位数输出,否则在左边的空位上补0。

三、格式化输入/输出 运行结果: a=123 a= 123 a= 0123 a= +123 L=34567 main() {

int a=123; long L=34567; printf("a=%d\n",a); printf("a=%6d\n",a); printf("a=%6.4d\n",a); printf("a=%-6d\n",a); printf("a=%+6d\n",a); printf("L=%ld",L); } 运行结果: a=123 a= a= a= L=34567

三、格式化输入/输出 3、输出无符号整数 %[-][#][width][.precision][l] u|o|x|X

#:表示以8进制形式输出数据(%o)时,在数字前输出0;当以16进制形式输出数据(%x或%X)时,在数字前输出0x或0X;

三、格式化输入/输出 运行结果: a=65535:a=-1 u=77777 u=7fff:u=7FFF u=077777:u=0X7FFF

main() { int a=-1; unsigned u=32767; unsigned long L=65535<<2; printf("a=%u:a=%d\n",a,a); printf("u=%o\n",u); printf("u=%x:u=%X\n",u,u); printf("u=%#o:u=%#X\n",u,u); printf("L=%lx\n",L); printf("L=%#.8lX\n",L); } 运行结果: a=65535:a=-1 u=77777 u=7fff:u=7FFF u=077777:u=0X7FFF L=3fffc L=0X03FFFC

三、格式化输入/输出 4、实数的输出 %[-][+][#][width][.precision][l][L]f|e|E|g|G

l:输出double型数据(缺省时也是输出double型数据); L:输出long double型数据; #:必须输出小数点;

三、格式化输入/输出 main() { double f=2.5e5; printf(" \n"); printf("f=%15f\n",f); printf("f=%-15.0f\n",f); printf("f=%#15.0f\n",f); printf("f=%+15.4f\n",f); printf("f=%15.4e\n",f); } 运行结果: f= f=250000 f= f= f= e+05

三、格式化输入/输出 5、字符和字符串的输出 %[-][width]c %[-][width][.precision]s

.precision:表示只输出字符串的前precision个字符;

三、格式化输入/输出 运行结果: Ch=A Ch= A ABCD ABC main() { char ch='A';

printf("ch=%c\n",ch); printf("ch=%3c\n",ch); printf("ch=%-3c\n",ch); printf("%s\n","ABCD"); printf("%6s\n","ABCD"); printf("%6.3s\n","ABCD"); } 运行结果: Ch=A Ch= A ABCD ABC

三、格式化输入/输出 6、scanf(“格式控制字符串”,变量1地址,…,变量n地址) 例:scanf(“%d”,&a);

格式控制字符的一般形式: %[*][width] [l]Type width:是无符号整数,表示输入数据所占的宽度; * : 表示输入的数据不会赋值给相应的变量; l : 表示输入长整型数据(%ld,%lu,%lx,%lo)和double型数据(%lf,%le);

三、格式化输入/输出 scanf函数规定,当输入一项数据时,遇到以下情况scanf认为该数据输入结束: 1)遇到空格、回车、Tab键;

2)指定的宽度结束; 如:scanf(“%3d”,&a);输入1234,a的值将是123; 3)遇非法输入; 如:scanf(“%d”,&a);如果用户输入12a3,a的值将是12; 4)当用%c输入字符型数据时,可显示字符、空格、回车以及其它转义字符都是有效输入; 如:scanf(“%c%c%c”,&a,&b,&c);

三、格式化输入/输出 Scanf(“%c%c”,&c1,&c2); aA Scanf(“%d,%d”,&x,&y); 12,-23

Scanf(“%s%s”,&x,&y); aa AA

四、文件操作 1、文件的打开与关闭 FILE *fopen(char *filename,char *mode);

int fclose(FILE *fp); int feof(FILE *fp); mode:由两类字符组成,一类字符表示打开文件的类型,t---文本文件,b---二进制文件;另一类字符是操作类型,r---读,w---写,a---追加,+---可读可写;

四、文件操作 2、文件的读写 int fscanf(FILE *fp,char *format,v1,…,vn);

int fprintf(FILE *fp,char *format,e1,…en); int fgetc(FILE *fp); int fputc(int c,FILE *fp); char *fgets(char *s,int n,FILE *fp); 从fp中读n-1个字符===>s,最后补‘\0’ int *fputs(char *s,FILE *fp); 正确,返回写入文件的实际字符数;错误,则返回EOF(-1);

四、文件操作 size---写入文件的每个数据所占用的字节数,通常用sizeof(…)形式; 正确,返回n值,错误,返回NULL(0)

unsigned fwrite(void *ptr,unsigned size,unsigned n,FILE *fp); size---写入文件的每个数据所占用的字节数,通常用sizeof(…)形式; 正确,返回n值,错误,返回NULL(0) unsigned fread(void *ptr,unsigned size,unsigned n,FILE *fp);

四、文件操作 3、文件的定位 void rewind(FILE *fp); 将文件指针置于fp所指向的文件头;

int fseek (FILE *fp,long offset,int from); offset:从from开始的偏移字节数,+--(->) - ---(

五、指针 1、一级指针 int *p; char *pstr; 2、数组指针(指向二维数组的指针)

int a[2][3] = {{1,2,3},{4,5,6}}; int (*p) [3]; p = a; a[i][j] 等价于p[i][j] 3、指针数组 int a[3]; int *p[3]; p[0] = &a[0]; p[1] = &a[1]; p[2] = &a[2];

五、指针 4、二级指针 int a; int *p; int **pp; p = &a; pp = &p; 5、指针与动态分配

void *malloc(unsigned int size); char *pstr; pstr = (char *) malloc(10 * sizeof(char)); if (pstr ==NULL) {分配不成功} free(pstr);

五、指针 6、指针作为函数的返回值 int *getdata(int num) { int *getdata(int num) {

int *p; int k; p = (int *)malloc(num*sizeof(int)); if (p != NULL) for (k=0; k 100) return NULL; for (k=0;k

五、指针 7、指针函数 int *getdata(int num); 8、函数指针 int (*pf) (int a);

例:int getmax(int x,int y) { return(x>y?x:y); } void main() { int (*pf) (int,int); int a; pf = getmax; a = (*pf) (3,2); printf(“a=%d”,a); }

六、常用函数 1、int getch(void); 2、int getche(void);

3、sizeof(expression)/sizeof(type); 4、break/continue; 5、memset(void *s,int c,size_t n) 6、void *malloc(size_t size); 7、void free(void *block); 8、strcpy(char *dest,const char *src); 带‘\0’

六、常用函数 9、strncpy(char *dest,const char *src,size_t maxlen); 不带‘\0’

10、memcpy(void *dest,cont void *src,size_t n); 不带‘\0’ 11、movmem(void *src,void *dest,unsigned length); 带‘\0’ 12、strcat(char *dest,const char *src); 带‘\0’ 13、strncat(char *dest,const char *src,size_t maxlen); 带‘\0’ 14、char *strchr(const char *s,int c); 找到返回其指针,否则null 15、int strcmp(const char *s1,const char *s2); 16、int strncmp(const char *s1,const char *s2,size_t maxlen);

六、常用函数 17、char *strstr(const char *s1,const char *s2)

18、strset(char *s,int ch); 19、char *strupr(char *str); 20、double atof(const char *nptr); 21 、int atoi(const char *nptr); 22、long atol(const char *nptr); 23、char *itoa(int value,char *string,int radix); 24、int random(int num); 24、sprintf(char *buffer,const char *format,……);

六、常用函数 例如:将整数123 “000123” char buffer[7]; int a = 123;

sprintf(buffer,”%6.6d”,a); 25、int isalpha(int x); 26、int islower(int x); 27、int isupper(int x); 28、int isdigit(int x); 29、int tolower(int x); 30、int toupper(int x);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值