本文目录一览:
C语言到底是什么?
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。
C语言包括:数据类型、运算符与表达式、程序结构、顺序、选择、循环、数组、函数、预处理命令、指针、结构体与共用体、文件、位运算;。
c语言基本特性:
1、高级语言:它是把高级语言的基本结构和语句与低级语言的实用性结合起来的工作单元。
2、结构式语言:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
3、代码级别的跨平台:由于标准的存在,使得几乎同样的C代码可用于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要进行硬件操作的场合,优于其它高级语言。
4、使用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。
c语言 报数问题
方法一:(推荐)不受人数限制,因为采用的动态分配
#include stdio.h
#include malloc.h
/*********************************************************************
*以循环队列的数据结构实现
*时间复杂度T(n)
*采用循环队列数据结构,使得每次对数组的访问次数减少到最少
**********************************************************************/
int main(void)
{
//定义并初始化各种变量
int i=0,//控制变量
num=0,//人数
die=0,//报数值
front,//队头位置
rear,//队尾位置
temp=0;//中间变量
do
{
printf("\n请输入人数(输入小于0退出):");
scanf("%d",num);
printf("\n请输入报数值:");
scanf("%d",die);
int *cycle=(int *)malloc((num+1)*sizeof(int));//多申请一个空间,在循环过程中方便处理
//依次编号,一号元素为0,暂时闲置
for(i=0;i=num;i++)
{
cycle[i]=i;
}
//置队头和队尾的位置
front=1;
rear=num;
i=1;//报数器置1,开始报数
while(front!=rear)//当队列中元素不止一个时,循环
{
//备份出队数据
temp=(rear+1)%(num+1);//在位置rear后预留一个位置,以免有元素入队
cycle[temp]=cycle[front];
front=(front+1)%(num+1);//队头元素出队,队头位置加1
//如果出队的人报数符合条件
if(i==die)
{
i=1;//报数重新置1,开始报数
printf("%d出队\n",cycle[temp]);//显示出队的元素
}
//如果出队的人报数不符合条件
else
{
i++;//报数值增1
//队尾插入刚出队的元素
rear=(rear+1)%(num+1);
cycle[rear]=cycle[temp];
}
}
printf("幸存者是%d\n",cycle[front]);
free(cycle);
}while(num!=0);
return 0;
}
方法二:(按你的要求)
#include stdio.h
/*********************************************************************
*以纯粹的思维方法实现
*时间复杂度T(n)
*过程繁琐,而且也不容易理解
*********************************************************************/
void main(void)
{
int result(int *p,int n,int m);
int i=0,m=0,n=0;
int num[50];
int *p;
for(;;)
{
printf("输入人数和报数值:");
scanf("%d%d", n, m);
for(i = 0; i n; i++)
num[i] = i + 1;
p = num;
cout"The last one is NO."result(p,n,m)endl;
}
}
int result(int *p,int n,int m)
{
int i=0;
for(i=0;in;i++)
p[i]=i+1;
i=0; // i为每次循环时计数变量
int k=0; // k为按1,2,3...m报数时的计数变量
int die=0; // die为退出人数
while (dien-1) // 当退出人数比n-1少时(即未退出人数大于1时)执行循环体
{
if (p[i]!=0) k++; //如果编号为0,就不报数;如果编号不为0,报数加1
if (k==m) // 将退出的人的编号置为0
{
printf("%d退出\n",p[i]);
p[i]=0;
k=0;//重新开始报数
m++;//退出人数加1
}
i++;
if (i==n) i=0; // 报数到尾后,i恢复为0
}
while(*p==0) p++;
return *p;
}
c语言约瑟夫问题
这个你搞得这么复杂做什么·-。-·
int yuesefu1(int man[],int y,int die)
{
int i=0,j=0,count=0;
for(i=1;i=y;i++)
{
man[i]=1;//。。。对数组初始化
//printf("%d",man[i]);
}
while(county-1)
{
if(man[i]!=0)/*当前人在圈子里*/
j++;
if(j==die)/*若该人应该退出圈子*/
{
man[i]=0;/*0表示不在圈子里*/
count++;/*退出的人数加1*/
j=0;/*重新数数*/
}
i++;/*判断下一个人*/
if(i==y)/*围成一圈*/
i=0;
}
for(i=0;iy;i++)
if(man[i]!=0)
return man[i];/*返回最后一个人的编号*/
}
C语言编程,变量赋值
#includestdio.h
#includestring.h
#define NUM 6//变量数量
int main()
{
int i;
char name[NUM][10];
FILE *fp = fopen("D:\\data.txt", "r");
float min, max, lad, huv, die, how, temp;
if (fp == NULL)
{
perror("Open file failure !!\n");
return 0;
}
for (i = 0; i NUM; ++i)
fscanf(fp, "%s", name[i]);
for (i = 0; i NUM; ++i)
{
fscanf(fp, "%f", temp);
if (!strcmp(name[i], "min"))
min = temp;
else if (!strcmp(name[i], "max"))
max = temp;
else if (!strcmp(name[i], "lad"))
lad = temp;
else if (!strcmp(name[i], "huv"))
huv = temp;
else if (!strcmp(name[i], "die"))
die = temp;
else if (!strcmp(name[i], "how"))
how = temp;
}
printf("%min = %0.2f\nmax = %0.2f\nlad = %0.2f\nhuv = %0.2f\ndie = %0.2f\nhow = %0.2f\n", min, max, lad, huv, die, how);
fclose(fp);
return 0;
}
编程语言的die exit break有什么区别
die我只在PHP里遇到过,exit在C/C++里有,break是都有的。die是某语句遇到问题时直接让整个程序死掉,函数括号里的是死亡提示信息,我在用的时候一般都是在数据库中用的,mysql_connect('xxx','xx','xxx') or die("error," . mysql_error());这样可以显示出来数据库连接失败的错误信息,方便我对其进行修复,exit一般都是开发人员主动的,当碰到一些东西时,如:用户单击了“退出”按钮时,在按钮的执行过程中写exit(0);就可以关闭了。break一般都是用于循环的,在循环中如果碰到了某些不想碰到的东西或是已经循环够了不想循环了,那可以用break来跳出循环