今天给各位分享10个经典的c语言小程序的知识,其中也会对C语言的小程序进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、求几个C语言小程序。。2、求C语言经典小程序!目的是熟悉C语言的使用技巧3、有什么好玩的C语言小程序
求几个C语言小程序。。
1、我只写判断是否是三角形的部分,其余部分,楼主自己写哈;
double a,b,c;
if(a=0||b=0||c=0)
{printf(“输入错误,请重新输入:\n”);return;}
else if(a+b=c||a+c=b||b+c=a)
{printf(“不能组成三角形,请重新输入:\n”);return;}
else if((a*a+b*b==c*c)||(b*b+c*c==a*a)||(a*a+c*c==b*b))
{ if((a==bb!=c)||(a==cc!=b)||(b==ca!=c))
printf(“是等腰直角三角形.\n”);
else printf(“是直角三角形\n”);
}
else if(a==bb==c)printf(“是等边三角形.\n”);
else if(a==c||b==c||a==b)printf(“是等腰三角形.\n”);
else printf(“是一般三角形.\n”);
2、这个程序其实也不难,我也只写主体部分,其余部分楼主自己写下。
int i,sign=1;double s=0;
for(i=1;i=1000;i++)
{
s=s+1.0*sign/i;
sign=-sign;
}
3、这个程序我全部写下来吧,我写的是从键盘键入a,b,然后判断出a,b区间的素数,然后每行五个输出.
#include stdio.h
#include math.h
main()
{
long i,j,a,b;
int k,n=0;
printf(“Input a b(ab):\n”);
scanf(“%d%d”,a,b);
k=(int)sart(b);
for(i=2;i=k;i++)
{ for(j=a;j=b;j++)
if(j%i==0)break;
if(ik)
{ printf(“%10d”,j);n++;
if(n%5==0)printf(“\n”);
}
}
}
求C语言经典小程序!目的是熟悉C语言的使用技巧
我知道有一个人写了一些文章然后有人整理了下来。
他写的东西都是代码, 而且是非常详细的注释那种的。
这个人叫管宁
你可以到网上搜搜。
我这里有给你贴出来一点,你可以看看是否合你的意:
在c/c++中利用数组名作为函数参数传递排序和用指针进行排序的例子。
以下两个例子要非常注意,函数传递的不是数组中数组元素的真实值而是数组在内存中的实际地址。
#include stdio.h
void main(void)
{
void reversal();
static int a[10] = {0,1,2,3,4,5,6,7,8,9}; /* 建立一个数组并初始化 */
int i;
for (i=0;i10;i++)
{
printf(“%d “,a);
}
printf(“\n”);
reversal(a,10); /* 调用自定义涵数进行反向显示排序,并把数组a的起始地址传送给形式参数x */
for (i=0;i10;i++)
{
printf(“%d “,a);
}
printf(“\n”);
}
void reversal(x,n)
int x[],n; /* 定义形式参数 */
{
int m=(n-1)/2; /* 计算10个数需要循环几次,因为是两两调换第一个数组是x[0]故应该是int(9/2) */
int temp,i,j; /* 建立零时变量temp用于每次交换处理时零时存储x的值 */
for (i=0;i=m;i++)
{
j=n-1-i; /* 反向计算出被调换的数组下标,例如x[0] 对应的x[n-1-i]就是x[9] */
temp=x;
x=x[j];
x[j]=temp;
}
}
/* 次题需要注意的是:这里由于a[10]和x[10]是共同享内存地址位的所以进行交换后a[10]的实际值也就发生了改变 */
#include stdio.h
void main(void)
{
void reversal();
static int a[10] = {0,1,2,3,4,5,6,7,8,9}; /* 建立一个数组并初始化 */
int i;
for (i=0;i10;i++)
{
printf(“%d “,a);
}
printf(“\n”);
reversal(a,10); /* 调用自定义涵数进行反向显示排序,并把数组a的起始地址传送给形式参数x */
for (i=0;i10;i++)
{
printf(“%d “,a);
}
printf(“\n”);
}
void reversal(x,n)
int *x,n; /* 定义x为指针变量 */
{
int temp,*p,*i,*j; /* 这里需要注意的是temp用与交换的时候临时存储数据的 */
i = x; /* 利用指针变量i存储数组a的起始地址 */
p = x + ((n-1)/2); /* 计算最后一次循环的时候数组a的地址 */
j = x + n – 1; /* 计算数组a也就是a[9]的结束地址好用于交换 */
for (;i=p;i++,j–) /* 利用循环和指针进行数组元素值的交换 */
{
temp=*i; /* 用temp临时存储*i也就是循环中a实际的值 */
*i=*j;
*j=temp;
}
}
/* 此例同样要注意到利用指针进行数组的操作同样改变了实际数组各元素的值 */
==============================
c/c++中指针学习的两个绝好例子
对于众多人提出的c/c++中指针难学的问题做个总结:
指针学习不好关键是概念不清造成的,说的简单点就是书没有认真看,指针的学习犹如人在学习饶口令不多看多学多练是不行的,下面是两个很经典的例子,很多书上都有,对于学习的重点在于理解*x和x的理解,他们并不相同,*x所表示的其实就是变量a本身,x表示的是变量a在内存中的地址,如果想明白可以输出观察cout*x”|”x;,当定义了int *x;后对x=a的理解的问题。仔细阅读和联系下面的两个例子我想指针问题就不是难点了!
#include stdio.h
main()
{
int a,b; /* 定义a,b两个整形变量用于输入两个整数 */
int *point_1,*point_2,*temp_point; /* 定义三个指针变量 */
scanf(“%d,%d”,a,b); /* 格式化输入a,b的值 */
point_1=a; /* 把指针变量point_1的值指向变量a的地址 */
point_2=b; /* 把指针变量point_2的值指向变量b的地址 */
if (ab)
{
temp_point=point_1; /* 这里的temp_point是用于临时存储point_1的值也就是变量a的地址的 */
point_1=point_2; /* 把point_2的值赋予point_1 */
point_2=temp_point;
/* 由于point_1的值已经改变无法找到,利用前面临时存储的也就是temp_point找回原point_1的值赋予point_2,打到把point_1和point_2值对换的目的*/
}
printf(“%d,%d”,*point_1,*point_2); /* 利用*point_1和*point_2也就是分辨指向b和a的方法把值显示自爱屏幕上 */
}
/* 此题需要注意和了解是的此法并没有改变变量a,b的值只是利用指针变量分别存储a和b的地址,然后再把那两个指针变量的值对换一下其实就是存储在
指针变量里面a与b的地址对换,在利用*point_1和*point_2的方式把调换后的值显示出来这里的*point_1实际就是a,此中算法并非真的改变a,b的值,而是
利用指针进行地址交换达到大小排序的目的.
*/
#include stdio.h
main()
{
int a,b; /* 定义a,b两个整形变量用于输入两个整数 */
int *point_1,*point_2; /* 定义三个指针变量 */
scanf(“%d,%d”,a,b); /* 格式化输入a,b的值 */
point_1 = a; /* 把指针变量point_1的值指向变量a的地址 */
point_2 = b; /* 把指针变量point_2的值指向变量b的地址 */
compositor(point_1,point_2); /* 调用自定义的排序涵数,把a,b的地址传递给point_1和point_2 */
printf(“%d,%d”,a,b); /* 打印出a,b的值 */
}
static compositor(p1,p2)
int *p1,*p2; /* 定义形式参数p1,p2为指针变量 */
{
int temp; /* 建立临时存储变量 */
if (*p1*p2) /* 如果*p1p2,注意这里的*p1和*p2其实就是a和b */
{
temp = *p1; /* 利用变量temp用于临时存储*p1和就是a的值 */
*p1 = *p2; /* 将*p1的值也就是a的值换成*p2的值也就是b的值,等价于a=b */
*p2 = temp; /* 将*p2的值也就是temp的值等价于b=temp */
}
}
/* 注意:此题与上题不同的是,直接改变了a于b的值达到真实改变的目的 */
有什么好玩的C语言小程序
一个“歼灭敌机”的小游戏,DEVc++编译通过:
#include stdio.h
#include conio.h
#include stdlib.h
#include windows.h
#include time.h
#define zlx 10 //增量坐标(x)让游戏框不靠边
#define zly 3 //增量坐标(y)让游戏框不靠边
#define W 26 //游戏框的宽度
#define H 24 //游戏框的高度
int jiem[22][22]={0}, wj=10; //界面数组, 我机位置(初值为10)
int speed=4,density=30, score=0,death=0; //敌机速度, 敌机密度, 玩家成绩,死亡次数
int m=0,n=0; // m,n是控制敌机的变量
void gtxy (int x, int y) //控制光标位置的函数
{ COORD pos;
pos.X = x; pos.Y = y;
SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );
}
void Color(int a) //设定颜色的函数(a应为1-15)
{ SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), a ); }
void yinc(int x=1,int y=0) //隐藏光标的函数
{ CONSOLE_CURSOR_INFO gb={x,y}; //y设为0即隐藏
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), gb);
}
void csh( ) //初始化函数
{ int i;
Color(7);
gtxy(zlx,zly); printf(“╔”); gtxy(zlx+W-2,zly); printf(“╗”); //左上角和右上角的框角
gtxy(zlx,zly+H-1); printf(“╚”); gtxy(zlx+W-2,zly+H-1); printf(“╝”); //下边两框角
for(i=2;iW-2;i+=2) {gtxy(zlx+i,zly); printf(“═”); } //打印上横框
for(i=2;iW-2;i+=2) {gtxy(zlx+i,zly+H-1); printf(“═”); } //打印下横框
for(i=1;iH-1;i++) { gtxy(zlx,zly+i); printf(“║”); } //打印左竖框
for(i=1;iH-1;i++) {gtxy(zlx+W-2,zly+i); printf(“║”); } //打印右竖框
Color(14);gtxy(19,2); printf(“歼灭敌机”); Color(10);
gtxy(37,5); printf(“设置:Esc “);
gtxy(37,7); printf(“发射:↑ “);
gtxy(37,9); printf(“控制:← → “);
gtxy(37,11);printf(“得分:%d”,score);
gtxy(37,13); printf(“死亡:%d”,death);
yinc(1,0);
}
void qcjm( ) //清除界面函数
{int i,j;
for(i=0;iH-2;i++)
for(j=0;jW-4;j++){gtxy(zlx+2+j,zly+1+i);printf(” “);}
}
void feiji( ) //飞机移动函数
{int i,j;
for(i=21;i=0;i–) //从底行往上是为了避免敌机直接冲出数组
for(j=0;j22;j++)
{if(i==21jiem[i][j]==3) jiem[i][j]=0; //底行赋值0 以免越界
if(jiem[i][j]==3) jiem[i][j]=0, jiem[i+1][j]=3;
}
if(jiem[20][wj]==3jiem[21][wj]==1) death++;
}
void zidan( ) //子弹移动函数
{ int i,j;
for(i=0;i22;i++)
for(j=0;j22;j++)
{if(i==0jiem[i][j]==2) jiem[i][j]=0;
if(jiem[i][j]==2) { if(jiem[i-1][j]==3) score+=100,printf(“\7”);
jiem[i][j]=0,jiem[i-1][j]=2; }
}
}
void print( ) //输出界面函数
{int i,j;
qcjm( );
for(i=0;i22;i++)
for(j=0;j22;j++)
{ gtxy(12+j,4+i);
if(jiem[i][j]==3) {Color(13);printf(“□”);}
if(jiem[i][j]==2) {Color(10);printf(“.”);}
if(jiem[i][j]==1) {Color(10);printf(“■”);}
}
gtxy(37,11); Color(10);printf(“得分:%d”,score);
gtxy(37,13); printf(“死亡:%d”,death);
}
void setting( ) //游戏设置函数
{ qcjm( );
gtxy(12,4);printf(“选择敌机速度:”);
gtxy(12,5);printf(” 1.快 2.中 3.慢”);
switch(getche( ))
{case ‘1’: speed=2; break;
case ‘2’: speed=4; break;
case ‘3’: speed=5; break;
default: gtxy(12,6);printf(” 错误!默认值”);
}
gtxy(12,7);printf(“选择敌机密度:”);
gtxy(12,8);printf(” 1.大 2.中 3.小”);
switch(getche( ))
{case ‘1’: density=20; break;
case ‘2’: density=30; break;
case ‘3’: density=40; break;
default: gtxy(12,9);printf(” 错误!默认值”);
}
for(int i=0;i22;i++)
for(int j=0;j22;j++)jiem[i][j]=0;
jiem[21][wj=10]=1; jiem[0][5]=3;
gtxy(12,10);printf(” 按任意键保存…”);
getch( );
qcjm( );
}
void run( ) //游戏运行函数
{ jiem[21][wj]=1; //值为1代表我机(2则为子弹)
jiem[0][5]=3; //值为3代表敌机
SetConsoleTitle(“歼灭敌机”); //设置窗口标题
while(1)
{ if (kbhit( )) //如有键按下,控制我机左右移动、发射或进行设定
{int key;
if((key=getch( ))==224) key=getch( );
switch(key)
{ case 75: if(wj0) jiem[21][wj]=0,jiem[21][–wj]=1; break;
case 77: if(wj20) jiem[21][wj]=0,jiem[21][++wj]=1; break;
case 72: jiem[20][wj]=2; break;
case 27: setting( );
}
}
if(++n%density==0) //控制产生敌机的速度
{ n=0;srand((unsigned)time(NULL));
jiem[0][rand( )%20+1]=3;
}
if(++m%speed==0) {feiji( ); m=0;} //控制敌机移动速度(相对子弹而言)
zidan( );
print( );
Sleep(120); //延时120毫秒
}
}
int main( )
{csh( );
run( );
return 0;
}
新手要方便写代码,可以收藏下面几个自编函数:
SetConsoleTitle(“俄罗斯方块”); //设置窗口左上角标题栏处出现”俄罗斯方块”5个字
srand( (unsigned) time(NULL) ); //初始化随机数发生器
n= rand( ) % 20; //产生随机数0-19中的一个. 如 rand( )%5 就产生0-4中的一个数
SetConsoleTitle( )函数在windows.h里, srand( )函数与rand( )函数要配合用,
就是同时要用,在stdlib.h里。如果 rand( )%10+1 就产生1-10之中的一个数。
Sleep(300); //延时300毫秒(就是程序暂停300毫秒后继续运行)
system(“cls”); //清屏(把窗口里的内容全部清除,光标定于(0,0)位置处)
这两个函数都在windows.h里。开头4个自编函数 编写如下:
void gtxy (int x, int y) //控制光标位置的函数
{ COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );
}
void Color (int a) //设定颜色的函数
{ SetConsoleTextAttribute ( GetStdHandle ( STD_OUTPUT_HANDLE ),a ); }
void yinc (int x,int y) //隐藏光标的函数
{ CONSOLE_CURSOR_INFO gb={ x , y }; //gb代表光标
SetConsoleCursorInfo ( GetStdHandle(STD_OUTPUT_HANDLE), gb );
}
void kou(int w,int h) //设置窗口大小的函数
{HANDLE hl=GetStdHandle ( STD_OUTPUT_HANDLE ) ;
COORD size={ w , h };
SetConsoleScreenBufferSize( hl , size );
SMALL_RECT rc={ 0, 0, w, h };
SetConsoleWindowInfo( hl, 1, rc );
}
最后这个函数,参数w是宽h是高。里边5行中第一行定义了句柄型变量hl,并给它赋值。
第二行定义了坐标型结构体变量size,它的取值决定了缓冲区的大小。第三行就是使用
size的值设置好缓冲区大小。第四行定义了变量rc,它的值决定当前窗口显示的位置与
大小(不得超过缓冲区的大小)。前两个0,0是从缓冲区左上角0列0行位置处开始,后两
个参数可以小于w和h.比如 rc={0,0,w-10,h-5}; 最后一行使用rc的值设置好窗口,中间
那个参数要为” 1 “或写“ true ”才有效。
关于10个经典的c语言小程序和C语言的小程序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。