当前位置:首页 » 编程语言 » c语言多函数

c语言多函数

发布时间: 2022-06-17 20:22:07

‘壹’ c语言程序主函数可以有多个么

C语言程序主函数只能有1个。C程序中main()称之为主函数,是所有程序运行的入口。程序执行总是从main函数开始,如果有有其他函数,则完成对其他函数的调用后再返回到主函数,最后由main函数结束整个程序。在执行程序时,由系统调用main函数。

(1)c语言多函数扩展阅读:

主函数的两个形参形式中的形参,允许从执行环境中传递任意的多字节字符串,各个指针 argv[1] .. argv[argc-1] 指向每个这些字符串的第一个字符。argv[0] 是指向一个表示用于执行该程序自身的名字的空结尾多字节字符串(或者当执行环境不支持时,为空字符串 "")的开头字符的指针。

这些字符串是可以改动的,虽然对它们的改动并不会被传回给执行环境:比如可以用 std::strtok 来使用它们。由 argv 所指向的数组的大小至少为 argc+1,其最后一个元素 argv[argc] 保证为一个空指针。

‘贰’ C语言中那么多 函数是不是都要背下来啊

怎么可能全部背下来哦!但一般常用的函数还是要记住的,我想大概有100多个吧。记住也不难,只要经常实践,用的多的函数就会记下来。实际上真正编程是离不开MSDN帮助文档的,需要的时候查找自己需要的功能函数。所以学会使用MSDN,是每个程序员必须的。

‘叁’ C语言为什么要写多个函数,有什么好处

现在刚学练习写程序是练习语法,看不出优越性。

主要体现在:
1、以后编写相对大型的代码或者课程设计作业,多次需要同一种功能(比如对数据的输出或者计算某种数据结构的长度等),那么你可以在需要的时候再main函数插入同样的一段代码也就是敲上同样的或者仅有几个参数差别的代码。这样,是好看了,但是代码长度太长了,显得比较冗杂又占用空间。所以呢,对这种多次使用的功能单独编写成一个函数,那些可能仅仅一个或者几个参数不一样的情况就作为形参实参了。
2、代码可读性好。没一个函数功能独立,都是实现自己的一种预定的功能。方便编程者阅读。

‘肆’ c语言中能同时出现多个main函数吗

一个C语言程序是由一个或多个函数组成的,其中必须包含一个main函数(且只能有一个main函数.)。

C语言是一种计算机程序设计语言,属高级语言范畴既具有高级语言的特点,又具有汇编语言的特点,可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言。

如果main中调用函数,那么这个函数必须在mani函数的前面。但是也可以在main函数的前面声明。因为代码是从main 函数开始,一条一条的顺序执行的。

如果main中调用函数,那么这个函数必须在mani函数的前面。但是也可以在main函数的前面声明。因为代码是从main 函数开始,一条一条的顺序执行的。

(4)c语言多函数扩展阅读

在C语言当中,一个程序,无论复杂或简单,总体上都是一个“函数”;这个函数就称为“main() 函数”,也就是“主函数”。比如有个“做菜”程序,那么“ 做菜 ”这个过程就是“主函数”。在主函数中,根据情况,你可能还需要调用“买菜,切菜,炒菜”等子函数。

main函数在程序中大多数是必须存在的,但是依然有例外情况,比如windows编程中可以编写一个动态链接库(dll)模块,这是其他windows程序可以使用的代码。由于DLL模块不是独立的程序,因此不需要main函数。再比如,用于专业环境的程序-----如机器人中的控制芯片--可能不需要main函数。

参考资料:main函数_网络

‘伍’ c语言,关于多参数函数的问题

如下修改就完美了!
#include<stdio.h>
void SCN(int num[100],int *n,int *m);
void MOVE(int num[100],int n,int m);
void PR(int num[100],int n);
int num[100],n,m;
void main()
{
SCN(num,&n,&m);
MOVE(num,n,m);
PR(num,n);
}
void SCN(int num[100],int *n,int *m)
{
int i; scanf("%d",n);
for(i=0;i<*n;i++){
scanf("%d",&num[i]);
}
scanf("%d",m);
}
void MOVE(int num[100],int n,int m)
{
int i,tt;
while(m--){
tt=num[n-1];
for(i=n-1;i>0;i--){
num[i]=num[i-1];
}
num[0]=tt;
}
}
void PR(int num[100],int n)
{
int i;
for(i=0;i<n;i++){
printf("%d",num[i]);
}
}

‘陆’ c语言 多文件多函数结构

