开发环境:
虚拟机+Linux操作系统。
虚拟机:虚拟一台电脑。
Linux操作系统:redhat、ubuntu系统、红旗系统。
Linux基本指令、C语言数据结构、C语言语句、C语言运算符、数组。
数组:多个同类型数据的集合。
一维数组的定义语法:int data[10]; <数据类型> <数据名称>[常量-整数-数据数量];
定义一个int类型的数组,数组的名称是data,长度是10,所占空间大小:4*10 字节。
二维数组的定义语法:int data[10][5];
int data[3][5]= { {1,2,3,4,5}, {1,2,3,4,5}, {1,2,3,4,5}, }; #include int main() { int data[3][5]= { {1,2,3,4,5}, {11,12,13,14,15}, {21,22,23,24,25}, }; printf("%d\n",data[1][1]); return 0; } |
多维数组的定义语法:int data[][][]…
特点:
示例1:
#include int main() { char i; int data[10]={12,13,14,15}; //下标 int a[5]; for(i=0;i<10;i++) //0~9 { printf("data[%d]=%d\n",i,data[i]); } for(i=0;i<5;i++) //0~4 { printf("a[%d]=%d\n",i,a[i]); } return 0; } |
示例2:
#include int main() { int i; int data[5]={0}; //下标 //从键盘上读取5个数据存放到数组里 printf("请输入5个数据:"); for(i=0;i<5;i++) { scanf("%d",&data[i]); //两种: 空格 、 回车-换行 }
for(i=0;i<5;i++) { printf("data[%d]=%d\n",i,data[i]); }
for(i=4;i>=0;i--) { printf("data[%d]=%d\n",i,data[i]); } return 0; } |
配置VIM编辑器:在命令行上运行命令: vim /etc/vimrc
打开文件之后,在文件结尾加上两行代码保存退出。
set number set tabstop=4 |
作业:
#include int main() { int i; float sum=0; float data[5]; float max=0; float min=100; printf("请输入5个数据:"); /*1. 输入数据*/ for(i=0;i<5;i++) { scanf("%f",&data[i]); } /*2. 处理数据*/ for(i=0;i<5;i++) { sum+=data[i]; //累加 if(data[i]>max)max=data[i]; if(data[i])min=data[i];<> } printf("平均值:%.1f\n",sum/5.0); printf("最大值:%.1f\n",max); printf("最小值:%.1f\n",min); return 0; } |
#include int main() { int i; int sum=0; int data[5]; printf("请输入5个数据:"); /*1. 输入数据*/ for(i=0;i<5;i++) { scanf("%d",&data[i]); } /*2. 处理数据*/ for(i=0;i<5;i++) { sum+=data[i]; //累加 } printf("和:%d\n",sum); return 0; } |
#include int main() { int i; int data[10]; int cnt_10=0,cnt_5=0; printf("请输入10个数据:"); for(i=0;i<10;i++) { scanf("%d",&data[i]); } //处理数据 for(i=0;i<10;i++) { if(data[i]>5)cnt_5++; if(data[i]>10)cnt_10++; } printf("cnt_5=%d\n",cnt_5); printf("cnt_10=%d\n",cnt_10); return 0; } |
作业:
#include int main() { int data[10]; int i; for(i=0;i<10;i++) { scanf("%d",&data[i]); } for(i=0;i<10;i++) { if(data[i]==5)data[i]=8; } for(i=0;i<10;i++) { printf("%d ",data[i]); } return 0; } |
#include int main() { int data[]={9,8,7,6,5,4,3,2,1}; int i,j; int tmp; for(i=0;i<9-1;i++) { for(j=0;j<9-1;j++) { if(data[j]>data[j+1]) { tmp=data[j]; data[j]=data[j+1]; data[j+1]=tmp; } } } for(i=0;i<9;i++) { printf("%d ",data[i]); } printf("\n"); return 0; }
/* 9 8 7 6 5 4 3 2 1 冒泡排序:相邻的两个数做比较,进行位置交换 第一轮排序: 8 9 7 6 5 4 3 2 1 8 7 9 6 5 4 3 2 1 8 7 6 9 5 4 3 2 1 8 7 6 5 9 4 3 2 1 8 7 6 5 4 9 3 2 1 8 7 6 5 4 3 9 2 1 8 7 6 5 4 3 2 9 1 8 7 6 5 4 3 2 1 9
第二轮排序: 7 8 6 5 4 3 2 1 9 7 6 8 5 4 3 2 1 9 7 6 5 8 4 3 2 1 9 */
#include int main() { int data[]={1,2,3,4,5,6,7,8,9}; int i,j; int tmp; int flag=0; for(i=0;i<9-1;i++) { for(j=0;j<9-1-i;j++) { if(data[j]>data[j+1]) { tmp=data[j]; data[j]=data[j+1]; data[j+1]=tmp; flag=1; } } if(flag)flag=0; else break; }
for(i=0;i<9;i++) { printf("%d ",data[i]); } printf("\n"); return 0; }
/* 9 8 7 6 5 4 3 2 1 冒泡排序:相邻的两个数做比较,进行位置交换 第一轮排序: 8 9 7 6 5 4 3 2 1 8 7 9 6 5 4 3 2 1 8 7 6 9 5 4 3 2 1 8 7 6 5 9 4 3 2 1 8 7 6 5 4 9 3 2 1 8 7 6 5 4 3 9 2 1 8 7 6 5 4 3 2 9 1 8 7 6 5 4 3 2 1 9
第二轮排序: 7 8 6 5 4 3 2 1 9 7 6 8 5 4 3 2 1 9 7 6 5 8 4 3 2 1 9 */ |
#include int main() { int A[5]={1,2,3,4,5}; int B[5]={11,12,13,14,15}; int C[10]; int i=0,j=0; for(i=0;i<5;i++)C[i]=A[i]; //将A数组的数据拷贝到C数组 for(j=i;j+5;j++)c[j]=b[j-i];> for(i=0;i<10;i++) { printf("%d ",C[i]); } return 0; } |
先从键盘上录入10个整数数据:比如:12 34 56 78 12 34 12 5 12 77
比如:删除数组里所有的12这个数据:得到最终结果:34 56 78 34 5 77 其他后面空间清0
#include int main() { int data[10]={1,2,2,2,5,2,7,2,9,2}; int a; int i,j; int cnt=9; //数组最后一个下标位置 printf("原数组里的值:"); for(i=0;i<10;i++) { printf("%d ",data[i]); } printf("\n");
printf("请输入要删除的数字:"); scanf("%d",&a);
for(i=0;i<10;i++) { if(data[i]==a) { //实现数据覆盖 for(j=i;j<10-1;j++) { data[j]=data[j+1]; } data[cnt--]=0; i--; } } printf("现在数组里的值:"); for(i=0;i<10;i++) { printf("%d ",data[i]); } printf("\n"); return 0; } |
比如:12 ,45,89,12,77
在第2个位置后面插入一个888
结果:12,45,888,89,12,77
#include int main() { int data[11]={1,2,2,2,5,2,7,2,9,2};//10个数据 int a,b; int i,j; printf("原数组里的值:"); for(i=0;i<11;i++) { printf("%d ",data[i]); } printf("\n");
printf("请输入要插入的数字值:"); scanf("%d",&a); printf("请输入要插入的位置(数组的下标位置):"); scanf("%d",&b);
for(i=10-1;i>=b;i--) { data[i+1]=data[i]; } data[b]=a; //插入数字
printf("现在数组里的值:"); for(i=0;i<11;i++) { printf("%d ",data[i]); } return 0; } |
6. 从键盘上输入一串整数,使用中文大写打印出来。--开具发票的时候就会用到
比如中文:壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整
数位分离
vim 基于命令行编辑器。 (1) 修改代码-改错
1. 计算一个unsigned int类型数据中有多少个1 (练习位运算、if语句、循环语句)
#include int main() { unsigned int data=0x1234; int i; int cnt=0; //计数器--计数 for(i=0;i<32;i++) { if(data&0x1) // 0与任何数相&,结果是0 { cnt++; } data>>=1;//data=data>>1; } printf("data=%d\n",data); return 0; } /* 00000000 00000000 00000000 00000010 ---0x2 00000000 00000000 00000000 00000001 00000000 00000000 00000000 00000000 */ |
1. 求100之内自然数中最大的能被17整除的数。(保存数据)
#include int main() { int i; for(i=100;i>17;i--) { if(i%17==0) { printf("i=%d\n",i); break; } } return 0; }
//for 循环: 已知循环 //while 循环: 未知循环 while(cnt--) |
3. 计算并输出200—400之间不能被3整除的整数的和。
#include int main() { int i; int sum=0; for(i=200;i<=400;i++) { if(i%3!=0) { sum+=i; } } printf("sum=%d\n",sum); return 0; } |
3. 输出所有200-400以内能被3整除且个位数字为6的整数。
#include int main() { int i; for(i=200;i<=400;i++) { if(i%3==0) { //126 if(i%10==6)printf("个位数为6:%d\n",i); } } return 0; } |
4,打印所有水仙花数。所谓水仙花是指一个三位数,其各位数字的立方和等于该数。
#include int main() { int i; int a,b,c; for(i=100;i<=999;i++) { //123 a=i/100; //百位 b=i%100/10; c=i%10/1; if((a*a*a+b*b*b+c*c*c)==i) { printf("%d\n",i); } } return 0; } |
5,判断某一年是否是闰年(条件是:1、能整除4且不能整除100 2、能整除400)。
#include int main() { int year; printf("请输入年份:"); scanf("%d",&year);
if((year%4==0&&year%100!=0) || (year%400==0)) { printf("%d是闰年.\n",year); } else { printf("%d是平年.\n",year); } return 0; } |
6. 输入一个不多于5位的正整数,判断他是几位数,并逆序输出。--不需要循环
#include int main() { int data; printf("输入不多于5位数的整数:"); scanf("%d",&data);
//12345 if(data/10000)printf("5位数\n"); else if(data/1000)printf("4位数\n"); else if(data/100)printf("3位数\n"); else if(data/10)printf("2位数\n"); else if(data/1)printf("1位数\n"); return 0; } |
7. 输入一个华氏温度,输出摄氏温度,计算公式为(华氏度-32)×5÷9 要求结果保留两位小数。printf("%.2f",data); * / // \n 12*3
1. 一维数组、二维数组、多维数组
2. 数组:基本数据类型数组(int、float、char类型)、结构体数组…..
3. 字符数组、字符串数组(学习很多字符串操作函数)
字符数组和字符串数组的区别?
字符串数组结尾有一个特殊的结束符:'\0'
#include int main() { int a[]={10,20,30}; //整数类型数组 char b[]={'A','B','C','D'}; //字符数组 char c[]="ABCD"; //字符串数组 '\0'
printf("a数组的大小:%d\n",sizeof(a));//12 %d %c %f %s %x printf("b数组的大小:%d\n",sizeof(b));//4 printf("c数组的大小:%d\n",sizeof(c));//5 printf("long的大小:%d\n",sizeof(long)); //4 printf("int的大小:%d\n",sizeof(int)); //4 //long int return 0; } |
字符串是字符数组吗?是
字符数组是字符串吗?不一定
字符串的输入输出有哪些?
#include int main() { char str[100]; scanf("%s",str); //从键盘上输入字符串 printf("str=%s\n",str); //输出字符串 return 0; }
#include #include int main() { char str[100]="12345"; //scanf("%s",str); //从键盘上输入字符串 //printf("str=%s\n",str); //输出字符串
//char *gets(char *); //获取字符串 //功能: 多了一个获取空格的功能,回车 //gets(str);//从键盘上输入字符串 //printf("你输入的字符串是:"); //puts(str);//输出字符串 printf("字符串的长度:%d\n",strlen(str)); //5 return 0; } |
字符串常见的处理函数有哪些?
#include #include int main() { char str[200]; //常量: 不可修改 "中文字符串" //字符串拼接 //strcat(str,"欢迎学习嵌入式开发"); //strcat(str," 学习单片机"); //strcat(str," 学习Linux"); //printf("str=%s,%d\n",str,strlen(str));
//字符串比较 如果相等返回0 //printf("比较结果:%d\n",strcmp("1234","123"));
//字符串拷贝 //strcpy(str,"1123435gffbgfb"); //printf("结果:%s\n",str);
//字符串查找函数 printf("查找结果:%s\n",strstr("dscdscdsc123ksdhsd","123"));
return 0; }
/* const 声明常量---声明只读变量
//字符串拼接 char *strcat(char *restrict, const char *restrict); //字符串比较 int strcmp(const char *, const char *); //字符串拷贝 char *strcpy(char *restrict, const char *restrict); //计算字符串长度 size_t strlen(const char *); //字符串查找函数 char *strstr(const char *, const char *); */ |
实现计算字符串长度的功能?
#include int main() { char str[200]; int i=0; printf("请输入字符串:"); gets(str); while(str[i]!='\0') { i++; } printf("字符串长度:%d\n",i); return 0; } |
练习题目: 从键盘上输入一串字符串,计算字符串里的空格、大写字母、小写字母、数字个数?
#include int main() { char str[200]; int i=0; int cnt1=0,cnt2=0,cnt3=0,cnt4=0; printf("请输入字符串:"); gets(str); //从键盘上录入数据 while(str[i]!='\0') { if(str[i]==' ') //判断空格 { cnt1++; } else if(str[i]>='0'&&str[i]<='9') { cnt2++; } else if(str[i]>='a'&&str[i]<='z') { cnt3++; } else if(str[i]>='A'&&str[i]<='Z') { cnt4++; } i++; } printf("空格数量:%d\n",cnt1); printf("数字数量:%d\n",cnt2); printf("小写数量:%d\n",cnt3); printf("大写数量:%d\n",cnt4); return 0; } |
解决字符不能连续输入的问题:
#include int main() { char a; char b; char c; printf("请输入字符1:"); scanf("%c",&a); //A\n printf("请输入字符2:"); scanf(" %c",&b); printf("请输入字符3:"); scanf(" %c",&c);
printf("输入字符:%c,%c,%c\n",a,b,c); return 0; }
方式2: #include int main() { // int getchar(void); // int putchar(int); char a; char b; char c; printf("请输入字符1:"); scanf("%c",&a); //\n while(getchar()!='\n'){}
printf("请输入字符2:"); scanf("%c",&b); while(getchar()!='\n'){}
printf("请输入字符3:"); scanf("%c",&c); while(getchar()!='\n'){}
printf("输入字符:%c,%c,%c\n",a,b,c); return 0; } |
从键盘上输入字符的方式:常用的两种
#include int main() { // int getchar(void); // int putchar(int); char a; //scanf("%c",&a); //printf("%c",a);
a=getchar(); //从标准输入获取一个字符 putchar(a); //输出字符
return 0; } |
输入字符串的常见方式:
#include int main() { // int getchar(void); // int putchar(int); char str1[100]; char str2[100]; printf("请输入字符串1:"); //scanf("%s",str1); gets(str1); printf("请输入字符串2:"); //scanf("%s",str2); gets(str2); printf("结果:%s,%s\n",str1,str2); return 0; } |
使用字符获取函数充当字符串输入功能:
#include int main() { // int getchar(void); // int putchar(int); char str[100]; int i=0; char a; while(1) { a=getchar(); //读取一个字符 if(a=='#') { str[i]='\0'; break; } str[i++]=a; } printf("%s",str); return 0; } |
1. 从键盘上输入一串字符串,计算字符串里的空格、大写字母、小写字母、数字个数
2. 字符串比较:从键盘上录入2个字符串,判断是否相等。
3. 字符串删除:从键盘上录入一个字符串,删除字符串里指定的单词,输出结果。
比如:原字符串”akjbcds123dfjvbf123fdvbfd123”
删除单词:“123”
输出的结果:”akjbcdsdfjvbffdvbfd”
4. 字符串查找:从键盘上录入一个字符串,查找字符串里有几个特定的单词。再输出结果。
比如:原字符串”akjbcds123dfjvbf123fdvbfd123”
查找的单词:“123”
输出结果:3
5. 字符串排序:从键盘上录入一个字符串,按照小到大的顺序排序。
6. 字符串的插入:从键盘上录入一个字符串,从指定位置插入一个字符串,再输出结果。
比如:原字符串“1234567890”
(1). 从指定位置插入新的单词。 比如 从第2个下标插入一个“ABC”字符串。
结果: “123ABC4567890”
(2). 从指定单词后面插入新的单词。 比如 从”123”这个单词后插入一个“ABC”字符串。
结果: “123ABC4567890”
7. 字符串替换: 从键盘上录入一个字符串,将指定单词替换成想要的单词。
比如:原字符串“123jfvfdj123dkfvbfdvdf”
想要将“123”替换成“888”或者“8888”或者“88”
8. 从键盘上输入一个整数:将整数转为字符串输出。
比如:int a; scanf(“%d”,&a); 使用字符串形式打印出a的值。
9. 从键盘上输入一个字符串,转为整数输出。
审核编辑:符乾江
全部0条评论
快来发表一下你的评论吧 !