辨析主函数:main()void main()int main()int main(void)int main(int argc, char argv[])之间的区别

合集下载

函数大全(m开头)

函数大全(m开头)

函数大全(m开头)main()主函数每一C 程序都必须有一main()函数, 可以根据自己的爱好把它放在程序的某个地方。

有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放在哪个地方, 以下几点说明都是适合的。

1. main() 参数在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。

* argc: 整数, 为传给main()的命令行参数个数。

* argv: 字符串数组。

在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0以下的版本, argv[0]为空串("") 。

argv[1] 为在DOS命令行中执行程序名后的第一个字符串;argv[2] 为执行程序名后的第二个字符串;...argv[argc]为NULL。

*env: 安符串数组。

env[] 的每一个元素都包含ENVV AR=value形式的字符串。

其中ENVV AR为环境变量如PA TH或87。

value 为ENVV AR的对应值如C:\DOS, C: \TURBOC(对于PATH) 或YES(对于87)。

Turbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序的局部变量。

请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下的例子:main()main(int argc)main(int argc, char *argv[])main(int argc, char *argv[], char *env[])其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不用argv[]的情况。

以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:/*program name EXAMPLE.EXE*/#include <stdio.h>#include <stdlib.h>main(int argc, char *argv[], char *env[]){int i;printf("These are the %d command- line arguments passed tomain:\n\n", argc);for(i=0; i<=argc; i++)printf("argv[%d]:%s\n", i, argv[i]);printf("\nThe environment string(s)on this system are:\n\n");for(i=0; env[i]!=NULL; i++)printf(" env[%d]:%s\n", i, env[i]);}如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE:C:\example first_argument "argument with blanks" 3 4 "last butone" stop!注意: 可以用双引号括起内含空格的参数, 如本例中的: " argumentwith blanks"和"Last but one")。

c语言main函数

c语言main函数

c语言main函数C语言是一门广泛使用的编程语言,它的主要特点是简单易学、功能强大、易于移植等等。

而在C语言中,main函数则是最为重要的部分之一。

本文将详细介绍C语言中的main函数,包括其定义、作用、参数、返回值等等。

一、main函数的定义在C语言中,main函数是程序的入口点,也就是程序执行的第一个函数。

它的定义方式如下:```int main(int argc, char *argv[]){// 函数体return 0;}```其中,int表示函数返回值的类型,main表示函数名,括号中的两个参数分别是整型变量argc和字符型指针变量argv[]。

大括号内是函数的具体实现。

二、main函数的作用main函数是程序的起点,它的作用是为程序提供一个执行的入口。

当程序运行时,操作系统会调用main函数,并执行其中的代码。

因此,main函数的作用是初始化程序,分配内存空间,读取输入数据,处理逻辑等等。

三、main函数的参数在main函数中,argc和argv[]是两个重要的参数。

它们分别表示命令行参数的个数和具体的参数列表。

argc是一个整型变量,用于记录命令行参数的个数。

例如,如果在命令行中输入了“./program arg1 arg2 arg3”,那么argc的值就为4,因为除了程序名之外,还有三个参数。

argv[]是一个字符型指针数组,用于存储具体的命令行参数。

例如,如果在命令行中输入了“./program arg1 arg2 arg3”,那么argv[0]的值就是程序名“./program”,argv[1]的值是“arg1”,argv[2]的值是“arg2”,argv[3]的值是“arg3”。

四、main函数的返回值在C语言中,main函数的返回值是一个整型值。

它表示程序的执行结果,通常有以下两种情况:1. 返回0:表示程序执行成功,没有错误发生。

2. 返回非0值:表示程序执行失败,发生了某些错误。

C语言之Main函数返回值问题分析

C语言之Main函数返回值问题分析

C语言之Main函数返回值问题分析C语言之Main函数返回值问题分析:很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。

C/C++ 中从来没有定义过void main( ) 。

C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main( ) { /* ... */ } is not and never has been C++, nor has it even been C.( void main( ) 从来就不存在于 C++ 或者 C )。

下面我分别说一下 C 和C++ 标准中对 main 函数的定义。

“The C programming Language(《C 程序设计语言》)用的就是main( )。

”--- 这是因为第一版的C语言只有一种类型,那就是int,没有char,没有long,没有float,…………既然只有一种类型,那么就可以不写,后来的改进版为了兼容以前的代码于是规定:不明确标明返回值的,默认返回值为int,也就是说 main()等同于int main(),而不是等同于void main()。

在C99中,标准要求编译器至少给 main() 这种用法来个警告。

1. C在 C89 中,main( ) 是可以接受的。

Brian W. Kernighan 和Dennis M. Ritchie 的经典巨著 The C programming Language 2e(《C 程序设计语言第二版》)用的就是 main( )。

不过在最新的 C99 标准中,只有以下两种定义方式是正确的:int main( void )int main( int argc, char *argv[] )(参考资料:ISO/IEC 9899:1999 (E) Programming languages — C 5.1.2.2.1 Program startup)当然,我们也可以做一点小小的改动。

2022年贵州师范大学公共课《C语言》科目期末试卷A(有答案)

2022年贵州师范大学公共课《C语言》科目期末试卷A(有答案)

2022年贵州师范大学公共课《C语言》科目期末试卷A(有答案)一、填空题1、设有char a,b;若要通过a&b运算屏蔽掉a中的其他位,只保留第2和第8位(右起为第1位),则b的二进制数是_______。