C++编程入门系列之二十四(C++程序设计必知:多文件结构和编译预处理命令)分类标签: C++ 编程入门 -
鸡啄米上一讲给大家讲了常引用、常对象和对象的常成员,今天给大家讲下编程入门知识--多文件结构和编译预处理命令。
一.C++程序的多文件结构
之前鸡啄米给大家看了很多比较完整的C++程序的例子,大家可能发现了,它们的结构基本上可以分为三个部分:类的声明、类的成员函数的实现和主函数。因为代码比较少,所以可以把它们写在一个文件中,但是我们实际进行软件开发时,程序会比较复杂,代码量比较大,
一个程序按结构至少可以划分为三个文件:类的声明文件(*.h文件)、类的实现文件(*.cpp文件)和主函数文件(使用到类的文件),如果程序更复杂,我们会为每个类单独建一个声明文件和一个实现文件。这样我们要修改某个类时就直接找到它的文件修改即可,不需要其他的文件改动。
鸡啄米在第十九讲中讲生存期时有个时钟类的例子,现在鸡啄米给大家看下将那个程序按照上面说的结构分到三个文件里:
// 文件1:Clock类的声明,可以起名为Clock.h
#include <iostream>
using namespace std;
class Clock //时钟类声明
{
public: //外部接口
Clock();
void SetTime(int NewH, int NewM, int NewS); //三个形参均具有函数原型作用域
void ShowTime();
~Clock(){}
private: //私有数据成员
int Hour,Minute,Second;
};
// 文件2:Clock类的实现,可以起名为Clock.cpp
#include "Clock.h"
//时钟类成员函数实现
Clock::Clock() //构造函数
{
Hour=0;
Minute=0;
Second=0;
}
void Clock::SetTime(int NewH,int NewM,int NewS)
{
Hour=NewH;
Minute=NewM;
Second=NewS;
}
void Clock::ShowTime()
{
cout<<Hour<<":"<<Minute<<":"<<Second<<endl;
}
// 文件3:主函数,可以起名为main.cpp
#include "Clock.h"
//声明全局对象g_Clock,具有文件作用域,静态生存期
Clock g_Clock;
int main() //主函数
{
cout<<"文件作用域的时钟类对象:"<<endl;
//引用具有文件作用域的对象:
g_Clock.ShowTime();
g_Clock.SetTime(10,20,30);

Clock myClock(g_Clock); //声明具有块作用域的对象myClock,并通过默认拷贝构造函数用g_Clock初始化myClock
cout<<"块作用域的时钟类对象:"<<endl;
myClock.ShowTime(); //引用具有块作用域的对象
}
在vs2010中如何生成这三个文件呢?我们可以点菜单中Project->Add Class,在弹出的对话框中选择c++ class,然后由弹出个对话框,在class name处填上类名点finish就可以了,这样.h文件和.cpp文件会自动生成,我们也可以点Project->Add New Item,在弹出的对话框中选择Header File(.h)或C++ File(.cpp)来生成.h文件或.cpp文件。
Clock.cpp和main.cpp都使用#include "Clock.h"把类Clock的头文件Clock.h包含进来。#include指令的作用就是将#include后面的文件嵌入到当前源文件该点处,被嵌入的文件可以是.h文件也可以是.cpp文件。如果不包含Clock.h,Clock.cpp和main.cpp就不知道Clock类的声明形式,就无法使用此类,所以所有使用此类的文件都应该包含声明它的头文件。关于#include指令下面鸡啄米会讲。
上面的程序在编译时,由Clock.cpp和Clock.h编译生成Clock.obj,由main.cpp和Clock.h编译生成main.obj,然后就是链接过程,Clock.obj和main.obj链接生成main.exe可执行文件。如果我们只修改了类的实现文件,那么只需重新编译Clock.cpp并链接就可以,别的文件不用管,这样就提高了效率。在Windows系统中的C++程序用工程来管理多文件结构,而Unix系统一般用make工具管理,如果大家从事Unix系统软件开发,就需要自己写make文件。
二.编译预处理程序
编译器在编译源程序以前,要由预处理程序对源程序文件进行预处理。预处理程序提供了一些编译预处理指令和预处理操作符。预处理指令都要由“#”开头,每个预处理指令必须单独占一行,而且不能用分号结束,可以出现在程序文件中的任何位置。
1.#include指令
#include指令也叫文件包含指令,用来将另一个源文件的内容嵌入到当前源文件该点处。其实我们一般就用此指令来包含头文件。#include指令有两种写法:
#include <文件名>
使用这种写法时,会在C++安装目录的include子目录下寻找<>中标明的文件,通常叫做按标准方式搜索。
#include "文件名"
使用这种写法时,会先在当前目录也就是当前工程的目录中寻找""中标明的文件,若没有找到,则按标准方式搜索。
2.#define和#undef指令
如果你学过C语言,就会知道用#define可以定义符号常量,比如,#define PI 3.14 这条指令定义了一个符号常量PI,它的值是3.14。C++也可以这样定义符号常量,但一般更常用的是在声明时用const关键字修饰。C语言还用#define定义参数宏,来实现简单的函数运算,比如,#define add(x,y) (x+y) 这条指令说明如果我们用到add(1,2)则预处理后就会用(1+2)代替,C++中一般用内联函数来实现。
#undef用来删除由#define定义的宏,使其不再起作用。
3.条件编译指令
用条件编译指令可以实现某些代码在满足一定条件时才会参与编译,这样我们可以利用条件编译指令将同一个程序在不同的编译条件下生成不同的目标代码。例如,我们可以在调试程序时加入一些调试语句,用条件编译指令控制只有在debug模式下这些调试语句才参与编译,而在release模式下不参与编译。
条件编译指令有5中形式:
a.第一种形式:
#if 常量表达式
程序正文 //当“ 常量表达式”非零时本程序段参与编译
#endif
b.第二种形式:
#if 常量表达式
程序正文1 //当“ 常量表达式”非零时本程序段参与编译
#else
程序正文2 //当“ 常量表达式”为零时本程序段参与编译
#endif
c.第三种形式:
#if 常量表达式1
程序正文1 //当“ 常量表达式1”非零时本程序段参与编译
elif 常量表达式2
程序正文2 //当“常量表达式1”为零、“ 常量表达式2”非零时本程序段参与编译
...
elif 常量表达式n
程序正文n //当“常量表达式1”、...、“常量表达式n-1”均为零、“ 常量表达式n”非零时本程序段参与编译
#else
程序正文n+1 //其他情况下本程序段参与编译
#endif
d.第四种形式:
#ifdef 标识符
程序段1
#else
程序段2
#endif
如果“标识符”经#defined定义过,且未经undef删除,则编译程序段1,否则编译程序段2。
e.第五种形式:
#ifndef 标识符
程序段1
#else
程序段2
#endif
如果“标识符”未被定义过,则编译程序段1,否则编译程序段2。
4.define操作符
define是预处理操作符,不是指令,所以不能用#开头。使用形式为:define(标识符)。如果括号里的标识符用#define定义过,并且没有用#undef删除,则define(标识符)为非0,否则为0。可以这样使用:
#if !define(HEAD_H)
#define HEAD_H
我们在包含头文件时,有时多次重复包含同一个头文件,比如下面这种情况:
// main.cpp文件
#include "file1.h"
#include "file2.h"
int main()
{

}
// file1.h文件
#include "head.h"

