c语言函数入门代码,c语言入门函数大全

求C语言函数大全

函数名: abort

成都创新互联公司专注于企业成都全网营销推广、网站重做改版、市中网站定制设计、自适应品牌网站建设、HTML5商城网站建设、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为市中等各大城市提供网站开发制作服务。

功 能: 异常终止一个进程

用 法: void abort(void);

程序例:

#include stdio.h

#include stdlib.h

int main(void)

{

printf("Calling abort()\n");

abort();

return 0; /* This is never reached */

}

函数名: abs

功 能: 求整数的绝对值

用 法: int abs(int i);

程序例:

#include stdio.h

#include math.h

int main(void)

{

int number = -1234;

printf("number: %d absolute value: %d\n", number, abs(number));

return 0;

}

函数名: absread, abswirte

功 能: 绝对磁盘扇区读、写数据

用 法: int absread(int drive, int nsects, int sectno, void *buffer);

int abswrite(int drive, int nsects, in tsectno, void *buffer);

程序例:

/* absread example */

#include stdio.h

#include conio.h

#include process.h

#include dos.h

int main(void)

{

int i, strt, ch_out, sector;

char buf[512];

printf("Insert a diskette into drive A and press any key\n");

getch();

sector = 0;

if (absread(0, 1, sector, buf) != 0)

{

perror("Disk problem");

exit(1);

}

printf("Read OK\n");

strt = 3;

for (i=0; i80; i++)

{

ch_out = buf[strt+i];

putchar(ch_out);

}

printf("\n");

return(0);

}

函数名: access

功 能: 确定文件的访问权限

用 法: int access(const char *filename, int amode);

程序例:

#include stdio.h

#include io.h

int file_exists(char *filename);

int main(void)

{

printf("Does NOTEXIST.FIL exist: %s\n",

file_exists("NOTEXISTS.FIL") ? "YES" : "NO");

return 0;

}

int file_exists(char *filename)

{

return (access(filename, 0) == 0);

}

函数名: acos

功 能: 反余弦函数

用 法: double acos(double x);

程序例:

#include stdio.h

#include math.h

int main(void)

{

double result;

double x = 0.5;

result = acos(x);

printf("The arc cosine of %lf is %lf\n", x, result);

return 0;

}

函数名: allocmem

功 能: 分配DOS存储段

用 法: int allocmem(unsigned size, unsigned *seg);

程序例:

#include dos.h

#include alloc.h

#include stdio.h

int main(void)

{

unsigned int size, segp;

int stat;

size = 64; /* (64 x 16) = 1024 bytes */

stat = allocmem(size, segp);

if (stat == -1)

printf("Allocated memory at segment: %x\n", segp);

else

printf("Failed: maximum number of paragraphs available is %u\n",

stat);

return 0;

}

函数名: arc

功 能: 画一弧线

用 法: void far arc(int x, int y, int stangle, int endangle, int radius);

程序例:

#include graphics.h

#include stdlib.h

#include stdio.h

#include conio.h

int main(void)

{

/* request auto detection */

int gdriver = DETECT, gmode, errorcode;

int midx, midy;

int stangle = 45, endangle = 135;

int radius = 100;

/* initialize graphics and local variables */

initgraph(gdriver, gmode, "");

/* read result of initialization */

errorcode = graphresult(); /* an error occurred */

if (errorcode != grOk)

{

printf("Graphics error: %s\n", grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1); /* terminate with an error code */

}

midx = getmaxx() / 2;

midy = getmaxy() / 2;

setcolor(getmaxcolor());

/* draw arc */

arc(midx, midy, stangle, endangle, radius);

/* clean up */

getch();

closegraph();

return 0;

}

函数名: asctime

功 能: 转换日期和时间为ASCII码

用 法: char *asctime(const struct tm *tblock);

程序例:

#include stdio.h

#include string.h

#include time.h

int main(void)

