1. for循环示例
#include int main() { int i,j; int len=4; for(i=len; i>=1; i--) { for(j=len; j>i; j--)printf(" "); //打印空格 for(j=1; j<=i; j++)printf("%d",j); //打印前半部分 for(j=i-1; j>=1; j--)printf("%d",j); //打印后半部分 printf("\n"); } return 0; }
2. 模拟实现投票系统。switch
比如: 有10张票,3个候选人。 进行投票,最终得出票数。 #include int main() { int i; int val; //获取键盘上输入的值 int cnt1=0,cnt2=0,cnt3=0,cnt4=0; for(i=1; i<=10; i++) { printf("请输入投票的编号(1~3,4表示无效票) 剩余票数(%d) :",10-i); scanf("%d",&val); switch(val) { case 1: cnt1++; break; case 2: cnt2++; break; case 3: cnt3++; break; default: cnt4++; break; } } printf("1号选手:%d\n",cnt1); printf("2号选手:%d\n",cnt2); printf("3号选手:%d\n",cnt3); printf("无效票数:%d\n",cnt4); return 0; }
3. 计算字符串空格、数字等数据数量
1.从键盘上输入一个字符串 计算字符串里有多少个空格、小写字母、大写字母、数字。 scanf("%s",buff); /* scanf 函数依靠 \n和空格代表结束符号 */ #include int main() { char buff[100]; int i=0; int cnt1=0,cnt2=0,cnt3=0,cnt4=0,cnt5=0; printf("请输入字符串:"); gets(buff); while(buff[i]!='1.从键盘上输入一个字符串 计算字符串里有多少个空格、小写字母、大写字母、数字。 scanf("%s",buff); /* scanf 函数依靠 \n和空格代表结束符号 */ #include int main() { char buff[100]; int i=0; int cnt1=0,cnt2=0,cnt3=0,cnt4=0,cnt5=0; printf("请输入字符串:"); gets(buff); while(buff[i]!='\0') { if(buff[i]==' ') { cnt1++; } else if(buff[i]>='a'&& buff[i]<='z') { cnt2++; } else if(buff[i]>='A'&& buff[i]<='Z') { cnt3++; } else if(buff[i]>='0'&& buff[i]<='9') { cnt4++; } else { cnt5++; } i++; } printf("空格:%d\n",cnt1); printf("小写:%d\n",cnt2); printf("大写:%d\n",cnt3); printf("数字:%d\n",cnt4); printf("其他:%d\n",cnt5); return 0; }
') { if(buff[i]==' ') { cnt1++; } else if(buff[i]>='a'&& buff[i]<='z') { cnt2++; } else if(buff[i]>='A'&& buff[i]<='Z') { cnt3++; } else if(buff[i]>='0'&& buff[i]<='9') { cnt4++; } else { cnt5++; } i++; } printf("空格:%d\n",cnt1); printf("小写:%d\n",cnt2); printf("大写:%d\n",cnt3); printf("数字:%d\n",cnt4); printf("其他:%d\n",cnt5); return 0; }
4. 字符串转整数。
2.字符串转整数。 从键盘上输入一个字符串”12345”, int data=12345; #include //"1234" int main() { char buff[100]; int i=0,value=0; printf("输入数字字符串(0~9):"); scanf("%s",buff); while(buff[i]>='0' && buff[i]<='9') //实现字符串转整数 { value=value*10; //0 10 120 1230 value=value+(buff[i]-'0'); //1 12 123 1234 i++; } if(buff[i]!='2.字符串转整数。 从键盘上输入一个字符串”12345”, int data=12345; #include //"1234" int main() { char buff[100]; int i=0,value=0; printf("输入数字字符串(0~9):"); scanf("%s",buff); while(buff[i]>='0' && buff[i]<='9') //实现字符串转整数 { value=value*10; //0 10 120 1230 value=value+(buff[i]-'0'); //1 12 123 1234 i++; } if(buff[i]!='\0') //转换失败 { printf("警告:转换不完整。 得到的值:%d\n",value); } else { printf("转换成功! 正确值=%d\n",value); } return 0; }
') //转换失败 { printf("警告:转换不完整。 得到的值:%d\n",value); } else { printf("转换成功! 正确值=%d\n",value); } return 0; }
5. 整数转字符串
3.整数转字符串 #include //1234 int main() { char buff[100]; char str[100]; unsigned int i=0,val=0,j; printf("请输入一个整数:"); scanf("%d",&val); while(val) { buff[i]=val%10+'0'; //"4321" val=val/10; i++; } for(j=0; j3.整数转字符串 #include //1234 int main() { char buff[100]; char str[100]; unsigned int i=0,val=0,j; printf("请输入一个整数:"); scanf("%d",&val); while(val) { buff[i]=val%10+'0'; //"4321" val=val/10; i++; } for(j=0; j'; printf("转换之后字符串: %s\n",str); return 0; }
6. 浮点数转字符串
浮点数转字符串 //以下例子代码实现将浮点数分解成两个整数 #include //1234 int main() { float data=123.456789; int data1,data2; data1=data; //得到整数部分 data2=(data-data1)*1000000; printf("%d.%d\n",data1,data2); return 0; }
7. 字符串转浮点数
从键盘上输入一个字符串”123.45”, float data=123.45; printf("%d\n",0); //0 printf("%d\n",'0'); //48
8. 函数的特性与用法
C语言是靠函数组成。 函数的特性: 1.函数就相当于封装一个工具。 2.函数可以重复调用。 3.函数的功能尽可能的单一。 比如:判断闰年和平年 4.我们自己的写的函数,(除了main函数之外) 子函数。 5.一般情况下,子函数的代码都在main函数的下面。 6.在调用任何子函数之前,都需要声明。 函数的定义: <函数返回值类型> 函数的名称(形参1,形参2…….) { 函数的代码…… return <返回值值>; //如何函数有返回值才需要返回 } 函数的模型: void func1(void); //函数声明 int func1(int data1,int data2 /*,......*/); //函数声明 //函数原型 void func1(void) { } //函数原型 int func1(int data1,int data2 /*,......*/) { return 100; } 函数示例(计算和): #include int sum(int a,int b); //函数声明 int main() { int data; data=sum(100,200); ///调用sum函数,并且接收返回值 printf("data=%d\n",data); data=sum(300,500); ///调用sum函数,并且接收返回值 printf("data=%d\n",data); return 0; } /* 函数功能: 计算a+b之和 */ int sum(int a,int b) { int c=a+b; return c; }
9. 判断平年和闰年
判断平年和闰年 #include int GetYear(int year); //函数声明 int main() { int i; for(i=2001; i<2018; i++) { if(GetYear(i))printf("%d 是闰年.\n",i); else printf("%d 是平年.\n",i); } return 0; } /* 函数功能 : 判断平年和闰年 函数返回值: 0表示平年 1表示闰年 */ int GetYear(int year) { if((year%4==0&&year%100!=0)||(year%400==0)) { return 1; } else { return 0; } }
10. 将数组当做函数的形参
#include void print(char buff[]); int main() { char buff[]="34534r4gyhtrvfvfdvdf"; print(buff); print(buff); print(buff); print(buff); return 0; } void print(char buff[]) { printf("buff=%s\n",buff); }
11. 计算字符串长度
函数示例: 封装函数,计算字符串长度 #include int my_strlen(char buff[]); int main() { char buff[100]; scanf("%s",buff); printf("字符串长度:%d\n",my_strlen(buff)); return 0; } /* 函数功能: 计算字符串长度 返回值 : 字符串的长度 */ int my_strlen(char buff[]) { int len=0; while(buff[len]!='\0') { len++; } return len; }
12. 全局变量、静态变量、局部变量、常量
如何声明常量? 示例: 常量和变量的区别测试 #include int main() { int data1=123; //默认声明为变量 const int data2=456;//声明为常量 //区别: 变量可以改变数据 常量不可改变数据 data1=789; //data2=789; 错误赋值方式 return 0; } 全局变量和局部变量区别: #include void func(void); int data=123; //全局变量,定义在函数之外的变量。 公用变量 int main(void) { int data=456; //局部变量,私有变量 printf("data1=%d\n",data); //当全局变量和局部变量重名的时候,优先使用局部变量 func(); //调用函数 return 0; } void func(void) { printf("data2=%d\n",data); //使用全局 } 局部变量传参数示例: (分析局部变量) #include void func(int data); int main(void) { int data=456; //局部变量,私有变量 func(data); printf("data1=%d\n",data); return 0; } void func(int data) { data=9999; printf("data2=%d\n",data); } 函数形参传递数组和传递变量的区别: #include void func(int buff[],int data); int main(void) { int buff[10]={456,123,789}; //局部变量,私有变量 int data=888; printf("data1的地址=0x%X\n",&data); printf("buff1的地址=0x%X\n",buff); func(buff,data); //传递的是数组的首地址 printf("buff1=%d\n",buff[0]); // 9999 ? printf("data=%d\n",data); // 888 ? return 0; } /* 函数形参传递数组表示是传递地址 函数形参传递变量表示是传递数据 */ void func(int buff[],int data) { buff[0]=9999; data=9999; printf("data2的地址=0x%X\n",&data); printf("buff2的地址=0x%X\n",buff); } 全局变量和静态变量的生命周期与main函数一样长。 局部变量的声明周期与调用的子函数挂钩,子函数调用完毕,内部所有的局部变量全部释放。 什么是静态变量? 局部的全局变量 如何声明? static 关键字。 示例: static int data; //表示声明data是静态变量 #include int func(void); int main(void) { int i; int sum=0; for(i=0; i<5; i++) { sum+=func(); //累加 } printf("%d\n",sum); // ? return 0; } int func(void) { static int data=0; //声明静态变量,int data=0 只会执行一次。 data++; return data; }
13. 字符串进阶练习作业
函数的作业: 1.时间转换(秒与标准时间的转换) (1)函数1: 将秒单位时间转为标准时间。 237562867493 -----xxxx年xx月xx日xx时xx分xx秒 (2)函数2: 将标准时间转为秒单位的时间。 2018年6月1日19点41分23秒----------xxxxxxx秒 闰年366,平年365。 区分: 每年二月份相差一天 2.将字符串转整数、整数转字符串、浮点数转字符串、字符串转浮点数 封装为函数。 3.封装字符串拼接函数: 函数功能实现将a和b字符串拼接在一起。 比如: char a[100]=”123”; char b[]=”456”; 调用函数之后: a[]=”123456” 4.封装字符串的拷贝函数: 将a字符串拷贝到b字符串。 5.封装字符串的比较函数: 比较a字符串和b字符串是否相等。 通过返回值进行区分。 字符串解析(扩展): 1.分析GPS卫星返回的数据 提取最基本的数据: (1)UTC时间 (2)海拔高度 (3)经纬度 char gps_data[]= { "$GNGGA,114955.000,2842.4158,N,11549.5439,E,1,05,3.8,54.8,M,0.0,M,,*4F \ $GNGLL,2842.4158,N,11549.5439,E,114955.000,A,A*4D \ $GPGSA,A,3,10,31,18,,,,,,,,,,5.7,3.8,4.2*37 \ $BDGSA,A,3,07,10,,,,,,,,,,,5.7,3.8,4.2*2A \ $GPGSV,3,1,10,10,49,184,42,12,16,039,,14,54,341,,18,22,165,23*7B \ $GPGSV,3,2,10,22,11,318,,25,51,055,,26,24,205,,29,13,110,*7C \ $GPGSV,3,3,10,31,50,287,36,32,66,018,*7F \ $BDGSV,1,1,04,03,,,07,05,,,29,07,79,246,33,10,52,232,19*62 \ $GNRMC,114955.000,A,2842.4158,N,11549.5439,E,0.00,44.25,061117,,,A*4D \ $GNVTG,44.25,T,,M,0.00,N,0.00,K,A*14 \ $GNZDA,114955.000,06,11,2017,00,00*47 \ $GPTXT,01,01,01,ANTENNA OK*35" };
C 语言 面向对象编程
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。