C语言程序设计实例讲解例子
- 格式:doc
- 大小:77.00 KB
- 文档页数:21
C语言程序设计经典10例程序1题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
2.程序源代码:代码如下:#include <stdio.h>int main(){int x,y,z,t;scanf("%d%d%d",&x,&y,&z);if (x>y){t=x;x=y;y=t;} /*交换x,y的值*/if(x>z){t=z;z=x;x=t;} /*交换x,z的值*/if(y>z){t=y;y=z;z=t;} /*交换z,y的值*/printf("small to big: %d %d %d\n",x,y,z);return 0;}程序2题目:用号输出字母C的图案。
1.程序分析:可先用’'号在纸上写出字母C,再分行输出。
2.程序源代码:代码如下:#include <stdio.h>int main(){printf("Hello C-world!\n");printf(" ****\n");printf(" *\n");printf(" * \n");printf(" ****\n");return 0;}程序3题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!1.程序分析:字符共有256个。
不同字符,图形不一样。
2.程序源代码:代码如下:#include <stdio.h>int main(){char a=176,b=219;printf("%c%c%c%c%c\n",b,a,a,a,b);printf("%c%c%c%c%c\n",a,b,a,b,a);printf("%c%c%c%c%c\n",a,a,b,a,a);printf("%c%c%c%c%c\n",a,b,a,b,a);printf("%c%c%c%c%c\n",b,a,a,a,b);return 0;}程序4题目:输出9*9口诀。
问题 1: 三个数比较大小题目描述从键盘上输入0~100之间的三个数,按从小到大的顺序输出。
输入输入只有一行,为三个整数。
输出按从小到大输出这三个数。
样例输入15 10 20样例输出10 15 20提示用if语句判断各种情况可以解决这个问题。
解答:#include<stdio.h>int main(){int a,b,c;scanf("%d%d%d",&a,&b,&c);if(a>=b){if(b>=c)printf("%d %d %d",c,b,a);else{if(a>=c)printf("%d %d %d",b,c,a);elseprintf("%d %d %d",b,a,c);}}else{if(b<c)printf("%d %d %d",a,b,c);else{if(a<c)printf("%d %d %d",a,c,b);elseprintf("%d %d %d",c,a,b);}}}问题 2: 输出是m的倍数或n的倍数、但不是m和n的公倍数的数题目描述输出1~k之间是m的倍数或n的倍数、但不是m和n的公倍数的数,其中1<=m,n<k<100。
输入输入三个整数,依次为k、m、n。
输出从小到大输出符合题意的所有整数,两数之间用一个空格分开。
样例输入15 2 3样例输出2 3 4 8 9 10 14 15提示难点在于输出格式的控制:空格在数的中间,学会用循环时边界情况的特殊处理。
解答:#include<stdio.h>int main(){int k,m,n,i,a;scanf("%d%d%d",&k,&m,&n);if(m>=n)a=n;elsea=m;printf("%d",a);for(i=a+1;i<=k;i++)if(i%m==0||i%n==0){if(i%m==0&&i%n==0)printf("");elseprintf(" %d",i);}}问题 3: A+B Problem题目描述计算a+b,0<=a,b<1000。
atmega16单片机c语言程序设计经典实例中括号在C语言中用于表示数组、结构体、联合体和枚举类型等的定义和使用。
在ATmega16单片机的C语言程序设计中,我们经常会用到数组和结构体,因此本文将以中括号为主题,详细介绍ATmega16单片机上C语言程序设计的经典实例,包括数组的定义和使用、结构体的定义和使用、联合体的定义和使用以及枚举类型的定义和使用。
一、数组的定义和使用数组是一种用于存储一组相同类型的数据项的集合。
在ATmega16单片机上,我们可以使用数组来存储和操作多个引脚的状态、多个传感器的数据等。
1. 数组的定义在C语言中,可以使用方括号来定义一个数组。
下面是一个例子,定义了一个长度为5的整型数组:int array[5];其中,int表示数组的元素类型,array为数组名,[5]表示数组的长度。
2. 数组的初始化数组可以在定义的同时进行初始化。
例如,可以使用大括号将数组的元素初始化为指定的值。
下面是一个例子,将数组的元素初始化为1、2、3、4、5:int array[5] = {1, 2, 3, 4, 5};3. 数组的访问可以使用下标(在中括号内)来访问数组的元素。
数组的下标从0开始,最大值为数组长度减1。
下面是一个例子,访问数组的第一个元素和最后一个元素:int firstElement = array[0];int lastElement = array[4];可以使用循环结构来遍历数组的所有元素:for (int i = 0; i < 5; i++) {访问数组的第i个元素int element = array[i];其他操作}二、结构体的定义和使用结构体是一种可以存储不同类型数据项的数据结构。
在ATmega16单片机上,结构体可以用于存储和操作多个相关的数据项,比如传感器的位置和数值等。
1. 结构体的定义在C语言中,可以使用关键字struct来定义结构体。
下面是一个例子,定义了一个包含姓名和年龄的结构体:struct Person {char name[20];int age;};其中,Person为结构体名,name和age为结构体的成员。
C语⾔程序设计例⼦(3):猴⼦吃桃问题题⽬:猴⼦吃桃问题:猴⼦第⼀天摘下若⼲个桃⼦,当即吃了⼀半,还不瘾,⼜多吃了⼀个 第⼆天早上⼜将剩下的桃⼦吃掉⼀半,⼜多吃了⼀个。
以后每天早上都吃了前⼀天剩下 的⼀半零⼀个。
到第10天早上想再吃时,见只剩下⼀个桃⼦了。
求第⼀天共摘了多少。
思路分析:采⽤逆向思维,从后往前推断,发现其中有相同的地⽅,即出现递推公式,可以采⽤递归⽅法。
令S10=1,容易看出S9=2(S10+1),简化⼀下S9=2S10+2S8=2S9+2…..Sn=2Sn+1+2下⾯我将解决这个问题。
(第⼀种为普通循环⽅式,第⼆种为递归⽅式)⽅法⼀:while#include<stdio.h>int main(){int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2;x2=x1;day--;}printf("the total is %d\n",x1);}⽅法⼆:递归#include<stdio.h>int sumPeach(int day);int main(){int sum;sum=sumPeach(1);printf("%d",sum);}int sumPeach(int day){if(day==10){return1;}elsereturn2*sumPeach(day+1)+2;}。
C语⾔程序设计50例(经典收藏)本篇⽂章是对C语⾔程序设计的50个⼩案例进⾏了详细的分析介绍,需要的朋友参考下【程序1】题⽬:有1、2、3、4个数字,能组成多少个互不相同且⽆重复数字的三位数?都是多少?1.程序分析:可填在百位、⼗位、个位的数字都是1、2、3、4。
组成所有的排列后再去 掉不满⾜条件的排列。
2.程序源代码:复制代码代码如下:#include "stdio.h"#include "conio.h"main(){int i,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);}getch();}==============================================================【程序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.程序源代码:复制代码代码如下:#include "stdio.h"#include "conio.h"main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0. 1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);getch();}==============================================================【程序3】题⽬:⼀个整数,它加上100后是⼀个完全平⽅数,再加上168⼜是⼀个完全平⽅数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开⽅,再将该数加上268后再开⽅,如果开⽅后 的结果满⾜如下条件,即是结果。
C语言程序设计例子在计算机科学和编程领域,C语言是一种广泛应用的编程语言。
它的简洁性和高效性使得它成为许多计算机程序的首选语言。
本文将介绍几个简单的C语言程序设计例子,以帮助读者更好地理解和掌握这门强大的编程语言。
1. 第一个例子:计算两个数字的和下面是一个简单的C程序,用于计算两个数字的和。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个数字:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个数字的和是:%d", sum);return 0;}```在这个例子中,我们使用了`printf`函数输出提示信息,并用`scanf`函数获取用户输入的两个数字。
然后,我们使用`+`运算符计算两个数字的和,并通过`printf`函数输出结果。
2. 第二个例子:计算数组元素的平均值下面是一个用C语言编写的程序,用于计算数组元素的平均值。
```c#include <stdio.h>#define SIZE 5int main() {int numbers[SIZE] = {5, 2, 8, 12, 3};int sum = 0;float average;for (int i = 0; i < SIZE; i++) {sum += numbers[i];}average = (float)sum / SIZE;printf("数组元素的平均值是:%.2f", average);return 0;}```在这个例子中,我们首先定义一个大小为5的整型数组`numbers`,并初始化数组的元素。
然后,我们使用`for`循环遍历数组,累加数组中的元素值。
c语言编程物理实例1. 物理实例简介在学习编程时,我们经常需要理解并运用物理上的概念,例如力、速度、加速度等。
本文将结合具体的物理实例,介绍如何使用C语言编写物理计算程序。
2. 斜抛运动斜抛运动是物理中一个基本的运动概念,指物体以一定初速度和初角度被抛向空中,然后受到重力的作用轨迹呈抛物线。
我们可以使用C语言计算斜抛运动中物体的运动轨迹和运动状态。
2.1 计算抛体的高度假设我们有一个初始速度v、抛射角度α的抛体,其高度h将受到重力g的作用而逐渐下降。
我们可以使用以下公式计算抛体在任意时间t的高度h:```cfloat h = v * sin(α) * t - g * t * t / 2;```其中,sin(α)为抛射角度α的正弦值,t为时间,g为重力加速度。
在代码中,我们可以定义常量来代替变量:```cconst float g = 9.8; // 重力加速度常量const float α = 30; // 抛射角度常量,单位为°const float v0 = 20; // 初始速度常量,单位为m/sfloat h = v0 * sin(α) * t - g * t * t / 2;```2.2 计算抛体的水平距离在斜抛运动中,抛体不仅会上升和下降,还会向前匀速运动。
抛体在任意时间t的水平距离x,可以使用以下公式计算:```cfloat x = v * cos(α) * t;```其中,cos(α)为抛射角度α的余弦值。
同样地,我们可以将公式中的变量替换为常量:```cfloat x = v0 * cos(α) * t;```2.3 计算抛体的运动状态我们可以通过计算抛体在任意时间t的高度和水平距离,来得到其在二维平面上的运动状态。
下面是一个简化的代码示例:```cconst float g = 9.8; // 重力加速度常量const float α = 30; // 抛射角度常量,单位为°const float v0 = 20; // 初始速度常量,单位为m/s// 循环计算抛体的运动状态for (float t = 0; t <= 5; t += 0.1) {float x = v0 * cos(α) * t;float h = v0 * sin(α) * t - g * t * t / 2;printf("时间:%1.1f秒,水平距离:%1.2f米,高度:%1.2f米\n", t, x, h);}```上述代码中,我们使用循环来计算抛体每时每刻的运动状态,并使用printf函数将结果输出到控制台。
以下是一个基于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仿真环境的使用方法。
main(){int i,j,k;for(i=0;i<=3;i++){for(j=0;j<=2-i;j++)printf(" ");for(k=0;k<=2*i;k++)printf("*");printf("\n");}for(i=0;i<=2;i++){for(j=0;j<=i;j++)printf(" ");for(k=0;k<=4-2*i;k++)printf("*");printf("\n");}}==============================================================【程序24】题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
1.程序分析:请抓住分子与分母的变化规律。
2.程序源代码:main(){int n,t,number=20;float a=2,b=1,s=0;for(n=1;n<=number;n++){s=s+a/b;t=a;a=a+b;b=t;/*这部分是程序的关键,请读者猜猜t的作用*/}printf("sum is %9.6f\n",s);for(i=0;i<5;i++)printf("\40:%d!=%d\n",i,fact(i));}int fact(j)int j;{int sum;if(j==0)sum=1;elsesum=j*fact(j-1);return sum;}==============================================================【程序27】题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
经典C语言程序设计实例讲解例子【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,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(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}-----------------------------------------------------------------------------【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
请看具体分析:2.程序源代码:#include "math.h"main(){long int i,x,y,z;for (i=1;i<100000;i++){ x=sqrt(i+100); /*x为加上100后开方后的结果*/y=sqrt(i+268); /*y为再加上168后开方后的结果*/if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/printf("\n%ld\n",i);}}-----------------------------------------------------------------------------【程序4】题目:输入某年某月某日,判断这一天是这一年的第几天?1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
2.程序源代码:main(){int day,month,year,sum,leap;printf("\nplease input year,month,day\n");scanf("%d,%d,%d",&year,&month,&day);switch(month)/*先计算某月以前月份的总天数*/{case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf("data error");break;}sum=sum+day; /*再加上某天的天数*/if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/ leap=1;elseleap=0;if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/sum++;printf("It is the %dth day.",sum);}-----------------------------------------------------------------------------【程序5】题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y 则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
2.程序源代码:main(){int x,y,z,t;scanf("%d%d%d",&x,&y,&z);if (x>y){t=x;x=y;y=t;} /*交换x,y的值*/if(x>z){t=z;z=x;x=t;}/*交换x,z的值*/if(y>z){t=y;y=z;z=t;}/*交换z,y的值*/printf("small to big: %d %d %d\n",x,y,z);}-----------------------------------------------------------------------------【程序6】题目:用*号输出字母C的图案。
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
2.程序源代码:#include "stdio.h"main(){printf("Hello C-world!\n");printf(" ****\n");printf(" *\n");printf(" * \n");printf(" ****\n");}-----------------------------------------------------------------------------【程序7】题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!1.程序分析:字符共有256个。
不同字符,图形不一样。
2.程序源代码:#include "stdio.h"main(){char a=176,b=219;printf("%c%c%c%c%c\n",b,a,a,a,b);printf("%c%c%c%c%c\n",a,b,a,b,a);printf("%c%c%c%c%c\n",a,a,b,a,a);printf("%c%c%c%c%c\n",a,b,a,b,a);printf("%c%c%c%c%c\n",b,a,a,a,b);}-----------------------------------------------------------------------------【程序8】题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
2.程序源代码:#include "stdio.h"main(){int i,j,result;printf("\n");for (i=1;i<10;i++){ for(j=1;j<10;j++){result=i*j;printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/}printf("\n");/*每一行后换行*/}}-----------------------------------------------------------------------------【程序9】题目:要求输出国际象棋棋盘。
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
2.程序源代码:#include "stdio.h"main(){int i,j;for(i=0;i<8;i++){for(j=0;j<8;j++)if((i+j)%2==0)printf("%c%c",219,219);elseprintf(" ");printf("\n");}}-----------------------------------------------------------------------------【程序10】题目:打印楼梯,同时在楼梯上方打印两个笑脸。
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。