{

struct tm t;

char str[80];

/* sample loading of tm structure */

t.tm_sec = 1; /* Seconds */

t.tm_min = 30; /* Minutes */

t.tm_hour = 9; /* Hour */

t.tm_mday = 22; /* Day of the Month */

t.tm_mon = 11; /* Month */

t.tm_year = 56; /* Year - does not include century */

t.tm_wday = 4; /* Day of the week */

t.tm_yday = 0; /* Does not show in asctime */

t.tm_isdst = 0; /* Is Daylight SavTime; does not show in asctime */

/* converts structure to null terminated

string */

strcpy(str, asctime(t));

printf("%s\n", str);

return 0;

}

函数名: asin

功 能: 反正弦函数

用 法: double asin(double x);

程序例:

#include stdio.h

#include math.h

int main(void)

{

double result;

double x = 0.5;

result = asin(x);

printf("The arc sin of %lf is %lf\n", x, result);

return(0);

}

函数名: assert

功 能: 测试一个条件并可能使程序终止

用 法: void assert(int test);

程序例:

#include assert.h

#include stdio.h

#include stdlib.h

struct ITEM {

int key;

int value;

};

/* add item to list, make sure list is not null */

void additem(struct ITEM *itemptr) {

assert(itemptr != NULL);

/* add item to list */

}

int main(void)

{

additem(NULL);

return 0;

}

函数名: atan

功 能: 反正切函数

用 法: double atan(double x);

程序例:

#include stdio.h

#include math.h

int main(void)

{

double result;

double x = 0.5;

result = atan(x);

printf("The arc tangent of %lf is %lf\n", x, result);

return(0);

}

函数名: atan2

功 能: 计算Y/X的反正切值

用 法: double atan2(double y, double x);

程序例:

#include stdio.h

#include math.h

int main(void)

{

double result;

double x = 90.0, y = 45.0;

result = atan2(y, x);

printf("The arc tangent ratio of %lf is %lf\n", (y / x), result);

return 0;

}

函数名: atexit

功 能: 注册终止函数

用 法: int atexit(atexit_t func);

程序例:

#include stdio.h

#include stdlib.h

void exit_fn1(void)

{

printf("Exit function #1 called\n");

}

void exit_fn2(void)

{

printf("Exit function #2 called\n");

}

int main(void)

{

/* post exit function #1 */

atexit(exit_fn1);

/* post exit function #2 */

atexit(exit_fn2);

return 0;

}

函数名: atof

功 能: 把字符串转换成浮点数

用 法: double atof(const char *nptr);

程序例:

#include stdlib.h

#include stdio.h

int main(void)

{

float f;

char *str = "12345.67";

f = atof(str);

printf("string = %s float = %f\n", str, f);

return 0;

}

函数名: atoi

功 能: 把字符串转换成长整型数

用 法: int atoi(const char *nptr);

程序例:

#include stdlib.h

#include stdio.h

int main(void)

{

int n;

char *str = "12345.67";

n = atoi(str);

printf("string = %s integer = %d\n", str, n);

return 0;

}

函数名: atol

功 能: 把字符串转换成长整型数

用 法: long atol(const char *nptr);

程序例:

#include stdlib.h

#include stdio.h

int main(void)

{

long l;

char *str = "98765432";

l = atol(lstr);

printf("string = %s integer = %ld\n", str, l);

return(0);

}

C语言基本代码,求详细解释,越详细越好。

解释如下:

#include"stdio.h"//头文件

#include"math.h"//数学库函数

double pcos(double a);//声明子函数

main()//主函数

{

double x,y;//定义x,y这两个双精度数据

printf("please input one number:");

//输出please input one number:

scanf("%lf",x);//出入一个数据并赋值给x

y=pcos(x);//把x传入pcos函数,返回值赋值给y

printf("cos of %lf is %lf\n",x,y);//输出cos of x is y

}

