c语言怎么写系统
1.C语言如何编写系统程序
C语言编写WINDOWS程序要调用WINDOWS的API函数你需要并知道了解一些API函数的功能(不必死记,用的时候查MSDN便可)但更重要的是你要了解用纯C+API编WINDOWS应用程序的一些基本框架不外乎就是 设计窗口类->注册窗口类->创建窗口->显示窗口->消息循环要了解WINDOWS的消息处理机制说到书籍,那没什么可以和
2.如何用c语言编写简单的操作系统
C语言当然是可以写操作系统的,但是操作系统的编写一般都不仅仅只是用C语言编写的。
写操作系统需要编程语言提供以下几个特征:
1、跨平台,不能是只在某个平台下编译(VB就不行);
2、必须是编译型语言(PHP就不行),或者有一个非常高效的解释器;
3、必须有方便的操作硬件的功能,容易嵌入汇编(Java就不行);
4、兼容性要好,最好不同编译器编译的符号要基本相同,容易链接(C++不行,如果放弃Class的话C++基本可以);
5、编译器本身最好是由该语言自己完成的(大部分语言的编译器都是用C/C++写的);
6、开发者可以很方便的扩展、改造、或者使用第三方的运行库(大部分语言的库都无法修改);
7、开发者众多(小众语言就不行);
8、该语言开发操作系统的资料要足够完善。
所以总结下来,C语言是首选。
3.C语言如何编写系统程序
C语言编写WINDOWS程序要调用WINDOWS的API函数
你需要并知道了解一些API函数的功能(不必死记,用的时候查MSDN便可)
但更重要的是你要了解用纯C+API编WINDOWS应用程序的一些基本框架
不外乎就是 设计窗口类->;注册窗口类->;创建窗口->;显示窗口->;消息循环
要了解WINDOWS的消息处理机制
说到书籍,那没什么可以和<WINDOWS程序设计>(Charles Petzold著)相媲美了
侯捷说过没有一本书是每个程序员需要人手一本的,除了<WINDOWS程序设计>
4.C语言怎么系统的学习,本人菜鸟刚开始学.
C语言,面向过程编程。是编程基础语言!
举个例子,先告诉你编程语言的区别:
假如你是工程师,某公司要你造一座桥,那么
1、JavaScript、Dreamweaver等网页编程就相当于是买桥,买好了装上去。这样造桥任务是完成了,但性能,外观就很单一。(学起来容易,开发起来很快)
2、Delphi、Java等面向对象编程就相当于是买材料。可以满足一部分桥梁性能上的需求。(需要较长时间)
3、C、C++、汇编语言等面向过程编程就相当于是在做原材料了,每个零部件都是自己做。做出来可以满足任何需求,细节的,外观……(需要时间长时间,花更多功夫)。
主要看你朝什么方向走了!学好C可不是一朝一夕的功夫!要是掌握最基本的,10个月该没问题了!
以上都是我自己写的,不是随便找来复制上去的,希望对你有用!
c语言怎么写dll
1.用C语言如何写DLL?
//head file: asd.h
#ifdef _cplusplus
extern "C"{
#else
#endif
#ifdef HEAD_DLL
#define DLL_EXPORT _declspec(dllexport)
#else
#define DLL_EXPORT
#endif
int DLL_EXPORT asd_main(char* file_in, char* file_out);
#ifdef _cplusplus
}
#endif
//C file: asd.c
#include "asd.h"
int DLL_EXPORT asd_main(char* file_in, char* file_out)
{
FILE *in, *out;
in = fopen(file_in,"rb");
if(in == NULL)
return 0;
out = fopen(file_out,"wb");
if(out == NULL)
return 0;
//add code what you want:
。
}
2.用C语言编写DLL
下面就是一个dll的主函数。加上一个空的导出函数.链接的时候目标是dll或者建立dll工程。连接器里面有设置
#include<windows.h>
__declspec(dllexport) void FuncInDll (void)
{}
BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, void* lpReserved)
{
HANDLE g_hModule;
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
g_hModule = (HINSTANCE)hModule;
break;
case DLL_PROCESS_DETACH:
g_hModule=NULL;
break;
}
return TRUE;
}
注册表操作有一系列API函数可以调用。你可以在MSDN搜索以Reg开头的API如RegOpenKey,然后旁边一堆相关的注册表API。
注册表键值HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下添加项可以实现开机启动。
当然还有其它方法。
3.C程序如何调用dll 文件
用的IDE不一样,生成DLL文件的方法也有差异,建议上网查找你所用的IDE生成DLL文件的方法。
***********************************************
这个关键是IDE(比如是VC++还是BCB),C语言在编DLL和其它的程序时都用相同的规则。
***********************************************
看不懂建议暂时就不要自己做了,在这里说和你看网上资料是一样的,而且这里可以说的内容还不及网上多呢。
4.C语言如何调用DLL
//dll
#include <windows.h>
extern "C" //保持C语言文件
void _declspec ( dllexport ) tryProc() //定义函数
{
MessageBox(NULL,_T("a"),_T("a"),MB_OK);
}-------------------------------------
//C
#include <windows.h>
int main()
{
HMOUDLE dll = LoadLibrary(/*DLL文件名*/);
if(dll != NULL)
{
FARPROC try = GetProcAddress(dll,"tryProc");
if(try != NULL)
{
tryProc();//假如函数有返回值,可以用try()得到返回值
/*_asm call tryProc*/
}
}
return 0;
}
5.用C语言如何写DLL动态链接库
这是我以前的回答,是个两数加法的例子,看了就明白了
你的dll不必用h头文件,你用的是显式声明导出函数
vc在显式声明函数时会出现与vb不匹配的问题,他会把函数名改了,你必须用隐式声明,就是def文件声明才可以。
你的cpp里直接写
int __stdcall add(int a, int b)
{
return (a+b);
}
然后再在工程里添加一个文本文件,注意,文件名是 makedll(如果不对就是工程名).def
里面写
LIBRARY makedll
EXPORTS
add @1
然后保存
编译、连接
得到的dll就是vb可以调用的了
vb里呢,不用怎么改
如下
Public Declare Function add Lib "makedll.dll" (ByVal a As Integer,ByVal b As Integer) As Integer
Private Sub Command1_Click()
Dim c As Integer
c = add(1, 2)
MsgBox c
End Sub
这有就应该没问题了
c语言偶数怎么写
1.c语言中如何表达偶数
思路:所谓偶数就是能被2整除的数,所以如果n%2等于0就表示该是是偶数,否则该数就是奇数。
参考代码:
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);//输入该数
if(n%2)//如果%2等于1运行if后语句,否则运行else后语句
printf("%d为奇数\n",n);
else
printf("%d为偶数\n",n);
return 0;
}
/*
输出:
2014
2014为偶数
*/
2.找出一批正整数中最大的偶数,c语言怎么写
1、打开C-Free5.0新建一个空白页面,然后将C语言的基础格式写完,注意格式缩进。
2、然后输入“ int a=10; float b=5,c; ”注意: float 是浮点型,int 是整型。这个是用来定义C语言中的数值的类型,还有如果一个语句结束那就要打上“;”。
3、c是我们定义的一个空白的浮点数,用来当作后面的加减后取得值。例如"c=a-b; printf("a-b=%f\n",c);"注意这里有几个注意点,我们可以看到一个整型的数和一个浮点数的加减乘除得到的数值都是浮点数,所以我们这里用%f输出c的值。
4、得到的数值会出现错误,因为%d输出的是整型的数值。
5、继续将剩下的语言补充完整,#include <stdio.h>main(){ int a=10; float b=5,c,d,e,f; c=a-b; d=a+b; e=a*b; f=a/b; printf("a-b=%f\n",c); printf("a+b=%f\n",d); printf("a*b=%f\n",e); printf("a/b=%f\n",f);}。
n用c语言怎么写
1. 求n
#include<stdio.h>
main()
{
int n,i,x;
printf ("in put a num : ");
scanf ("%d",&n);
if (n<0) printf ("data error! \n");
if(n=0) printf ("0!" ,1);
else for(i=1;i<=n;i++) x=x*i;
printf ("%d!, %d", n, x);
}
2. C语言中如何编写N的阶乘
1、打开visual C++软件,新建任务,鼠标左键点击文件,选择C++ source file:
2、输入代码,首先引入c语言标准库“# include <stdio.h>;”,之后在主函数里编写程序,其实n的阶乘就是从1到n的累积,只要编写一个for循环从1一直到n不停的求积就可以了:
3、编写完成后,点击左边的编译按钮 ,编译完成后点击右边的按钮运行程序:
4、运行软件后,Debug里面会生成exe的阶乘可运行程序,打开它这里输入5,按下回车程序就能计算出5的阶乘了,至此就完成了程序的编写:
3. c语言如何编写从1加到n的程序
include<stdio.h>
int main()
{
int n,i;
int sum=0;
printf("请输入要累加的数字n:");
scanf("%d",&n);
for(i=0;i<=n;i++)
{
sum=sum+i;
}
printf("累加的和为%d",sum);
return 0;
}
扩展资料:
在C语言中,有三种类型的循环语句:for语句、while语句和do While语句。分别介绍如下:
for
for为当型循环语句,它很好地体现了正确表达循环结构应注意的三个问题:
⑴控制变量的初始化。
⑵循环的条件。
⑶循环控制变量的更新。
while:
while结构循环为当型循环(when type loop),一般用于不知道循环次数的情况。维持循环的是一个条件表达式,条件成立执行循环体,条件不成立退出循环。
while语句格式为:
while(条件表达式)
循环体
每次执行循环体前都要对条件表达式进行判断。
do…while语句结构为直到型循环(until type loop),也用于不知道循环次数的情况。do…while和while的区别在于do…while结构是执行完一遍循环体再判断条件。
do while语句格式为:
do
循环体
while(条件表达式);
每执行完一次循环体,do…while结构都要判断一下条件表达式。
参考资料来源:百度百科-循环语句
c语言怎么写注释
1. C语言中如何注释
#include 有两种注释方法: // 行注释,可以注释其后的一行。 /* */ 块注释,注释这两个符号中间的所有区域。 【释的原则】 注释的目的是解释代码的目的、功能和采用的方法,提供代码以外的信息,帮助读者理解代码,防止没必要的重复注释信息。 示例:如下注释意义不大。 /* if receive_flag is TRUE */ if (receive_flag) 而如下的注释则给出了额外有用的信息。 /* if mtp receive a message from links */ if (receive_flag) 【说明性文件头部应进行注释】 说明性文件(如头文件.h 文件、.inc 文件、.def 文件、编译说明文件.cfg 等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。 示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 【源文件头部应进行注释】 源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。 示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 【函数头部应进行注释】 函数头部应进行注释,列出:函数的目的/ 功能、输入参数、输出参数、返回值、调用关系(函数、表)等。 示例1:下面这段函数的注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 C语言的注释符一般分为两种,一种是以“/*”开头,在中间加上注释内容,并以“*/”结尾的段落注释符。 在“/*”和“*/”之间的即为注释。另一种是以“//”开头,后面加注释内容的单行注释符。 在“//”之后的即为注释。程序编译时,不对注释内容作任何处理。 注释一般可出现在程序中的任何位置。注释用来向用户或程序员提示或解释程序的功能作用。 C语言的注释符是以“/*”开头并以“*/”结尾的串。在“/*”和“*/”之间的即为注释。 程序编译时,不对注释作任何处理。注释可出现在程序中的任何位置。 注释用来向用户提示或解释程序的意义。在调试程序中对暂不使用的语句也可用注释符括起来,使翻译跳过不作处理,待调试结束后再去掉注释符。 在C++语言源程序中可以用“/*。.*/”做注释符,也可以用“//”做注释符。 其中,“/*。.*/”为多行注释符,“//”为单行注释符。 另外,在C语言的C90中 也可以使用“//”作为注释符。 printf("%d\n",a++ + ++b); /*b先自增后与a相加即3+8=11,本行运行后a=4,b=8*/ printf("%d\n",b%a); /*8/4=2余0 所以结果是0 */ printf("%d\n",a/b); /*a/b=0.5由于是整型相除结果还是整型应截掉小数所以a/b=0结果为0*/ printf("%d\n",a+b); /*4+8=12*/ printf("%d\n",a*=b+1); /*相当于a=a*(b+1)=4*9=36*/ C语言编程规范-注释 规则:1:一般情况下,源程序有效注释量必须在20%以上。 说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。2:说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。 示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。/************************************************* Copyright (C), 1988-1999, Tech. Co., Ltd. File name: // 文件名 Author: Version: Date: // 作者、版本及完成日期 Description: // 用于详细说明此程序文件完成的主要功能,与其他模块 // 或函数的接口,输出值、取值范围、含义及参数间的控 // 制、顺序、独立或依赖等关系 Others: // 其它内容的说明 Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明 1. 。 . History: // 修改历史记录列表,每条修改记录应包括修改日期、修改 // 者及修改内容简述 1. Date: Author: Modification: 2. 。*************************************************/3:源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。 示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。/************************************************************ Copyright (C), 1988-1999, Tech. Co., Ltd. FileName: test.cpp Author: Version : Date: Description: // 模块描述 Version: // 版本信息 Function List: // 主要函数及其功能 1. ------- History: // 历史修改记录 History是修改历史记录列表,每条修改记录应包括修改日期、修改者及修改内容简述。4:函数头部应进行注释,列出:函数的目的/功能、输入参数、输出参数、返回值、调用关系(函数、表)等。 示例:下面这段函数的注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。/************************************************* Function: // 函数名称 Description: // 函数功能、性能等的描述 Calls: // 被本函数调用的函数清单 Called By: // 调用本函数的函数清单 Table Accessed: // 被访问的表(此项仅对于牵扯到数据库操作的程序) Table Updated: // 被修改的表(此项仅对于牵扯到数据库操作的程序) Input: // 输入参数说明,包括每个参数的作 // 用、取值说明及参数间关系。 Output: // 对输出参数的说明。 Return: // 函数返回值的说明 Others: // 其它说明*************************************************/5:边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。 不再有用的注释要删除。6:注释的内容要清楚、明了,含义准确,防止注释二义性。 说明:错误的注释不但无益反而有害。7:避免在注释中使用缩写,特别是非常用缩写。 说明:在使用缩写时或之前,应对缩写进行必要的说明。8:注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开。 示例:如下例子不符合规范。例1:/* get replicate sub system index and net indicator */ repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].ni; 例2:repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].ni;/* get replicate sub system index and net indicator */ 应如下书写/* get replicate sub system index and net indicator */repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].ni;9:对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,说明其物理含义。 变量、常量、宏的注释应放在其上方相邻位置或右方。示例:/* active statistic task number */#define MAX_ACT_TASK_NUMBER 1000#define MAX_ACT_TASK_NUMBER 1000 /* active statistic task number */10:数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自注释的,必须加以注释。 对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释放在此域的右方。示例:可按如下形式说明枚举/数据/联合结构。 /* sccp interface with sccp user primitive message name */enum SCCP_USER_PRIMITIVE{ N_UNITDATA_IND, /* sccp notify sccp user unit data come */ N_NOTICE_IND, /* sccp notify user the No.7 network can not */ /* transmission this message */ N_UNITDATA_REQ, /* sccp user's unit data transmission request*/};11:全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取。 #include **** C语言写注释: 1、可以用任何一种文字 2、格式 /* 注释 */ 3、可放在任何地方 **** 好的注释: 1、能看懂 2、样式统一 3、例 /***************************************************** 主程序 *****************************************************/ void main(void) **** 还可以采用这些方式 1、/* 注释 */ 2、//注释 3、例 /*****************************************************/ //主程序 /*****************************************************/ void main(void) 1、少了很多大括号,包括while的,if else的 2、while(feof(fp1)!=EOF) 最好改为while(!feof(fp1)) 3、我改后测了一下,这个程序只能删除“/* */”的注释,对“//”的注释无效。再改一下状态机吧。 4、下面的程序我把格式整理了一下,没改什么算法部分。写程序要规范。 #include "stdio.h" void delcomm(FILE*fp1,FILE*fp2) { char c; int i=0; while(!feof(fp1)) { printf("test\n"); if((c=fgetc(fp1))=='\n') fprintf(fp2,"\n"); else { switch(i) { case 0: if (c=='/') i=1; else fprintf(fp2,"%c",c); break; case 1: if (c=='*') i=2; else { fprintf(fp2,"/%c",c); i=0; } break; case 2: if (c=='*') i=3; break; case 3: i=(c=='/')?0:2; break; } } } } int main() { FILE*fp1,*fp2; if ((fp1=fopen("/home/hxl/test/md5.c","r"))==NULL) { printf("wrong!"); exit(0); } fp2=fopen("/home/hxl/test/md5out.c","w"); delcomm(fp1,fp2); fcloseall(); } #include 唉~~ 兄弟!我觉得没有必要拘泥于这个答案吧~~ 这个答案当然是想让你这样写 ============================= int main() { int a, b; while(scanf("%d %d",&a,&b)!=EOF) { printf("%d\n",a+b); } return 0; } 这才是他们所谓的标准答案 输入ctrl+z结束输入 但我觉得你写的不错~~ 因为scanf("%d %d",&a,&b)的返回值只有当a b 都正确读入才会是2 只有a读入是1 都没读入就是0 而且结束输入也没问题 坦白的讲 我觉得你这个法子挺好的~~~ #include <stdio.h> int f(int x,int y); int main() { int a,b; printf("输入两个正整数:"); scanf("%d %d",&a,&b); printf("a的b次方=%d\n",f(a,b)); return 0; } int f(int x,int y) { if(y==1)return x; else return x*f(x,y-1); } 因为表达式a+b>c&&b==c是一个逻辑表达式,所以结果只能够为逻辑值true或者false,如果转为整型就只能是1和0; 只是想知道这个表达式的值得话:这样写就ok #include<stdio.h> void main() { int a=3,b=4,c=5; printf("%d\n",a+b>c&&b==c); } 如果想要得到并保存利用这个结果: 就把这个结果保存到一个变量里, int d; d=a+b>c&&b==c; 再输出d; 可以调用头文件math.h中的sqrt()函数。 参考代码如下: 对36开根号: #include<stdio.h> #include<math.h> int main () { float a=36.0; a=sqrt(a); printf("%.2f\n",a); return 0; } 拓展资料 C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。 尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。 二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。 C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。 其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。 c语言中没有根号。 首先在 main()函数 上边加个#include "math.h" 因为开根号属于 数学函数里边的函数,要使用根号就要加上#inculde "math.h", 然后在你要开根号的数的前边加个 sqrt,就可以了 例如 #inculde "math.h" main() { float a,b; printf("please input a nuberm:"); scanf("%f",&a); b=sqrt(a); printf("%f\n",b); }这个程序就是 让 用户输入个数字,然后输出原数值的开根号后的结果 例: #include <math.h> #include <stdio.h> int main(void) { double x = 4.0, result; result = sqrt(x); printf("The square root of %lf is %lf ", x, result); return 0; } 可以调用头文件math.h中的sqrt()函数。 参考代码如下: 对36开根号: #include 尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。 二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。 C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。 其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。 修改几个地方: 1 scanf("%f",&x);为scanf("%lf",&x);即加个l(L小写)在%f中间; 解释:double输入用%lf格式,float用%f格式 2 printf("y=%f\d",y);为printf("y=%lf\n",y); 即加个l(L小写)在%f中间;输出double也用%lf格式, \d格式没见过,一般换行用\n格式 其他几个地方的\d都是这样 最后个printf也加个l,改成\n试试。 不行的话,源程序贴出来,看看。 首先在 main()函数 上边加个#include "math.h" 因为开根号属于 数学函数里边的函数,要使用根号就要加上#inculde "math.h", 然后在你要开根号的数的前边加个 sqrt,就可以了 例如 #inculde "math.h" main() { float a,b; printf("please input a nuberm:"); scanf("%f",&a); b=sqrt(a); printf("%f\n",b); }这个程序就是 让 用户输入个数字,然后输出原数值的开根号后的结果 自定义一个求平方根的函数 #include<stdio.h> #define delt 10e-6 /*定义一个精度要求*/ double mysqrt(double x) { double x1,x2,x0; x1=(x>1)?1:x; x2=(x>1)?x:1; do { x0=(x1+x2)/2.0; if(x0*x0==x) return x0; else if(x0*x0>x) x2=x0; else x1=x0; printf("x0=%lf,x1=%lf,x2=%lf\n",x0,x1,x2); }while(x2-x1>=delt); return x0; } int main(void) { double x; printf("输入一个数,用二分法求平方根: "); scanf("%lf",&x); printf("\n%lf的平方根 等于 %.6lf\n",x,mysqrt(x));/*输入小数点后6位,多了就不准了*/ return 0; } 在C语言中,可以用sqrt()函数表示根号,参数类型为double类型,使用前需要先引入头文件math.h。 以下列代码为例:#include 3、double atan(double x) 返回x的反正切值,以弧度为单位。4、double atan2(doubly y, double x) 返回y / x的以弧度为单位的反正切值,根据这两个值,以确定正确的象限上的标志。 5、double cos(double x) 返回弧度角x的余弦值。6、double cosh(double x) 返回x的双曲余弦。 7、double sin(double x) 返回弧度角x的正弦。8、double sinh(double x) 返回x的双曲正弦。 9、double tanh(double x) 返回x的双曲正切。10、double exp(double x) 返回e值的第x次幂。 11、double log(double x) 返回自然对数的x(基准-E对数)。12、double log10(double x) 返回x的常用对数(以10为底)。 13、double modf(double x, double *integer) 返回的值是小数成分(小数点后的部分),并设置整数的整数部分。14、double pow(double x, double y) 返回x的y次方。 15、double sqrt(double x) 返回x的平方根。16、double ceil(double x) 返回大于或等于x的最小整数值。 17、double fabs(double x) 返回x的绝对值18、double floor(double x) 返回的最大整数值小于或等于x。19、double fmod(double x, double y) 返回的x除以y的余数。 参考资料:math.h函数库——百度百科。 怎样才能学好C语言 第一:C语言语法结构很简洁精妙,写出的程序也很高效,很便于描述算法,大多数的程序员愿意使用C语言去描述算法本身,所以,如果你想在程序设计方面有所建树,就必须去学它。 第二:C语言能够让你深入系统底层,你知道的操作系统,哪一个不是C语言写的?所有的indows, Unix, Linux, Mac, os/2,没有一个里外的,如果你不懂C语言,怎么可能深入到这些操作系统当中去呢?更不要说你去写它们的内核程序了。 第三:很多新型的语言都是衍生自C语言,C++,Java,C#,J#,perl。哪个不是呢?掌握了C语言,可以说你就掌握了很多门语言,经过简单的学习,你就可以用这些新型的语言去开发了,这个再一次验证了C语言是程序设计的重要基础。还有啊,多说一点:即使现在招聘程序员,考试都是考C语言,你想加入it行业,那么就一定要掌握好C语言。 那么究竟怎样学习C语言呢? 1:工欲善其事,必先利其器 这里介绍几个学习C语言必备的东东: 一个开发环境,例如turbo C 2.0,这个曾经占据了DOS时代开发程序的大半个江山。但是现在windows时代,用turbo C有感觉不方面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便。建议使用Visual C++,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便。 一本学习教程,现在C语言教材多如牛毛,但推荐大家使用《C语言程序设计》谭浩强主编 第二版 清华大学出版社,此书编写的很适合初学者,并且内容也很精到。 除此以外,现在有很多辅助学习的软件,毕竟现在是Window时代了,学习软件多如牛毛,不象我们当初学习,只有读书做题这么老套。我向大家推荐一个“集成学习环境(C语言)”,里边的知识点总结和例程讲解都非常好,还有题库测试环境,据说有好几千题,甚至还有一个windows下的trubo C,初学者甚至不用装其它的编译器,就可以练习编程了,非常适合初学者。还有一个“C语言学习系统”软件,不过感觉只是一个题库系统,如果你觉得题做的不够,不妨也可以试试。 2:葵花宝典 学习计算机语言最好的方法是什么?答曰:读程序。 没错,读程序是学习C语言入门最快,也是最好的方法。如同我,现在学习新的J#,C#等其他语言,不再是抱着书本逐行啃,而是学习它们的例程。当然,对于没有学过任何计算机语言的初学者,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到的所有例程,然后仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止,祝贺你,你快入门了。 3:登峰造极 写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法)。 是不是写出底层程序就是程序设计高手呢?非也,写底层程序,无非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片写驱动程序,无非就是掌握这块芯片的各种寄存器及其组合,然后写值读值,仅此而已。这不过是熟悉一些io函数罢了。那么怎样才算精通程序设计呢?怎样才能精通程序设计呢?举个例子:你面前有10个人,找出一个叫“张三”的人,你该怎么办?第一种方法:直接对这10个人问:“谁叫张三”。第2种方法:你挨个去问“你是不是张三?”,直到问到的这个人就是张三。第三种方法:你去挨个问一个人“你认不认识张三,指给我看”。不要小看这个问题,你说当然会选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。刚才这个问题类似于数据结构和算法中的:Map数据结构,穷举查找和折半查找。所以掌握好数据结构和一些常用算法,是登峰造极的必然之路。最后给大家推荐严尉敏的《数据结构》清华大学出版社,希望每一个想成为程序设计高手的人研读此书。 五个数之和为335,那么每个数都可能是1~335,下面的程序搜索:#include #include "stdio.h"int svalue(long m){ long temp=m,n=0; while(temp) { n=n*10+temp%10; temp/=10; } if(n==m) return 1; else return 0;}main(){ int m; for(m=11;m<1000;m++) { if(svalue(m) && svalue(m*m) && svalue(m*m*m)) printf("%d ",m); }}。 你并没有把详细的 C 语言基础代码写出来,别人怎么帮助你添加注释语句啊?因为所说的 C 语言基础代码实际上并没有一定之规。怎么样才算是基础代码、有几行代码就可以、足够了?这些都是灵活的、并不是一成不变的。例如,最、最简单的 C 语言基础代码就是:很多 C 语言教材上的第一个程序,输出:"Hello, World !"。该详细的 C 语言代码如下: #include <stdio.h>; /* 基本输入输出头文件,包括:printf、scanf等的库函数原型说明 */ void main( ) /* 任何一个 C 语言源代码都必须包含主函数 main( ),void 表示该函数不返回任何值 */ { /* 在 C 语言代码中,任何一个函数都是以 { 开始,并且以 } 结束 */ printf( "Hello, World !\n" ) ; /* 在电脑屏幕上输出字符串:Hello, World */ } #include +(b-1)+(b)\n"); printf("=%d+%d+%d+。 +%d+%d\n",a,a+1,a+2,b-1,b); sum=0; for ( i=a;i<=b;i++ ) sum+=i; printf("=%d\n",sum); system("pause"); } 。 #include 1、首先输入下方的代码 #include c语言读写文件程序:#include "stdio.h"#include main(){FILE *fp1;//定义文件流指针,用于打开读取的文件FILE *fp2;//定义文件流指针,用于打开写操作的文件char text[1024];//定义一个字符串数组,用于存储读取的字符fp1 = fopen("d:\\a.txt","r");//只读方式打开文件a.txtfp2 = fopen("d:\\b.txt","w");//写方式打开文件a.txtwhile(fgets(text,1024,fp1)!=NULL)//逐行读取fp1所指向文件中的内容到text中{puts(text);//输出到屏幕fputs(text,fp2);//将内容写到fp2所指向文件中}fclose(fp1);//关闭文件a.txt,有打开就要有关闭fclose(fp2);//关闭文件b.txt}扩展资料:C语言文件读写操作总结一.非标准文件的读写 不带缓冲的1.文件的打开和关闭open()函数的作用是打开文件,其调用格式为: int open(char *filename, int access); 该函数表示按access的要求打开名为filename的文件,返回值为文件描述字,其中access有两部分内容: 基本模式和修饰符, 两者用" "("或")方式连接,修饰符可以有多个, 但基本模式只能有一个。 access的规定O_RDONLY 只读 O_APPEND 文件指针指向末尾O_WRONLY 只写O_CREAT 文件不存在时创建文件, 属性按基本模式属性O_RDWR 读写O_BINARY 打开一个二进制文件O_TEXT 打开一个文字文件open()函数打开成功, 返回值就是文件描述字的值(非负值), 否则返回-1。 close()函数的作用是关闭由open()函数打开的文件, 其调用格式为: int close(int handle); 该函数关闭文件描述字handle相连的文件。 2.读写函数 int read(int handle, void *buf, int count);read()函数从handle(文件描述字)相连的文件中, 读取count个字节放到buf所指的缓冲区中, 返回值为实际所读字节数, 返回-1表示出错。返回0 表示文件结束。 write()函数的调用格式为: int write(int handle, void *buf, int count); write()函数把count个字节从buf指向的缓冲区写入与handle相连的文件中, 返回值为实际写入的字节数。3.随机定位函数lseek()函数的调用格式为: int lseek(int handle, long offset, int fromwhere);该函数对与handle相连的文件位置指针进行定位,功能和用法与fseek()函数相同。 tell()函数的调用格式为: long tell(int handle); 该函数返回与handle相连的文件现生位置指针, 功能和用法与ftell()相同二、标准文件的读写1.文件的打开函数fopen()文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了。当使用打开函数时,必须给出文件名、文件操作方式(读、写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针指向文件开头。 若已有一个同名文件存在,则删除该文件,若无同名文件,则建立该文件,并将文件指针指向文件开头。fopen(char *filename,char *type); 其中*filename是要打开文件的文件名指针,一般用双引号括起来的文件名表示,也可使用双反斜杠隔开的路径名。 而*type参数表示了对打开文件的操作方式。其可采用的操作方式如下: "r" 打开,只读; "w" 打开,文件指针指到头,只写; "a" 打开,指向文件尾,在已存在文件中追加; "rb" 打开一个二进制文件,只读; "wb" 打开一个二进制文件,只写; "ab" 打开一个二进制文件,进行追加 ;"r+" 以读/写方式打开一个已存在的文件; "w+" 以读/写方式建立一个新的文本文件 ;"a+" 以读/写方式打开一个文件文件进行追加 ;"rb+" 以读/写方式打开一个二进制文件; "wb+" 以读/写方式建立一个新的二进制文件 ;"ab+" 以读/写方式打开一个二进制文件进行追加 ;当用fopen()成功的打开一个文件时,该函数将返回一个FILE指针,如果文件打开失败,将返回一个NULL指针。 可以使用C语言中的文件操作函数,将数据写入文件。具体如下 一、打开文件。 使用fopen函数。格式为: FILE *fopen(const char *name, const char * mode); 其中name为要写入的文件名,mode为格式字符。要写入文件,mode可以是: 1、"w" 只写方式,文本形式输入; 2、"wb" 只写方式,二进制形式输入; 3、"wb+" 读写方式,二进制形式输入; 4、"w+" 读写方式,文本形式输入; 5、"a" 追加方式,写入文件结尾,文本形式输入; 6、"ab" 追加方式,写入文件结尾,二进制形式输入; 7、"ab+" 追加方式,可读写,写入文件结尾,二进制形式输入; 8、"a+" 追加方式,可读写,写入文件结尾,文本形式输入; 二、写入数据。 可以使用各种写入函数,向文件写入。 如打开的文件指针为fp,可以使用如下函数: 1、fputc, 写入一个字符。声明为: int fputc(int ch, FILE *fp); 2、fputs, 写入一个字符串,声明为: char * fputs(const char *str, FILE *fp); 3、fprintf,格式化写入,功能和printf类似。 声明为: int fprintf(FILE *fp, const char *fmt, 。); 4、fwirte, 按块写入二进制数据,声明为: int fwirte(char *buf, int block_size, int block_number, FILE *fp); 三、写入完毕后,调用fclose关闭文件: int fclose(FILE *fp); 文件使用方式 意义 “rt” 只读打开一个文本文件,只允许读数据 “wt” 只写打开或建立一个文本文件,只允许写数据 “at” 追加打开一个文本文件,并在文件末尾写数据 “rb” 只读打开一个二进制文件,只允许读数据 “wb” 只写打开或建立一个二进制文件,只允许写数据 “ab” 追加打开一个二进制文件,并在文件末尾写数据 “rt+” 读写打开一个文本文件,允许读和写 “wt+” 读写打开或建立一个文本文件,允许读写 “at+” 读写打开一个文本文件,允许读,或在文件末追加数据 “rb+” 读写打开一个二进制文件,允许读和写 “wb+” 读写打开或建立一个二进制文件,允许读和写 “ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据对于文件使用方式有以下几点说明:1) 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:r(read): 读w(write): 写a(append): 追加t(text): 文本文件,可省略不写b(banary): 二进制文件+: 读和写2) 凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。 3) 用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。 4) 若要向一个已存在的文件追加新的信息,只能用“a”方式打开文件。但此时该文件必须是存在的,否则将会出错。 5) 在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。 因此常用以下程序段打开文件:6) if((fp=fopen("c:\\hzk16","rb")==NULL){printf("\nerror on open c:\\hzk16 file!");getch();exit(1);}这段程序的意义是,如果返回的指针为空,表示不能打开C盘根目录下的hzk16文件,则给出提示信息“error on open c:\ hzk16 file!”,下一行getch()的功能是从键盘输入一个字符,但不在屏幕上显示。在这里,该行的作用是等待,只有当用户从键盘敲任一键时,程序才继续执行,因此用户可利用这个等待时间阅读出错提示。 敲键后执行exit(1)退出程序。7) 把一个文本文件读入内存时,要将ASCII码转换成二进制码,而把文件以文本方式写入磁盘时,也要把二进制码转换成ASCII码,因此文本文件的读写要花费较多的转换时间。 对二进制文件的读写不存在这种转换。8) 标准输入文件(键盘),标准输出文件(显示器),标准出错输出(出错信息)是由系统打开的,可直接使用。 1、首先输入下方的代码 #include <stdio.h> int main() { //下面是写数据,将数字0~9写入到data.txt文件中 FILE *fpWrite=fopen("data.txt","w"); if(fpWrite==NULL) { return 0; } for(int i=0;i<10;i++) fprintf(fpWrite,"%d ",i); fclose(fpWrite); //下面是读数据,将读到的数据存到数组a[10]中,并且打印到控制台上 int a[10]={0}; FILE *fpRead=fopen("data.txt","r"); if(fpRead==NULL) { return 0; } for(int i=0;i<10;i++) { fscanf(fpRead,"%d ",&a[i]); printf("%d ",a[i]); } getchar();//等待 return 1; } 2、面是写入到txt后的截图: 3、下面是读取文件后打印数据到控制台的截图。 #include 然后输入字符串, 并用fputs函数把该串写入文件string。在程序15行用rewind函数把文件内部位置指针移到文件首。 再进入循环逐个显示当前文件中的全部内容。 C++/C程序的头文件以“.h”为后缀。 以下是假设名称为graphics.h的头文件:#ifndef GRAPHICS_H//作用:防止graphics.h被重复引用#define GRAPHICS_H#include<。.>//引用标准库的头文件。 #include"。"//引用非标准库的头文件。 void Function1(。);//全局函数声明。 inline();//inline函数的定义。classBox//作用:类结构声明{。 };#endif从以上例子可以看出,头文件一般由四部分内容组成:(1)头文件开头处的版权和版本声明;(2)预处理块;(3)inline函数的定义;(4)函数和类结构声明等。在头文件中,用ifndef/define/endif结构产生预处理块,用#include格式来引用库的头文件。 头文件的这种结构,是利用C语言进行开发软件所通常具备的,属于公有知识。传统 C++:扩展资料:c语言头文件的作用:1、头文件可以定义所用的函数列表,方便查阅你可以调用的函数;2、头文件可以定义很多宏定义,就是一些全局静态变量的定义,在这样的情况下,只要修改头文件的内容,程序就可以做相应的修改,不用亲自跑到繁琐的代码内去搜索。 3、头文件只是声明,不占内存空间,要知道其执行过程,要看你头文件所申明的函数是在哪个.c文件里定义的,才知道。4、他并不是C自带的,可以不用。 5、调用了头文件,就等于赋予了调用某些函数的权限,如果你要算一个数的N次方,就要调用Pow()函数,而这个函数是定义在math.c里面的,要用这个函数,就必需调用math.h这个头文件。参考资料:百度百科——头文件。 /*头文件内容,假设名字是test.h*/#ifndef MYHEADFILE#define MYHEADFILEvoid InitInterpolation();void Draw_Border();void Draw_Background();void Draw_Gray();#endif/*以下是test.c的内容*/#include "test.h"/*后面就是各个函数的实现*/同项目中其他各个文件需要使用这些函数时只需要下面这样一句:#include "test.h"千万不要包含.c文件,会出现重复定义问题。 程序注意的一点,二进制和文本形式的读取区别你需要巩固,读的文件就不要以读写形式打开,养成一个好的习惯。 另外一个不太重要的一点,id确实很少作为int类型的,因为有些id会很长,比如10位20位,这样int就存不下了,而用char数组存的话只需要10个字节20个字节就能存下,对于每一位也好比较。 #include <stdio.h> #include <stdlib.h> typedef struct student { int unsigned id; float score [3]; float rank; }Student; int main () { Student s; FILE * fp; fp=fopen("C:\\f11.txt","r"); //尽量以可读方式打开 if (!fp) { printf("file cannot be opened"); exit(1); } //fscanf(fp,"%d %f %f %f",&s.id,&s.score[0],&s.score[1],&s.score[2]); 这一行拿到下面while语句里面 //fprintf(stdout,"%g",s.score[2]); FILE * fw; fw=fopen("C:\\f11a.txt","w"); //注意wb是以2进制形式打开文件,还有目录的格式 if (!fw) { printf("file cannot be opened"); exit(1); } while(!feof(fp)) { fscanf(fp,"%03d%f%f%f",&s.id,&s.score[0],&s.score[1],&s.score[2]); s.rank=(s.score[0]+s.score[1]+s.score[2])/3; fprintf(fw,"%03d\t%.1f\t%.1f\t%.1f\t%.1f\n", s.id, s.score[0], s.score[1], s.score[2], s.rank); //尤其注意fprintf和fwrite不同,fwrite是以二进制形式写文件,如果用fwrite的话将会显示乱码,fwrite和fread配套,fscanf和fprintf配套 } fclose (fp); fclose(fw); return 0; } (1)无参函数的定义一般形式: 类型说明符 函数名() 例如: void Hello() { { 类型说明符 printf("Hello,world"); 语句 } } (2)有参函数的定义一般形式: 类型说明符 函数名(形式参数表) 例如: int max(int a,int b) { { 类型说明符 if(a>b) 语句 return a; } else return b; } 其中类型说明符指明了本函数的类型,函数的类型实际上是函数返回值的类型,它们通常是C语言的 基本数据类型.。 #include #include #include"stdio.h"void connect(char a[],char b[])//连接函数{ char *p1,*p2; p1=a; p2=b; while(*p1!=0) { p1++; } while(*p2!=0) { *p1=*p2; p1++; p2++; }}void main(){ char a[50],b[50]; printf("请输入字符串一:"); gets(a); printf("请输入字符串二:"); gets(b); connect(a,b); //调用连接函数 puts(a); //输出连接后的结果,a为连接后的结果}。 #include 2.任意输入一个三位整数,然后逆序输出。如输入为123,则输出为321。 百位:number/100 十位:(number/10)%10 个位:number%10 #include<conio.h> #include<stdio.h> void main() { int number; printf("input number(100~999):"); scanf("%d",&number); if(number>=100&&number<=999) printf("%d%d%d",number%10,(number/10)%10,number/100); else printf("Error Input(100~999)\n"); getch(); } C语言中,函数调用的一般形式为: 函数名(实际参数表) 对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。 #include<stdio.h> int fun(int x, int y); // 函数声明,如果函数写在被调用处之前,可以不用声明 void main() { int a=1, b=2, c; c = fun(a, b); // 函数的调用,调用自定义函数fun,其中a,b为实际参数,传递给被调用函数的输入值 } // 自定义函数fun int fun(int x, int y) // 函数首部 { // {}中的语言为函数体 return x>y ? x : y; // 返回x和y中较大的一个数 } 扩展资料 C语言中不允许作嵌套的函数定义。因此各函数之间是平行的,不存在上一级函数和下一级函数的问题。但是C语言允许在一个函数的定义中出现对另一个函数的调用。 这样就出现了函数的嵌套调用。即在被调函数中又调用其它函数。这与其它语言的子程序嵌套的情形是类似的。其关系可表示如图。 图表示了两层嵌套的情形。其执行过程是:执行main函数中调用a函数的语句时,即转去执行a函数,在a函数中调用b 函数时,又转去执行b函数,b函数执行完毕返回a函数的断点继续执行,a函数执行完毕返回main函数的断点继续执行。 参考资料:函数调用_百度百科 给你个例子: #include //写好加法,以便调用 int sum(int x1,int x2) { int x3=x1+x2; return x3; } void main() { int a=0; int b=0; int c=0; printf("请输入两个整数\n"); scanf("%d%d",&a,&b); c=sum(a,b);//传递参数给sum()函数,返回他们的和 printf("%d+%d的和是:%d\n",a,b,c); } 总之:就是你把一种方法写到单独的块,这里就是sum()函数,执行一个单一的功能,在main函数调用就是了! 转载请注明出处育才学习网 » 一元二次方程用c语言怎么写2. C语言编程的注释符号有哪几种
3. C语言编程的注释符号是
4. 这题c语言注释怎么写
5. C语言程序注释
6. C语言 帮忙写个注释 全一点 谢谢了
7. C语言程序注释
8. C语言程序中的注释格式由什么组成
9. C语言程序注释
c语言ab怎么写
1. acm题目的a+b用c语言怎么写
2. c语言中怎样写a的b次方,高手,请将整个程序写出来
3. C语言里a+b>c怎么表达
c语言怎么写根号
1. c语言中怎么表示开根号
2. c语言中根号怎么打
3. c语言中怎么表示开根号
4. C语言取根号怎么写
5. 在c语言中根号如何表示,谢啦
6. 用C语言编程怎么求一个数的根号
7. 在c语言中根号如何表示,谢啦
c语言怎么写代码
1. C语言怎么编写代码
2. 关于C语言的写法
3. 求一C语言程序源代码
4. c语言基础代码,越详细,解释越简单,越好
5. C语言这个怎么写
6. C语言编程题代码怎么写
c语言怎么写文件
1. C语言如何写入文本文件
2. 如何用C语言读写文件
3. c语言怎么将数据写入文件
4. c语言文件读写“追加”
5. C语言如何写入文本文件
6. c语言向文本写入
7. c语言头文件怎么写呀
8. C语言如何写头文件
9. c语言写入文件方法
c语言怎么写函数
1. c语言如何编写自己的函数
2. C语言函数编写
3. 编写一个C语言的函数
4. C语言 编写函数
5. 帮忙用c语言写个函数
6. c语言 这个函数怎么写啊
7. C语言如何调用函数
8. c语言中怎么调用函数
育才学习网