// file2.h文件
#include "head.h"

// head.h文件
...
class A
{
...
}
...
main.cpp包含了file1.h文件,file1.h又包含了head.h文件,main.cpp还包含了file2.h文件,file2.h也包含了head.h文件,那么main.cpp就包含了两次head.h文件,在编译时就会报错,说head.h中的类A重复定义了。这时我们可以在被重复包含的文件head.h中使用条件编译指令,用一个唯一的标识符来标识head.h文件是否已经编译过,如果已经编译过则不会重复编译了。鸡啄米给大家改写下上面的head.h文件:
// head.h文件
#ifndef HEAD_H
#define HEAD_H
...
class A
{
...
}
...
#endif
在这个改好的head.h文件中,上来会先判断HEAD_H是否被定义过,如果没有被定义过,则head.h文件还没参与过编译,就编译此文件中的源代码,同时定义HEAD_H,标记head.h文件已经参与过编译。如果HEAD_H已经被定义过,则说明此文件已经参与过编译,编译器会跳过本文件左右内容编译其他部分,类A也不会有重复定义的错误了。

‘柒’ 如何用c语言实现多个函数执行

#include<stdio.h>
voidfun1(){}
voidfun2(){}
voidfun3(){}
voidfun4(){}
voidfun5(){}
voidfun6(){}
voidfun7(){}
voidfun8(){}
voidcall(charchoice)
{
switch(choice)
{
case'1':
fun1();
break;
case'2':
fun2();
break;
case'3':
fun3();
break;
case'4':
fun4();
break;
case'5':
fun5();
break;
case'6':
fun6();
break;
case'7':
fun7();
break;
case'8':
fun8();
break;
defult:
break;
}
}
intmain(void)
{
charchoice[8]={0};
charch;
inti=0;
printf("请输入你选择要运行的函数编号(1~8):");
ch=getchar();
while(ch!=' ')
{
if(ch>='1'&&ch<='8')
{
choice[i]=ch;
i++;
}
}
for(intj=0;j<i;j++)
{
call(choice[j]);
}
return0;
}

