简单C语言程序的例子
- 格式:docx
- 大小:151.47 KB
- 文档页数:9
单片机c语言实例程序300篇单片机C语言【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){inti,j,k;printf("\n");for(i=1;i<5;i++)/某以下为三重循环某/for(j=1;j<5;j++)for(k=1;k<5;k++){if(i!=k&&i!=j&&j!=k)/某确保i、j、k三位互不相同某/printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main()单片机C语言{longinti;intbonu1,bonu2,bonu4,bonu6,bonu10,bonu;canf("%ld",&i);bonu1=100000某0.1;bonu2=bonu1+100000某0.75;bonu4=bonu2+200000某0.5;bonu6=bonu4+200000某0.3;bonu10=bonu6+400000某0.15;if(i<=100000)bonu=i某0.1;eleif(i<=200000)bonu=bonu1+(i-100000)某0.075;eleif(i<=400000)bonu=bonu2+(i-200000)某0.05;eleif(i<=600000)bonu=bonu4+(i-400000)某0.03;eleif(i<=1000000)bonu=bonu6+(i-600000)某0.015;elebonu=bonu10+(i-1000000)某0.01;printf("bonu=%d",bonu);}============================================================ ==【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
一个简单的dsp C语言例子开发平台: CCS集成开发环境通过这个简单的例子, 可以大致了解用C语言开发dsp程序的原理。
程序要求: 用C语言编写产生正弦调幅波信号的源程序;正弦调幅波的公式在离散域中的表示:y(n) = (1 + M*sin(2 * PI * fb / fs * n)) * sin(2 * PI * fa / fs * n);编写文件1.sin_am.c#include<stdio.h>#include<math.h>#define TRUE 1#define pi 3.1415926536int y[500],i;float M;void main(){puts("amplitude modulation sinewave example started.\n");M = 50;for(i = 0; i < 500; i++)y[i]= 0;while(TRUE){for(i = 0; i < 500; i++)y[i]=(int)((1 + M / 100 * sin(i * 2 * pi * 20 / 4000))* sin(i * 2 * pi * 200 / 4000)* 16384);puts("program end");}}2.sin_am_v.asm (reset vector file).title "sin_am_v.asm".sect ".vectors".ref _c_int00RESET:B _c_int00.end..3.sin_am.cmdsin_am.objsin_am_v.obj-m sin_am.map-o sin_am.outMEMORY{PAGE 0:EPROG: origin = 0x1400, len = 0x7c00 VECT: origin = 0xff80, len = 0x80PAGE 1:USERREGS: origin = 0x60, len = 0x1c IDATA: origin = 0x80, len = 0x3000 }SECTIONS{.vectors:>VECT PAGE 0.text:>EPROG PAGE 0.cinit:>EPROG PAGE 0.bss:>IDATA PAGE 1.const:>IDATA PAGE 1.switch:>IDATA PAGE 1.system:>IDATA PAGE 1.stack:>IDATA PAGE 1}"*.cmd"文件说明:链接命令文件是实现对段的存储空间位置的定位, C语言程序中常用已初始化和未初始化段如下:已初始化段包括:.init 存放C程序中的变量的初值和常量, 放在ROM和RAM 中均可, 一般属于PAGE 0.const 存放C程序中的字符常量、浮点常量和用const声明的常量, 放在ROM和RAM中均可, 一般属于PAGE 1.text 存放C程序代码, 放在ROM和RAM中均可, 一般属于PAGE 0.switch 存放C程序中的语句的跳针表, 放在ROM和RAM中均可, 一般属于PAGE 0未初始化段包括:.bss 为C程序中的全局和静态变量保留存储空间, 一般存放于RAM中, 属于PAGE 1.stack 为C程序系统堆栈保留存储空间, 用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果, 一般存放于RAM中, 属于PAGE 1.sysmem 用于C程序中malloc、calloc和realloc函数动态分配存储空间, 一般存放于RAM中, 属于PAGE 14.vary_M.gelmenuitem "Myfunctions"slider vary_M(0, 100, 10, 1, Amount_of_modulation){M = Amount_of_modulation;}该文件用于调试的时候可随意改变变量M的值, 该文件通过file->load GEL File添加到工程中, 调试的时候可选择GEL->My Functions->vary_M来打开vary_M滑动条组件。
计算机⼆级C语⾔基础知识C语⾔程序的结构认识⽤⼀个简单的c程序例⼦,介绍c语⾔的基本构成、格式、以及良好的书写风格,使⼩伙伴对c语⾔有个初步认识。
例1:计算两个整数之和的c程序:#include main() {int a,b,sum; /*定义变量a,b,sum为整型变量*/a=20; /*把整数20赋值给整型变量a*/b=15; /*把整数15赋值给整型变量b*/sum=a+b; /*把两个数之和赋值给整型变量sum*/printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); /*把计算结果输出到显⽰屏上*/ }重点说明:1、任何⼀个c语⾔程序都必须包括以下格式:main() { }这是c语⾔的基本结构,任何⼀个程序都必须包含这个结构。
括号内可以不写任何内容,那么该程序将不执⾏任何结果。
2、main()----在c语⾔中称之为“主函数”,⼀个c程序有且仅有⼀个main函数,任何⼀个c 程序总是从main函数开始执⾏,main 函数后⾯的⼀对圆括号不能省略。
3、被⼤括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执⾏的内容。
4、在{ }⾥⾯每⼀句话后⾯都有⼀个分号(;),在c语⾔中,我们把以⼀个分号结尾的⼀句话叫做⼀个c语⾔的语句,分号是语句结束的标志。
5、printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); ----通过执⾏这条c语⾔系统提供给我们直接使⽤的屏幕输出函数,⽤户即可看到运⾏结果,本程序运⾏后,将在显⽰器上显⽰如下结果:a=20,b=15,sum=356、#include注意:(1)以#号开头(2)不以分号结尾这⼀⾏没有分号,所以不是语句,在c语⾔中称之为命令⾏,或者叫做“预编译处理命令”。
7、程序中以/*开头并且以*/结尾的部分表⽰程序的注释部分,注释可以添加在程序的任何位置,为了提⾼程序的可读性⽽添加,但计算机在执⾏主函数内容时完全忽略注释部分,换⽽⾔之就是计算机当做注释部分不存在于主函数中。
#include<stdio.h>#include <string.h>#include <math.h>#include <malloc.h>#include <time.h>#include <windows.h>//1.运用条件语句实现三个数的比较,找出最大值/*int main(int argc,char *argv[]){int a,b,c,max;printf("请您输入三个数的值:\n");scanf("%d%d%d",&a,&b,&c);if(a>b){if(c>a)max=c;elsemax=a;}else{if(b>c)max=b;elsemax=c;}printf("%d\n",max);}*///2.用数组的排序实现三个数的查找,找出最大值/*int main(int agrc,char *argv[]){int a[3],i,max;printf("请您输入三个数的值:\n");for(i=0;i<3;i++){scanf("%d",&a[i]);}// printf("\n");max=a[0];for(i=1;i<3;i++){if(max<a[i])max=a[i];}printf("%d\n",max);}*///3.利用三目运算符,找出三个数的最大值//这是最优的代码/*int main(int argc,char*argv[]){int a,b,c,max;printf("请您输入三个数的值:\n");scanf("%d%d%d",&a,&b,&c);max=(c<(a<b?b:a)?(a<b?b:a):c);printf("%d\n",max);}*///4.利用指针来查找三个数中的最大值/*int main(int argc,char*argv[]){int a[3],max;int *temp,i;temp=a;printf("请您输入三个数的值:\n");for(i=0;i<3;i++){scanf("%d",&a[i]);}max=*temp;for(i=0;i<3;i++){if(max<temp[i])max=temp[i];}printf("%d\n",max);}*///5.求1-1000满足用3除余2,用5除余3,用7除余2的所有数,并且5个为一行/*int main(){int i,count=0;for(i=22;i<=1000;i++){if(i%3==2&&i%5==3&&i%7==2){printf("%-6d",i);count++;if(count!=0&&count%5==0){printf("\n");}}}}*///6.判断输入的字符是否是小写字符,如果是转化成大写的字符,其他的不变/*int main(){char a1;a1=getch();if(a1>='a'&&a1<'z')a1=a1-32;printf("%c\n",a1);}*///7.打印//123456//612345//561234//456123/*int main(){int i,j,k;for(i=0;i<4;i++){for(k=7-i;k<7;k++){printf("%d",k);}for(j=1;j<7-i;j++)printf("%d",j);printf("\n");}}*///8.打印// *// ***// *****// *******// *****// ***// */*int main(){int i,j;for(i=0;i<4;i++){for(j=0;j<4-i;j++)printf(" ");for(j=0;j<2*i+1;j++)printf("*");printf("\n");}for(i=3;i>0;i--){for(j=4;j>=i;j--)printf(" ");for(j=2*i-1;j>0;j--)printf("*");printf("\n");}}*///9.打印杨辉三角//1//1 1//1 2 1//1 3 3 1//1 4 6 4 1//1 5 10 10 5 1/*int main(){int i,j,a[11][11];for(i=1;i<11;i++){a[i][i]=1;a[i][1]=1;}for (i=3;i<11;i++){for (j=2;j<i;j++){a[i][j]=a[i-1][j-1]+a[i-1][j];}}for (i=1;i<11;i++){for (j=1;j<=i;j++){printf("%-4d",a[i][j]);}printf("\n");}}*///10.用while实现10的阶乘/*int main(){int i=1;long sum=1;while (i<=10){sum*=i;i++;}printf("%ld\n",sum);}*///11.用for实现10的阶乘/*int main(){int i=1;long sum=1;for (i=1;i<=10;i++){sum=sum*i;}printf("%ld\n",sum);}*///12.用dowhile实现10的阶乘/*int main(){int i=1;long sum=1;do{sum=sum*i;i++;} while (i<=10);printf("%ld\n",sum);}*///13.实现简单的sum=1-1/2+1/3-......+1/n/*int main(){int i=1;int n;int sign=1;float sum=0;float a=0;printf("请您输入您要的数字n:\n");scanf("%d",&n);while (i<=n){a=sign*(1.0/i);sum=sum+a;sign=-sign;i++;}printf("%-5.2f\n",sum);}*///14.实现xyz+yzz=532(xyz和yzz是三位数)利用穷举法/*int main(){int x,y,z;for (x=1;x<10;x++){for (y=1;y<10;y++){for (z=0;z<10;z++){if (100*x+y*10+z+100*y+10*z+z==532){printf("x=%-4dy=%-4dz=%-4d\n",x,y,z);}}}}}*///15.查找素数用到break这个知识点/*int main(){int i,j,m,n;printf("请您输入您要查找的素数最大值:\n");scanf("%d",&n);for (i=2;i<=n;i++){m=sqrt(i);for (j=2;j<=m;j++){if (i%j==0){break;}}if (j>m){printf("%-5d",i);}}printf("\n");}*///16.实现水仙数100-999的查找用到了continue知识点/*int main(){int i,j,k,n;printf("水仙数有:\n");for (n=100;n<=999;n++){i=n/100;j=n/10-i*10;k=n%10;if (n!=i*i*i+j*j*j+k*k*k){continue;}else{printf("%-7d",n);}}printf("\n");}*///17.用到logo实现1+2+....+100不过goto最好不要用/*int main(){int i=1;int sum=0;loop: if (i<=100){sum+=i;i++;goto loop;}printf("%d\n",sum);}*///18.用for的多重循环实现9*9乘法表/*int main(){int i,j;for (i=1;i<10;i++){printf("%-4d",i);}printf("\n");for (i=1;i<10;i++){printf("- ");}printf("\n");for (i=1;i<10;i++){for (j=1;j<i;j++){printf(" ");}for (j=i;j<10;j++){printf("%-4d",i*j);}printf("\n");}}*///19.用到一维数组的知识点还有利用了冒泡排序的方法/*int main(){int a[10];int i,j,temp;printf("请输入十个数值:\n");for (i=0;i<10;i++){scanf("%d",&a[i]);}for (i=0;i<10;i++){for (j=i;j<10;j++){if (a[i]<a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}}for (i=0;i<10;i++){printf("%-4d\n",a[i]);}}*///20.利用一维数组实现Fibonacci数列/*int main(){int i;long f[30]={1,1};for (i=2;i<30;i++){f[i]=f[i-2]+f[i-1];}for (i=1;i<=30;i++){printf("%-10ld",f[i-1]);if (i%5==0){printf("\n");}}}*///21.利用二维数组将二维数组倒过来打印/*int main(){int a[10][10];int i,j;for (i=1;i<11;i++){for (j=1;j<11;j++){a[i-1][j-1]=i*j;}}for (i=0;i<10;i++){for (j=0;j<10;j++){printf("%-5d",a[i][j]);}printf("\n");}printf("\n");for (i=9;i>=0;i--){for (j=9;j>=0;j--){printf("%-5d",a[i][j]);}printf("\n");}}*///22.字符串一维数组(注意数组越界的情况)/*int main(){char name[100];int i;gets(name);for (i=0;i<strlen(name);i++){printf("%c",name[i]);}printf("\n");}*///23.二维字符串的运用(同样要注意越界的情况)/*int main(){char name[5][20];int i;for (i=0;i<5;i++){gets(name[i]);}for (i=0;i<5;i++){puts(name[i]);}}*///24.此题是自己实现跟函数strcpy同样功能,同时也要注意字符的结尾符'\0'||自己可以去实现strcat这个函数的功能/*int main(){char name[20];char strcpyname[20];int i;gets(name);for (i=0;i<strlen(name);i++){strcpyname[i]=name[i];}strcpyname[i]='\0';//注意字符串是以'\0'结尾的puts(strcpyname);strcpy(strcpyname,name);printf("%s\n",strcpyname);}*///25.结构体的基本运用,实现结构体的基本赋值和引用,同时还包括了typedef的用法,可以自己实现排序,求平均分的功能/*typedef struct student{int number;char name[10];float score;}Student;int main(){Student stu[10];int i;for (i=0;i<3;i++){scanf("%d%s%f",&stu[i].number,stu[i].name,&stu[i].score);}for (i=0;i<3;i++){printf("%-10d%-10s%-10.1f\n",stu[i].number,stu[i].name,stu[i].score);}}*///26.将结构体和指针结合运用,目的是为了说明结构体的运用时很广的,只是我们所学的限制,结构体还可以跟链表结合一起用//这才是结构体用处的更大体现,后面再举例说明/*typedef struct student{int number;char name[10];float score;}Student;int main(){Student *stu[10];int i;for (i=0;i<10;i++){stu[i]=(Student *)malloc(sizeof(Student));//注意的地方开辟空间,可以试着屏蔽这几句看会出现怎么样的结果}for (i=0;i<3;i++){scanf("%d%s%f",&stu[i]->number,stu[i]->name,&stu[i]->score);}for (i=0;i<3;i++){printf("%-10d%-10s%-10.1f\n",stu[i]->number,stu[i]->name,stu[i]->score);}}*///27.利用函数调用实现两数交换,用到的其实是地址的交换,如果不是地址交换能实现两数的交换吗?/*int main(){int a=10;int b=20;void exchange_number(int *a,int *b);//函数声明exchange_number(&a,&b);printf("%-4d%-4d\n",a,b);}void exchange_number(int *a,int *b){int temp;temp=*a;*b=temp;}*///28.此函数看上去跟上面的差不多,可是功能却没办法实现两数交换,这是为什么呢?这涉及到作用域//void exchange_number(int a,int b)这个函数定义的a,b两个变量,当它们运行完就释放了,对//主函数的a,b有改变吗?没有改变/*int main(){int a=10;int b=20;void exchange_number(int a,int b);//函数声明exchange_number(&a,&b);printf("%-4d%-4d\n",a,b);}void exchange_number(int a,int b){int temp;temp=a;a=b;b=temp;}*///29.将数组传递给调用函数,实现按大到小排序/*int main(){int a[10];int i;void sort(int a[]);for (i=0;i<10;i++){a[i]=i;}sort(a);for (i=0;i<10;i++){printf("%-4d",a[i]);}printf("\n");}void sort(int a[]){int i,j;for (i=0;i<10;i++){for (j=i;j<10;j++){if (a[i]<a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}}}*///30.实现sum=1!+2!..../*int sum(int n){int b=0;int a=1;int i;for (i=1;i<=n;i++){a=a*i;b+=a;}return b;}int main(){int c;c=sum(3);printf("%-7d\n",c);}*///31.利用指针将a=10给了temp指针/*int main(){int *temp;int a=10;printf("%-10d%-10d%-10d%-10d\n",&a,a,*temp,temp);}*///32.字符指针/*int main(){char *name="wo shi hao hai zi!";printf("%s\n",name);}*///33.一维指针/*int main(){int *number[10];int i;for (i=0;i<10;i++){number[i]=i;}for (i=0;i<10;i++){printf("%-4d",number[i]);}printf("\n");}*///34.一维字符指针/*int main(){char *name[20];gets(name);puts(name);}*///35.此题结合了结构体,函数调用,指针,冒泡算法等知识点的运用/*typedef struct student{char *name[20];int number;float score;}Student;Student stu[3];void Assignment(){int i;for (i=0;i<3;i++){scanf("%s%d%f",stu[i].name,&stu[i].number,&stu[i].score);}}void sort(){int i,j;Student temp;for (i=0;i<3;i++){for (j=i;j<3;j++){if (stu[i].score<stu[j].score){temp=stu[i];stu[i]=stu[j];stu[j]=temp;}}}}void pint(){int i;for (i=0;i<3;i++){printf("%-10d%-10s%-10.1f\n",stu[i].number,stu[i].name,stu[i].score);}}int main(){Assignment();sort();pint();}*///36.行指针的引用/*int main(){int i,j;int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};int (*b)[4];b=a;for (i=0;i<3;i++){for (j=0;j<4;j++){printf("%-4d",a[i][j]);}printf("\n");}for (i=0;i<3;i++){for (j=0;j<4;j++){printf("%-4d",b[i][j]);}printf("\n");}for (i=0;i<3;i++){for (j=0;j<4;j++){printf("%-4d",*(*(b+i)+j));}printf("\n");}for (i=0;i<3;i++){for (j=0;j<4;j++){printf("%-4d",*(b[i]+j));}printf("\n");}}*///37.二维指针的引用/*int main(){char *name[3][20];int i;for (i=0;i<3;i++){gets(name[i]);}for (i=0;i<3;i++){puts(name[i]);}}*///38.链表的运用/*typedef struct student{int number;char name[20];}Student;typedef struct node{Student data;struct node *next;}Node;Node *initlist(){Node *studenthead;studenthead=(Node*)malloc(sizeof(Node));studenthead->next=NULL;return studenthead;}Node*createlist(int n){Node *p,*r,*q;int i;p=r=initlist();for (i=0;i<n;i++){q=(Node*)malloc(sizeof(Node));scanf("%d%s",&q->data.number,q->);p->next=q;p=q;q->next=NULL;}return r;}Node* delist(int number,Node *head)//链表的删除,可以以此为基础自己写修改,查询等{Node *headp;Node *p,*q;q=p=head;headp=head->next;while (headp!=NULL){if (headp->data.number==number&&headp->next!=NULL){p->next=headp->next;break;}else if (headp->data.number==number){p->next=NULL;break;}p=headp;headp=headp->next;}return q;}void print(Node *headq){Node *head;head=headq;head=head->next;if (head==NULL){printf("链表是空的!\n");}while (head!=NULL){printf("%-10d%-10s\n",head->data.number,head->);head=head->next;}}int main(){Node *studenthead;Node *stuhead;studenthead=createlist(3);print(studenthead);stuhead=delist(1,studenthead);print(stuhead);}*///时间函数/*int main(){char time1[60];time_t Time;struct tm *t;while(1){Sleep(1000);system("cls");Time=time(NULL);t=localtime(&Time);strcpy(time1,asctime(t));printf("Local time is:%s",time1);}}*//*int main(){char time1[20];time_t Time;struct tm *t;while (1){Sleep(1000);Time=time(NULL);t=localtime(&Time);strftime(time1,20,"%Y-%m-%d-%H-%m%s",t);printf("%s\n",time1);}}*///40.随机函数int main(){int a[10];int i;srand(time(0));for (i=0;i<10;i++){a[i]=rand()%10;}for (i=0;i<10;i++){printf("%-4d",a[i]);}printf("\n");}注释:这些代码是在vc编译器下编写的。
由键盘任意输入1个4位数整数,分别输出其中的个位、十位、百位、千位。
/* expe 3-10 */#include <stdio.h>#include <math.h>void main(void){int mun,a,b,c,d;scanf("%d",&mun);a=mun / 1000; /*千位*/b=(mun % 1000) / 100; /*百位*/c=(mun % 100) / 10; /*十位*/d=(mun % 10); /*个位*/printf("千位数字为=%d\n",a);printf("百位数字为=%d\n",b);printf("十位数字为=%d\n",c);printf("个位数字为=%d\n",d);}由键盘任意输入3个数据,找出其中的最大数和最小数。
#include<stdio.h>void main(void){float a,b,c,k,g;/* k 小g 大*/printf ("请输入三个数");scanf("%f%f%f",&a,&b,&c);if (a < b){k = a;g = b;}else{k = b;g = a;}if (k < c)/*最小*/{ printf ("\n最小的数=%5.2f",k);}else{printf ("\n最小的数=%5.2f",c);}if (g > c)/*最大*/{printf ("\n最大的数=%5.2f",g);}else{printf ("\n最大的数=%5.2f",c);} }判断三角形的形状#include<stdio.h>#include<math.h>void main(void){printf("请输入三角形三边");float a,b,c,p,s,k1,k2,k3;scanf("%f%f%f",&a,&b,&c);while (a + b < c || b + c < a || a + c < b ){printf("不能构成三角形,请重新输入");scanf("%f%f%f",&a,&b,&c);}k1 = a * a;k2 = b * b;k3 = c * c;if (a == b && b == c && c ==a){printf("此三角形为等边三角形");}else if (a == b || b == c || c ==a){printf("此三角形为等腰三角形"); }else if ((k1 == b * b + c * c) || (k2 == a * a + c *c) || (k3 = a * a + b * b)){printf("此三角形为直角三角形");}else{printf("此三角形为一般三角形");} }九九乘法表整体#include <stdio.h>void main(void){int i,j;11for (i = 1;i < 10; i ++){for(j = 1;j < 10; j ++){printf("%5d",i * j);}printf("\n"); } }右半边#include <stdio.h>void main(void){int i,j;for (i = 1;i < 10; i ++){for(j = 1;j <= i; j ++){ printf("%5d",i * j);}printf("\n"); } }左半边#include <stdio.h>void main(void){int i,j;for (i = 1;i < 10;i ++)/*最外层循环*/ {for (j = 1;j < i; j++)/*打空格*/{ printf(" "); }for (j = 1;j <= 10 - i;j ++)/*计算*/{printf("%5d",j * i); }printf("\n"); } }打印菱形#include<stdio.h>void main(void){int i,j,k;for (i = 1;i <= 5;i ++){for (j = 0;j < 5 - i;j ++){printf(" ! "); }for (k = 1;k <= 2 * i - 1;k ++){printf(" * "); }printf("\n");}for (i = 4;i >= 0;i --){for (j = 4 - i;j > 0;j --){printf(" ! "); }for (k = 2 * i ;k >= 0;k --){ printf(" * ");}printf("\n"); } }找回文#include<stdio.h>#include<string.h>void main(void){char str[80];int i,j,iStrlenstr,iFlag;printf("请输入字符串\n");gets(str);iStrlenstr = strlen(str);for (i = 0 ,j = iStrlenstr - 1;i <= j ;i ++, j --){if (str[i] == str[j]){iFlag = 1; }else{iFlag = 0;break; }}if (iFlag == 1){printf("输入的是回文!\n"); }else{printf("输入的不是回文!\n"); }}找名字指针法/*不用查找函数,用指针的方法*/#include<stdio.h>void main(void)22{char str[10][80],a[80],*p[10],*q = NULL;int i, j,iFlag = 0;// int istrlenstr;printf("请输入名字\n");for ( i = 0 ; i < 10; i ++){gets(str[i]);}printf("请输入想查找的名字\n");gets(a);for (i = 0; i < 10; i ++){p[i] = str[i]; }q = a;for (i = 0; i < 10; i ++ ){iFlag = 0;j = 0;while(*(p[i] + j) && *(q + j)){if (*(p[i]+ j) != *(q + j)){break; }j++;}if (*(p[i] + j)== '\0' && *(q + j) == '\0'){ iFlag = 1;break; }}if (iFlag == 1)printf("FOUND ! 该名字的位置为%d",i);elseprintf("NOT FOUND !"); }/*利用指针给10个数排序*/#include<stdio.h>int main(void){int a[10],*p = NULL ,iTem;int i,j,iPos = 0;printf("请输入10个数\n");for (i = 0; i < 10; i ++){scanf("%d",&a[i]); }p = a;for(i = 0; i < 9; i ++){iPos = i;for (j = i + 1 ; j < 10 ;j ++){if (a[j]< a[iPos])iPos = j;}iTem = *(a + i);*(a + i) = *(a + iPos);*(a + iPos) = iTem;}printf("排序之后的为");for (i = 0; i < 10; i ++){printf("%4d",*(a + i)); }return 0; }/*名字排序,从大到小*/#include<stdio.h>#include<string.h>void main(void){char a[10][10],cTemp[10];int i,j,iMax;printf("输入十个学生姓名:\n");for(i = 0; i < 10; i ++){gets(a[i]);}for(i = 0;i < 10 ;i ++){iMax = i;for(j = i + 1;j < 10;j ++){if(strcmp(a[iMax],a[j]) < 0){iMax = j;}}33if(iMax != i){strcpy(cTemp,a[i]);strcpy(a[i],a[iMax]);strcpy(a[iMax],cTemp);}}printf("按照字典降序排序为:\n");for(i = 0;i < 10;i ++){puts(a[i]);} }/*查找并删除某字符*/#include<stdio.h>int main(){char str[80],*p = NULL,*q;char t;printf("请输入字符串:\n");gets(str);printf("请输入想要删除的字符:\n");t = getchar();p = str;q = str;for (p = str; *p != '\0'; p ++){if (*p != t){*q++ = *p; }}*q = '\0';puts(str);}函数作业(全部)/*交换器,引用全局变量*/方法一int a,b;void main(void){scanf("%d%d",&a,&b);fun();printf("a=%d,b=%d\n",a,b);}void fun(void){int c;c = a;a = b;b = c;}方法二#include<stdio.h>#define swap(x,y) {int tmp=x;x=y;y=tmp;}int main(){int x,y;printf("请输入两个数字\n");scanf("%d%d",&x,&y);swap(x,y);printf("交换之后的数字是\n");printf("%d\t%d\t",x,y);return 0;}/*用函数找最大公约数*/#include<stdio.h>int maxd(int,int);int main(){int a,b,d;printf("请输入两个整数\n");scanf("%d%d",&a,&b);d = maxd(a,b);printf("这两个数的最大公约数为:%d",d);return 0;}int maxd(int a,int b){int m,n,k;if(a<b)44{m = b;n = a;}else{m = a;n = b;}do{k = m%n;m = n;n = k;}while(n != 0);return(m);}/*用函数统计*/#include<stdio.h>int icount(char* );int main(){char str[80];int m = 0;printf("请输入字符串\n");gets(str);m = icount(str);printf("字符串中数字的个数有:%d",m);return 0;}int icount(char *p){int k = 0;while( *p != '/0'){if (*p >= '0' && *p <= '9')k ++;}return k;}/*排序函数*/#include<stdio.h>#include<string.h>void iSort (int[],int);int main(){int a[10];int i;printf("请输入10个整数\n");for (i = 0; i < 10 ; i ++){scanf("%d",&a[i]); }iSort(a,10);printf("从小到大排序为\n");for (i = 0; i < 10; i ++){ printf("%4d",a[i]); } }void iSort(int x[],int n){int i,j,t,iPos;for (i = 0; i < n - 1; i ++){iPos = i;for (j = i + 1; j < n; j ++){if (x[j] < x[iPos])iPos = j ;}if (iPos != i){t = x[i];x[i] = x[iPos];x[iPos] = t; } } }/*用函数找素数*/#include<stdio.h>int iPrime(int);int main(){int i,k = 0;55for (i = 1; i < 201; i += 2){k = iPrime(i);if (k == 1)printf("%d\n",i); } }int iPrime(int x){int a;for (a = 2; a <= x/2; a ++){if (x % a == 0)return 0;}return 1; }/*八进制转十进制*/#include<stdio.h>int iChange(char*);int main(){char s[10];int i,k;printf("请输入一个八进制的数");gets(s);k = iChange(s);printf("对应的十进制的数位=%d",k); }int iChange(char *x){char *p;int n = 0;p = x;for(;*p != '\0'; p ++){n = n * 8 + *p - '0'; } }/*用函数将矩阵转置规定是方阵*/#include<stdio.h>void change(int[][4]);int main(){int a[4][4],b[4][4]={0};int i,j;printf("请输入一个四阶矩阵\n");for (i = 0; i < 4; i ++){for (j = 0; j < 4 ;j ++){ scanf("%d",&a[i][j]); }}change(a);printf("转置过后的矩阵式\n");for (i = 0; i < 4; i ++){for (j = 0; j < 4 ;j ++){printf("%3d",a[i][j]);}printf("\n"); } }void change(int x[][4]){int i,j,t;for (i = 0;i < 4; i ++){for (j = 0; j < i; j ++){t = x[i][j];x[i][j] = x[j][i];x[j][i] = t; } } }/*判断是否是对称矩阵以4*4 的矩阵为例*/#include<stdio.h>int dui(int[][4]);int main(){int a[4][4],i,j,k = 0;printf("请输入一个四阶矩阵\n");for (i = 0; i < 4; i ++){66for (j = 0; j < 4 ;j ++){scanf("%d",&a[i][j]);}}k = dui(a);if (k == 1){printf("该矩阵为对称矩阵"); }else{printf("该矩阵不是对称阵");} }int dui(int x[][4]){int i,j,t = 0;for (i = 0;i < 4; i ++){for (j = 0; j < i; j ++){if (x[i][j] == x[j][i])t = 1;} }return t;}/*用函数求cos与sin*/#include<stdio.h>#include<math.h>float icos(float);float isin(float);int main() {float a,cosx,sinx;printf("请输入x\n");scanf("%f",&a);cosx = icos(a);sinx = isin(a);printf("cos(x)=%7.2f\n",cosx);printf("sin(x)=%7.2f\n",sinx);}float icos(float a){int n = 2;float t,k,fcos;k = 0;t = 1;do{t *= (-1) * a * a / (n *( n - 1));k += t;n += 2;}while (fabs(t) >= 1e-6);fcos = 1 + k;return fcos;}float isin(float a){float fsin;fsin=sqrt(1 - (double)icos(a) * (double)icos(a));return fsin;}/*int n = 3;float t,k,fsin;k = 0;t = 1;do{t *= (-1) * a * a / (n * (n - 1));k += t;n += 2;}while (fabs(t) >= 1e-6);fsin =1 + k;return fsin;*//*用函数分别统计26个字母的个数*/#include<stdio.h>void jishu(char str[]);int iCount1[26] = {0};void main(void){char str[80];77int i;printf("请输入字符串");gets(str);jishu(str);printf("26个大写字母的个数分别是\n");for (i = 0; i < 26; i ++){printf("%d\n",iCount1[i]);}}void jishu(char x[]){int i;for (i = 0; x[i] != '\0'; i ++){if (x[i] >= 'A' && x[i] <= 'Z'){iCount1[x[i] - 'A'] ++; } } }位运算/*地位字节按位取反*/#include<stdio.h>void main(void){unsigned int x;printf("请输入数据:");scanf("%d",&x);x = x ^ 0X00ff;printf("%x\n",x);} /*循环移位通过位或运算来实现循环的功能*/#include<stdio.h>void main(void){int a,n;printf("请输入一个整数:\n");scanf("%d",&a);printf("请输入移动的位数:\n");printf("注意:正数代表右移,负数代表左移");scanf("%d",&n);if(n > 0){a = ((a >> n) | (a << ((8 * sizeof(int)) - n)));//右移}if(n < 0){a = ((a << (- n)) | (a >> ((8 * sizeof(int)) - (-n))));//左移}printf("%u\n",a);}/*利用位异或运算加密*/#include<stdio.h>int main(){int stc,code,dst;dst = 0;//加密后code = 1234;//密码printf("请输入明文:\n");scanf("%d",&stc);dst = stc ^ code;printf("\n加密之后的文件是:%d\n",dst);return 0;}/*偶数为清零*/#include<stdio.h>void main(void){int a;printf("请输入");scanf("%d",&a);a = a & 0x5555;printf("%x\n",a);}/*十六进制转二进制*/#include<stdio.h>void main(void){int a,b[32],c = 1,i;scanf("%x",&a);for(i = 0; i < 32; i ++){88b[i] = (a & c) >> i;c <<= 1;}for(i = 31; i >= 0; i --){ printf("%d",b[i]); } }员工工资#include<stdio.h>#define N 1struct man{long ch;char nam[10];int year;float fareJB;float fareYJ;float fareYF;float fareBX;float fareSD;float fareSF;};void fare(struct man *p) {struct man *q;for(q=p;q<p+N;q++){q->fareYF=p->fareJB+p->fareYJ;q->fareSF=q->fareYF-q->fareBX-q->fareSD;}for(q=p;q<p+N;q++){printf("应发工资\t实发工资\n");printf("%5.2f\t%5.2f\n",q->fareYF,q->fareSF);} }void PRINTF(struct man *p){struct man *q=p;printf("职工工号\t姓名\t年龄\t基本工资\t业绩工资\t应发工资\t保险费\t\t水电费\t实发工资\t\n");for(q=p;q<p+N;q++){printf("%8d%10s\t%d\t%8.2f\t%8.2f\t%8.2f\t%8.2f\t%8.2f\t%8.2f\t",q->ch,q->nam,q->year,q->fareJB,q->fareYJ,q->fareYF,q->fareBX,q->fareSD,q->fareSF);} }void main(void){struct man person[N],*per;printf("输入员工信息");for(per=person;per<person+N;per++){gets(per->nam);scanf("%d%d%f%f%f%f",&per->ch,&per->year,&per->fareJB,&per->fareYJ,&per->fareBX,&per->fareSD);}fare(person);PRINTF(person);}部门销售情况管理程序#include<stdio.h>#define N 1struct bumen{long num;char name[20];float get[4];float ave;}a[N];void chazhao(struct bumen *p){long NUM;int i;printf("输入要查找的部门的代码:");scanf("%ld",&NUM);99printf("\n");for(i=0;i<N;i++){if((p+i)->num==NUM){break;}}printf("部门代码\t部门名称\t春季销售额\t 夏季销售额\t秋季销售额\t冬季销售额\t平均值\n");printf("%ld\t %6s\t\t%8.2lf\t%8.2lf\t%8.2 lf\t%8.2lf\t%8.2lf\t\n",p->num,p->name,p->get[0],p->get[1],p->get[2],p->get[3],p->ave);}void qiuave(struct bumen *p){int i,j;float sum=0;for(i=0;i<N;i++){for(j=0;j<4;j++){sum=sum+p[i].get[j];}p[i].ave=sum/4;} } void order(struct bumen *p){struct bumen *min,P;int i,j,k;for(i=0;i<N-1;i++){min=&p[i];for(j=i+1;j<N;j++){if(p[j].ave<min->ave)min=&p[j];}P=p[i];p[i]=*min;*min=P;}printf("部门代码\t部门名称\t春季销售额\t夏季销售额\t秋季销售额\t冬季销售额\t平均值\n");for(k=0;k<N;k++){printf("%ld\t %6s\t\t%8.2lf\t%8.2lf\t%8.2lf\t%8.2lf\t%8.2lf\t\n",p[k].num,p[k].name,p[k].get[0],p[k].get[1],p[k].get[2],p[k].get[3],p[k].ave);}}void main(void){int i,j,n,x;float t;printf("输入部门数据");for(i=0;i<N;i++){scanf("%ld",&a[i].num);scanf("%s",&a[i].name);for(j=0;j<4;j++){scanf("%f",&t);a[i].get[j]=t;}}printf("1.输入部门代码或部门名称,查找此部门的销售情况\n2.计算各部门的平均销售额。
1.最简单的C语⾔程序最简单的C语⾔程序例1.在屏幕上输出⼀下⼀⾏字This is a C program在主函数中⽤ printf 函数输出 printf 打印#include <stdio.h> //这是编译预处理指令int main() //定义主函数{ //函数开始的标志printf("This is C program\n"); //输出指定的⼀⾏信息getchar();getchar(); //执⾏完停留等待按下键盘再结束getchar();//执⾏完停留等待按下键盘再结束getchar();//执⾏完停留等待按下键盘再结束return 0; //函数执⾏完毕时返回函数值0} //函数结束标志例2.求两个变量之和#include <stdio.h> //这是编译预处理指令int main() //定义主函数{ //函数开始的标志int a,b,c; //定义a,b,c为整型变量(int)浮点数(float)printf("请输⼊两个数字,并⽤空格隔开\n"); //打印⽂字说明scanf("%d %d",&a,&b); //输⼊变量a b (若是浮点数fioat 这⾥%d为%f) c=a+b;printf("他们之和=%d\n",c); //输出ab之和cgetchar();getchar(); //执⾏完停留等待按下键盘再结束return 0; //函数执⾏完毕时返回函数值0} //函数结束标志#include <stdio.h>int main(){int a,i;while (i<10){a=a+i;i=i+1;}printf("1*2*3*4*5*6*7*8*9的结果是%d",a); getchar();getchar();return 0;}。
以下是一个基于8051单片机和Proteus仿真环境的C语言程序设计实例:实例1:点亮LED灯
在这个例子中,我们将使用C语言编写一个简单的程序来控制8051单片机的一个I/O引脚,使其驱动一个LED灯。
c代码:
要使用Proteus进行仿真,你需要按照以下步骤操作:
1. 打开Proteus软件,创建一个新的设计工程。
2. 在元件库中搜索并添加相应的8051单片机型号(如AT89C51)和LED 元件到工作区。
3. 根据实际硬件连接,正确配置单片机的引脚和LED的连接。
4. 右键单击单片机元件,选择“Edit Component”打开编辑窗口。
5. 在“Program File(s)”区域,点击右侧的浏览按钮,选择你的C语言源文件(如上述的main.c)。
6. 点击“OK”关闭编辑窗口,然后点击工具栏上的“Play”按钮开始仿真。
在仿真过程中,你应该能看到LED灯被点亮,这表明你的C语言程序已经在Proteus环境中成功运行。
以上只是一个基础的例子,实际的"单片机C语言程序设计实例100例--基于8051+Proteus仿真"会包含更复杂和多样化的应用场景,包括定时器/计数器
应用、中断处理、串口通信、ADC/DAC转换、液晶显示等等。
每个实例都会详细介绍程序设计思路、代码实现以及如何在Proteus中进行仿真调试。
通过这些实例的学习和实践,你可以逐步掌握8051单片机的C语言编程技巧和Proteus仿真环境的使用方法。
爱心c语言程序代码
以下是一个简单的爱心C语言程序代码:
```
#include <stdio.h>
int main() {
printf(" ** **\n");
printf(" **** ****\n");
printf("******** ********\n");
printf("*****************\n");
printf(" *****************\n");
printf(" ***************\n");
printf(" *************\n");
printf(" *********\n");
printf(" *****\n");
return 0;
}
```
这个程序通过使用星号字符来绘制了一个爱心的形状。
在输出时,我
们使用了多个printf语句,每个语句输出一行字符。
通过合理地排列
这些字符,我们最终得到了一个美丽的爱心图案。
需要注意的是,这个程序只是一个简单的例子,实际上我们可以使用
更复杂的算法和技术来实现更加精细、逼真的图形效果。
但无论如何,通过编写这样的程序,我们可以锻炼自己对C语言基础知识和编程思
维的掌握能力,并且还可以创造出一些有趣、有意义的作品。
几个简单有趣的c语言代码一、引言程序设计语言是计算机语言的一种,用于定义和编写计算机程序。
C语言是一种高级程序设计语言,由AT&T贝尔实验室的Dennis M. Ritchie于1972年开发。
C语言在软件开发中得到广泛应用,因其灵活性、效率和可移植性而备受开发人员的喜爱。
本篇文章将介绍几个简单有趣的C语言代码,用以展示C语言的魅力和应用。
二、Hello World1. 代码#include <stdio.h>int main() {printf("Hello, World!");return 0;}2. 解析这是C语言中最简单的程序,用于输出”Hello, World!“。
在代码中,printf函数用于打印消息到控制台,return 0表示程序正常执行结束。
编译并运行该程序,控制台将输出”Hello, World!“。
三、猜数字游戏1. 代码#include <stdio.h>#include <stdlib.h>#include <time.h>int main() {int secretNumber, guess, attempts = 0;srand(time(0));secretNumber = rand() % 100 + 1;printf("猜数字游戏开始!\n");do {printf("请输入一个猜测的数字:");scanf("%d", &guess);attempts++;if (guess > secretNumber) {printf("太大了!\n");} else if (guess < secretNumber) {printf("太小了!\n");} else {printf("恭喜你猜对了!你用了 %d 次尝试。
简单C语言程序的例子 Prepared on 22 November 2020例子:#include<>main(){tips();/*caller*/printf(“\nSuccessisaboutbangingonafterothershaveletgo”);}tips()/*caller*/{printf(“\nWhenyoureachtheendoftheropetieaknot&hangon”,)0; }[上述程序的输出结果如下:Whenyoureachtheendoftheropttieaknot&hangon. Successisabouthangingonafterothershaveletgo.]#include<>main(){inta,fact;printf(“\nEnteranynumber”);scanf(“%d”,&a);fact=rec(a);printf(“Factorialvalueis%d”,fact);}rec(x);intx;{intf;if(x==1)return(1);elsef=x*rec(x-1);return(f);}[其显示的结果为:Factorialvalueis2.]比较两个数较大的那个:#include<>main(){inta,b,max;scanf(“%d%d”,&a,&b);if(a>b)max=a;elsemax=b;printf(“%d”,max);}输出a+b的值:#include<>voidmain(){inta,b,x;scanf(“%d%d”,&a,&b);x=a+b;printf(“%d”,x);}输出a,b中最大的一位数:#include<>intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}voidmain(){inta,b,c;scanf(“%d%d”,&a,&b);c=max(a,b);printf(“%d\n”,c);}输出Hello:#include<>intmain(){printf(“Hello!”);return0;}求1~100的和:#include<>intmain(){ints,n;s=0,n=1;A:s=s+n;n=n+1;if(n<=100)gotoA;printf(“%d”,s);}请输入一个三位数,将其各位逆序输出:(如153,输出351)#include<>voidmain(){intx,y,a,b,c;printf("请输入一个三位数的数:");scanf("%d",&x);a=x/100;b=x%100/10;c=x%10;y=c*100+b*10+a;printf("\n%d",y);}#include<>voidmain(){intx,a,b,c,d;printf("请输入一个三位数的数:");scanf("%d",&x);a=x/100;b=x%100/10;c=x%10;d=c*100+b*10+a;printf("\n%d\n",d);}买鸡:#include<>voidmain(){intx,y,z;if(x>=0&&x<=19,y>=0&&y<=33,z>=0&&z<=100)while(x=19){x=0;5*x+3*y+z/3==100&&x+y+z==100;x=x+1;}printf("%d%d%d",x,y,z);}y==(100-5*x-z/3)/3&&y==100-x-z;z==(100-5*x-3*y)*3&&z==100-x-y;#include<>voidmain(){intx=0,y,z;while(x<=19){5*x+3*y+z/3==100&&x+y+z==100;x=x+1;printf("%d%d%d",x,y,z);}}#include<>voidmain(){intx=0,y=0,z=0;while(x<=19){while(y<=33){while(z<=100){z==(100-5*x-3*y)*3&&z==100-x-y;z=z+1;printf("%d\t",z);}y==(100-5*x-z/3)/3&&y==100-x-z;y=y+1;printf("%d\t",y);}x=x+1;printf("%d\t",x);}}计算x=20+3(x-1):#include<>voidmain(){intage(intx)inti,j;scanf(“%d”,&i);j=age(i);printf(“age=%d\n”,j);}intage(intx){intz;if(x==1)z=20;elsez=age(x-1)+3;return(z);}编写程序求圆柱体的表面积和体积:#include<>#*定义PI为符号常量,值为*/voidmain(){floatr,h,s,v;printf(“请输入半径r和高h的值:\n”); scanf(“%f%f”,&r,&h);/*输入半径r和高h*/ s=2*PI*r*h;/*计算圆柱体表面积*/v=PI*r*r*h;/*计算圆柱体体积*/printf(“s=%f,v=%f\n”,s,v);}自增,自减运算符的使用:#include<>voidmain(){inti=5,j=5;intx,y;x=i++;y=++j;printf(“%d\t%d\n”,-x++,-(++y));printf(“%d\t%d\t%d\t%d\n”,i,j,x,y);}自增、自减运算符的基本运算:#include<>voidmain(){intk=4;intx,y,z;x=18-k++;printf(“x=%d”,x);printf(“k=%d\n”,k);y=++k+6;printf(“y=%d”,y);printf(“k=%d\n”,k);z=++k+k++;printf(“z=%d\n”,z);}结果:x=14,k=5;y=12,k=6;z=14.输出单个字符:#include<>voidmain(){chara,b;a=’o’;b=’k’;putchar(a);putchar(b);putchar(‘\n’);}输入字符举例:#include<>voidmain(){charc;c=getchar();/*从键盘读入一个字符*/putchar(c); /*显示输入的字符*/ }猜数游戏:#include<>#include<>#include<>intmain(){intx,i=0,guess;srand(time(NULL));x=rand()%100+1;printf("请你猜数:");do{scanf("%d",&guess);if(x<guess){printf("你猜大了!\n");}else{if(x>guess)printf("你猜小了!\n");else{printf("你赢了!\n");break;}}i++;if(i>=10){printf("随机数是:%d\n",x);printf("你已经猜错了10次,我赢了,哈哈!\n");break;}printf("请你再猜:");}while(1);}#include<>voidmain(){inta=2,*p=&a,*q=&a;Printf("%d,%d\n",*p++,*(q++));P=&a;q=&;Printf("%d%d\n",*p,(*q)++);Printf("%d%d\n",*p,++(*q);}结果为:2,22,24,4(从又向左算)#include<stdio,h>Voidmain(){Inta,b,c;Int*pa,*pb,*pc;Pa=&a;pb=&b;pc=&c;Scanf("%d%d",pa,pb);Printf("a=%d,b=%d\n",*pa,*pb);C=a+b;Printf("c=%d\n",*pc);*pc=a+*pb;Printf("c=%d从100到200之间有哪些数除4多2,除7多3,除9多5 #include<>intmain(){for(inti=100;i<=200;i++)if(i%4==2&&i%7==3&&i%9==5)printf("%d\n",i);return0;}用选择法对10个整数排序:#include<>Voidmain(){Int*p,i,a[10];P=a;For(i=0;i<10;i++)Scanf(。