double pcos(double a)//定义子函数名,形式参数

{

double b;//定义双精度数据b

b=cos(a);//计算cos(a),并赋值给b

return b;//返回b的值

}

扩展资料:

注释就是对代码的解释和说明,其目的是让人们能够更加轻松地了解代码。注释是编写程序时,写程序的人给一个语句、程序段、函数等的解释或提示,能提高程序代码的可读性。

注释就是对代码的解释和说明。目的是为了让别人和自己很容易看懂。为了让别人一看就知道这段代码是做什么用的。

正确的程序注释一般包括序言性注释和功能性注释。序言性注释的主要内容包括模块的接口、数据的描述和模块的功能。模块的功能性注释的主要内容包括程序段的功能、语句的功能和数据的状态。

参考资料:注释–百度百科

c语言基础代码,越详细,解释越简单,越好

你并没有把详细的 C 语言基础代码写出来,别人怎么帮助你添加注释语句啊?因为所说的 C 语言基础代码实际上并没有一定之规。怎么样才算是基础代码、有几行代码就可以、足够了?这些都是灵活的、并不是一成不变的。例如,最、最简单的 C 语言基础代码就是:很多 C 语言教材上的第一个程序,输出:"Hello, World !"。该详细的 C 语言代码如下:

#include stdio.h /* 基本输入输出头文件,包括:printf、scanf等的库函数原型说明 */

void main( ) /* 任何一个 C 语言源代码都必须包含主函数 main( ),void 表示该函数不返回任何值 */

{ /* 在 C 语言代码中,任何一个函数都是以 { 开始,并且以 } 结束 */

printf( "Hello, World !\n" ) ; /* 在电脑屏幕上输出字符串:Hello, World */

}

初学编程100个代码( C语言编程)?

、学代码:前提是你的复有⼀个⽐较系统的学习.认真完成每⼀个课程中的案例.

2、读代码:分制两步⾛:前期能读懂⾃⼰写的代码.2113 后期能读懂他⼈写的代码和⼤致的知道底层的某些源码的含义.多去5261看开发⽂档(开发⽂档建议使⽤官⽅提供的4102英⽂版、不要使⽤中⽂⾃⼰害⾃⼰)

求C语言代码,适合初学者的

关于二十四点游戏的编程思路与基本算法

漫长的假期对于我来说总是枯燥无味的,闲来无聊便和同学玩起童年时经常玩的二十四点牌游戏来。此游戏说来简单,就是利用加减乘除以及括号将给出的四张牌组成一个值为24的表达式。但是其中却不乏一些有趣的题目,这不,我们刚玩了一会儿,便遇到了一个难题——3、6、6、10(其实后来想想,这也不算是个太难的题,只是当时我们的脑筋都没有转弯而已,呵呵)。

问题既然出现了,我们当然要解决。冥思苦想之际,我的脑中掠过一丝念头——何不编个程序来解决这个问题呢?文曲星中不就有这样的程序吗?所以这个想法应该是可行。想到这里我立刻开始思索这个程序的算法,最先想到的自然是穷举法(后来发现我再也想不到更好的方法了,悲哀呀,呵呵),因为在这学期我曾经写过一个小程序——计算有括号的简单表达式。只要我能编程实现四个数加上运算符号所构成的表达式的穷举,不就可以利用这个计算程序来完成这个计算二十四点的程序吗?确定了这个思路之后,我开始想这个问题的细节。

首先穷举的可行性问题。我把表达式如下分成三类——

1、 无括号的简单表达式。

2、 有一个括号的简单表达式。

3、 有两个括号的较复4、 杂表达式。

穷举的开始我对给出的四个数进行排列,其可能的种数为4*3*2*1=24。我利用一个嵌套函数实现四个数的排列,算法如下:

/* ans[] 用来存放各种排列组合的数组 */

/* c[] 存放四张牌的数组 */