‘捌’ c语言中怎样弄多个函数

如果是用纯C语言来写,把所有函数声明放在最前面,然后函数定义好,这样的函数是公有的,可以随意调用。然后主函数不能少,这样子的话,所有函数包括主函数的前后顺序可随意。
void fun1();
void fun2();
//...

int main()
{
return 0;
}

void fun1()
{
//code...
}
void fun2()
{
//code...
}
//...

‘玖’ c语言中有哪些函数

C语言输入输出函数有很多,标准I/O函数中包含了如下几个常用的函数:
scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.
int
getc(FILE
*fp)
getc主要是从文件中读出一个字符.常用的判断文件是否读取结束的语句为
(ch
=
getc(fp))
!=
EOF.EOF为文件结束标志,定义在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定义在stdlib.h中一样,文件也可以被理解为一种流,所以当fp为stdin时,getc(stdin)就等同于getchar()了.
int
putc(int
ch,FILE
*fp)
putc主要是把字符ch写到文件fp中去.如果fp为stdout,则putc就等同于putchar()了.
int
getchar(void)
getchar主要是从标准输入流读取一个字符.默认的标准输入流即stdio.h中定义的stdin.但是从输入流中读取字符时又涉及到缓冲的问题,所以并不是在屏幕中敲上一个字符程序就会运行,一般是通过在屏幕上敲上回车键,然后将回车前的字符串放在缓冲区中,getchar就是在缓冲区中一个一个的读字符.当然也可以在while循环中指定终止字符,如下面的语句:while
((c
=
getchar())
!=
'#')这是以#来结束的.
int
putchar(int
ch)
putchar(ch)主要是把字符ch写到标准流stdout中去.
char
*
gets(char
*str)
gets主要是从标准输入流读取字符串并回显,读到换行符时退出,并会将换行符省去.
int
puts(char
*str)
puts主要是把字符串str写到标准流stdout中去,并会在输出到最后时添加一个换行符.
char
*fgets(char
*str,
int
num,
FILE
*fp)
str是存放读入的字符数组指针,num是最大允许的读入字符数,fp是文件指针.fgets的功能是读一行字符,该行的字符数不大于num-1.因为fgets函数会在末尾加上一个空字符以构成一个字符串.另外fgets在读取到换行符后不会将其省略.
int
fputs(char
*str,
file
*fp)
fputs将str写入fp.fputs与puts的不同之处是fputs在打印时并不添加换行符.
int
fgetc(FILE
*fp)
fgetc从fp的当前位置读取一个字符.
int
fputc(int
ch,
file
*fp)
fputc是将ch写入fp当前指定位置.
int
fscanf(FILE
*fp,
char
*format,
输入列表)
fscanf按照指定格式从文件中出读出数据,并赋值到参数列表中.
int
fprintf(FILE
*fp,
char
*format,
输出列表)
fprintf将格式化数据写入流式文件中.
数据块读写函数
fread
(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
参数说明:
buffer:是一个指针。
对fread
来说,它是读入数据的存放地址。
对fwrite来说,是要输出数据的地址(均指起始地址)。
size:
要读写的字节数。
count:
要进行读写多少个size字节的数据项。
fp:
文件型指针。

热点内容
原神游戏服务器ip 发布:2025-02-06 17:54:23 浏览:810
如何查笔记本电脑的真正配置 发布:2025-02-06 17:48:07 浏览:81
存储器存在地址 发布:2025-02-06 17:47:28 浏览:539
phpsocket教程 发布:2025-02-06 17:42:13 浏览:423
mysql解压缩版安装 发布:2025-02-06 17:26:33 浏览:179
phpgd图片 发布:2025-02-06 17:24:34 浏览:206
php代码整理 发布:2025-02-06 17:24:31 浏览:477
java可执行文件 发布:2025-02-06 17:18:59 浏览:249
卫士相当于现在什么配置 发布:2025-02-06 17:05:04 浏览:409
项目编译慢 发布:2025-02-06 16:53:48 浏览:382