初学编程100个代码注释(初学编程100个代码注释视频)
在线求一个100行左右的C++程序代码,希望每一步有详细的注释,高分采纳
俄罗斯方块代码
第一个Cpp
#include ?conio.h
#include stdlib.h
#includestdio.h
#include windows.h
#include mmsystem.h
#pragma comment(lib,"winmm.lib") ? ? ? ? //播放背景音乐的头文件
#include "colorConsole.h"
#includetime.h
#define SQUARE_COLOR BACKGROUD_BLUE|BACKGROUD_RED| BACKGROUD_INTENSITY ? ? ?//背景颜色
#define SQUARE_COLOR FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_INTENSITY ?//方块的颜色
#define up ? ? ?72
#define down ? ?80
#define left ? ?75
#define right ? 77
#define esc ? ? 27
#define MAPW ? ?15 ? ? //地图的宽度
#define MAPH ? ?25 ? ? //地图的高度
void initiate1();
int * build(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//创建方块 ? //初始化工作
BOOL isavailable(int a[],int x,int y,int w,int h); //判定是否能放下
void drawblocks(int a[],int w,int h,int x,int y,WORD wColors[],int nColors);
void delete_cache(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //清除键盘缓冲区
void revolve(int a[][4],int w,int h,int *x,int y); ? ?//转动方块
void pro();
void end();
void delete_blocks(int *a,int w,int h,int x,int y);
void gameover();
void deletefull_line(int m[][MAPW],int row,int w,int h); //消除一行
int dx=30,dy=5; ? ? ? ? ? ? //屏幕上的偏移量
int score=0,level=0;
int map[MAPH][MAPW];
int a1[4][4]={{1},{1,1,1}};
int a2[4][4]={{0,1},{1,1,1}};
int a3[4][4]={{1,1},{0,1,1}};
int a4[4][4]={{0,0,1},{1,1,1}};
int a5[4][4]={{0,1,1},{1,1}};
int a6[4][4]={{1,1,1,1}};
int a7[4][4]={{1,1},{1,1}};
int a[4][4];
int main()
{
HANDLE handle;
handle=initiate();
WORD wColors[1]={FOREGROUND_BLUE| FOREGROUND_GREEN|FOREGROUND_INTENSITY };
while(1)
{
? ?sndPlaySound("Resource\\Just Dance.wav",SND_LOOP|SND_ASYNC);//用异步方式播放音乐,PlaySound函数在开始播放后立即返回
? ?system("CLS");
int n=0;
printf("目录\n1.开始游戏\n2.退出游戏\n\n\n");
scanf("%d",n);
switch(n)
{
case 1:
system("CLS");
textout(handle,22,6,wColors+2,1,"请选择游戏等级:");
textout(handle,32,8,wColors+2,1,"1.初级");
textout(handle,32,10,wColors+2,1,"2.中级");
textout(handle,32,12,wColors+2,1,"3.高级");
while(1)
{
char choice;
choice=_getch();
if(choice=='1')
{
textout(handle,22,6,wColors+2,1,"开始游戏,初级");
textout(handle,32,8,wColors+2,1," ? ? ? ? ? ? ? ?");
textout(handle,32,10,wColors+2,1," ? ? ? ? ? ? ? ?");
textout(handle,32,12,wColors+2,1," ? ? ? ? ? ? ? ?");
level=0,score=0;
Sleep(2000);
textout(handle,22,6,wColors+2,1," ? ? ? ? ? ? ? ?");
break;
}
else if(choice=='2')
{
textout(handle,22,6,wColors+2,1,"开始游戏,中级");
textout(handle,32,8,wColors+2,1," ? ? ? ? ? ? ? ?");
textout(handle,32,10,wColors+2,1," ? ? ? ? ? ? ? ?");
textout(handle,32,12,wColors+2,1," ? ? ? ? ? ? ? ?");
level=2,score=20;
Sleep(2000);
textout(handle,22,6,wColors+2,1," ? ? ? ? ? ? ? ?");
break;
}
else if(choice=='3')
{
textout(handle,22,6,wColors+2,1,"开始游戏,高级");
textout(handle,32,8,wColors+2,1," ? ? ? ? ? ? ? ?");
textout(handle,32,10,wColors+2,1," ? ? ? ? ? ? ? ?");
textout(handle,32,12,wColors+2,1," ? ? ? ? ? ? ? ?");
level=4,score=40;
Sleep(2000);
textout(handle,22,6,wColors+2,1," ? ? ? ? ? ? ? ?");
break;
}
else if(choice!='1'choice!='2'choice!='3')
continue;
}
pro();
break;
case 2:
return 0;
default:
printf("错误,按键继续");
while(!_kbhit());
}
}
}
void pro() ? ? ? ? ? ? ? ? ? ? ? ? ? ?//游戏主题
{
initiate1();
int *b=NULL;
b=build(); ? //创建方块
int sign,blank,x,y;
while(1)
{
for(int i=0;i4;i++) ? ? ? ? ?//复制方块
for(int j=0;j4;j++)
if(a[i][j]=*(b+i*4+j)) ?blank=i;
? y=1-blank;x=4;
delete_blocks(a[0][0],4,4,16,10);
b=build();
HANDLE handle;
handle=initiate();
WORD wColors[1]={FOREGROUND_BLUE| FOREGROUND_GREEN|FOREGROUND_INTENSITY };
drawblocks(b,4,4,16,10,wColors,1);
wColors[0]=SQUARE_COLOR;
drawblocks(a[0][0],4,4,x,y,wColors,1);
delete_cache();
char string[5];
wColors[0]=FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_INTENSITY;
textout(handle,dx-10,8+dy,wColors,1,itoa(score,string,10));
textout(handle,dx-10,14+dy,wColors,1,itoa(level,string,10));
sign=1;
while(sign)
{
int delay=0,max_delay=100-10*level; //延迟量
while(delaymax_delay)
{
if(_kbhit()) ?//用if避免按住键使方块卡住
{
int draw=0;
int key=_getch();
switch (key)
{
case up:
delete_blocks(a[0][0],4,4,x,y);
revolve(a,4,4,x,y);
draw=1;
break;
case down:
delay=max_delay;
break;
case left:
if(isavailable(a[0][0],x-1,y,4,4))
{
delete_blocks(a[0][0],4,4,x,y);
x--;
draw=1;
}
break;
case right:
if(isavailable(a[0][0],x+1,y,4,4))
{
delete_blocks(a[0][0],4,4,x,y);
x++;
draw=1;
}
break;
case 32://32 是空格键的ASCII码,按空格键暂停
? while(1)
?{
?textout(handle,dx,-2+dy,wColors,1,"Press any key to continue");
?Sleep(200);
? ? ? ? ? ? ? ? ? ? ? ? ?textout(handle,dx,-2+dy,wColors,1," ? ? ? ? ? ? ? ? ? ? ? ? ? ");
? ? ? ? ? ? ? ? ? ? ? ? ?Sleep(200);
?if(_kbhit())
?{
?draw=1;
?break;
?}
?}
? ? ? ? ? ? ? ? ? ? ? break;
case esc://按键退出游戏
exit(EXIT_SUCCESS); ?
}
if(draw)
{
HANDLE handle;
handle=initiate();
WORD wColors[1]={SQUARE_COLOR};
drawblocks(a[0][0],4,4,x,y,wColors,1);
draw=0;
}
}
_sleep(5);delay++;
}
if(isavailable(a[0][0],x,y+1,4,4)) //是否能下移
{
delete_blocks(a[0][0],4,4,x,y);
y++;
HANDLE handle;
handle=initiate();
WORD wColors[1]={SQUARE_COLOR};
drawblocks(a[0][0],4,4,x,y,wColors,1);
}
else
{
sign=0; ? ?//标记,使跳出 while(sign) 循环,产生新方块
if(y=1)
{
system("CLS");
HANDLE handle;
? ? ? ? ? ? ? ?handle=initiate();
? ? ? ? ? ? ? ?WORD wColors[1]={FOREGROUND_RED| FOREGROUND_GREEN};
? ? ? ? ? ? ? ?textout(handle,4+dx,6+dy,wColors,1,"GAME OVER!!!");
textout(handle,4+dx,8+dy,wColors,1,"分数:");
textout(handle,10+dx,8+dy,wColors,1,itoa(score,string,10));
textout(handle,4+dx,10+dy,wColors,1,"制作者:***");
? ? delete_cache();
? ? ? ? ? ? ? ? exit(EXIT_SUCCESS);
} ? ? //是否结束
for(int i=0;i4;i++) ? ? //放下方块
for(int j=0;j4;j++)
if(a[i][j]((i+y)MAPH-1)((j+x)MAPW-1))
map[i+y][j+x]=a[i][j];
int full,k=0;
for( i=y;imin(y+4,MAPH-1);i++)
{
full=1;
for(int j=1;j14;j++)
if(!map[i][j]) full=0;
if(full) ? //消掉一行
{
deletefull_line(map,i,MAPW,MAPH);
k++;
score=score+k;
level=min(score/10,9);
}
}
}
}
}
}
void initiate1() ? ? ? ?//初始化
{
int i;
for(i=0;i25;i++)
{
map[i][0]=-2;
map[i][14]=-2;
}
for(i=0;i15;i++)
{
map[0][i]=-1;
map[24][i]=-1;
}
map[0][0]=-3;
map[0][14]=-3;
map[24][0]=-3;
map[24][14]=-3;
HANDLE handle;
handle=initiate();
WORD wColors[1]={FOREGROUND_GREEN| FOREGROUND_BLUE|FOREGROUND_INTENSITY};
textout(handle,dx-10,6+dy,wColors,1,"SCORE");
textout(handle,dx-10,12+dy,wColors,1,"LEVEL");
textout(handle,32+dx,8+dy,wColors,1,"NEXT");
wColors[0]=FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY;
drawblocks(map[0][0],15,25,0,0,wColors,1);
textout(handle,dx,dy,wColors,1,"◎═════════════◎");
wColors[0]=FOREGROUND_BLUE| FOREGROUND_GREEN|FOREGROUND_INTENSITY;
textout(handle,dx+8,dy+5,wColors,1,"按任意键开始");
wColors[0]=FOREGROUND_BLUE|FOREGROUND_RED|FOREGROUND_INTENSITY ;
textout(handle,dx+7,dy-3,wColors,1,"制作者:***");
int x=_getch();
srand(time(NULL));
textout(handle,dx+8,dy+5,wColors,1," ? ? ? ? ? ?");
}
int * build() ? ? ? ? ? ?//创建方块
{
int * a=NULL;
int c=rand()%7;
switch(c)
{
case 0:
a=a1[0][0];break;
case 1:
a=a2[0][0];break;
case 2:
a=a3[0][0];break;
case 3:
a=a4[0][0];break;
case 4:
a=a5[0][0];break;
case 5:
a=a6[0][0];break;
case 6:
a=a7[0][0];break;
}
return a;
}
void drawblocks(int a[],int w,int h,int x,int y,WORD wColors[],int nColors) ? ? //画出方块
{
HANDLE handle;
handle = initiate();
int temp;
for(int i=0;ih;i++)
for(int j=0;jw;j++)
if((temp=a[i*w+j])y+i0)
{
if(temp==-3)
{
textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"◎");
_sleep(30);
}
else if(temp==-2)
{
textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"║");
_sleep(30);
}
else if(temp==1)
textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"◎");
else if(temp==-1)
{
textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"═");
_sleep(30);
}
}
}
void delete_cache() ? ? ? //清除缓冲区
{
while(_kbhit())
{
_getch();
}
}
void delete_blocks(int *a,int w,int h,int x,int y) ? ? ? ?//覆盖方块
{
HANDLE handle;
handle=initiate();
WORD wColors[1]={SQUARE_COLOR};
for(int i=0;ih;i++)
for(int j=0;jw;j++)
if(a[i*w+j]i+y0)
textout(handle,2*(x+j)+dx,y+i+dy,wColors,1," ?");
}
void revolve(int a[][4],int w,int h,int *x,int y) ? ? ? ? ? ? ? ? ? ? ? //转动方块
{
int b[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
int sign=0,line=0;
for(int i=h-1;i=0;i--)
{
for(int j=0;jw;j++)
if(a[i][j])
{
b[j][line]=a[i][j];
sign=1;
}
if(sign)
{
line++;
sign=0;
}
}
for(i=0;i4;i++)
if(isavailable(b[0][0],*x-i,y,w,h))
{
*x-=i;
for(int k=0;kh;k++)
for(int j=0;jw;j++)
a[k][j]=b[k][j];
break;
}
}
void deletefull_line(int m[][MAPW],int row,int w,int h) ? ? ? ? ? ? ? ? ? //消除满行的方块
{
HANDLE handle;
handle=initiate();
WORD wColors[1]={SQUARE_COLOR};
textout(handle,2+dx,row+dy,wColors,1,"﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌");
_sleep(100);
int i;
for(i=row;i1;i--)
{
delete_blocks(m[i][1],MAPW-2,1,1,i);
for(int j=1;jMAPW-1;j++)
m[i][j]=m[i-1][j];
drawblocks(m[i][1],MAPW-2,1,1,i,wColors,1);
}
for(i=1;iMAPW-1;i++)
m[1][i]=0;
}
BOOL isavailable(int a[],int x,int y,int w,int h) ? ? ? ? ? ? ? ? ? ? ?
{
for(int i=max(y,1);iy+h;i++)
for(int j=x;jx+w;j++)
if(map[i][j]a[w*(i-y)+j-x])
return 0;
return 1;
}
第二个cpp:
#include "colorConsole.h"
HANDLE initiate()
{
HANDLE hOutput;
hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
return hOutput;
}
BOOL textout(HANDLE hOutput,int x,int y,WORD wColors[],int nColors,LPTSTR lpszString)
{
? ?DWORD cWritten;
? ?BOOL fSuccess;
? ?COORD coord;
?
coord.X = x; ? ? ? ? ? ? ?// start at first cell
? ?coord.Y = y; ? ? ? ? ? ? ?// ? of first row ? ? ?
? ?fSuccess = WriteConsoleOutputCharacter(
? ? ? ?hOutput, ? ? ? ? ? ? ?// screen buffer handle
? ? ? ?lpszString, ? ? ? ? ? // pointer to source string
? ? ? ?lstrlen(lpszString), ?// length of string
? ? ? ?coord, ? ? ? ? ? ? ? ?// first cell to write to
? ? ? ?cWritten); ? ? ? ? ? // actual number written
? ?if (! fSuccess)
? ? ? ?cout"error:WriteConsoleOutputCharacter"endl;
for (;fSuccess coord.X lstrlen(lpszString)+x; coord.X += nColors)
? ?{
? ? ? ?fSuccess = WriteConsoleOutputAttribute(
? ? ? ? ? ?hOutput, ? ? ? ? ?// screen buffer handle
? ? ? ? ? ?wColors, ? ? ? ? ?// pointer to source string
? ? ? ? ? ?nColors, ? ? ? ? ? ? ? ?// length of string
? ? ? ? ? ?coord, ? ? ? ? ? ?// first cell to write to
? ? ? ? ? ?cWritten); ? ? ? // actual number written
? ?}
? ?if (! fSuccess)
? ? cout"error:WriteConsoleOutputAttribute"endl;
return 0;
}
初学编程100个代码( C语言编程)?
、学代码:前提是你的复有?个?较系统的学习.认真完成每?个课程中的案例.
2、读代码:分制两步?:前期能读懂??写的代码.2113 后期能读懂他?写的代码和?致的知道底层的某些源码的含义.多去5261看开发?档(开发?档建议使?官?提供的4102英?版、不要使?中???害??)
怎样制作,编程码,写自己想说的话
怎样编写程序代码(一些简单的代码编程)
茉莉花开 ? 2023 年 01 月 09 日 am 9:58 ? 生活资讯
?
如果您对创建计算机程序、移动应用程序、网站、游戏或任何其他软件感兴趣,则需要学习如何编程。程序是使用编程语言创建的。在计算机科学飞速发展的今天,编码能力变得越来越重要。如果您以前从未编程过,请不要惊慌。今天就跟大家聊聊,作为新手,如何学习编程?
注意:本文仅提供学习思路,并非具体的手把手解决方案。
1.选择语言
1) 确定您感兴趣的领域。
您可以从任何编程语言开始学习(尽管有些语言比其他语言“更容易”),因此请先问问自己,您通过学习编程语言想要达到什么目的?这将帮助您确定应该从事哪种类型的编程,并为您提供一个良好的起点。
2) 考虑从“更简单”的语言开始。
无论您的决定如何,您都可以考虑从高级、更简单的语言开始。这些语言对初学者特别有用,因为它们的基本概念和思维过程几乎可以应用于任何语言。
该类别中的两种流行语言是 Python 和 Ruby。这两种语言都是面向对象的 Web 应用程序语言,它们使用非常易读的语法。 “面向对象”意味着该语言是围绕“对象”的概念构建的,即数据的集合及其操作。这个概念在C、ja、Objtovi-C和PHP等很多高级编程语言中都有应用。
3) 阅读各种语言的基础教程。
如果您不确定应该从哪种语言开始学习,请阅读一些不同语言的教程。如果一种语言比其他语言更有意义,请尝试一下,看看它是否适合。网上有很多相关的教程。
Python——一门很好的入门语言,熟悉了就会感受到它的强大。用于许多网络应用程序和许多游戏领域。 Ja – 用于无数类型的程序,从游戏到网络应用程序再到 ATM 软件。 HTML – 任何网络开发人员的基本起点。在进行任何其他类型的 Web 开发之前,掌握 HTML 是至关重要的。 C 语言 – 一种较旧的语言,C 仍然是一个强大的工具,并且是 C、Objtovi-C 的基础。
2.从小处着手
1) 学习语言的核心概念。
虽然此步骤的应用部分会根据您选择的语言而有所不同,但所有编程语言都共享一些对构建程序至关重要的基本概念。及早学习和掌握这些概念将使解决问题和创建强大高效的代码变得更加容易。以下是一些不同语言的一些核心概念:
变量 – 变量是一种存储和引用不断变化的数据的方式。变量可以被操作,通常有定义的类型,如“整数”、“字符”和其他类型,这些类型决定了可以存储的数据类型。在编码时,变量通常具有允许读者以某种方式识别它们的名称。这使得理解变量如何与其余代码交互变得更容易。条件语句- 条件语句是根据语句是否为真执行的操作。条件语句的常见形式是“If-else”语句。如果这个陈述为真(例如 x = 1),那么会发生一件事。如果该语句为假(例如 x != 1),则会发生其他情况。函数或子例程 – 根据语言的不同,这个概念的名称也不同。它也可以是“过程”、“方法”或“可调用单元”。这本质上是一个大程序中的一个小程序。一个函数可以被一个程序多次“调用”,允许程序员高效地创建复杂的程序。数据输入——这是一个广泛的概念,几乎在所有语言中都有使用。它包括处理用户输入和存储该数据。如何收集这些数据取决于程序的类型和用户可用的输入(键盘、文件等)。这与输出密切相关,输出是将结果返回给用户的方式,无论是显示在屏幕上还是传递到文件中。
2) 安装任何必要的软件。
许多编程语言都需要编译器,编译器是将代码翻译成机器可以理解的语言的程序。其他语言,例如 Python,使用无需编译即可立即执行程序的解释器。
有些语言有IDE(集成开发环境),通常包含代码编辑器、编译器和/或解释器以及调试器。这允许程序员在一个地方执行任何必要的功能。 IDE 还可能包含对象层次结构和目录的可视化表示。
网上有各种各样的代码编辑器。这些程序提供不同的语法高亮方法,并提供其他对开发人员友好的工具。
3.创建您自己的程序
1) 一次专注于一个概念。
任何语言的开始都是教大家“Hello World”。这是一个非常简单的程序,它在屏幕上显示文本“Hello, World”(或其他一些变体)。这个程序是教子程序员如何创建一个基本的、功能性的程序,以及如何处理显示输出。通过更改文本,您可以看到程序如何处理底层数据。
2)通过解构网上的例子来学习。
几乎每种编程语言都有数以千计的代码示例。使用这些示例来检查语言的各个方面如何工作以及不同部分如何交互。从各种示例中获取点点滴滴来创建您自己的程序。
3) 检查语法。
语法是一种语言的编写方式,以便编译器或解释器能够理解它。每种语言都有独特的语法,尽管某些元素可以在多种语言之间共享。学习语法对于学习如何使用一种语言进行编程至关重要。
4)尝试改变。
修改示例程序并测试结果。通过试验,您可以比阅读一本书更快地了解哪些有效,哪些无效。不要害怕破坏你的程序;学习修复 bug 是任何开发过程的重要组成部分,任何新东西第二次几乎都不会正确运行。所以不要害怕犯错!
5) 开始练习调试。
在编程的时候,总会遇到bug。这些是几乎可以出现在任何地方的程序中的错误。错误可以是程序中无害的异常,也可以是阻止程序编译或运行的重大错误。查找和修复这些错误是软件开发周期中的一个主要过程,因此请尽早习惯。
6) 注释代码。
几乎所有的编程语言都有一个“注释”功能,可以让你包含没有经过解释器或编译器处理的文本。这允许您对代码的作用留下简短但清晰的语言解释。这不仅可以帮助您记住您的代码在大型程序中的作用,而且在协作环境中也是必不可少的实践,因为它可以帮助其他人理解您的代码的作用。
4.经常练习
1) 每天敲代码。
首先掌握一门编程语言是需要时间的。即使是像 Python 这样简单的语言,可能只需要一两天就能理解基本语法,但要真正精通也需要很多时间。与任何技能一样,练习是变得更加熟练的关键。尝试每天至少花一些时间来编码,即使在工作和晚餐之间只有一个小时。
2) 为您的计划设定目标。
通过设定具有挑战性的目标和解决方案,您可以开始解决问题。试着想一个基本的应用程序,比如计算器,并开发一种方法来实现它。使用您学到的语法和概念并将它们应用到实际应用程序中。
3) 与他人交谈。
有许多专门针对特定语言的编程社区。寻找并参与社区可以帮助您的学习。它允许您在学习过程中获取各种示例和工具。阅读其他程序员的代码也可以开悟,帮助你掌握还没有掌握的概念。
4) 挑战自己,让它变得有趣。
尝试做一些你还不会做的事情。研究完成任务的方法,然后尝试在您自己的程序中实现它们。尽量避免对“基本上”有效的程序感到满意。尽你所能确保每个方面都完美无缺。
5.参加一些培训班,扩充自己的知识面
网上有很多针对性强、质量高的课程,可以提高我们的编程能力。这些对于新程序员来说非常有用,因为您可以从经验丰富的程序员那里获得实践帮助,并与其他正在学习的程序员建立联系。下面的C语言课也是专门为0-基础初学者设计的系统课。课程共有三个视频,包括软件和源代码。互动课堂,边玩边练,生动有趣,有老师答疑解惑,不怕学。同时可以参与学习社区交流,收获志同道合的朋友:
说实话,网上的编程课程真的太多了。有针对性的精品课程可以提高我们的编程能力,让我们更快的掌握相关技能。但选择是一门艺术。面对琳琅满目的编程课程,我们应该如何选择呢?以时间为代价盲目学习这些混合资源是一种浪费。
6.运用您的技能
1) 参加一些培训计划。
虽然不是必须的,但是上面介绍的一些课程可以让你接触到各种语言,并且可以在老师的带领下进行实践练习,有更明确更有针对性的方向性也能有所帮助你与专业人士和其他学生建立联系。
2) 创建文件夹。
在您创建程序和扩展您的知识时,请确保将您所有的优秀作品保存在一个文件夹中。您可以向招聘人员和面试官展示您的工作成果。
3) 做一些自由职业。
程序员,尤其是移动应用程序开发人员,有一个非常大的自由市场。做一些小的自由职业并学习商业编程是如何工作的。
4) 开发自己的软件。
您不必为公司工作。如果你有能力,你可以自己开发软件并发布。准备好为您发布的任何软件提供技术支持,因为客户希望他们购买的软件能够真正发挥作用。
关于如何编写程序代码的介绍到此结束(初学者100码)。
文章来源于网络或者作者投稿,若有侵权请联系删除,作者:茉莉花开,如若转载,请注明出处:
赞 (0)
生成海报
京润珍珠是哪国品牌(京润珍珠是什么牌子)
上一篇2023 年 01 月 09 日 am 9:53
腰有伤可以做平板支撑吗(做平板支撑会伤腰吗)
下一篇 2023 年 01 月 09 日 am 10:03
相关推荐
?
应对极寒天气的方法(极寒天气的应急预案)
极寒天气是很多人热议的话题。目前新疆天气很冷,此时需要注意防范。那么,极寒天气是什么现象呢?极端寒冷的天气应该储存哪些物资?一起来看看点创网带来的详细介绍吧! 什么是极寒天气现象 …
生活资讯 2022 年 12 月 17 日
?
单片机c语言编程100个实例
51单片机C语言编程实例 基础知识:51单片机编程基础 单片机的外部结构: 1. DIP40双列直插; 2. P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平) 3. 电源VCC(PIN40)和地线GND(PIN20); 4. 高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位) 5. 内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍) 6. 程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序) 7. P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务) 1. 四个8位通用I/O端口,对应引脚P0、P1、P2和P3; 2. 两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1) 3. 一个串行通信接口;(SCON,SBUF) 4. 一个中断控制器;(IE,IP) 针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。 C语言编程基础: 1. 十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。 2. 如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。 3. ++var表示对变量var先增一;var—表示对变量后减一。 4. x |= 0x0f;表示为 x = x | 0x0f; 5. TMOD = ( TMOD 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。 6. While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;} 在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚) 代码 1. #include AT89x52.h //该头文档中有单片机内部资源的符号化定义,其中包含P1.3 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P1_3 = 1; //给P1_3赋值1,引脚P1.3就能输出高电平VCC 5. While( 1 ); //死循环,相当 LOOP: goto LOOP; 6. } 注意:P0的每个引脚要输出高电平时,必须外接上拉电阻(如4K7)至VCC电源。 在某引脚输出低电平的编程方法:(比如P2.7引脚) 代码 1. #include AT89x52.h //该头文档中有单片机内部资源的符号化定义,其中包含P2.7 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P2_7 = 0; //给P2_7赋值0,引脚P2.7就能输出低电平GND 5. While( 1 ); //死循环,相当 LOOP: goto LOOP; 6. } 在某引脚输出方波编程方法:(比如P3.1引脚) 代码 1. #include AT89x52.h //该头文档中有单片机内部资源的符号化定义,其中包含P3.1 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 5. { 6. P3_1 = 1; //给P3_1赋值1,引脚P3.1就能输出高电平VCC 7. P3_1 = 0; //给P3_1赋值0,引脚P3.1就能输出低电平GND 8. } //由于一直为真,所以不断输出高、低、高、低……,从而形成方波 9. } 将某引脚的输入电平取反后,从另一个引脚输出:( 比如 P0.4 = NOT( P1.1) ) 代码 1. #include AT89x52.h //该头文档中有单片机内部资源的符号化定义,其中包含P0.4和P1.1 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P1_1 = 1; //初始化。P1.1作为输入,必须输出高电平 5. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 6. { 7. if( P1_1 == 1 ) //读取P1.1,就是认为P1.1为输入,如果P1.1输入高电平VCC 8. { P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND 2 51单片机C语言编程实例 9. else //否则P1.1输入为低电平GND 10. //{ P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND 11. { P0_4 = 1; } //给P0_4赋值1,引脚P0.4就能输出高电平VCC 12. } //由于一直为真,所以不断根据P1.1的输入情况,改变P0.4的输出电平 13. } 将某端口8个引脚输入电平,低四位取反后,从另一个端口8个引脚输出:( 比如 P2 = NOT( P3 ) ) 代码 1. #include AT89x52.h //该头文档中有单片机内部资源的符号化定义,其中包含P2和P3 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P3 = 0xff; //初始化。P3作为输入,必须输出高电平,同时给P3口的8个引脚输出高电平 5. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 6. { //取反的方法是异或1,而不取反的方法则是异或0 7. P2 = P3^0x0f //读取P3,就是认为P3为输入,低四位异或者1,即取反,然后输出 8. } //由于一直为真,所以不断将P3取反输出到P2 9. } 注意:一个字节的8位D7、D6至D0,分别输出到P3.7、P3.6至P3.0,比如P3=0x0f,则P3.7、P3.6、P3.5、P3.4四个引脚都输出低电平,而P3.3、P3.2、P3.1、P3.0四个引脚都输出高电平。同样,输入一个端口P2,即是将P2.7、P2.6至P2.0,读入到一个字节的8位D7、D6至D0。 第一节:单数码管按键显示 单片机最小系统的硬件原理接线图: 1. 接电源:VCC(PIN40)、GND(PIN20)。加接退耦电容0.1uF 2. 接晶体:X1(PIN18)、X2(PIN19)。注意标出晶体频率(选用12MHz),还有辅助电容30pF 3. 接复位:RES(PIN9)。接上电复位电路,以及手动复位电路,分析复位工作原理 4. 接配置:EA(PIN31)。说明原因。 发光二极的控制:单片机I/O输出 将一发光二极管LED的正极(阳极)接P1.1,LED的负极(阴极)接地GND。只要P1.1输出高电平VCC,LED就正向导通(导通时LED上的压降大于1V),有电流流过LED,至发LED发亮。实际上由于P1.1高电平输出电阻为10K,起到输出限流的作用,所以流过LED的电流小于(5V-1V)/10K = 0.4mA。只要P1.1输出低电平GND,实际小于0.3V,LED就不能导通,结果LED不亮。 开关双键的输入:输入先输出高 一个按键KEY_ON接在P1.6与GND之间,另一个按键KEY_OFF接P1.7与GND之间,按KEY_ON后LED亮,按KEY_OFF后LED灭。同时按下LED半亮,LED保持后松开键的状态,即ON亮OFF灭。 代码 1. #include at89x52.h 2. #define LED P1^1 //用符号LED代替P1_1 3. #define KEY_ON P1^6 //用符号KEY_ON代替P1_6 4. #define KEY_OFF P1^7 //用符号KEY_OFF代替P1_7 5. void main( void ) //单片机复位后的执行入口,void表示空,无输入参数,无返回值 6. { 7. KEY_ON = 1; //作为输入,首先输出高,接下KEY_ON,P1.6则接地为0,否则输入为1 8. KEY_OFF = 1; //作为输入,首先输出高,接下KEY_OFF,P1.7则接地为0,否则输入为1 9. While( 1 ) //永远为真,所以永远循环执行如下括号内所有语句 10. { 11. if( KEY_ON==0 ) LED=1; //是KEY_ON接下,所示P1.1输出高,LED亮 12. if( KEY_OFF==0 ) LED=0; //是KEY_OFF接下,所示P1.1输出低,LED灭 13. } //松开键后,都不给LED赋值,所以LED保持最后按键状态。 14. //同时按下时,LED不断亮灭,各占一半时间,交替频率很快,由于人眼惯性,看上去为半亮态 15. } 数码管的接法和驱动原理 一支七段数码管实际由8个发光二极管构成,其中7个组形构成数字8的七段笔画,所以称为七段数码管,而余下的1个发光二极管作为小数点。作为习惯,分别给8个发光二极管标上记号:a,b,c,d,e,f,g,h。对应8的顶上一画,按顺时针方向排,中间一画为g,小数点为h。 我们通常又将各二极与一个字节的8位对应,a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7),相应8个发光二极管正好与单片机一个端口Pn的8个引脚连接,这样单片机就可以通过引脚输出高低电平控制8个发光二极的亮与灭,从而显示各种数字和符号;对应字节,引脚接法为:a(Pn.0),b(Pn.1),c(Pn.2),d(Pn.3),e(Pn.4),f(Pn.5),g(Pn.6),h(Pn.7)。 如果将8个发光二极管的负极(阴极)内接在一起,作为数码管的一个引脚,这种数码管则被称为共阴数码管,共同的引脚则称为共阴极,8个正极则为段极。否则,如果是将正极(阳极)内接在一起引出的,则称为共阳数码管,共同的引脚则称为共阳极,8个负极则为段极。 以单支共阴数码管为例,可将段极接到某端口Pn,共阴极接GND,则可编写出对应十六进制码的七段码表字节数据
用C语言写一个小程序(一个小功能就可以了),要求:100行代码左右,不要太多,要有注释,谢谢~
回#includestdio.h //标准输入、输出头文件
#includestring.h //包含字符串函数处理头文件
#includestdlib.h //包含动态存储与释放函数头文件
#define N 10000
struct air //定义结构体数组
{
int num;
char start[20];
char over[20];
char time[10];
int count;
}s[N];
int i;
int m=0;
#define PRINT "%-d%12s%12s%10s%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //定义输出格式
void input(); //输入航班信息
void print(); //输出航班信息
void save(); //保存航班信息
void read(); //读取航班信息
void search(); //查找航班信息
void shanchu(); //删除航班信息
void dingpiao(); //订票信息
void tuipiao(); //退票信息
void xiugai(); //修改信息
void main()
{
int j;
printf("================================================================================\n");
do
{
printf(" 1.输入航班信息 \n\n"
" 2.浏览航班信息 \n\n"
" 3.修改航班信息 \n\n"
" 4.查找航班信息 \n\n"
" 5.删除航班信息 \n\n"
" 6.订票信息 \n\n"
" 7.退票信息 \n\n"
" 0.退出 \n\n");
printf("================================================================================\n");
printf("请在0-7中选择以回车键结束:\n\n");
scanf("%d",j);
switch(j)
{
case 1: input();//调用输入模块
break;
case 2:print();//调用打印模块
break;
case 3:xiugai();//调用修改模块
break;
case 4:search();//调用查找模块
break;
case 5:shanchu(); //调用删除模块
break;
case 6:dingpiao();//调用订票模块
break;
case 7:tuipiao();//调用退票模块
break;
case 0:;
break;
}
}while(j!=0); //判断结束
printf("谢谢使用,再见!\n");
}//主函数结束
void input()//打印模块程序
{
int y;
printf("请依次输入航班信息(机票数位0结束输入):\n\n"
"完成输入信息请键入w以回车键结束\n\n"); //打印提示信息
printf("--------------------------------------------------------------------------\n");
for(i=0;iN;i++)
{
printf("请输入航班号:\n");
scanf("%d",s[i].num); //读取航班号
printf("请输入起始站:\n");
scanf("%s",s[i].start);//读取起始站
printf("请输入终点站:\n");
scanf("%s",s[i].over);//读取终点站
printf("请输入时间:\n");
scanf("%s",s[i].time);//读取时间
printf("请输入机票数(机票数为0结束输入):\n",m);
scanf("%d",s[i].count);//读取机票数
m++;
printf("第%d个信息已经输完是否继续?按任意键继续,按 0结束",m);
scanf("%d",y);
if(y==0)
{
save();//将结构体信息存盘
print();//输出输入的航班信息
break;
}
}
}
void save()//保存模块程序
{
FILE *fp,*fp1;//定义文件指针
if((fp=fopen("chen.dat","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!\n\n");//打印出错提示
getchar();
return;
}
if((fp1=fopen("hao.dat","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!\n\n");//打印出错提示
getchar();
return;
}
for(i=0;im;i++)
if(fwrite(s[i],sizeof(struct air),1,fp)==0)//向文件写入数据,并判断是否出错
printf("向文件输入数据失败!\n\n");
fprintf(fp1,"%d",m);
fclose(fp);//关闭文件
fclose(fp1);//关闭文件
}
void read()//从文件读取信息模块
{
FILE *fp,*fp1;//定义文件指针
if((fp=fopen("chen.dat","rb"))==NULL)//打开文件,并判断是否出错
{
printf("出错,请检查文件是否存在,按任意键返回住菜单");//打印出错提示
getchar();
}
if((fp1=fopen("hao.dat","rb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!\n\n");//打印出错提示
getchar();
return;
}
fscanf(fp1,"%d",m);
fclose(fp1);//关闭文件
for(i=0;im;i++)
{
fread(s[i],sizeof(struct air),1,fp);//从文件中读取信息
}
fclose(fp);//关闭文件
}
void print()//打印模块
{
char w[10];
read();//调用读取文件函数
printf("航班号 起始站 终点站 时间 机票数\n");
for(i=0;im;i++)
{
printf(PRINT);//打印信息
}
printf("请按任意键回车键结束返回上层菜单以:\n");
scanf("%s",w);
}
void search()//查询模块
{
char name1[20];
char name2[20];
char ii[10];
int n,no;
do
{
printf("请选择查找方式:\n\n");//打印查询方式菜单
printf("1.按航班号查找\n\n"
"2.按终点站查找\n\n"
"3.按航线查找\n\n"
"0.返回\n\n");
printf("请在0-3中选择:\n\n"
"按其他键以回车键结束返回主菜单:\n\n");
scanf("%d",n);//读取查找方式
if(n==0)
break;
switch(n)
{
case 1:
printf("请输入航班号:\n");
scanf("%d",no);//航班号
break;
case 2:
printf("请输入终点站名称:\n");
scanf("%s",name2);//读取终点站
break;
case 3:
printf("请输入起始站名称:\n");
scanf("%s",name1);//读取起始站
printf("请输入终点站名称:\n");
scanf("%s",name2);//终点站
break;
}
read();//调用读取函数
for(i=0;im;i++)
{
if(strcmp(s[i].over,name1)==0||strcmp(s[i].over,name2)==0)//按终点站起始站判断输出条件
{
printf("\n查找航班信息成功!\n");
printf("航班号 起始站 终点站 时间 机票数\n");
printf(PRINT);//打印信息
break;
}
if(s[i].num==no)//按航班号判断输出条件
{
printf("\n查找航班信息成功!\n");
printf("航班号 起始站 终点站 时间 机票数\n");
printf(PRINT);//打印信息
break;
}
}
no=0;//将航班号赋值为0
printf("没有您需要的信息或查找完毕:\n\n"
"是否继续查找?请键入yes或no以回车键结束\n");
scanf("%s",ii);
}while(strcmp(ii,"yes")==0);//判断结束
}
void shanchu()//删除模块
{
char name1[20];
char name2[20];
char ii[10];
char f[]="2008china";//设置密码
int no,n;
printf("请输入密码并以回车键结束:\n\n");
scanf("%s",f);//读取密码
if(strcmp(f,"2008china")==0) //判断密码是否正确
{
do
{
printf("请选择删除以方式回车键结束:\n\n");//打印删除方式菜单
printf("*1.按航班号删除\n\n"
"*2.按航线删除\n\n"
"*0.返回\n\n");
printf("请在0-2中选择以回车键结束:\n");
scanf("%d",n);//读取删除方式
if(n==0)
break; //跳出循环
switch(n)
{
case 1:
printf("请输入航班号:\n");
scanf("%d",no);//读取航班号
read();//调用读取函数
break;//跳出循环
case 2:
printf("请输入起始站 名称:\n");
scanf("%s",name1);//读取起始站
printf("请输入终点站名称:\n");
scanf("%s",name2);//读取终点站
read();//调用读取函数
break;//跳出循环
}
for(i=0;im;i++)
{
if(s[i].num==no||strcmp(s[i].start,name1)==0strcmp(s[i].over,name2)==0)//判断输入信息是否存在
{
s[i]=s[m-1];
m--;
}
}
printf("查找完毕或没有这个信息\n\n");
printf("是否继续删除\n");
printf("请键入yes或no以回车键结束\n");
scanf("%s",ii); //读取是否继续信息
save(); //调用读取函数
if(!strcmp(ii,"yes")) //判断是否继续删除
printf("请按任意键以回车键结束返回上层菜单:\n");
break;
}while(n!=1n!=2n!=3n!=4n!=0); //判断结束
}
else
printf("对不起密码错误!您不是管理员,不能使用此项功能!谢谢!再见!\n\n");
}
void dingpiao()//订票模块
{
int n;
char a[10];
do
{
search();//调用查询模块
printf("请输入您要订的机票数以回车键结束:\n");
scanf("%d",n);//读取所订机票数
if(n0)
{
printf("请输入有效的机票数!\n");//判断机票数是否出错
break;
}
if(s[i].count!=0s[i].count=n)//判断是否出错
{
s[i].count=s[i].count-n;
save();//调用保存函数
printf("订票成功!\n\n");
break;
}
if(s[i].countn)//判断是否出错
{
printf("请输入有效的机票数:\n");
break;
}
printf("是否继续? 请输入yes或no以回车键结束:\n");//判断是否继续订票
scanf("%s",a);
}while(!strcmp(a,"yes"));//判断结束
}
void tuipiao()//退票模块
{
int n;
char a[10];
do
{
search();//调用查询模块
printf("请输入您要退的机票数目:\n");
scanf("%d",n);//输入所退票数
if(n0) //判断票数是否有效
printf("请输入有效的机票数!\n");
s[i].count=s[i].count+n;
save(); //调用保存模块
printf("退票成功!\n\n");
printf("是否继续? 请键入yes或no以回车键结束:\n\n");//判断是否继续退票
scanf("%s",a);
}while(!strcmp(a,"yes"));//判断并跳出循环
getchar();
}
void xiugai() //修改模块
{
struct xiu //定义结构体
{
int no;
char name1[20];
char name2[20];
char time[20];
int count;
}x[1];
char j[10];
int n;
printf("请输入密码并以回车键结束:\n\n");
read();//调用读取模块
do
{
printf( "请选择修改方式:\n\n"
"*1,按航班号修改:\n\n"
"*2,按航线修改: \n\n");
printf("请在1---2中修改以回车键结束:\n\n");
scanf("%d",n);//读取修改方式
switch(n)
{
case 1:printf("请输入航班号:\n");
scanf("%d",x[0].no);//读取航班号
break;
case 2:printf("请输入起始站:\n");
scanf("%s",x[0].name1);//读取起始站
printf("请输入终点站:\n");
scanf("%s",x[0].name2);//读取终点站
break;
}
for(i=0;im;i++)
{
if(strcmp(s[i].over,x[0].name1)==0strcmp(s[i].over,x[0].name2)==0)//判断输出条件
{
printf("航班号 起始站 终点站 时间 机票数\n");
printf(PRINT);
break;
}
if(s[i].num==x[0].no)//判断输出条件
{
printf("航班号 起始站 终点站 时间 机票数\n");
printf(PRINT);
break;
}
}
x[0].no=0; //将结构体中的号为零
printf("请输入新航班号、起始站、终点站、时间(星期几)、机票数:\n");
scanf("%d%s%s%s%d",x[0].no,x[0].name1,x[0].name2,x[0].time,x[0].count);//定义输入格式
s[i].num=x[0].no;//替换航班号
strcpy(s[i].start,x[0].name1);//替换其始站
strcpy(s[i].over,x[0].name2);//替换终点站
strcpy(s[i].time,x[0].time);//替换时间
s[i].count=x[0].count;//替换机票数
save();//调用保存模块
printf("是否继续?请键入yes或no以回车键结束:\n\n");
scanf("%s",j);
}while(strcmp(j,"yes")==0); //判断结束
}
答即可得2分,回答被采纳则获得悬赏分以及奖励20分