2、在C语言源程序中,一个变量代表【】。

3、一个C语言源程序由若干函数组成,其中至少应含有一个________4、在C语言中,用关键字_______定义单精度实型变量,用关键字_______定义双精度实型变量,用关键字_______定义字符型变量。

5、若a是int型变量,则执行表达式a=25/3%3后a的值为_______6、请填空:建立如图所示存储结构所需的说明语句是_______。

建立如图所示为变量a输入数据的输入语句是_______。

建立如图所示存储结构所需的赋值语句是_______。

7、下面程序段是找出整数的所有因子。

请填空。

scanf("%d",&x);i=1;for(;_______;){if(x%i==0)printf("%3d",i);i++;}8、已有定义int a;float b,x;char cl,c2;为使a=3、b=6.5、x=12.6、cl='a'、c2='A',正确的scanf函数调用语句是_______,数据输入的形式应为_______。

9、设有一输入函数scanf("%d”,k);它不能使float类型变量k得到正确数值的原因是_______未指明变量k的地址和_______格式控制符与变量类型不匹配。

10、设有如下定义:#define SWAP(T,X,Y){T=X;X=Y;Y=T;}以下程序段将通过调用宏实现变量x和y内容的交换,请填空。

Double x=2.5,y=6.4,z;SWAP(_______);二、选择题11、若有定义语句:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是( )。

博图main主函数input

博图main主函数input

博图main主函数input
Main()主函数:
在C/C+ 里面关于主函数main函数的定义时,大多时候我们采用的是int main(void)这种形式,不用带参数;但是标准的定义一般有两种格式:
int main(int argc,char *argv[]);
int main(int argc,char **argv);
参数说明:
argc表示传送主函数参数的个数;
argv[]:指向字符串的指针数组,其中argv[0]是命令本身,也就是程序本身,每个参数用空格隔开;
关于指针数组:表示该数组的所有元素都是指针。

input()函数:
在Python3中,input()函数接受一个标准输入数据,返回为string类型。

注意:在Python3中,raw_input()和input()进行了整合,去除了raw_input(),仅保留了input()函数,其接收任意任性输入。

将所有输入默认为字符串处理,并返回字符串类型。

关于main函数的定义

关于main函数的定义

关于main函数的定义很多⼈甚⾄市⾯上的⼀些书籍,都使⽤了void main( ),其实这是错误的。

C/C++中从来没有定义过void main( )。

C++之⽗Bjarne Stroustrup在他的主页上的FAQ中明确地写着The definition void main( ) { /* ... */ } is not and never has been C++, nor has it even been C.( void main( )从来就不存在于C++或者C)。

下⾯我分别说⼀下C和C++标准中对main函数的定义。

⼀、 C语⾔中的main() 在C89中,main( )是可以接受的。

Brian W. Kernighan和Dennis M. Ritchie的经典巨著The C programming Language 2e(《C 程序设计语⾔第⼆版》)⽤的就是main( )。

不过在最新的C99标准中,只有以下两种定义⽅式是正确的: int main(void) int main(int argc, char *argv[]) (参考资料:ISO/IEC 9899:1999 (E) Programming languages ? C 5.1.2.2.1 Program startup) 当然,我们也可以做⼀点⼩⼩的改动。

例如:char *argv[]可以写成char **argv;argv和argc可以改成别的变量名(如intval和charval),不过⼀定要符合变量的命名规则。

如果不需要从命令⾏中获取参数,请⽤int main(void);否则请⽤int main(int argc, char *argv[])。

main函数的返回值类型必须是int,这样返回值才能传递给程序的调⽤者(如操作系统)。

如果main函数的最后没有写return语句的话,C99规定编译器要⾃动在⽣成的⽬标⽂件中(如exe⽂件)加⼊return 0;,表⽰程序正常退出。

2022年江汉大学公共课《C语言》科目期末试卷B(有答案)

2022年江汉大学公共课《C语言》科目期末试卷B(有答案)

2022年江汉大学公共课《C语言》科目期末试卷B(有答案)一、填空题1、设有一输入函数scanf("%d”,k);它不能使float类型变量k得到正确数值的原因是_______未指明变量k的地址和_______格式控制符与变量类型不匹配。

2、一个C语言源程序由若干函数组成,其中至少应含有一个________3、在C语言源程序中,一个变量代表【】。

4、假设m是一个3位数,从左到右依次用a、b、c表示各位的数字,则从左到右各位数字是b、a、c的3位数的表达式是_______。

5、运算符%两侧运算量的数据类型必须都是_______;运算符++和一一的运算量必须是_______。

6、把int类型变量low中的低字节及变量high中的高字节放入变量s中的表达式是_______。

7、下面程序段的运行结果是_______。

x=2;do{printf("*");x--;)while(!x==0);8、字符串"ab\n\\012\\\"”的长度是_______。

9、若有定义floata[3][5];则a数组所含数组元素个数是_______,a数组所占的字节数是_______。

10、请填空:建立如图所示存储结构所需的说明语句是_______。

建立如图所示为变量a输入数据的输入语句是_______。

建立如图所示存储结构所需的赋值语句是_______。

二、选择题11、若有定义语句:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是( )。

A.2.500000B.2.750000C.3.500000D.0.000 00012、设以下变量均为int类型,则值不等于7的表达式是( )。

A.(x=y=6,x+y,x+1)B.(x=y=6,x+y,y+1)C.(x=6,x+1,y=6,x+y)D.(y=6,y+1,x=y,x+1)13、以下叙述正确的是A.在C程序中,main函数必须位于程序的最前面B.C程序的每行中只能写一条语句C.C语言本身没有输入输出语句D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误14、一个C程序的执行是从()A.本程序的main函数开始,到main函数结束B.本程序的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束D.本程序的第一个函数开始,到本程序main函数结束15、下面是对数组s的初始化,其中错误的语句是()。

int main在c语言中的用法

int main在c语言中的用法

int main在c语言中的用法在C语言中,int main是一个特殊的函数,用于定义程序的入口点。

在程序运行时,操作系统会首先调用int main函数来执行程序中的代码。

int main函数的定义通常为:```cint main() {// 程序代码return 0;}```在int main函数中,我们可以编写程序的主要逻辑代码。

这些代码将按照顺序执行,直到遇到return语句为止。

int main函数中的int表示函数的返回类型,这里返回的是整数类型。

main函数通常会返回一个整数值,这个整数值用于向操作系统传递程序的执行结果。

返回0通常表示程序正常执行完成,其他非零值则表示程序发生了某种错误或异常情况。

通常情况下,main函数不接受任何参数。

但是在一些特定的情况下,我们可以通过命令行参数来传递给main函数。

例如:```cint main(int argc, char *argv[]) {// 程序代码return 0;}```这种形式的int main函数接受两个参数:argc和argv。

argc表示命令行参数的个数,argv是一个指向字符串数组的指针,每个字符串代表一个命令行参数。

这样我们就可以通过命令行传递参数给程序。

在int main函数中,我们可以使用各种C语言的语法和函数,来实现程序的逻辑。

例如,我们可以使用条件语句、循环语句、函数调用等来完成各种任务。

总结一下,在C语言中,int main函数是程序的入口点,用于定义程序的主要逻辑。

它的返回值类型是整数,通常返回0表示程序正常执行完成。

在一些情况下,可以通过命令行参数来传递给main函数。

我们可以在main函数中编写具体的程序代码,利用C语言提供的各种语法和函数来完成各种任务。

c语言中int main的含义

c语言中int main的含义

c语言中int main的含义C语言中的intmain()函数是程序的入口点,也是程序中最重要的部分之一。

在程序运行时,操作系统会首先调用main函数来执行程序的初始化工作,然后再根据程序的逻辑执行其他的函数和语句。

因此,对于C语言的初学者来说,理解int main()函数的含义和用法是非常重要的。

一、int main()函数的定义在C语言中,每个程序都必须包含一个int main()函数,这个函数是程序的入口点,也是程序中最重要的部分之一。

int main()函数的定义如下:int main(){//程序的主要逻辑代码return 0;}在上面的代码中,int main()是函数的定义,它告诉编译器这个函数的返回值是一个整型数。

函数体中的代码是程序的主要逻辑代码,它会在程序运行时被执行。

最后一行的return 0;是函数的返回语句,它告诉操作系统程序的执行结果是0。

二、int main()函数的作用int main()函数的作用是执行程序的初始化工作,并且根据程序的逻辑执行其他的函数和语句。

具体来说,int main()函数的作用包括以下几个方面:1. 程序的初始化工作在程序运行时,操作系统会首先调用int main()函数来执行程序的初始化工作。

这些工作包括设置程序的环境变量、初始化全局变量、打开文件等等。

只有当程序的初始化工作完成后,才能开始执行其他的函数和语句。

2. 程序的主要逻辑代码int main()函数中的代码是程序的主要逻辑代码,它会根据程序的逻辑执行其他的函数和语句。

具体来说,程序的主要逻辑代码可以包括输入输出、计算、判断、循环等等。

在程序运行时,这些代码会被执行,从而实现程序的功能。

3. 程序的返回值int main()函数的返回值是一个整型数,它表示程序的执行结果。

通常情况下,返回值为0表示程序执行成功,返回值为非零数表示程序执行失败。

在程序运行时,操作系统会根据int main()函数的返回值来判断程序的执行结果,并且根据需要采取相应的措施。

C++程序设计教程(第2版)参考答案

C++程序设计教程(第2版)参考答案
break;
default:
cout<<num1<<"/"<<num2<<"=";
}
}
double Calc(int num1,int op,int num2)
{
double result;
switch(op)
{
case 0://做加法运算
result=num1+num2;
break;
case 1://减法运算
for(int i=1;i<=N;i++)
{
//随机产生两个操作数a,b(1~10),和运算类型c
srand((unsigned)time(0)+seed); //生成时间种子//加一个变量值每次就会产生不一样的种子
seed++;
a=rand()%10+1;
b=rand()%10+1;
c=rand()%4;
cin>>result;
if(a-b == result)
{
cout<<"Right"<<endl;
return 1;
}
else
{
cout<<"Not correct"<<endl;
return 0;
}
break;
case 2://乘法运算
cout<<a<<"*"<<b<<"=";
cin>>result;
cout<<"Now,pls input the result and press Enter to go on."<<endl<<endl;

c语言 main函数

c语言 main函数

c语言 main函数main函数是C语言中的一个特殊函数,也是程序的入口点,程序从它开始执行,它的作用是将程序分解为若干个模块,将每个模块拆分成多个可读性更好、更易于维护和编写的小块,使程序结构更加清晰明了,同时也可以提高其可靠性、可重用性和可维护性,减少代码冗余,提高编程效率。

main函数包含两个参数,argc和argv,分别代表命令行参数的个数和命令行参数数组。

main函数可以没有参数或有一个或两个参数,其中只有一个参数时它的类型必须是char*类型,表示命令行字符串的首地址,这个参数一般可用于接收命令行输入的参数。

例如:int main(int argc, char* argv[]){printf("%d\n", argc);for (int i = 0; i < argc; i++) {printf("%s ", argv[i]);}//以下为程序需要执行的代码return 0;}这段代码的作用是输出命令行输入的参数的个数和内容,以及执行程序的其他代码。

C语言中的main函数可以返回一个int类型的值,这个值代表程序的返回值,当程序运行完成时它会向系统返回这个值,来表示程序是否正常结束。

程序正常结束时返回0,非0值表示程序出现了错误。

因为main函数的重要性,所以在程序中我们应该努力保持代码的简洁、清晰易懂、可读性好,并对其进行注释,这样可以使代码更具可读性,也有助于程序的维护和升级。

另外,在编写程序时,我们应该多测试和调试代码,尽量减少代码中的错误和问题,保证程序的稳定性和可靠性。

在编写main函数时,我们也要注意一些细节:1. main函数一般要放在程序的最前面,位于所有函数外面;2. main函数的返回值类型必须是int类型,一般用0表示成功,非0表示失败;3. main函数的参数可以省略,也可以有一个或两个参数,但命令行参数只能用char*类型;4. main函数可以调用其他函数,是程序的主入口点,用来执行程序的整个流程。

void main()

void main()

main(int argc,char *argv[ ])argv为指针的指针argc为整数char **argv or: char *argv[] or: char argv[][]main()括号内是固定的写法。

下面给出一个例子来理解这两个参数的用法:假设程序的名称为prog,当只输入prog,则由操作系统传来的参数为:argc=1,表示只有一程序名称。

argc只有一个元素,argv[0]指向输入的程序路径及名称:./prog当输入prog para_1,有一个参数,则由操作系统传来的参数为:argc=2,表示除了程序名外还有一个参数。

argv[0]指向输入的程序路径及名称。

argv[1]指向参数para_1字符串。

当输入prog para_1 para_2 有2个参数,则由操作系统传来的参数为:argc=3,表示除了程序名外还有2个参数。

argv[0]指向输入的程序路径及名称。

argv[1]指向参数para_1字符串。

argv[2]指向参数para_2字符串。

void main( int argc, char *argv[] )char *argv[] : argv 是一个指针数组,他的元素个数是argc,存放的是指向每一个参数的指针,他的第一个元素即argv[0]为编译生成的可执行文件名(包括路径eg:"F:\VC\Ex1\Debug\Ex1.exe"),从二个元素(argv[1])开始,是每一个参数int argc 表示argv的大小,是实际参数个数+1,其中+1是因为argv[0]是编译后的可执行文件名main()主函数每一C 程序都必须有一main()函数, 可以根据自己的爱好把它放在程序的某个地方。

有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放在哪个地方, 以下几点说明都是适合的。

1. main() 参数在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。

c语言选择题

c语言选择题

单项选择====================== ====================== ======题号:411结构化程序设计的3种结构是().A、顺序结构,选择结构,循环结构B、分支结构,跳转结构,循环结构C、顺序结构,分支结构,跳转结构D、分支结构,选择结构,循环结构答案:A题号:412任何一个C语言的可执行程序都是从()开始执行的.A、main()函数的入口处B、程序中的第一条语句C、程序中的第一个函数D、编译预处理语句答案:A有如下程序:main(){int x=1,a=0,b=0; switch(x){case 0:b++;case 1:a++;case 2:a++;b++;} printf("a=%d,b=%d\n",a ,b);}该程序的输出结果是A、a=1,b=1B、a=2,b=2C、a=2,b=1D、a=1,b=0答案:C题号:2395若有定义:doublea=22;int i=0,k=18;,则不符合C语言规定的赋值语句是A、i=(a+k)<=(i+k);B、i=a%11;C、a=a++,i++D、i=!a;答案:B题号:417在一个C程序中,().A、main()函数必须出现在所有函数之前B、main()函数必须出现在所有函数之后C、main()函数可以在任何地方出现D、main()函数必须出现在固定位置答案:C题号:425以下合法的C语言赋值语句的是()A、x=y==58B、x++;C、k=int(x+y);D、x=58,y=58答案:B题号:920当把4个表达式用作if语句的控制表达式时,有一个选项与其他3个选项含义不同,这个选项是().A、!k%2==1B、(k%2)!=0C、k%2==1D、k%2答案:D题号:1412根据下面的输出结果,正确的输出语句是:();x=2.23000,y=4.35000A、printf("x=%7.2f,y=%7.2 f",x,y);B、printf("x=%f,y=%f\n",x ,y);C、printf("x=%7.2f,y=%7.2 f",&x,&y);D、printf("x=%7.5f,y=%7.5 f\n",x,y);答案:D题号:723以下不合法的字符常量是().A、\xccB、\"C、\018D、\\答案:C题号:1953下面的程序中是有错误的地方.每行程序前面的数字是行号.1#include<stdio.h>2main()3{4float a[3]={0.0};5int i;6fori=0;i<3;i++scanf("%d", a[i]);7for(i=1;i<3;i++a[0]=a[0]+ a[i];8printf("%f\n",a[0]); 9}A、第8行B、第6行C、没有错误的语句D、第7行答案:B题号:574构成C语言程序的基本单位是().A、过程B、函数C、子例程D、子程序答案:B题号:2115若语句"t=fun(fun(x,y,a),(a+b ,a+c),x+y+z);"对fun函数的调用正确,则fun函数的形参个数为().A、3B、4C、5D、6答案:A题号:2556若有以下定义(设int类型变量占2个字节)int i=8,j=9;则以下语句:printf("i=%%d,j=%%%d\n ",i,j);输出的结果是().A、i=8,j=9B、i=%d,j=%dC、i=%d,j=%8D、8,9答案:C题号:1983下列字符数组初始化语句中不正确的是().A、charc[4]={'a','b','c','d'} ;B、charc[]='goodmorning';C、charc[12]={"goodmorning"};D、charc[20]="goodmorning"; 答案:B题号:2420若a是float型变量,b是unsigned型变量,以下输入语句中,合法的是(). A、scanf("%6.2f%d",&a,&b) ;B、scanf("%f%3o",&a,&b);C、scanf("%f%n",&a,&b);D、scanf("%f%f",&a,&b); 答案:B题号:2225以下程序执行后的输出结果是().int fun(int x,int y) {static int m=0,i=2; i+=m+1;m=i+x+y; return m;}main(){int j=1,m=1,k;k=fun( j,m);printf("%d,",k);5k=fun (j,m);printf("%d\n",k);}11 A、5,11B、11,5C、11,11D、5,5答案:A题号:1927有以下程序:main(){inta[][3]={{1,2,3},{4,5,0 }},*pa[3],i;pa=a;for(i=0;i<3;i++){if(i<2)pa[1][i]=pa[1] [i]-1;else pa[1][i]=1;}printf("%d\n",a[0][1]+ a[1][1]+a[1][2]);}执行后输出结果是().A、9B、7C、0D、8答案:B题号:713按照C语言规定的用户标识符命名规则,不能出现在标识符中的是().A、下划线B、连接符C、数字字符D、大写字母答案:B题号:2083假定有以下变量定义: int k=7,x=12;,则能使值为3的表达式是:()A、x%=(k%=5)B、x%=k-k%5C、x%=(k-k%5)D、(x%=k)-(k%=5)答案:D题号:2021若想将一个字符数组a的内容存入另一个字符数组b中,下列正确的是().:A、strcat(b,a);B、strcpy(b,a);C、b=a;D、strcpy(a,b);答案:B判断题============================================ ======题号:2549C语言规定变量只能在main函数的开始部分定义.答案:错误题号:2921语句scanf("%f",&a);是一个合法的scanf函数.答案:正确题号:1005设x=1,y=2,z=3,则逻辑表达式x-y>z&&y!=z的值为0.答案:正确题号:2742gets 函数是用来输入一个字符的函数.答案:错误题号:1883若有定义static int a[5];则有a[0]=0,a[5]=0;答案:错误题号:2441语句int max(int x,int max(int y, int z));是正确的函数声明语句.答案:错误题号:2693函数说明中的形参名可以和函数定义中的形参名不一样.答案:正确题号:2277若有定义:int a=15,b=240;则表达式((a&b)&b||b)的结果为1.答案:正确题号:763若有定义:int i=3,j;执行j=i++;后,i,j的值都为4.答案:错误题号:1352若定义:int a=0,b=0; 则执行表达式(++a>0||++b>0)后,a 的值为1,b 的值为0,表达式的值为1.答案:正确填空题====================== ====================== ======题号:1878已知inta[10]={11,2,31,4,5,6,7,8,9,10}; 最大的元素的下标值是_____.答案:2题号:2824设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为_____.答案:1.0题号:507C语言语句的结束标志是_____。

C51常用语句讲解

C51常用语句讲解
//声明并初始化整型变量 • float c;
//声明浮点型变量 • char p[6]="first";
//声明并初始化字符数组 • sfr P1=0x80;
//声明并初始化寄存器 • bit third;
//声明位变量
13.2 表达式语句
while(i<4)
//进入循

C51语言提供了3种形式的条件语句,下面分别进行介绍。
13.5 条件语句
//变量声

使用goto语句的程序示例如下:
• int i=0,total=0;
switch(表达式)
条件语句常用于需要根据某些条件来决定执行流
//赋值表达式
在MaCi5n1语函言数中使用复•合语句a=需a要+注8意;如下几点:
格式:void main() 特点:无返回值,无参。
//赋值语句
13.3 复合语句
• 复合语句是用花括号“{}”将一组语句组合在一起而构成 的语句。C51语言中由单个表达式和末尾的分号构成的语句 是简单语句。在C51语言中,复合语句是允许嵌套的,即就 是在花括号“{}”中的“{}”也是复合语句。复合语句在 程序运行时,“{}”中的各行单语句是依次顺序执行的。 在C51语言中使用复合语句需要注意如下几点:
void main() • b=b*20;
void myprint() 数

Count++;
//主函数 //定义函
在 swCi5t1c程 h(序 表设 达计 式中) ,•breakX语=句’主A要’用于;如Y下=两’种B情’况。;
break语句通常用在•循环语P=句(和a开+关b语)句/a中-,1用;来跳出循环程序块。

c语言程序设计形考 国家开放大学电大《C语言程序设计》网络课形考网考作业及答案

c语言程序设计形考 国家开放大学电大《C语言程序设计》网络课形考网考作业及答案

c语言程序设计形考国家开放大学电大《C语言程序设计》网络课形考网考作业及答案国家开放大学电大《C语言程序设计》网络课形考网考作业及答案 100%通过考试说明:20__年秋期电大把该网络课纳入到“国开平台”进行考核,该课程共有4个形考任务,针对该门课程,本人汇总了该科所有的题,形成一个完整的标准题库,并且以后会不断更新,对考生的复习、作业和考试起着非常重要的作用,会给您节省大量的时间。

做考题时,利用本文档中的查找工具,把考题中的关键字输到查找工具的查找内容框内,就可迅速查找到该题答案。

本文库还有其他网核及教学考一体化答案,敬请查看。

课程总成绩 = 形成性考核×50% + 终结性考试×50% 形考任务1 一、选择题(共40分,每小题2分)题目1 在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。

选择一项:A. main 恭喜你,答对啦!!B. MAINC. nameD. function 题目2 C语言源程序文件的缺省扩展名为()。

选择一项:A. cppB. exeC. objD. c 题目3 由C语言目标文件连接而成的可执行文件的缺省扩展名为()。

选择一项:A. cppB. exeC. objD. c 题目4 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用的分隔符为()。

选择一项:A. 空格或逗号B. 逗号或回车C. 逗号或分号D. 空格或回车题目5 每个C语言程序文件的编译错误被分为()。

选择一项:A. 1类B. 2类C. 3类D. 4类题目6 不符合C语言规定的复合语句是()。

选择一项:A. {}B. {;}C. {x=0;}D. {y=10} 题目7 C语言程序中的基本功能模块为()。

选择一项:A. 表达式B. 标识符C. 语句D. 函数题目8 在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和()。

选择一项:A. 表达式B. 语句C. 参数表D. 函数体题目9 在一个程序文件中,若要使用#include命令包含一个用户定义的头文件,则此头文件所使用的起止定界符为一对()。

C语言程序设计教程第四章练习题解析(1)

C语言程序设计教程第四章练习题解析(1)

单选题1、关于C语言中的函数,下列描述正确的是()A。

函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可以嵌套C.函数的定义和函数的嵌套均不可以嵌套D.函数的定义和函数的调用均不可以嵌套答案:B解析:函数的定义不可以嵌套,但函数的调用可以嵌套2、定义一个函数:exce((v1, v2), (v3,v4,v5),v6); 在该函数调用时,实参的个数为()个A.3B。

4C。

5D.6答案:A解析:(v1,v2),(v3,v4,v5)和v6一共三个实参3、关于C语言中print()函数与scanf()函数,下列描述中正确的是()A。

printf()函数可以向任何地方输出数据B。

printf()只向控制台输出数据C。

scanf()只能输入英文字母和数字D.scanf()函数可以识别输入的空格答案:B解析:printf()是向控制台输出的函数4、在C语言中,内部函数需要添加的关键字是()A.externB.staticC.thisD。

auto答案:B解析:在定义内部函数时,需要在函数的返回值类型前面添加static关键字(又称为静态函数)。

5、当调用时,会调用内部函数A。

当调用时,会调用内部函数B。

当调用时,会调用外部函数C。

当调用时,会调用两次,先调用内部函数再调用外部函数D。

都不调用,会报错答案:A解析:当内部函数与外部函数重名时,会优先调用内部函数6、在C语言中,声明外部函数需要添加的关键字是( )A。

externB。

staticC。

thisD.auto解析:声明外部函数的方式是在函数的返回值类型前面添加extern关键字7、关于C语言中的局部变量,下列描述中错误的是( )A.局部变量就是在函数内部声明的变量B.局部变量只在函数内部有效C.局部变量只有当它所在的函数被调用时才会被使用D。

局部变量一旦被调用,其生存周期持续到程序结束答案:D解析:当函数调用结束时局部变量就会失去作用8、关于C语言中的全局变量,下列描述中正确的是()A。

c++异常处理习题答案

c++异常处理习题答案
try{
String str1("This is C++");
String str2(str1);
}
catch(char* c){
cout<<c<<endl;
}
return 0;
}
5.2在5.1的基础上,重载数组下标操作符[],使之具有判断与处理下标越界功能。
解法一
#include <iostream>
B.一个try语句可以有多个catch语句
C.catch(…)语句可以放在catch语句组的中间
D.程序中try语句与catch语句是一个整体,缺一不可
3.5下列程序运行结果为(A)。
#include<iostream>
using namespace std;
class S{
public:
~S( ){cout<<”S”<<”\t”;}
try{ f( ); }
catch( char *)
{ cout<<"exception2"<<endl;}
cout<<"main function”<<endl;
}
void f( )
{T t;}
main function
constructor
exception
exception2
main function
try
{throw "exception";}
catch( char*)
{cout<<"exception”<<endl;}

自-2009年10月高级语言程序设计(一)真题及参考答案

自-2009年10月高级语言程序设计(一)真题及参考答案

2009年10月高级语言程序设计(一)试题一、单项选择题(本大题共15小题,每小题2分,共30分)1.主函数头中的“main”是( B )A.保留字ﻩB.函数名C.变量名D.类型名2.下列运算符中优先级最高的是( D )A.?:B.&& C.ﻩD.!3.设staticinta;,执行表达式(a= =1)&&(a=-1)&&(a=2)后,a的值是(B)A.-1ﻩB.0C.1ﻩD.24.设int a,b;,与a+=b++;等价的是( C )A.a=b++;B.a=++b;C.a=a+b++;ﻩD.a=a+++b;5.关于宏定义命令,叙述正确的是(A)A.在程序编译前进行宏替换B.在程序编译时进行宏替换C.在程序编译后进行宏替换D.在程序运行时进行宏替换6.下列表达式值为0的是( D)A.5/2B.2&&5ﻩC.!25ﻩD.2&57.对循环结构正确的叙述是( B )A.do-while循环体可能被执行0次B.do-while循环体至少被执行1次C.while循环体不可能被执行0次ﻩD.for循环体不可能被执行无限次8.下列数组定义并初始化正确的是(C)A.ints[]=(1,2,3,4,5); B.int s[5]=1,2,3,4,5; C.int s[2+3]={1,2,3}; D.ints(5)={1,2,3}; 9.设char s[10];,能将字符串“+-*/”正确输入的语句是( A )A.scanf(“%s”,s);ﻩB.scanf(“%s”,*s); C.scanf(“%s”,s[0]); D.scanf(“%s”,s[10]);10.对于C语言中的函数,正确的叙述是(D)A.两个函数可以相互调用,但不能自己调用自己B.程序执行可以始于任何一个函数,但结束必须在主函数C.两个函数既可以定义成并列关系又可以定义成嵌套关系D.一个C程序可以由多个文件组成,一个文件又可以由多个函数组成11.设int m[5],*p=m;,与元素m[5],*p=m;,与元素m[2]等价的是( C)A.m+2ﻩB.*m+2 C.*(p+2) D.*p+212.设int a[3][3]={{1,2,3},{4,5},{6}};,元素a[1][2]的值是(A)A.0 B.1 C.4ﻩD.613.设typedef int ARR[10];,与ARRa,*b;等价的定义是( D)A.inta,b; B.inta,*b;ﻩC.int a[10],*b; D.inta[10],*b[10];14.设intn,p=0;,与语句if(n!=0)p=1;等价的是( A )A.if(n)p=1;ﻩB.if(n=1)p=l;ﻩC.if(n!=1)p=1;ﻩD.if(!n)p=l;15.文件使用方式“rb+”的含义是( C)A.对文本文件只读 B.对文本文件读和写C.对二进制文件读和写D.对二进制文件只写二、填空题(本大题共10小题,每小题2分,共20分)16.执行printf(“%d\n”,1+!2+(3<=4)+5/6+7%8);后的输出结果是____9_____。

2022年黑龙江大学公共课《C语言》科目期末试卷B(有答案)

2022年黑龙江大学公共课《C语言》科目期末试卷B(有答案)

2022年黑龙江大学公共课《C语言》科目期末试卷B(有答案)一、填空题1、若有以下定义和语句,为使变量c1得到字符’A',变量c2得到字符’B’,正确的输入形式是_______。

char cl,c2;scanf("%4c%4c",&cl,8&c2);2、一个C语言源程序由若干函数组成,其中至少应含有一个________3、C语言源程序的基本单位是________4、若有定义语句:int a=2,b=3;float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为_______5、表达式pow(2.8,sqrt(double(x))值的数据类型为_______。

6、设x的二进制数是11001101,若想通过x&y运算使x中的低4位不变,高4位清零,则y的二进制数是_______。

7、函数swap(int x,inty)可完成对x和y值的交换。

在运行调用函数中的如下语句后,a[0]和a[1]的值分别为_______,原因是_______。

a[o]=1;a[1]=2;swap(a[o],a[1]);8、字符串"ab\n\\012\\\"”的长度是_______。

9、在C语言中,二维数组元素在内存中的存放顺序是_______。

10、若有定义:int a[]={2,4,6,8,10,12,14,16,18,20,22,24},*q[3],k;则下面程序段的输出是_______。

for(k=0;k<3;k++)q[k]=8.a[k*4];printf("%d\n",q[2][3]);二、选择题11、若有代数式3ac,则不正确的C语言表达式是( )。

bcA.a/b/c*e*3B.3*a*e/b/cC.3*a*e/b*cD.a*e/c/b*312、下列4组选项中,不是C语言关键字的选项是。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

“void main与int main之间的区别是什么?”这是一个常见的问题。

这个faq就是来探讨一下这个问题,并深入研究一些有关main()函数不同版本的更多的东西。

C与C++在main()函数方面的标准有所不同,所以我们要分开讨论。

对于C语言:
在C89标准中,main() 的形式是可以接受的,当然使用如下的C99标准更明智,因为在这个标准中只有如下格式才能被接受:
int main ( void )
int main ( int argc, char *argv[] )
我们可以对main函数做轻微的改变,比如我们可以用一个自定义的类型代替int(当然这个类型必须被定义为int型),还可以把*argv[]改为**argv,等等。

如果我们不想在命令行下对程序输入参数,可以选择第一种形式。

其实第二种形式的两个参数argc,argv的名称是可以改变的,但保持原样是更明智的选择。

main()函数的返回类型必须为int;返回的整形值作为传递给调用者的一个返回码。

(this allows a return code to be passed to the invoker)
对于C++:
以下是可以接受的格式:
int main ( int argc, char *argv[] )
int main ()
第一种格式遵从C99标准;第二种格式在不需要通过命令行向程序传递参数时使用,与C99标准中规定的格式int main(void)效果相同。

(C)int main()与int main(void)之间的区别:
很多C程序员都曾搞错的一个概念,就是以为这样一个函数不接受任何参数:
int foo();
事实上,这个函数被认为可以接受未知个数的参数(译:可接受任意多的参数!)。

正确的用法是在括号内添加关键字void。

void main()函数是如何处理的?
在C/C++正规的调用/返回函数中,如果你不想让一个函数返回任何值,你可以使用void 定义返回类型。

比如,一个不接受任何参数并且无任何返回值的函数原型可以像这样:
void foo(void);
一个常见的误解是,这种逻辑同样适用于main()函数。

呵呵,事实并非如此,main()函数是很特殊的,无论何时你都应该依照标准定义main()函数(译:即使用int main()的形式!),并把返回值定义为int。

有时void main()的例外形式是可以出现的,但这仅限于某些特定的系统。

如果你不敢肯定正在使用这些系统,那么答案很简单,不能使用void main()的形式。

如果你在论坛上写了像“void main”这样的代码而被警告,那么最好改过来。

不要用"我的老师告诉我这么做是对的"之类的话来为自己开脱;老师们总是习惯犯错误(teachers have a bad habit of being wrong)。

写安全的,合乎标准的代码,大家就可以专注于你程序中其它的问题而不是在这种规范方面的东西上浪费时间。

但是int main(int argc, char *argv[], char *envp[])又是怎么回事呢?
好比是标准的扩展版,main()函数可以在一些系统中提取一个额外的参数用来访问环境变量。

这个用法不能保证在每个编译环境中都行得通,所以使用envp 这个参数是还是谨慎为妙。

最后,关于为什么void main(void)是一种错误的用法
因为标准这么说(这种回答通常是针对这这种问题"它能正常工作!")
因为调用main()的启动程序可以被认为是入栈,如果main()不这么做,在程序退出时将导至stack corruption的问题,并且引发冲突。

(这种回答通常是针对这这种问题"它能正常工作!")
因为你可能给调用环境返回一个随机值,这是很糟糕的,因为如果有人想要检测你的程序是否失败了,或者从一个makefile中调用你的程序,那么它们将不能保证非零的返回值就是失败。

(这样的回答通常是针对这种问题"那是他们的问题")。

这里我们举一个系统的例子去证明void main(void)程序在上面第三条里将要引起的问题。

从一个脚本调用程序可能引起脚本的崩溃。

不管它的返回码是否被检测到。

从一个makefile调用它可能引起make的问题。

从命令行调用它可能引起一个错误报告。

RISC OS 是一种本地的操作系统,这个系统的方便之处是有一个系统变量Sys$RCLimit.这个变量的值是用来指定一个程序可以返回到系统的最大值,这个变量的默认值被系统设置为256.我不能确认这个变量的目的,但是它是确定存在的。

现在,让我们看一个用int main(void)的例子程序
int main(void)
{
return 42;
}
把它翻译成汇编语言,用gcc(Acorn自己的C编译会报告一个警告,并把它转换成一个返回值为0的整型函数):
|main|:
mov ip, sp
stmfd sp!, {rfp, fp, ip, lr, pc}
sub fp, ip, #4
cmps sp,sl
bllt |x$stack_overflow|
bl |___main|
mov r0, #42
ldmdb fp, {rfp, fp, sp, pc}^
第六个指令是初始化和堆栈检测,最后两个返回42到库的启动码,所以main的返回值被传递到R0.标记库启动码将要去调用一个整型的返回函数,所以能够使用R0的返回值。

void main function发生了什么?好的,这儿是一个例子。

#include <stdio.h>
char buf[1024];
void main(void)
{
(void)fgets(buf, 1024, stdin);
}
程序在他的标准输入端口等待一行文本的输入,我们把它编译成汇编语言:|.LC0|: dcd |__iob|
|.LC1|:
dcd |buf|
|main|:
mov ip, sp
stmfd sp!, {rfp, fp, ip, lr, pc}
sub fp, ip, #4
cmps sp,sl
bllt |x$stack_overflow|
bl |___main|
ldr r2, [pc, #|.LC0| - . - 8]
mov r1, #1024
ldr r0, [pc, #|.LC1| - . - 8]
bl |fgets|
ldmdb fp, {rfp, fp, sp, pc}^
area |buf|, DATA, COMMON, NOINIT
% 1024
第六个指令是启动,下面的三个为fgets的调用设置参数,那么我们调用fgets并且返回到调用者。

stdio.h中说fgets返回一个指针到缓存,所以,在这个实例中,我们返回到库启动码的是一个指向buf的指针,在RISC OS中,所有C程序被映射到内存地址0x8000.所以,我们将返回一个> 32768 的值到操作系统中,(因此,大于Sys$RCLimit默认的值).系统产生错误。

这儿是编译和运行程序的结果:
SCSI: void % gcc void.c -o void
Drlink AOF Linker Version 0.28 30/07/95
SCSI: void % show Sys$RCLimit
Sys$RCLimit : 256
SCSI: void % void
I enter this line
Return code too large
SCSI: void %
And, in a script file:
SCSI: void % cat script
void
echo Finished
SCSI: void % run script
I enter this line
Return code too large
SCSI: void %
在第二个命令运行之前,错误中断了程序
注意,上面的例子是一个小的人为的目的去使最终函数调用返回一个指针。

一个更好的例子是程序用printf:
string > 256时也会返回错误,依赖用户输入字符的长度,程序是否可能返回一个错误在于用void作为main类型的返回
所以,如果你想要你的程序更加有效,请让main返回int,这样会做的更好。

相关文档
最新文档