/* k[] c[]种四张牌的代号,其中k[I]=I+1。

用它来代替c[]做处理,考虑到c[]中有可能出现相同数的情况 */

/* kans[] 暂存生成的排列组合 */

/* j 嵌套循环的次数 */

int fans(c,k,ans,kans,j)

int j,k[],c[];char ans[],kans[];

{ int i,p,q,r,h,flag,s[4],t[4][4];

for(p=0,q=0;p4;p++)

{ for(r=0,flag=0;r if(k[p]!=kans[r]) flag++;

if(flag==j) t[j][q++]=k[p];

}

for(s[j]=0;s[j]4-j;s[j]++)

{ kans[j]=t[j][s[j;

if(j==3) { for(h=0;h4;h++)

ans[2*h]=c[kans[h]-1]; /* 调整生成的排列组合在最终的表

达式中的位置 */

for(h=0;h3;h++)

symbol(ans,h); /* 在表达式中添加运算符号 */

}

else { j++;

fans(c,k,ans,kans,j);

j--;

}

}

}

正如上面函数中提到的,在完成四张牌的排列之后,在表达式中添加运算符号。由于只有四张牌,所以只要添加三个运算符号就可以了。由于每一个运算符号可重复,所以计算出其可能的种数为4*4*4=64种。仍然利用嵌套函数实现添加运算符号的穷举,算法如下:

/* ans[],j同上。sy[]存放四个运算符号。h为表达式形式。*/

int sans(ans,sy,j,h)

char ans[],sy[];int j,h;

{ int i,p,k[3],m,n; char ktans[20];

for(k[j]=0;k[j]4;k[j]++)

{ ans[2*j+1]=sy[k[j; /* 刚才的四个数分别存放在0、2、4、6位

这里的三个运算符号分别存放在1、3、5位*/

if(j==2)

{ ans[5]=sy[k[j;

/* 此处根据不同的表达式形式再进行相应的处理 */

}

else

}

}

好了,接下来我再考虑不同表达式的处理。刚才我已经将表达式分为三类,是因为添加三个括号对于四张牌来说肯定是重复的。对于第一种,无括号自然不用另行处理;而第二种情况由以下代码可以得出其可能性有六种,其中还有一种是多余的。

for(m=0;m=4;m+=2)

for(n=m+4;n=8;n+=2)

这个for循环给出了添加一个括号的可能性的种数,其中m、n分别为添加在表达式中的左右括号的位置。我所说的多余的是指m=0,n=8,也就是放在表达式的两端。这真是多此一举,呵呵!最后一种情况是添加两个括号,我分析了一下,发现只可能是这种形式才不会是重复的——(a b)(c d)。为什么不会出现嵌套括号的情况呢?因为如果是嵌套括号,那么外面的括号肯定是包含三个数字的(四个没有必要),也就是说这个括号里面包含了两个运算符号,而这两个运算符号是被另外一个括号隔开的。那么如果这两个运算符号是同一优先级的,则肯定可以通过一些转换去掉括号(你不妨举一些例子来试试),也就是说这一个括号没有必要;如果这两个运算符号不是同一优先级,也必然是这种形式((a+-b)*/c)。而*和/在这几个运算符号中优先级最高,自然就没有必要在它的外面添加括号了。

综上所述,所有可能的表达式的种数为24*64*(1+6+1)=12288种。哈哈,只有一万多种可能性(这其中还有重复),这对于电脑来说可是小case哟!所以,对于穷举的可行性分析和实现也就完成了。

接下来的问题就是如何对有符号的简单表达式进行处理。这是栈的一个著名应用,那么什么是栈呢?栈的概念是从日常生活中货物在货栈种的存取过程抽象出来的,即最后存放入栈的货物(堆在靠出口处)先被提取出去,符合“先进后出,后进先出”的原则。这种结构犹如子弹夹。

在栈中,元素的插入称为压入(push)或入栈,元素的删除称为弹出(pop)或退栈。

栈的基本运算有三种,其中包括入栈运算、退栈运算以及读栈顶元素,这些请参考相关数据结构资料。根据这些基本运算就可以用数组模拟出栈来。

那么作为栈的著名应用,表达式的计算可以有两种方法。

第一种方法——

首先建立两个栈,操作数栈OVS和运算符栈OPS。其中,操作数栈用来记忆表达式中的操作数,其栈顶指针为topv,初始时为空,即topv=0;运算符栈用来记忆表达式中的运算符,其栈顶指针为topp,初始时,栈中只有一个表达式结束符,即topp=1,且OPS(1)=‘;’。此处的‘;’即表达式结束符。

然后自左至右的扫描待处理的表达式,并假设当前扫描到的符号为W,根据不同的符号W做如下不同的处理:

1、 若W为操作数

2、 则将W压入操作数栈OVS

3、 且继续扫描下一个字符

4、 若W为运算符

5、 则根据运算符的性质做相应的处理:

(1)、若运算符为左括号或者运算符的优先级大于运算符栈栈顶的运算符(即OPS(top)),则将运算符W压入运算符栈OPS,并继续扫描下一个字符。

(2)、若运算符W为表达式结束符‘;’且运算符栈栈顶的运算符也为表达式结束符(即OPS(topp)=’;’),则处理过程结束,此时,操作数栈栈顶元素(即OVS(topv))即为表达式的值。

(3)、若运算符W为右括号且运算符栈栈顶的运算符为左括号(即OPS(topp)=’(‘),则将左括号从运算符栈谈出,且继续扫描下一个符号。

(4)、若运算符的右不大于运算符栈栈顶的运算符(即OPS(topp)),则从操作数栈OVS中弹出两个操作数,设先后弹出的操作数为a、b,再从运算符栈OPS中弹出一个运算符,设为+,然后作运算a+b,并将运算结果压入操作数栈OVS。本次的运算符下次将重新考虑。

第二种方法——

首先对表达式进行线性化,然后将线性表达式转换成机器指令序列以便进行求值。

那么什么是表达式的线性化呢?人们所习惯的表达式的表达方法称为中缀表示。中缀表示的特点是运算符位于运算对象的中间。但这种表示方式,有时必须借助括号才能将运算顺序表达清楚,而且处理也比较复杂。

1929年,波兰逻辑学家Lukasiewicz提出一种不用括号的逻辑符号体系,后来人们称之为波兰表示法(Polish notation)。波兰表达式的特点是运算符位于运算对象的后面,因此称为后缀表示。在对波兰表达式进行运算,严格按照自左至右的顺序进行。下面给出一些表达式及其相应的波兰表达式。

表达式 波兰表达式

A-B AB-

(A-B)*C+D AB-C*D+

A*(B+C/D)-E*F ABCD/+*EF*-

(B+C)/(A-D) BC+AD-/

OK,所谓表达式的线性化是指将中缀表达的表达式转化为波兰表达式。对于每一个表达式,利用栈可以把表达式变换成波兰表达式,也可以利用栈来计算波兰表达式的值。

至于转换和计算的过程和第一种方法大同小异,这里就不再赘述了。

下面给出转换和计算的具体实现程序——

/* first函数给出各个运算符的优先级,其中=为表达式结束符 */

int first(char c)

{ int p;

switch(c)

{ case '*': p=2; break;

case '/': p=2; break;

case '+': p=1; break;

case '-': p=1; break;

case '(': p=0; break;

case '=': p=-1; break;

}

return(p);

}

/* 此函数实现中缀到后缀的转换 */

/* M的值宏定义为20 */

/* sp[]为表达式数组 */

int mid_last()

{ int i=0,j=0; char c,sm[M];

c=s[0]; sm[0]='='; top=0;

while(c!='\0')

{ if(islower(c)) sp[j++]=c;

else switch(c)

{ case '+':

case '-':

case '*':

case '/': while(first(c)=first(sm[top]))

sp[j++]=sm[top--];

sm[++top]=c; break;

case '(': sm[++top]=c; break;

case ')': while(sm[top]!='(')

sp[j++]=sm[top--];

top--; break;

default :return(1);

}

c=s[++i];

}

while(top0) sp[j++]=sm[top--];

sp[j]='\0'; return(0);

}

/* 由后缀表达式来计算表达式的值 */

int calc()

{ int i=0,sm[M],tr; char c;

c=sp[0]; top=-1;

while(c!='\0')

{ if(islower(c)) sm[++top]=ver[c-'a'];/*在转换过程中用abcd等来代替数,

这样才可以更方便的处理非一位数,

ver数组中存放着这些字母所代替的数*/

else switch(c)

{ case '+': tr=sm[top--]; sm[top]+=tr; break;

case '-': tr=sm[top--]; sm[top]-=tr; break;

case '*': tr=sm[top--]; sm[top]*=tr; break;

case '/': tr=sm[top--];sm[top]/=tr;break;

default : return(1);

}

c=sp[++i];

}

if(top0) return(1);

else

}

这样这个程序基本上就算解决了,回过头来拿这个程序来算一算文章开始的那个问题。哈哈,算出来了,原来如此简单——(6-3)*10-6=24。

最后我总结了一下这其中容易出错的地方——

1、 排列的时候由于一个数只能出现一次, 所以必然有一个判断语句。但是用什么来判断,用大小显然不行,因为有可能这四个数中有两个或者以上的数是相同的。我的方法是给每一个数设置一个代号,在排列结束时,通过这个代号找到这个数。

2、在应用嵌套函数时,需仔细分析程序的执行过程,并对个别变量进行适当的调整(如j的值),程序才能正确的执行。

3、在分析括号问题的时候要认真仔细,不要错过任何一个可能的机会,也要尽量使程序变得简单一些。不过我的分析可能也有问题,还请高手指点。

4、在用函数对一个数组进行处理的时候,一定要注意如果这个数组还需要再应用,就必须将它先保存起来,否则会出错,而且是很严重的错误。

5、在处理用户输入的表达式时,由于一个十位数或者更高位数是被分解成各位数存放在数组中,所以需对它们进行处理,将它们转化成实际的整型变量。另外,在转化过程中,用一个字母来代替这个数,并将这个数存在一个数组中,且它在数组中的位置和代替它的这个字母有一定的联系,这样才能取回这个数。

6、由于在穷举过程难免会出现计算过程中有除以0的计算,所以我们必须对calc函数种对于除的运算加以处理,否则程序会因为出错而退出(Divide by 0)。

7、最后一个问题,本程序尚未解决。对于一些比较著名的题目,本程序无法解答。比如说5、5、5、1或者8、8、3、3。这是由于这些题目在计算的过程用到了小数,而本程序并没有考虑到小数。

C语言函数代码

#include stdio.h

#include stdlib.h

int isPrime(int m)

{

int flag,i;

flag=1;//默认标记为1,是素数

for(i=2;im;i++)//从2开始到m

{

if(m%i==0){flag=0;}//对比自身小的数字进行求余。如果能求余就不是素数,标记为0

}

return flag;//返回标记

}

int main()

{

int n,prime;

int count=0;//计数器从0开始

for(n=3;n200;n=n+2)//奇数有可能会成为素数

{

prime=isPrime(n);//调用isPrime函数

if(prime==1)//如果返回值为1,则说明他是素数

{

count++;//计数,用来换行

printf("%5d",n);

if(count%5==0){printf("\n");}//每5个换行

}

}

system("pause");//暂停

return 0;

}


网站栏目:c语言函数入门代码,c语言入门函数大全
转载注明:http://scyanting.com/article/dsipeie.html