预编译命令题及答案
#include <assert.h> //设定插入点
#include <ctype.h> //字符处理
#include <errno.h> //定义错误码
#include <float.h> //浮点数处理
#include <fstream.h> //文件输入/输出
#include <iomanip.h> //参数化输入/输出
#include <iostream.h> //数据流输入/输出
#include <limits.h> //定义各种数据类型最值常量
#include <locale.h> //定义本地化函数
#include <math.h> //定义数学函数
#include <stdio.h> //定义输入/输出函数
#include <stdlib.h> //定义杂项函数及内存分配函数
#include <string.h> //字符串处理
#include <strstrea.h> //基于数组的输入/输出
#include <time.h> //定义关于时间的函数
#include <wchar.h> //宽字符处理及输入/输出
#include <wctype.h> //宽字符分类
//////////////////////////////////////////////////////////////////////////
标准 C++ (同上的不再注释)
#include <algorithm> //STL 通用算法
#include <bitset> //STL 位集容器
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex> //复数类
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque> //STL 双端队列容器
#include <exception> //异常处理类
#include <fstream>
#include <functional> //STL 定义运算函数(代替运算符)
#include <limits>
#include <list> //STL 线性列表容器
#include <map> //STL 映射容器
#include <iomanip>
#include <ios> //基本输入/输出支持
#include <iosfwd> //输入/输出系统使用的前置声明
#include <iostream>
#include <istream> //基本输入流
#include <ostream> //基本输出流
#include <queue> //STL 队列容器
#include <set> //STL 集合容器
#include <sstream> //基于字符串的流
#include <stack> //STL 堆栈容器
#include <stdexcept> //标准异常类
#include <streambuf> //底层输入/输出支持
#include <string> //字符串类
#include <utility> //STL 通用模板类
#include <vector> //STL 动态数组容器
#include <cwchar>
#include <cwctype>
using namespace std;
//////////////////////////////////////////////////////////////////////////
C99 增加
#include <complex.h> //复数处理
#include <fenv.h> //浮点环境
#include <inttypes.h> //整数格式转换
#include <stdbool.h> //布尔环境
#include <stdint.h> //整型环境
#include <tgmath.h> //通用类型数学宏
㈡ #include p 3 void F(int x) {return (p*x*x);} void main() {printf("%d\n",F(3+5));}这题求解释
#include p 3?
应该是#define p 3吧!如果是#define p 3那就贺谨宽是x=3+5(即8)传递给F函数,然后载返回p*x*x的值,即3*8*8的值。最后在main函数中输出F返回的值!
还有上面的一个回答中说F(3+5) => 3*3+5*3+5=29 这个答案绝对是错的。是将3+5的值8传递给x的!这个不是宏定义,在宏定义中,如果写#define F(x) 3*x*x ,然后在程序中写F(3+5),结果才是 3*3+5*3+5,因为宏定义只负责替换,不会运算,所以将F(3+5)替换成了 3*3+5*3+5。你这个是函数跟那个不一样!函数调用时的参数可以是表达禅亮式,但是它会先计算表晌羡达式。
㈢ 一道C语言选择题,求答案。
答案应该是答滚选C
因为C语言规则规定:标准库函数不允许用户磨指进行重新定义,只能进行引用,调用前需使用预编译命令进瞎举配行预编译;
㈣ C语言预编译填空题
正确结果是var=19
㈤ c++题目基础题目
1. C++语言是在__C__语言的基础上发展起来的。
2. C++语言的编译单位是扩展名为__CPP__的__源__文件。
3. 行尾使用注释的开始标记符为___//___。
4. 多行注释的开始标记符和结束标记符分别为__/*__和__*/__。
5. 用于输出表达式值的标准输出流对象是__cout__。
6. 用于从键盘上为变量输入值的标准输入流对象是__cin__。
7. 一个完整程序中必须有一个名为__main__的函数。
8. 一个函数的函数体就是一条__复合___语句。
9. 当执行cin语句时,从键盘上输入每个数据后必须接着输入一个__换行__符,然后才能继续输入下一个数据。
10. 在C++程序中包含一个头文件或程序文件的预编译命令为__#include__。
11. 程序中的预处理命令是指以_#__字符开头的命令。
12. 一条表达式语句必须以__;__作为结束符。
13. 在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是___用户___定义的头文件。
14. 使用#include命令可以包含一个头文件,也可以包含一个__hpp_文件。
15.一个函数定义由__函数名__和__函数体__两部分组成。
16.若一个函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的_声明__语句。
17.C++头文件和源程序文件的扩展名分别为__.h__和__.cpp_。
18.程序文件的编译错误分为__语法__和__链接?__两类。
19.当使用__void__保留字作为函数类型时,该函数不返回任何值。
20.当函数参数表用_void_保留字表示时,则表示该参数表为空。
21.从一条函数原型语句“int fun1(void);”可知,该函数的返回类型为__整型__,该函数带有__零__个参数。
22. 当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到__下一行__的开始位置。
㈥ 电气三班c语言选择题
下面说法不正确的是()。
调用函数时,实参可以是表达式
调用函数时,实参和形参可以共用内存单元
调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等
调用函数时,实参与形参的类型必须一致
~B
~~~6
下面函数调用语句含有实参的个数为()。
func((exp1,exp2),(exp3,exp4,exp5));
1
2
3
5
~B
~~~6
在C语言中,函数调用时()。
实参和形参各占独立的存储单元
实参和形参共用存储单元
由系统自动确定实参和形参是否共用存储单元
由用户指定实参和形参是否共用存储单元
~A
~~~6
C语言规定,程序中各函数之间()。
既允许直接递归调用也允许间接递归调用
既不允许直接递归调用也不允许间接递归调用
允许直接递归调用不允许间接递归调用
不允许直接递归调用允许间接递归调用
~A
~~~8
下列能正确定义一维数组的选项是()。
int a[5]={0,1,2,3,4,5};
char a[]={0,1,2,3,4,5};
char a={'A','B','C'};
int a[5]="0123";
~B
~~~8
下列叙述中错误的是()。
对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
数组名代表的是数组所占存储区的首地址,其值不可改变
在程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
可以通过赋初值的方式确定数组元素的个数
~C
~~~8
有下列程序:
#include <string.h>
main()
{ char p[]={'a','b','c'},q[10]={'a','b','c'};
printf("%d%d\n",strlen(p),strlen(q));
}
下列叙述中正确的是()。
在给p和q数组赋初值时,系统会自动添加字符串结束符,故输出的长度都为3
由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3
由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3
由于p和q数组中都没有字符串结束符,故长度都不能确定
~A
~~~8
若要求从键盘读入含有空格字符的字符串,应使用函数()。
getc()
gets()
getchar()
scanf()
~B
~~~8
当用户要求输入的字符串中含有空格时,应使用的输入函数是()。
scanf()
getchar()
gets()
getc()
~C
~~~8
当有定义语句:char s[10];,若要从终端给s输入5个字符,错误的输入语句是()。
gets(&s[0]);
scanf("%s",s+1);
gets(s);
scanf("%s",s[1]);
~D
~~~8
当以下叙述中错误的是()。
gets函数用于从终端读入字符串
getchar函数用于从磁盘文件读入字符
fputs函数用于把字符串输出到文件
fwrite函数用于以二进制形式输出数据到文件
~B
下列关于字符串的叙述中正确的是()。
C语言中有字符串类型的常量和变量
两个字符串中的字符个数相同时才能进行字符串大小的比较
可以用关系运算符对字符串的大小进行比较
空串一定比空格打头的字符串小
~D
~~~8
下面能正确进行字符串赋值的是()。
char s[5]={"ABCDE"};
char s[5]={'A','B','C','D','E'};
char*s; s="ABCDE";
char*s;printf("%s",s);
~C
~~~8
字符串"\\\"ABCDEF\"\\"的长度是()。
15
10
7
8
~B
~~~8
下面各语句行中,能正确进行赋值字符串操作的是()。
char s[5]={'a','b','c','d','e'};
char *s;gets(s);
char *s;*s="ABCDEF";
char s[5];scanf("%s",&s);
~B
~~~8
设已执行预编译命令#include<string.h>,以下程序段的输出结果是()。
char s[]="abcdefg";
printf("%d\n",strlen(s));
7
8
9
10
~A
~~~8
若已包括头文件<string.h>且已有定义char s1[18],s2={"ABCDE"}和int i,现要将字符串"ABCDE"赋给s1,下述语句错误的是()。
strcpy(s1,s2);
strcpy(s1,"ABCDE");
s1="ABCDE";
for(i=0;i<6;i++)
s1[i]=s2[i];
~C
###
~~~7
*以下程序的输出结果是[<4>]。
*#include<stdio.h>
*main()
*{
* int a[5]={2,4,6,8,10},*p;
* p=a;p++;
* printf("%d",*p);
*}
~~~7
*以下程序的输出结果是[<3 5>]。
*#include<stdio.h>
*void swap(int *a,int *b)
*{
* int *t ;
* t=a;a=b;b=t;
*}
*main()
*{
* int i=3,j=5,*p=&i,*q=&j;
* swap(p,q);printf("%d %d",*p,*q);
*}
~~~7
*下面程序段的运行结果是[<68>]。
*char str[]="ABCD",*p=str;
*printf("%d\n",*(p+3));
###
~~~7
设已有定义:float x;,则下列对指针变量p进行定义且赋初值的语句中正确的是( )。
float *p=1024;
int *p=(float)x;
float p=&x;
float *p=&x;
~D
~~~7
设有定义语句int (*f)(int);,则以下叙述正确的是( )。
f是基类型为int的指针变量
f是指向函数的指针变量,该函数具有一个int类型的形态
f是指向int类型一维数组的指针变量
f是函数名,该函数的返回值是其类型为int类型的地址
~B
~~~7
设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是( )。
*p=*q
p=q
*p=&n1;
p=*q
~A
~~~7
在16位编译系统上,若有定义int a[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是( )。
p向高地址移了一个字节
p向高地址移了一个存储单元
p向高地址移了两个字节
p与n+1等价
~A
~~~7
若有定义语句:int k[2][3],*pk[3];,则下列语句中正确的是( )。
pk=k;
pk[0]=&k[1][2];
pk=k[0];
pk[1]=k;
~B
~~~7
若有定义:char(*p)[6];则标识符p( )。
是一个指向字符型变量的指针
是一个指针数组名
是一个指针变量,它指向一个含有6个字符型元素的一维数组
定义不合法
~C
~~~7
下面程序段的运行结果是( )。
#include<stdio.h>
void main()
{ char str[]="abc",*p=str;
printf("%d\n",*(p+3));
}
67
0
字符'C'的地址
字符'C'
~B
~~~7
若有以下定义,则对a数组元素的正确引用是( )。
int a[5],*p=a;
*&a[5]
*a+1
*(p+5)
*(a+2)
~D
###
~~~3
C语言中用[<非0>]表示逻辑"真",用[<0>]表示逻辑值"假"。
~~~3
C语言中逻辑运算符[<!>]的优先级高于算术运算符。
~~~3
当a=1,b=2,c=3时,以下if语句执行后,a、b、c中的值分别为[<3>]、[<2>]、[<2>]。
if(a>c)
b=a;a=c;c=b;
~~~3
以下程序段的输出结果是[<死循环>]
int k,n,m;
n=10;m=1;k=1;
while(k<=n) m*=2;
printf("%d\n",m);
~~~3
以下程序的输出结果是[<-1>]
main()
{
int x=2;
while(x--);
printf("%d\n",x);
}
~~~3
以下程序段:
s=1.0;
for(k=1;k<=n;k++)
s=s+1.0/(k*(k+1))
printf("%f\n",s);
请填空,使下面的程序段的功能完全与之等同。
s=0.0
[<d=1.0>]
k=0;
do
{
s=s+d;
[<k++>]
d=1.0/(k*(k+1));
}
while[<k<=n>]
printf("%f\n",s);
~~~3
以下程序功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。
main()
{
float x,amax,amin;
scanf("%f",&x);
amax=x;
amin=x;
while[<x>=0>]
{
if(x>amax) amax=x;
if[<x<amin>] amin=x;
scanf("%f",&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
~~~5
若有定义int a[3][5];则排列在数组中的第九个元素是[<a[1][3]>]
~~~5
strlen("How are you\n")的值是[<12>]
~~~5
C语言中字符串结束的标志是[<'\0'>]
~~~5
写出一个名为s的单精度实型一维数组,长度是6,所有元素初值均为0,其数组定义语句是[<float s[6]={0};>]
~~~5
strcmp("how","How")的值是[<32或者>0>]
~~~6
C语言程序执行的开始处是[<main函数>]
~~~6
C程序中的一个函数由两部分组成,即[<声明部分>]和[<执行部分>]
~~~6
为了保证被调用函数不返回任何值,其函数定义的类型应为[<void>]
~~~6
下面pi函数的功能是,根据以下公式返回满足精度ε要求的∏的值。请填空。∏/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+(1/3)*(2/5)*(3/7)*(4/9)+...
double pi(double eps)
{double s=0.0,t=1.0;
int n;
for([<n=1>];t>eps;n++)
{
s+=t;
t=n*t/(2*n+1);
}
return (2.0*[<s>]);
}
~~~6
以下函数用以求x的y次方。请填空。
double fun(double x,int y)
{
int i;double z;
for(i=1;i[<<=y>];i++)
z=[<Z*x>];
return z;
}
~~~6
以下程序的功能是计算s=0!+1!+2!+3!+...+n!。请填空。
long f(int n)
{ int i; long s;
s=[<1L>];
for(i=1;i<=n;i++) s=[<S*i>];
return s;
}
main()
{
long s;int k,n;
scanf("%d",&n);
s=[<0>];
for(k=0;k<=n;k++) s=s+[<f(k)>];
printf("%ld\n",s);
}
###
~~~3
下列运算符中优先级最高的运算符是()。
!
%
-=
&&
~A
~~~3
下列运算符中优先级最低的运算符是()。
||
!=
<=
+
~A
~~~3
为表示关系x≥y≥z,应使用的C语言表达式是()。
(x>=y)&&(y>=z)
(x>=y)AND(y>=z)
(x>=y>=z)
(x>=y)&(y>=z)
~A
~~~3
设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是()。
a&&b
a<=b
a||b+c&&b-c
!(a<b)&&!c||1
~D
~~~5
若有int s[4]={1,2,3,4};则s[s[0]+2*s[2]-s[3]]的值是()。
1
2
3
4
~D
~~~5
对数组的描述正确的是()。
数组一旦定义去大小是固定的,但数组元素的类型可以不同
数组一旦定义去大小是固定的,但数组元素的类型必须相同
数组一旦定义去大小是可变的,但数组元素的类型可以不同
数组一旦定义去大小是可变的,但数组元素的类型必须相同
~B
~~~5
对字符串"Boy"进行完整赋值的操作是()
char s[3]={'B','o','y'}
char s[]="Boy"
char s[3]={"Boy"}
char s[3];s="Boy"
~B
~~~5
在c语言中引用数组元素时,其数组下标的数组类型允许是()
整型常量
整型表达式
整型常量或整型表达式
任何类型的表达式
~C
~~~5
对以下说明语句的正确理解是()
*int a[10]={6,7,8,9,10}
将5个初值依次赋给a[1]至a[5]
将5个初值依次赋给a[0]至a[4]
将5个初值依次赋给a[6]至a[10]
因为数组长度与初值的个数不相同,所以此语句不正确
~B
~~~5
以下程序段给数组所有元素输入数据,应在下划线处填入的是()
*main()
*{
*int a[10],i=0;
*while(i<10) scanf("%d",_______);
*:
*:
*}
a+(i++)
&a(i+1)
a+i
&a[++i]
~D
~~~5
以下程序的输出结果是()
*main()
*{
* int a[]={2,4,6,8},y=1,x,*p;
*p=&a[1];
*for(x=0;x<3;x++) y+=*(p+x);
*printf("%d\n",y);
*}
17
18
19
20
~C
~~~6
下述函数定义形式正确的是()
int f(int x;int y)
int f(int x, y)
int f(int x,int y)
int f(x,y:y)
~C
~~~6
关于函数参数,说法正确的是()
实参与其对应的形参各自占用独立的内存单元
实参与其对应的形参共同占用一个内存单元
只有当实参和形参同名时才占用同一个内存单元
形参是虚拟的,不占用内存单元
~A
~~~6
用数组名作为函数的实参时,传递给形参的是()
数组的首地址
数组的第一个元素
数组中的全部元素
数组的元素个数
~A
~~~6
复合语句中定义的变量的作用范围是()
整个源文件
整个函数
整个程序
所定义的复合语句
~D
~~~6
一个函数的返回值由()确定
return语句中的表达式
调用函数的类型
系统默认的类型
被调用函数的类型
~D
~~~6
以下说法正确的是()
C语言程序总是从第一个定义的函数开始执行
在C语言程序设计中,要调用的函数必须在main函数中定义
C语言程序总是从main函数开始执行
C语言程序中的main函数必须放在程序的开始部分
~C
~~~6
以下函数的类型是()
*fff(float x)
*{
*printf("",x*x);
*}
与参数x的类型相同
void类型
int类型
无法确定
~C
~~~6
以下程序的输出结果是()
*fun(int a,int b)
*{int c;
*c=a+b;
*retutn c;
*}
*main()
*{int x=6,y=7,z=8,r;
*r=func((x--,y++,x+y),z--);
*printf("%d\n",r);
*}
11
20
21
31
~C
~~~10
当说明一个结构体变量时,系统分配给它的内存是()
各成员所需内存总量的总和
结构中第一个成员所需内存量
成员中占内存量最大者所需的容量
结构中最后一个成员所需内存量
~A
~~~10
设有以下说明语句:
*struct stu
*{int a;
* float b;
*}stutype;
*则下面叙述不正确的是()
strut是结构体类型的关键字
strut stu是用户定义的结构体类型
stutype是用户定义的结构体类型名
a和b都是结构体成员名
~C
~~~10
C语言结构体类型变量在执行期间()
所有成员一直驻留在内存中
只有一个成员驻留在内存中
部分成员驻留在内存中
没有成员驻留在内存中
~A
~~~11
若想对文本文件只进行读操作,打开此文件的方式为()
"r"
"W"
"a"
"r+"
~A
~~~11
如果要打开C盘file文件夹下的abc.dat文件,fopen函数中第一个参数应为()
c:file\abc.dat
c:\file\abc.dat
"c:\file\abc.dat"
"c:\\file\\abc.dat"
~D
~~~11
用fopen函数打开文件,操作完毕后用()函数关闭它
fopen
open
fclose
close
~C
~~~11
以下可作为函数fopen中第一个参数的正确格式是()
c:user\test.txt
c:\user\test.txt
"c:\user\test.txt"
"c:\\user\\test.txt"
~D
~~~11
若执行fopen函数时发生错误,则函数的返回值是()
地址值
0
1
EOF
~B
~~~11
若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是()
"ab++"
"wb+"
"rb+"
"ab"
~B
若以"a+"方式打开一个已存在的文件,则以下叙述正确的是()
文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作
文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作
文件打开时,原有文件内容不被删除,只可作写操作
以上各种说法皆不正确
~A
###
~~~9
下列程序的功能时:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。
main()
{ int r; float s;
scanf("%d",&r);
s=pi*r*r;
printf("s=%f\n",s);
}
出错的原因是()。
注释语句书写位置错误
存放圆半径的变量r不应该定义为整型
输出语句中格式描述符号非法
计算圆面积的赋值语句中使用了非法变量
~D
~~~9
以下叙述错误的是()。
在程序中凡是以“#”开始的语句行都是预处理命令行
预处理命令行的最后不能以分号表示结束
#define MAX是合法的宏定义命令行
C程序对预处理命令行的处理是在程序执行的过程中进行的
~C
~~~9
下列叙述中正确的是()。
预处理命令行必须位于源文件的开头
在源文件的一行上可以有多条预处理命令
宏名必须用大写字母表示
宏替换不占用程序的运行空间
~D
~~~9
若程序中有宏定义行:#define N 100,则下列叙述中正确的是()。
宏定义中定义了标识符N的值为整数100
在编译程序对C源程序进行预处理时用100替换标识符N
对C源程序进行编译时用100替换标识符N
在运行时用100替换标识符N
~B
~~~9
程序
#include <stdio.h>
#define M 5
#define N M+M
main()
{ int k;
k=N*N*5;
printf("%d\n",k);
}
的输出结果是()。
100
50
55
45
~C
~~~9
下列叙述中正确的是()。
预处理命令行必须位于C源程序的起始位置
在C语言中,预处理命令行都以#开头
每个C程序必须在开头包含预处理命令行:#include<stdio.h>
C语言的预处理不能实现宏定义和条件编译的功能
~B
~~~9
C语言的编译系统对宏命令的处理是()。
在系统对源程序进行编译前
和其他语句的编译同时进行
在程序连接时进行
在程序运行时进行
~A
~~~9
以下叙述中不正确的是()。
预处理命令行都必须以“#”号开始,结尾不加分号
在程序中凡是以“#”开始的语句行都是预处理命令行
C程序在执行过程中对预处理命令进行处理
预处理命令可以放在程序的任何位置
~C
~~~9
下面叙述中正确的是()。
C语言中预处理是指完成宏替换和文件包含指定的文件的调用
预处理命令只能位于C源程序文件的首部
预处理命令可以放在程序中的任何位置
预处理命令结尾需要加分号
~C
~~~9
以下有关宏替换的叙述不正确的是()。
使用宏定义可以嵌套
宏定义仅仅是符号替换
双引号中出现的宏名不替换
宏名必须用大写字母表示
~D
㈦ C语言答案 求大神 解答
题号:1
以下正确的说法是( )
选项:
a、用户若需要调用标准库函数,调用前必须重新定义
b、用户可以重新定义标准库函数,若如此,该函数将失去原有意义
c、用户系统根本不允许用户重新定义标准库函数
d、用户若需要调用库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动寻找该文件
本题答案为d,无论是标准库函数还是什么函数,都是函数,都允许用户重新定义和使用,使用的时候只需要用#include 包括进来就可以了,也就是预编译命令。其中#include就是预编译命令。
题号:2
以下正确的函数定义形式是( )
选项:
a、double fun(int x,int y)
b、double fun(int x
c、int y)
d、double fun(int x,int y)
e、doubel fun(int x
f、int y)
函数的定义规则是这样的: (函数参数用逗号隔开){函数体}
函数声明的规则是这样的: (函数参数用逗号隔开);
综上所述,该题没有正确答案,唯一接近正确答案的为ad。
题号:3
以下不正确的说法为( )
选项:
a、在不同函数中可以使用相同名字的变量
b、形式参数是局部变量
c、在函数内定义的变量只在本函数范围内有效
d、在函数内的复合语句中定义的变量在本函数范围内有效
C中有一个关键字为extern,专门把局部变量转为全局变量,所以C是错误的。
本题答案为C
题号:4
建立函数的目的之一,以下正确的说法是( )
选项:
a、提高程序的执行效率
b、提高程序的可读性
c、减少程序的篇幅
d、减少程序文件所占内存
本题答案为a,
函数的增加,
b会使得程序的可读性增加,这个可以理解,模块化了,当然可读性增加了
c,多次调用一个函数即可,不用重复的写代码,这个也可以理解
d,重复的代码既然少了,整个程序的大小自然也小了,当然减少了程序文件所占的内存
至于a的效率提高了,这个不对,因为函数多了,会频繁的进行压栈出栈的操作,加大cpu的工作负荷,整个程序的效率变低了。
题号:5
C语言规定,函数返回值的类型是由( )所决定。
选项:
a、return语句中的表达式类型
b、调用该函数时的主调函数类型
c、调用该函数是系统临时指定
d、在定义该函数时所指定的函数类型
这个可以参考第二题,函数的定义规则,当然是由定义的时候确定的了。
本题答案为d。
题号:6
凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( )
选项:
a、auto
b、static
c、extern
d、register
这个题目容易,没有指定当然是自动指定的了。
本题答案为a。
另外一个小知识,我们平常看到的int a,b,c;实际上省略了auto,全部应该是 auto int a,b,c;
题号:7
以下程序的运行结果是( )void sub (int x,int y,int *z){*z=y-x;}main(){int a,b,c;sub
(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%4d,%4d,%4d",a,b,c);}
选项:
a、5, 2, 3
b、 -5, -12, -7
c、 -5, -12, -17
d、 5, -2, -7
void sub (int x,int y,int *z)
{
*z=y-x;
}
main()
{
int a,b,c;
sub(10,5,&a); 执行完这句a的值为-5;
sub(7,a,&b);执行完这句b的值为-12;
sub(a,b,&c);执行完这句c的值为-7
printf("%4d,%4d,%4d",a,b,c);
}
答案为b;
题号:8
若用数组名作为函数调用的实参,传递给形参的是( )
选项:
a、数组的首地址
b、数组第一个元素的值
c、数组中全部元素的值
d、数组元素的个数
本题答案为a
数组名为数组的首地址,也是数组第一个元素的值的地址。数组名是一个地址。
题号:9
若使用一位数组名作为函数实参,则以下正确的说法是( )
选项:
a、必须在主调函数中说明此数组的大小
b、实参数组类型与形参数组类型可以不匹配
c、在被调函数中,不需要考虑形参数组的大小
d、实参数组名与形参数组名必须一致
本题答案为a,
必须在主调函数中定义该数组的大小。也就是该数组大小应该被提前设定好。
int a[10]可以作为参数,int a[x]不可以作为参数。
题号:10
如果在一个复合语句中定义了一个变量,则有关该变量正确的说法是( )
选项:
a、只在该复合语句中有效
b、只在该函数中有效
c、在本程序范围内均有效
d、为非法变量
答案为
㈧ 求学过c语言的大佬解答下(6)的问题
首先,C语言耐差灶的define预处理语句只会直接替换,
然后表达式会按先乘昌扮除后加减的优先级进行运算,
所以最后得出的结果加小括号和不加小括号是不一样庆渣的.(见图)
㈨ 一般地,调用标准字符或格式输入输出库函数时,文件开头应有以下预编译命令:___
编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。