C语言09
- 格式:pdf
- 大小:961.57 KB
- 文档页数:76
#include<REG52.h>#define uint unsigned int#define uchar unsigned charsbit key1=P1^4;sbit key2=P1^5;sbit key3=P1^6;sbit key4=P1^7;uchar code table_scan[25]={0x0c,0x0e,0x1c,0x1f,0x2c,0x2e,0x3c,0x3e,0x4c,0x4e,0x5c,0x5e,0x6c,0x6e,0x7c,0x7e,0x8c,0x8e,0x9c,0x9e,0xac,0xae,0xbc,0xbe,0xfc };uchar lie_dh[24],lie_dl[24];uchar num,func,lie;bit flag;bit flag1;void delay1ms(uint ms){uint i,j;for(j=ms;j>0;j--)for(i=0;i<150;i++);}void delay(uint t){for(i=t;i>5;i--);EX1=1;for(i=t;i>5;i--);}void IO_init(void){P0=0xff;P1=0xff;P2=0xff;P3=0xff;}void timer_int_init(void){IE=0x85;IT0=1;}void write_one_word(void){for(lie=0;lie<25;lie++){P3=table_scan[lie];P0=0xff;P2=0xdf;delay(10);if(flag){flag=0;P0=0xff;P2=0x00;delay(10);if(flag){flag=0;P0=0xf0;P2=0x00;delay(10);if(flag){flag=0;P0=0xc0;P2=0x00;delay(10);if(flag){flag=0;P0=0x60;P2=0x00;delay(10);if(flag){flag=0;lie_dl[lie]=lie_dl[lie]|0x80;}elselie_dl[lie]=lie_dl[lie]|0x40;}else{P0=0x20;P2=0x00;delay(10);if(flag){flag=0;lie_dl[lie]=lie_dl[lie]|0x20;}}}else{P0=0x0c;P2=0x00;delay(10);if(flag){flag=0;P0=0x08;P2=0x00;delay(10);if(flag){flag=0;lie_dl[lie]=lie_dl[lie]|0x08;}elselie_dl[lie]=lie_dl[lie]|0x04;}else{P0=0x02;P2=0x00;delay(10);if(flag){flag=0;lie_dl[lie]=lie_dl[lie]|0x02;}elselie_dl[lie]=lie_dl[lie]|0x01;}}}else{P0=0x00;P2=0xf0;delay(10);if(flag){flag=0;P0=0x00;P2=0xc0;delay(10);if(flag){flag=0;P0=0x00;P2=0x80;delay(10);if(flag){flag=0;lie_dh[lie]=lie_dh[lie]|0x80;}elselie_dh[lie]=lie_dh[lie]|0x40;}else{P0=0x00;P2=0x20;delay(10);if(flag){flag=0;lie_dh[lie]=lie_dh[lie]|0x20;}elselie_dh[lie]=lie_dh[lie]|0x10;}}else{P0=0x00;P2=0x0c;delay(10);if(flag){flag=0;P0=0x00;P2=0x08;delay(10);if(flag){flag=0;lie_dh[lie]=lie_dh[lie]|0x08;}elselie_dh[lie]=lie_dh[lie]|0x04;}else{P0=0x00;P2=0x02;delay(10);if(flag){flag=0;lie_dh[lie]=lie_dh[lie]|0x02;}elselie_dh[lie]=lie_dh[lie]|0xf1;}}}}}}void clear_one_word(void){for(lie=0;lie<25;lie++){P3=table_scan[lie];P0=0xff;P2=0xff;delay(10);if(flag){flag=0;P0=0xff;P2=0x00;delay(10);if(flag){flag=0;P0=0xf0;P2=0x00;delay(10);if(flag){flag=0;P0=0xc0;P2=0x00;delay(10);if(flag){flag=0;P0=0x80;P2=0x00;delay(10);if(flag){flag=0;lie_dl[lie]=lie_dl[lie]&0x7f;}elselie_dl[lie]=lie_dl[lie]&0xbf;}else{P0=0x20;P2=0x00;delay(10);if(flag){flag=0;lie_dl[lie]=lie_dl[lie]&0xdf;}elselie_dl[lie]=lie_dl[lie]&0xef;}}else{P0=0x0c;P2=0x00;delay(10);if(flag){flag=0;P0=0x08;P2=0x00;delay(10);if(flag){flag=0;lie_dl[lie]=lie_dl[lie]&0xf9;}elselie_dl[lie]=lie_dl[lie]&0xfb;}else{P0=0x02;P2=0x00;delay(10);if(flag){flag=0;lie_dl[lie]=lie_dl[lie]&0xfd;}elselie_dl[lie]=lie_dl[lie]&0xfe;}}}else{P0=0x00;P2=0xf0;delay(10);if(flag){flag=0;P0=0x00;P2=0xc0;delay(10);if(flag){flag=0;P0=0x00;P2=0x80;delay(10);if(flag){flag=0;lie_dh[lie]=lie_dh[lie]&0x7f;}elselie_dh[lie]=lie_dh[lie]&0xbf;}else{P0=0x00;P2=0x20;delay(10);if(flag){flag=0;lie_dh[lie]=lie_dh[lie]&0xdf;}elselie_dh[lie]=lie_dh[lie]&0xef;}}else{P0=0x00;P2=0x0c;delay(10);if(flag){flag=0;P0=0x00;P2=0x08;delay(10);if(flag){flag=0;lie_dh[lie]=lie_dh[lie]&0xf7;}elselie_dh[lie]=lie_dh[lie]&0xfb;}else{P0=0x00;P2=0x02;delay(10);if(flag){flag=0;lie_dh[lie]=lie_dh[lie]&0xfd;}elselie_dh[lie]=lie_dh[lie]&0xfe;}}}}}}void cls(void){uchar i;for(i=0;i<24;i++){lie_dl[i]=0x00;lie_dh[i]=0x00;}}void not(void){uchar i;for(i=0;i<24;i++){lie_dl[i]=~lie_dl[i];lie_dh[i]=~lie_dh[i];}}void display_light(void){uchar i,j;EX1=0;for(j=0;j<2;j++)for(i=0;i<25;i++){P3=table_scan[i];P2=lie_dh[i];P0=lie_dl[i];delay1ms(1);}}void display_SMG(uchar temp) {if(temp==9)P1=0xf9;else if(temp==8)P1=0xf1;else if(temp==7)P1=0xfe;else if(temp==6)P1=0xf6;else if(temp==5)P1=0xfa;else if(temp==4)P1=0xf2;else if(temp==3)P1=0xfc;else if(temp==2)P1=0xf4;else if(temp==1)P1=0xf8;elseP1=0xf0;}void main(){IO_init();timer_int_init();display_SMG(num);EX0=1;while(1){while(func==1){write_one_word();display_light();}while(func==2){cls();func=1;display_SMG(func);}while(func==3){clear_one_word();display_light();}while(func==4){not();func=1;display_SMG(func);}}}void int0(void) interrupt 0 {delay1ms(10);if((!key3)&&(num<5))num++;else if((!key4)&&(num>0))num--;else if(!key2)flag1=1;else if(!key1)func=num;elsenum=num;P2=0x00;P0=0x00;delay1ms(10);while((P1&0xf0)!=0xf0);display_SMG(num);}void int1(void) interrupt 2 {flag=1;EX1=0;}void timer0(void) interrupt 1 {}void timer1(void) interrupt 3 {}。
C语言笔试部分必考点分析整理人:吴永芬C语言部分1.名称的命名规则。
每次必出一个选择题。
(简单题,知道标志符的命名规则即可)。
只能由字母、数字、下划线三种字符组成,且第一个字符不能为数字。
不得使用系统保留字。
典型例题:例1.(07年4月)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是(B)A)大写字母B)连接符C)数字字符D)下划线例2.(07年9月)可在C程序中用做用户标识符的一组标识符是 (A)A)and B)Date C)Hi D)case_2007 y-m-d Dr.Tom Bigl解析:B中的-是减号,C中的.号不合法,D中的case是关键字。
2.判别合法的C语言常量。
历年来多次重复考。
(1)合法的整型常量。
十进制、八进制(以0开头,如0123合法的八进制,0128不合法的八进制)、十六进制(以0x开头,如0x125,0xef) 注意:是数字0不是字母o 或O ,16进制大小写一样。
在整形常量末尾加L表示是长整型(long, 也是整型但比int型数值围大),是合法的。
如115L,就是长整型常量。
(2)浮点型常量。
可以为十进制小数形式,但必须有小数点。
如:0.1 0.0 12.0 12. .12 等。
还可以为指数形式,但注意字母e或E前必须有数字,e后必须为整数。
如:e3,2.e.5,e3都不合法。
合法如:.5e3 5.5e3 5e3C编译系统默认将浮点型常量作为double 型处理。
因此,如0.123实际上系统当成double型数据,而0.123f,0.123F才按照float处理。
这在实际运行中,不加f只是先按double型处理,然后转换成float型,降低了运行的速度,其他并无大碍。
(3) 字符型常量。
注意:字符型常量是用单引号括起来的单字符。
合法的:’3’ ’a’ ‘b’ ‘\n’ ‘\\’‘\b’ ‘\t’ ‘\r’‘\f’ ‘\’’‘\”’ ‘\ddd’ ‘\xhh’其中的ddd是1~3个八进制数所代表的字符,hh是1到2个十六进制数所代表的字符。
C语言程序设计授课教师:胡琪授课教师:09计1班教学计划一、学生基本情况09计1班,22人,是对口高考班,由于是刚进高一,还没有接触过任何的编程知识,甚至有些学生以前接触电脑的机会比较少,基础较差,但整体上还是很好学的,毕竟深知C语言是参加对口高考很重要的一门科目。
二、教学要求1.掌握C语言的主要特点、结构、程序编写的规则、开发的过程;2.掌握C语言的基本数据类型、运算符、表达式的应用,常用函数的使用;掌握顺序程序设计,会编写简单的程序;3.掌握三种if语句的使用形式、流程、功能;学会使用switch语句;4.掌握循环结构程序设计的方法,包含三种不同循环结构的应用方法以及这三种循环的异同点。
三、教学重点1.C语言基本数据类型、运算符、表达式的应用;2.常用函数的使用;3.顺序结构、选择结构、循环结构的程序设计方法。
四、教学难点1.C语言程序的编写规则、开发过程;2.顺序结构、选择结构、循环结构的程序设计方法及退出循环的方法。
五、主要教学方法、措施1.按照学生的认识规律,以程序设计为主线,采用循序渐进的方式,用通俗易懂的语言结合生活中的实例讲解C语言的基础知识、程序设计方法;2.结合实验法——精心安排实验,采用任务驱动式的方法即从学生实际水平出发布置难度适当的任务引导学生完成并驱动学生学习新的知识;3.加强课后辅导,要求学生按时完成作业,及时认真批改作业,发现问题及时纠正。
六、教学进度实训计划一、实训目标从应用和实践的角度出发,使学生通过上机操作掌握本课程的程序设计思想,达到能独立编写C语言应用程序的要求,为提高学生的实际编程能力,进一步学习其他程序设计语言打下基础。
二、教材内容分析本教材以TurboC 2.0为运行环境讲解C语言程序运行开发过程,要求学生掌握基本操作,通过上机检验程序运行结果,从而掌握程序设计的思想与方法。
三、具体专业技能要求1.学会编辑、运行简单的C语言程序;2.掌握定义数据类型的方法及赋值的方法,学会使用包含运算符的表达式,掌握输入输出函数的使用;3.掌握顺序结构、选择结构、循环结构的程序设计方法。
一、表达式求值1.表达式:!(4<=6)&&(3<=7) 的值为_______ 02.表达式:x=!(2<5==5) 的值为【1】13.如果有变量定义:int i=1,j=8,a;则表达式:a=i+(j%4!=0) 的值为_【1】 14.表达式:x=(7+6)%4/2 的值为【1】05.如果有变量定义:int x,则表达式:x=-3*4%-6/50 的值为【1】 06.如果有变量定义:int x ,则表达式:x=3+7%5-6 的值为【1】-17.如果有变量定义:int x,则表达式:x=-3+4/5-6 的值为【1】 -98.如果有变量定义:int x=3,y=4,z=4则表达式:z>=y&&y>=x 的值为_____ 19.如果有变量定义:int x=3,y=4,z=4则表达式:(z>=y>=x)?1:0 的值为____ 010.如果有变量定义:int x=0,y=0,z=0则表达式:k=++x&&++y||++z 的值为_____ 111. 如果有变量定义:int x=0,y=0,z=0则表达式:k=++x||++y&&++z 的值为______ 112. 如果有变量定义:int x=40,y=4,z=4则表达式:x=x==(y-z) 的值为____ 013.如果有变量定义:int a=15,则表达式:a=a<<1 的值为【1】3014.如果有变量定义:int y;char x='a';则表达式:y='a'+1 的值为【1】9815.如果有变量定义float x=5.0,y=4.0则表达式:x<y?1.0:1.5的值为【1】1.516.如果有变量定义:int a=1,b=2,c=3,d=5则表达式:a>b ? a : c>d ? c : d 的值为【1】5 17.如果有变量定义:int a=1,b=3,m 则表达式:m=a>b? a : b+1 的值为【1】 418.如果有变量定义:int a=1,b=2则表达式:(!a)||(a>b) 的值为_______ 019. 如果有变量定义:int a=1,b=2,c=1,x=4,y=5则表达式:!a&&b||x>y&&c 的值为______ 020如果有变量定义:int a=12,n=5则表达式:a%=(n%=2) 的值为_______ 021如果有变量定义:int a=2, b=3;float x=3.5, y=2.5则表达式:(float)(a+b)/2+(int)x%(int)y 的值为【1】 3.522如果有变量定义:int x=3.6, y=2.5则表达式:z=(int)x%(int)y 的值为【1】123如果有变量定义:int x=3.5,a=7,y=4.7则表达式:k=a%3*(x+y)/2 的值为【1】 324如果有变量定义:int a=5则表达式:a*=1+3 的值为【1】2025如果有变量定义:int a,b则表达式:b=(a=3*4,a*4),a+5 的值为【1】1726如果有变量定义:int a,b 则表达式:x=a=3,5*a 的值为【1】 1527如果有变量定义:int a=120 则表达式:a%=(5%2) 的值为【1】 028如果有变量定义:int a=10则表达式:a+=a-=a*=a 的值为【1】 029 如果有变量定义:int a=10则表达式:a+=a-=a*a 的值为【1】 -18030 如果有变量定义:int i=3则表达式:j=i++ 的值为【1】 331如果有变量定义:int i=3则表达式:j=++i 的值为【1】 432表达式5&7的值为【1】 ,5│7的值为【2】 .5 7二、填空1."字符常量'a'在内存中应占【1】字节,字符串""a""应占【2】字节." 1 22."在16位PC机环境下,int类型数据应占【1】字节,double类型数据应占【2】字节." 2 83"在16位PC机环境下,int类型数据的取值范围是–32768到【1】 ,unsigned int类型数据的取值范围是0到【2】 ." 32767 655354"若采用十进制数的表示方法,则076是【1】 ,0110是【2】 ." 62 72 3 "若有说明chars1='\x77';,则s1中包含【1】字符" 1 中5"设x为float型变量,y为float型变量,a为int型变量,b为long型变量,c为char型变量,则表达式x+y*a/x+b/y+c的结果为【1】类型." double6 "定义如下变量:int x=2.5,y=4.7; int a=7;表达式 x+a%3*(int)(x+y)%2/4的值为【1】 ." 27 "设a,c,x,y,z均为int型变量,请在下面对应的位置上写出各表达式的结果.① a=(c=5,c+6,c/2) 【1】② x=(y=(z=6)+2)/5 【2】" 2 18"下列程序的输出结果为【1】.main(){ char a='a', b='b', c='c';a=a-32; b+='c'-'a'; c=c-32+1;printf("a=%c#b=%c#c=%c",a,b,c);}a=A#b=d#c=D10"下列程序的输出结果为__________.main(){ int unsigned x1; int b=-1;x1=b; printf("%u",x1);}" 6553511"下列程序的输出结果为【1】.main(){ char c1='b', c2='o', c3='x';c1+=2; c2+=1; c3+=2;printf("%c%c%c",c1,c2,c3);} dpz11 "下列程序的输出结果为【1】.main(){ int a=5;printf("%d,", (3+5,6+9));a=(3*5,a+4); printf("a=%d\n",a);}15,a=912 下列程序的输出结果为【1】.main(){ int x, y, z;x=24; y=025; z=0x24;printf("%d,%d,%d", x, y, z);} 24,21,3613"若有说明int x=10,y=20;,请在下面对应的位置上写出各printf语句的输出结果.① printf("%2x\n",x+y); 【1】② printf("%2o\n",x*y); 【2】" 1e 31014 "下列程序的运行结果为【1】.main(){ char c1='a',c2='b',c3='c';printf("a%cb%cc%c"",c1,c2,c3);} aabbcc15 "设有变量定义:int j; float y;,输入字符流行:12345a72当执行C语句scanf("%2d%f",&j,&y);和printf("%d,%.1f",j,y);后,输出是【1】." 12,345.016 "以下程序的输出结果是【1】.void main(){ unsigned int a=65535;int b;printf("%d\n",b=a);} -117"若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量c的值是【1】_.c=(a-=(b-5));c=(a%11)+(b=2);818 "以下程序执行后的输出结果是【1】.main(){ int a=5,b,c;a*=3+2;printf("%d",a);a*=b=c=5;printf("%d",a);} 2512519 "完善程序:判断输入的一个整数是否能被3或7整除,若能输出YES,若不能输出NO. main(){ int k;printf(""Enter a int number:""); scanf(""%d"",&k);if(【1】) printf(""YES\n"");else printf(""NO\n"");} k%3==0 || k%7==019"下面的程序,若输入字母d输出结果是【1】.#include ""stdio.h""main(){ char c1,c2;c1=getchar();while(c1<97 || c1>122) c1=getchar();c2=c1-32;printf(""%c,%c\n"",c1,c2);} d,D20"若程序运行时,输入以下数据:righ?〈CR〉,则程序的执行结果为【1】.#include ""stdio.h""main(){ char c;while((c=getchar())!='?') putchar(++c);} sjhi21"设i为int型变量,则下面程序段的输出结果是【1】.for(i=1; i<=2; i++) printf("OK");OKOK22"设i,j,k均为int型变量,则执行完以下for语句后,k的值是【1】 .for(i=0,j=10;i<=j;i++,j--) k=i+j+1;1123"下面是求n的阶层的程序.main(){ int i,n; long np;scanf("%d",&n);np=【1】;for(i=2; i<=n; i++)【2】;printf("%d!=%ld\n",n,np);} 1 np=np*i24 下面的程序求1到100的整数累加和.main(){ int i, sum= 【1】 ;i=1;while( 【2】 ) { sum+=i; i++; }printf(""sum=%d\n"", sum );} 0 i<=10025 下面程序的作用是:求出二维数组中最大元素的值和它所在的行和列.main(){ int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};int i,j,row,colum,max;max=a[0][0]; row=0; colum=0;for(i=0; i<3 ; i++)for(j=0; j<4; j++)if( 【1】<a[i][j]) { max=a[i][j]; row =i; 【2】=j ; }printf("max=%d,row=%d,colum=%d\n",max,row,colum);}max colum26 "求出二维数组中的最大元素值.main( ){ int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,12,14}};printf(""max value is %d\n"", 【1】 );}max_value( int m,int n,int array[][4]){ int i,j,max;max=array[0][0];for(i=0;i<m;i++)for(j=0;j<n;j++)if(max<array[i][j]) max=array[i][j];return max;}max_value(3,4,a)27 "下面程序的输出结果是【1】.#define CIR(r) r*rmain(){ int a=1,b=2,t;t=CIR(a+b); printf(""t=%d\n"",t);}t=528 "在C语言的文件系统中,最重要的概念是"文件指针",文件指针的类型只能是_______ 类型. FILE29 "C语言调用【1】函数打开文件,调用【2】函数关闭文件.fopen fclose。
第二版c语言程序设计第二版C语言程序设计C语言是一种通用的、过程式的计算机编程语言,由Dennis Ritchie在1972年开发于贝尔实验室。
C语言以其高效性、灵活性和可移植性而广受欢迎,是许多现代编程语言的基础,包括C++、Java和Python。
随着技术的发展,C语言也在不断更新和改进。
第二版C语言程序设计课程将深入探讨C语言的高级特性和最佳实践,帮助学生更深入地理解和应用C语言。
第一章:C语言概述C语言的设计哲学是提供一种简洁、高效的方式来编写系统软件。
它支持结构化编程,允许程序员使用过程和函数来组织代码。
C语言的语法简洁,使得程序易于编写和理解。
同时,C语言提供了丰富的数据类型和运算符,可以处理各种复杂的计算任务。
第二章:数据类型和变量在C语言中,数据类型是定义变量和常量的基础。
基本数据类型包括整型(int)、字符型(char)、浮点型(float和double)等。
了解不同数据类型的特性对于编写高效的程序至关重要。
变量是程序中存储数据的容器,它们需要在使用前声明,并分配适当的数据类型。
第三章:控制结构控制结构是程序设计中的基本组成部分,它们决定了程序的执行流程。
C语言提供了三种基本的控制结构:顺序结构、选择结构(if语句和switch语句)和循环结构(for、while和do-while循环)。
掌握这些控制结构对于编写逻辑清晰、易于维护的程序至关重要。
第四章:函数函数是C语言中实现模块化编程的关键。
函数允许将代码封装成独立的模块,可以重复使用,并且有助于代码的组织和重用。
函数可以接收参数,执行特定的任务,并返回结果。
学习如何定义和调用函数,以及如何使用递归和指针,是第二版C语言程序设计课程的重点。
第五章:数组和字符串数组是存储固定数量相同类型元素的集合。
字符串实际上是字符数组的一种特殊形式,通常以空字符('\0')结尾。
数组和字符串在C语言中有着广泛的应用,包括数据处理和文本处理。
2.3顺序结构程序设计2.3.1 要点导读1.printf() 与scanf()语句。
printf() 与scanf()语句是最通用的输入输出函数,它们可以在程序设计者的控制下以各种格式分别实现数据的输出和输入操作。
它们位于stdio.h库文件中。
2.字符数据的输入输出。
最简单的字符输入输出函数是getchar()和putchar()。
两者分别从键盘读一个字符或向显示屏写一个字符。
2.3.2 经典例题分析1.下列程序运行后输出的结果是。
#include <stdio.h>void main(){int a=0,b=0;a=10;b=20;printf(“a+b=%d”,a+b);}分析:printf( )是输出函数,它的括号内由两部分组成:1)控制字符串,是用双引号括起来的字符串,它包括两种信息:(1) 格式说明。
由”%”和格式字符组成,如:%d、%f、%c等。
它的作用是将输出的数据转换成指定的格式输出。
(2) 普通字符。
需要原样输出的字符。
2)”输出表列”是需要输出的一些数据,可以是表达式。
题目中a的值是10,b的值是20,在printf(“a+b=%d”,a+b);格式说明输出表列中,”a+b= “是普通字符,需原样输出。
输出表列是一个表达式,它的结果以整型输出。
答案:a+b=30。
2.下列程序运行后输出的结果是。
#include <stdio.h>void main(){int a=732;printf(“%d\n”,a);printf(“%2d\n”,a);printf(“%10d\n”,a);printf(“%-10d\n”,a);}分析:d格式符,用来输出十进制整数。
其中%d,按整型数据的实际长度输出。
%md,m为指定的输出字段的宽度。
如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
printf(“%d\n”,a);把a的值按原样输出:732。
视频教程:C语言讲座全集视频
C语言讲座01
C语言讲座02
C语言讲座03
C语言讲座04
C语言讲座05
C语言讲座07
C语言讲座08
C语言讲座09
C语言讲座10
C语言讲座11
C语言讲座12
C语言讲座13
C语言讲座14
C语言讲座全集视频内容简介:
C语言是一种面向过程的计算机程序设计语言,它是目前众多计算机语言中举世公认的优秀的结构程序设计语言之一。
学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法,就是说,学
习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识,这是我们学生最不易做到的,然而却又是最重要的。
C语言是Combined Language(组合语言)的中英混合简称。
是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。
C语言是由美国贝尔研究所的D.M.Ritchie于1972年推出。
1978后,C语言已先后被移植到大、中、小及微型机上。
C语言发展如此迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。
许多著名的系统软件,如DBASE Ⅳ都是由C 语言编写的。
用C 语言加上一些汇编语言子程序,就更能显示C 语言的优势了,像PC- DOS 、WORDSTAR等就是用这种方法编写的。
C语言常用转义字符表字符常量中使用单引号和反斜杠以及字符常量中使用双引号和反斜杠时,都必须使用转义字符表示,即在这些字符前加上反斜杠。
在C程序中使用转义字符\ d d d或者\ x h h可以方便灵活地表示任意字符。
\ d d d 为斜杠后面跟三位八进制数,该三位八进制数的值即为对应的八进制ASC I I码值。
\ x后面跟两位十六进制数,该两位十六进制数为对应字符的十六进制A S C I I码值。
使用转义字符时需要注意以下问题:1)转义字符中只能使用小写字母,每个转义字符只能看作一个字符。
2)\v 垂直制表和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。
3)在C程序中,使用不可打印字符时,通常用转义字符表示注:1,\v垂直制表和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。
2,\n其实应该叫回车换行。
换行只是换一行,不改变光标的横坐标;回车只是回到行首,不改变光标的纵坐标。
3,\t光标向前移动四格或八格,可以在编译器里设置4,\'在字符里(即单引号里)使用。
在字符串里(即双引号里)不需要,只要用'即可。
5,\?其实不必要。
只要用?就可以了(在windows VC6和tc2中验证)。
格式控制符参考: 对64位整数的输入输出,在POJ上的C++环境下(即VC++), 64位整数是:__in t64输入输出格式为” %l64d'.在G++环境下,64位整数是long long 输入输出格式为” %lld ”.域宽及精度的描述M:域宽,即对应的输岀项在输岀设备上所占字符数若:实际数据宽度 >M,按实际数据宽度输岀。
实际数据宽度<M,左边补空。
N:精度,说明输出的实型数的小数位数。
几点说明:编译程序只是检查 printf 函数的调用形式,不分析格式控制字符串,如果格式字符与输出项的类型不匹配,不进行类型转换。
(输出的数为随机)格式字符要用小写字母。
C语⾔详解-基本数据类型、标识符⼀、基本数据类型1. 基本数据类型的分类:C语⾔中的三种基本数据类型是:整型、实型、字符型。
每种类型⼜可以分为常量和变量。
整型常量:(1) ⼗进制的整型常量:由数字0~9组成。
如:0、10、365、-12等。
(2) ⼋进制的整型常量:以0开头,由数字0~7组成。
如:0、010、0365、-012、011等。
(3) ⼗六进制的整型常量:以0x或0X开头,由数字0~9、a~z或A~Z组成。
如:0x11、0Xffff、0xa5、-0XAC等。
注:C语⾔系统默认为基本整型常量。
(关于“基本整型”,请参考下⾯的内容)整型变量:(1) 根据整数的最⾼位是否⽤作符号位,分为有符号(signed)整型和⽆符号(unsigned)整型。
(2) 根据整数在计算机内存中所占⽤的空间⼤⼩,分为短整型(short int或short)、基本整型(int)和长整型(long int或long)。
short x = 10; 等价于 signed short x = 10; 同时等价于 signed short int x = 10;int age = 20; 等价于 signed int age = 20;long z = 10000L; (加L后说明10000是⼀个长整型常量,⽽不是⼀个基本整型常量)注:(1) C语⾔系统默认为有符号整数。
(2) unsigned和signed不能同时出现。
(3) short和long不能同时出现。
实型常量:在C语⾔中,实型常量的两种表现形式:⼩数形式和指数形式。
或者叫做⼩数点式和字母E(或e)式。
(1) ⼩数点式:1. 有且仅有⼀个⼩数点2. ⼩数点的左边和右边可以有⼀边没有数据,但不能同时没有数据举例:3.14、0.1、10.、0.0、.0、-10.08(2) 字母E(或e)式:1. 有且仅有⼀个字母E(或e)2. 两边都必须有数据3. 左边可以是整数,也可以是⼩数4. 右边只能是整数举例:1e5、1.2E+4、3.0e-2、0e0、1.e0、.0e0实型变量:分为单精度和双精度两种,单精度⽤float表⽰,双精度⽤double表⽰。
c语⾔描述回⽂数的三种算法题⽬描述注意:(这些回⽂数都没有前导0)1位的回⽂数有0,1,2,3,4,5,6,7,8,9 共10个;2位的回⽂数有11,22,33,44,55,66,77,88,99 共9个;* 请问:n位的回⽂数有多少个?请编写⼀个递归函数来解决此问题【输⼊形式】⼀⾏⼀个正整数,代表多少位【输出形式】⼀⾏⼀个正整数,代表回⽂诗的个数【样例输⼊】2【样例输出】9输⼊:3输出:90输⼊:5输出:900**输⼊:10输出:90000**输⼊:8输出:9000输⼊:1输出:10思路分析通过for循环读⼊这个数,通过/和%操作将这个数据逆转,然后再对⽐逆转后的数字是否和原数字相等通过for循环读⼊这个数,每次取头位⼀个数字和末位⼀个数字,依次⽐较这两个数字是否相等,再去掉这两个数字,直到剩下⼀个数字(位数为奇数)或者剩下两个数字(位数为偶数)通过数学关系,直接判断位数,算出这个位数内的回⽂数个数;例如:99899可以把它分为两半,取前⾯⼀半998,如果是回⽂数,其后⾯⼀半⼀定是与其相应位置对应,998为3位数字,**除第⼀位(不包含前导0)故与后半对应的位置那个数有9种选择(1-9)外,其他位都与相应的位置有10种选择(0-9)**,例如第⼆位和倒数第⼆位(0-9)所以可以总结出来相同的位数,位数为奇数奇数其回⽂数有9*10^(n/2)个,注意n/2是整数,位数为偶数的为910^(n/2-1)个,所以5位数字的的回⽂数有910*10=900个注意位数为1有10个(0-9),需要特殊处理代码描述1. 第⼀种思路:#include <stdio.h>#include <math.h>int reverse(long int i,long int *terminate) //递归函数求数值的逆序{if (i<=0){ //递归出⼝return 1;}else{*terminate*=10; //每次乘10升位数*terminate+=i%10; //加上个位reverse(i/10,terminate); //递归每次规模缩⼩}return 1;}int main (){int n;scanf ("%d",&n); //读⼊⼀个n,表⽰n位整数long int i;int count=0;if (n==1){ //如果等于1,则有10个(0-9都是),特殊处理;printf ("10");return 0;}for (i=pow(10,n-1);i<pow(10,n);i++){ //从第⼀个n位数开始(10^(n-1)),到(10^n)-1long int terminate=0; //定义⼀个逆序⽬标数reverse(i,&terminate); //把i和逆序⽬标数传⼊if (terminate==i){ //逆序后还和原数相等,则可计数count++;}}printf ("%d",count); //输出个数return 0;}2. 第⼆种思路:#include <stdio.h>#include <math.h>int judge(int i,int n){int first,last;if (n<=1){ //规模减⼩,直到n为1(偶数)或者0return 1;}else{first=i/pow(10,n-1); //头位数字last=i%10; //末位数字if (first!=last){ //头位末尾不⼀样直接退出return 0;}int tem=pow(10,n-1);judge(i%tem/10,n-2); //剔除头尾剩下中间,位数减⼆}}int main (){int n;scanf("%d",&n);if (1==n){printf ("10");return 0;}int i;int count=0;long long low=pow(10,n-1); //循环⼊⼝long long high=pow(10,n); //循环出⼝for (i=low;i<high;i++){if ( judge(i,n)==1){ //判断i是否为回⽂,计数count++;}}printf ("%d",count);return 0;}3. 第三种思路:#include <stdio.h>#include <math.h>int main (){int n;scanf ("%d",&n);int ji=9*pow(10,n/2),ou=9*pow(10,n/2-1);if (n==1){printf ("10");}else if (n==2){printf ("%d",9);}else if (n%2==1){printf ("%d",ji);}else if (n%2==0){printf("%d",ou);}return 0;}额外疑问第⼀第⼆种⽅法当n=10的时候运算不出来,求解为何如此,是时间复杂度太⾼了吗?还是爆int了或者爆递归了?以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。