百度
360搜索
搜狗搜索

若执行fopen函数时发生错误,若有定义语句: int m=5, y=2; 则执行表达式 y+ =y - =m =y ; y的值是多少?详细介绍

本文目录一览: 若执行fopen函数时发生错误,则函数的返回值是?

若执行fopen函数时发生错误,则函数的返回值是NULL(即0)。
文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL,并把错误代码存在errno 中。
执行fopen函数时,如果文件打开成功,则返回该文件结构体的指针,如果 打开失败(例如,读打开时文件不存在,写打开时文件不能创建),则返回NULL(即0)。
这个函数是用来判断指针是否已经到达文件尾部的。若fp已经指向文件末尾,则feof(fp)函数值为“真”,即返回非零值;否则返回0。
使用void类型指针要注意的几条规则:
1、void*类型只有地址信息没有类型信息,所以不能计算偏移。
C/C++中的指针通常来说有两个属性:
(1)指向变量。
(2)指向对象的地址和长度。
指针其实就是存储被指向变量的地址,并不保存其长度;而且存的这个地址仅是变量的首地址,并不是该变量占据内存的所有地址空间。
2、任何指针(包括函数指针)都可以赋值给void指针。
特点:
(1)不需要类型转换。
(2)只获得变量/对象地址而不获得大小。

若执行fopen函数时发生错误,则函数的返回值是

成功返回FILE *指针;
失败返回NULL
如FILE *fp;
fp = fopen(...);
if (fp == NULL) { // 失败
....
}
执行fopen函数时发生错误,则函数的返回值是NULL(即0)。文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL,并把错误代码存在errno中。
fopen函数是打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式);
“文件指针名”必须是被声明为FILE类型的指针变量;“文件名”是被打开文件的文件名;“使用文件方式”是指文件的类型和操作要求;“文件名”是C风格字符串。
扩展资料
函数介绍
例如:
FILE *fp;
fp=fopen("file a","r");
其意义是在当前目录下打开文件file a,只允许进行“读”操作,并使fp指向该文件。
又如:
FILE *fphzk
fphzk=fopen("c:\\hzk16","rb");
其意义是打开C驱动器磁盘的根目录下的文件hzk16,按二进制方式进行读操作。两个反斜线“\\ ”中的第一个表示转义字符,第二个表示根目录。
使用文件的方式共有12种,下面给出了它们的符号和意义。

若执行fopen函数时发生错误,则函数的返回值是()。

发生错误一般是返回1
若执行fopen函数时发生错误,则函数的返回值是NULL(即0)。
fopen的函数原型为: FILE *fopen(const char *filename, const char *mode);其功能是使用给定的模式 mode 打开 filename 所指向的文件。文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回 NULL,并把错误代码存在 error 中。该函数位于C 标准库

中。

扩展资料:

fopen() 将 filename 指定的名字资源绑定到一个流上。如果 filename 是 "scheme://..." 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。

如果 PHP 认为 filename 指定的是一个本地文件,将尝试在该文件上打开一个流。该文件必须是 PHP 可以访问的,因此需要确认文件访问权限允许该访问。如果激活了 安全模式 或者 open_basedir 则会应用进一步的限制。

若执行fopen函数时发生错误 则函数的返回值是

NULL,或者0

c语言fopen函数打不开文件

①文件不存在;
②文件名错误,打开文件的名字应该写成"c:\\file.txt",而不是"c:\file.txt";
③代码错误;
fopen函数用于打开文件并获取文件的指针,以便对文件进行操作。
函数原型:FILE * fopen(const char * path,const char * mode);
参数:path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库以二进制模式打开文件。如果不加b,表示默认加了t,即rt,wt,其中t表示以文本模式打开文件。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask值。
有些C编译系统可能不完全提供所有这些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,读者注意所用系统的规定。
返回值:
文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。
一般而言,打开文件后会做一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。
示例:以只读方式打开文件
#include

#define F_PATH "d:\\myfile\\file.dat"

int main(void)

{

FILE*fp=NULL;//需要注意

fp=fopen(F_PATH,"r");

if(NULL==fp)

{

return -1;//要返回错误代码

}

fclose(fp);

fp=NULL;//需要指向空,否则会指向原打开文件地址

return 0;

}

如果打开来读,文件不存在,或文件路径错,或没有文件的访问权。

如果打开来写,文件夹是否允许写,文件是否存在,但有写保护。

FILE *fp;

fp = fopen(...);

用 返回的 fp 可以判断 打开是否成功: if (!fp) printf("open error!\n");

in = fopen("d:\\a.txt","r");

out = fopen("d:\\b.txt","w");

追问:

那数组为什么不用加转义字符啊?

追答:

你用scanf函数的时候,当输入\的时候,编译器会自动认为是字符'\'

但是字符串“d:\a.txt”里面的‘\’被认为是转义字符的标志。

这是它们的区别。

in = fopen("d:\\a.txt","r");

out = fopen("d:\\b.txt","w");

SCANF输入的分别为D:\A.TXT D:\B.TXT

改成

D:\\A.TXT 和 D:\\B.TXT

1、新建一个fopen函数的使用项目。

2、包含需要用到的头文件。

3、输入_tmain函数。

4、在MSDN上,查看fopen的函数原型。

5、输入fopen函数。

6、定义一个FILE类型的指针变量f,并接受返回值。

7、使用if语句判断文件是否打开成功。

8、按快捷键F5,运行程序,查看结果。

若有定义语句: int m=5, y=2; 则执行表达式 y+ =y - =m =y ; y的值是多少?

楼上的答案正确
第一题:
y+=y
-=m
*=y;
按照从左到右的执行顺序,首先执行m*=y,即m=m*y,m=2*5=10
接着执行y-=m,即y=y-m,y=2-10=-8
最后执行最左边的y+=y,即y=y+y=-8-8=-16
所以最好的y为-16
第二题,答案是“NULL”,如果fopen函数发生错误,一般是打开的文件不存在或者打开方式错误,就会返回“NULL”,
一般用
FILE
*
fp;
fp=fopen(“c:\test.txt”,NULL);
if(fp==NULL)
return;
上面的if语句来判断打开是否成功~~~

C语言程序选择题

15.若以下main函数经过编译、连接后得到的可执行文件名为echo.exe,若希望在系统的命令状态下输入某一命令行后得到的输出是chian tianjin,则命令行的内容应是( B)。
A)chian tianjin B)echo chian tianjin
C)echo D)echo
chian tianjin china
tianjin
16.以下对结构体变量stu中成员age的非法引用是(B)。
struct student
{ int age; int num; } stu, *p;
p=&stu;
A)stu.age B)student.age C)p->age D)(*p).age
17.已知学生记录描述为:
struct DATE
{ int year;
int month;
int day;
};
struct student
{ int no; /*学号*/
char name[10]; /*姓名*/
char sex; /*性别*/
struct DATE birth;
};
struct student s;
设变量s中的“生日”应该是“1984年11月11日”,下列对“生日”的正确赋值方式是(D)。
A)year=1984; B)birth.year=1984;
month=11; birth.month=11;
day=11; birth.day=11;
C)s.year=1984; D)s.birth.year=1984;
s.month=11; s. birth.month=11;
s.day=11; s.birth.day=11;
18.若有以下定义的语句:
union data
{ int i;
char c;
float f;
}a;
int n;
则以下语句正确的是(A)。
A)a.i=5 B)a={2,’a’,1.2} C)printf(“%d”,a) D)n=a
19. 表达式a
<b||~c&d的运算顺序是(a)。
A)~,&,<, || B)~,||,&,< C)~,&,||,< D)~,<,&, ||

20.若执行fopen函数时发生错误,则函数的返回值为(B)。

A)地址值 B)0 C)1 D)EOF
</b||~c&d的运算顺序是(a)。

电气三班c语言选择题

~~~9
在“文件包含”预处理语句的使用形式中,当#include后面的文件名用尖括号(<>)括起时,寻找被包含文件的方式是()。
仅仅搜索当前目录
仅仅搜索源程序所在目录
在标准目录下查找指定文件
先在源程序所在目录搜索,如没找到,再按系统指定的标准目录查找
~C
~~~10
下列对结构体类型变量td的定义中,错误的是()。
typedef struct aa struct aa
{ int n; { int n;
float m; float m;
}AA; }td;
AA td;
struct struct
{int n; { int n;
float m; float m;
}aa; }td;
struct aa td;
~C
~~~10
下列叙述错误的是()。
可以通过typedef增加新的类型
可以用typedef将已存在的类型用一个新的名字来代表
用typedef定义新的类型名后,原有的类型名仍有效
用typedef可以为各种类型起别名,但不能为变量起别名
~A
~~~10
设有以下语句:
typedef struct TT
{char c;int a[4];}CIN;
则下列叙述中正确的是()。
可以用TT定义结构体变量
TT是 struct类型的变量
可以用CIN定义结构体变量
CIN是struct TT类型的变量
~C
~~~10
下列关于typedef的叙述错误的是()。
用typedef可以增加新的类型
typedef只是将已存在的类型用一个新的名字来代表
用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名
用typedef为类型说明一个新名,通常可以增加程序的可读性
~A
~~~10
有以下结构体类型说明和变量定义中正确的是()。
typedef struct struct REC
{ int n;char c;}REC; { int n;char c;};
REC t1,t2; REC t1,t2;
typedef struct REC; struct
{ int n=0;char c='A';}t1,t2; { int n;char c;}REC;
REC t1,t2;
~A
~~~10
定义以下结构体数组:
struct st
{ char name[15];
int age;
}a[10]={"ZHAO",14,"WANG",15,"LIU",16,"ZHANG",17};
执行语句printf("%d,%c"a[2].age,*(a[3].name+2)))的输出结果为()。
15,A
16,H
16,A
17,H
~C
~~~11
设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为()。
EOF
非0值
0
NULL
~B
~~~11
读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中buffer代表的是()。
一个文件指针,指向待读取的文件
一个整型变量,代表待读取的数据的字节数
一个内存块的首地址,代表读入数据存放的地址
一个内存块的字节数
~C
~~~11
如果需要打开一个已经存在的非空文件“FILE"并进行修改,正确的语句是()。
fp=fopen("FILE","r");
fp=fopen("FILE","a+");
fp=fopen("FILE","w+");
fp=fopen("FILE","r+");
~D
~~~11
若以"a+"方式打开一个已存在的文件,则以下叙述正确的是()。
文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加或读操作
文件打开时,原有文件内容不被删除,只能进行读操作
文件打开时,原有文件内容被删除,只能进行写操作
以上各种说法都不正确
~A
~~~11
使用fgets(str,n,p)函数从文件中读入一个字符串,以下叙述错误的是()。
字符串读入后会自动加入'\0'
fp是指向该文件的文件型指针
fgets函数将从文件中最多读入n-1个字符
fgets函数将从文件中最多读入n个字符
~D
###
~~~3
下列程序运行后的输出结果是[<10 20 0>]。
main()
{int a,b,c;
a=10;b=20;c=(a%b<1)||(a/b>1);
printf("%d %d %d\n",a,b,c);
}
~~~3
下列程序用于判断a、b、c能否构成三角形,若能输出YES,否则输出NO。请填空。
main()
{float a,b,c;
scanf("&f&f&f",&a,&b,&c);
if([<(a+b>c)&&(a+c>b)&&(b+c>a)>]) printf("YES\n");
else printf("NO");
}
~~~3
已有定义:char c='';int a=1,b;执行b!=c&&a;后b的值为[<0>]。
~~~3
下列程序的输出结果是[<1>]。
main()
{int a=1,b=2,c=3;
if(c=a) printf("%d\n",c);
else printf("%d\n",b);
}
}
~~~3
下列程序的输出结果是[<1>]。
main()
{int x,a=1,b=2,c=3,d=4;
x=(a

x)?x:d;

printf("%d\n",x);

}

~~~3

下列程序的输出结果是[<0235>]

main()

{int k=5,n=0;

do

{switch(k)

{case 1: case 3:n+=1;k--;break;

default:n=0;k--;

case 2: case 4:n+=2;k--;break;

}

printf("%d",n);

}while(k>0&&n<5);

}

~~~3

下列程序的输出结果是[<25>]

main()

{int i;

for(i=1;i<=10;i++)

{ if((i*i>=20)&&(i*i<=100))

break;

}

printf("%d\n",i*i);

}

~~~3

下列程序的输出结果是[<2,2,0>]

main()

{int a=-5,b=1,c=1;

int x=0,y=2,z=0;

if(c>0) x=x+y;

if (a<=0)

{ if(b>0)

if(c<=0) y=x-y;

}

else if (c>0) y=x-y;

else z=y;

printf("%d,&d,&d\n",x,y,z);

}

~~~4

有下列程序段,且变量已正确定义和赋值:

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

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

请填空,使下列程序段的功能与之完全相同。

s=1.0;k=1;

while([
<k
]) {s=s+1.0/(k*(k+1));[

阅读更多 >>>  androidapk,apk是什么文件

];}

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

~~~4

下列程序的功能是:将输入的正整数按逆序输出。例如,如输入135则输出531,请填空。

main()

{int n,s;

scanf("%d",&n);

do

{s=n%10;printf("%d",s);[

];}

while (n!=0);

}

~~~4

下列程序的功能是计算:s=1+12+123+1234+12345.请填空。

main()

{int t=0,s=0,i;

for(i=1;i<=5;i++)

{t=i+[

];s=s+t;}

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

}

~~~4

下列程序的运行结果是[<32>]。

main()

{int i=0,a=0;

while(i<20)

{for(;;)

{if(i%10==0)break;

else i--;

}

i+=11;

a+=i;

}

printf("%d\n",a);

}

###

~~~3

在下列给出的表达式中,与while(E)中的(E)不等价的表达式是()。

(!E==0)

(E>0||E<0)

(E==0)

(E!=0)

~C

~~~3

已知字母A的ASCII值为65,若变量kk为char型,以下不能正确判断出kk的值为大写字母的表达式是()。

kk>='A'&&kk<='Z'

!(kk>='A'||kk<='Z')

(kk+32)>='a'&&(kk+32)<='z'

isalpha(kk)&&(kk<91)

~B

~~~3

设有定义:int a=2,b=3,c=4;,则下列选项中值为0的表达式是()。

(!a==1)&&(!b==0)

(a
<b)&&!c||1
a&&b

a||(b+b)&&(c-a)

~A

~~~3

下列关于逻辑运算符两侧运算对象的叙述中正确的是()。

只能是整数0或1

只能是整数0或非0

可以是结构体类型的数据

可以是任意合法的表达式

~D

~~~3

当变量c的值不为2、4、6时,值也为真的表达式是()。

(c==2)||(c==4)||(c==6)

(c>=2&&c<=6)||(c!=3)||(c!=5)

(c>=2&&c<=6)&&!(c%2)

(c>=2&&c<=6)&&(c%2!=1)

~C

~~~3

在嵌套使用if语句时,C语言规定else总是()。

和之前与其具有相同缩进位置的if配对

和之前与其最近的if配对

和之前与其最近的且不带else的if配对

和之前的第一个if配对

~C

~~~3

设变量x和y均已正确定义并赋值。下列if语句中,在编译时将产生错误信息的是()。

if(x++) ;

if(x>y&&y!=0)

if (x>0) x-- else y++

if (y<0){;} else x++;

~C

~~~3

若变量已正确定义,有以下程序段:

*int a=3,b=5,c=7;

*if(a>b) a=b;c=a;

*if(c!=a) c=b;

*printf("%d,%d,%d\n",a,b,c);

*其输出结果是()。

程序段有语法错误

3,5,3

3,5,5

3,5,7

~B

~~~3

下列叙述中正确的是()。

break只能用于 switch语句

switch语句中必须使用default

break必须与switch语句中的case配对使用

在switch中,不一定使用break

~D

~~~3

若变量已正确定义,以下表达式错误的是()。

a/b+c

a%(5.0)

a=1/3*(x=y=10,x*2)

a=b=c

~B

~~~3

下列程序运行后的输出结果是()。

*main()

*{int a=4,b=3,c=2,d=1;

*printf("%d",a
<b?a:d<c?d:b);
*}

1

3

2

4

~A

~~~3

若a=3,b=4,c=5,d=6,则条件表达式a
<b?a:c<d?c:d的值是()。
4

3

2

1

~B

~~~3

执行下面程序中的输出语句后,a的值是()。

*main()

*{int a;

*printf("%d\n",(a=2*3,a*5,a+7));

*}

17

37

6

13

~C

~~~3

当a=1,b=2,c=3,d=4时,执行下面程序段后,x的值是()。

*if(a
<b)
*if(c
<d) x="1;
* else

* if(a
<c)
* if(b
<d) x="2;
* else x=3;

*else x=6;

*else x=7;

1

2

3

6

~A

~~~4

有下列程序:

*main()

*{int k=5;

*while(--k) printf("%d",k-=3);

*printf("\n");

*}

*执行后的输出结果是()。

1

2

4

死循环

~A

~~~4

有下列程序段:

int n,t=1,s=0;

scanf("%d",&n);

do {s=s+t;t=t-2;}while(t!=n);

为使此程序不陷入死循环,从键盘输入的程序应该是()。

任意正奇数

任意负偶数

任意正偶数

任意负奇数

~D

~~~4

若变量已正确定义,有下列程序段:

*i=0

*do printf("%d,",i);while(i++);

*printf("%d\n",i);

*其输出结果是()。

0,0

0,1

1,1

程序进入无限循环

~B

~~~4

有下列程序:

*main()

*{int i,j,m=55;

*for(i=1;i<=3;i++)

*for(j=3;j<=i;j++) m=m%j;

*printf("%d\n",m);

*程序的运行结果是()。

0

1

2

3

~B

~~~4

下列程序的运行结果是()。

*main()

*{int a=1,b;

*for(b=1;b<=10;b++)

*{if(a>=8) break;

*if(a%2==1)

*{a+=5;continue;}

*a=3;

*}

*printf("%d\n",b);}

3

4

5

6

~B

~~~4

下列叙述中正确的是()。

break语句只能用于switch语句中

continue的作用是使程序的执行流程跳出包含它的所有循环

break语句只能用于循环体内和switch语句中

在循环体内使用break语句和continue语句的作用相同

~C

~~~4

设有程序段:

*int k=12;

*while (k=1)k=k-1;

*则下面描述中正确的是()。

while循环执行10次

循环是无限循环

循环体语句一次也不执行

循环体语句执行一次

~B

~~~4

下列程序段的运行结果是()。

*x=y=0;

*while(x<25)

*{y++;

*x+=++y;

*}

*printf("%d,%d",y,x);

30,9

9,30

3,1

10,30

~D

~~~4

while和 do while循环的主要区别是()。

do while循环的循环体不能是复合语句

do while循环允许从循环体外转到循环体内

while循环的循环体至少被执行一次

do while循环的循环体至少被执行一次

~D

~~~4

下面的for语句的循环次数是()。

*for(x=1,y=0;(y!=19&&(x<6);x++);

无限循环

循环次数不定

最多执行6次

最多执行5次

~D

~~~4

下面结论中错误的是()。

可以用do while语句实现的循环一定可以用while语句实现

可以用for语句实现的循环一定可以用while语句实现

可以用while语句实现的循环一定可以用for语句实现

do while语句和while语句的区别仅是while出现的位置不同

~D

~~~4

若i,j已定义成int型,则以下程序段中内循环体的总执行次数是()。

*for(i=6;i>0;i--)

*for(j=0;j<4;j++){...}

20

24

25

30

~B

~~~4

以下循环体的执行次数是()。

*main()

*{int i,j;

*for(i=0,j=1;i
<j+1;i+=1,j--)
*printf("%d\n",j);}

3

2

1

0

~C

~~~4

下列叙述中正确的是()。

只能在循环体内和switch语句内使用break语句

continue的作用是结束整个循环的执行

在循环体内使用break和continue的作用相同

从多层循环嵌套中退出时,只能使用goto语句

~A

下面说法不正确的是()。

调用函数时,实参可以是表达式

调用函数时,实参和形参可以共用内存单元

调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等

调用函数时,实参与形参的类型必须一致

~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

阅读更多 >>>  linux中d的文件怎么打开

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

,以下程序段的输出结果是()。

char s[]="abcdefg";

printf("%d\n",strlen(s));

7

8

9

10

~A

~~~8

若已包括头文件

且已有定义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

*main()

*{

* int a[5]={2,4,6,8,10},*p;

* p=a;p++;

* printf("%d",*p);

*}

~~~7

*以下程序的输出结果是[<3 5>]。

*#include

*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

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>]表示逻辑值"假"。

~~~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

[

]

k=0;

do

{

s=s+d;

[

]

d=1.0/(k*(k+1));

}

while[
<k
]

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

~~~3

以下程序功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。

main()

{

float x,amax,amin;

scanf("%f",&x);

amax=x;

amin=x;

while[

=0>]

{

if(x>amax) amax=x;

if[
<x
] amin=x;

scanf("%f",&x);

}

printf("\namax=%f\namin=%f\n",amax,amin);

}

~~~5

若有定义int a[3][5];则排列在数组中的第九个元素是[

]

~~~5

strlen("How are you\n")的值是[<12>]

~~~5

C语言中字符串结束的标志是[<'\0'>]

~~~5

写出一个名为s的单精度实型一维数组,长度是6,所有元素初值均为0,其数组定义语句是[

]

~~~5

strcmp("how","How")的值是[<32或者>0>]

~~~6

C语言程序执行的开始处是[


]

~~~6

C程序中的一个函数由两部分组成,即[

]和[

]

~~~6

为了保证被调用函数不返回任何值,其函数定义的类型应为[

]

~~~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([

];t>eps;n++)

{

s+=t;

t=n*t/(2*n+1);

}

return (2.0*[
]);
}
~~~6
以下函数用以求x的y次方。请填空。
double fun(double x,int y)
{
int i;double z;
for(i=1;i[<<=y>];i++)
z=[

];

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=[

];

return s;

}

main()

{

long s;int k,n;

scanf("%d",&n);

s=[<0>];

for(k=0;k<=n;k++) s=s+[

];

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

阅读更多 >>>  为什么好多软件是bin

#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

C语言的预处理不能实现宏定义和条件编译的功能

~B

~~~9

C语言的编译系统对宏命令的处理是()。

在系统对源程序进行编译前

和其他语句的编译同时进行

在程序连接时进行

在程序运行时进行

~A

~~~9

以下叙述中不正确的是()。

预处理命令行都必须以“#”号开始,结尾不加分号

在程序中凡是以“#”开始的语句行都是预处理命令行

C程序在执行过程中对预处理命令进行处理

预处理命令可以放在程序的任何位置

~C

~~~9

下面叙述中正确的是()。

C语言中预处理是指完成宏替换和文件包含指定的文件的调用

预处理命令只能位于C源程序文件的首部

预处理命令可以放在程序中的任何位置

预处理命令结尾需要加分号

~C

~~~9

以下有关宏替换的叙述不正确的是()。

使用宏定义可以嵌套

宏定义仅仅是符号替换

双引号中出现的宏名不替换

宏名必须用大写字母表示

~D

</b)&&!c||1





</x

</k


</j+1;i+=1,j--)

</c)

</b)
</b?a:c<d?c:d的值是()。
</b?a:d<c?d:b);
</b)&&!c||1

</k

若有定义语句: int m=5, y=2; 则执行表达式 y+ =y - =m =y ; y的值是多少?

c/c++语言标准规定,在两个序列点之间,只能修改变量的值一次,而这个表达式修改了两次,所以这个表达式的行为是未定义的,在不同的编译器里可能会有不同的结果。
应该尽量避免这样的表达式,
关于序列点,相关文章很多,自己搜一下吧。
楼上的答案正确
第一题:
y+=y
-=m
*=y;
按照从左到右的执行顺序,首先执行m*=y,即m=m*y,m=2*5=10
接着执行y-=m,即y=y-m,y=2-10=-8
最后执行最左边的y+=y,即y=y+y=-8-8=-16
所以最好的y为-16
第二题,答案是“NULL”,如果fopen函数发生错误,一般是打开的文件不存在或者打开方式错误,就会返回“NULL”,
一般用
FILE
*
fp;
fp=fopen(“c:\test.txt”,NULL);
if(fp==NULL)
return;
上面的if语句来判断打开是否成功~~~
y值是-16。
从左往右分解,y+=y-=m*=y 就是 y=y+(y-=m*=y)
y-=m*=y 就是 y=y-(m*=y)
m*=y 就是 m=m*y
那么就等于
m=m*y; //m=10, y=2
y=y-m; //m=10, y=-8
y=y+y; //m=10, y=-16
扩展资料:
由于后缀表达式不需考虑运算符的优先级,因此计算较简单。计算过程为:从左到右依次扫描后缀表达式,遇到运算符,则与运算符前边连续两个操作数做运算。
由于遇到操作数时,不能立即进行计算,因此设立一个栈(操作数栈),用于存放操作数。具体运算过程如下:
1、从左到右依次扫捕后缀表达式,每次取出一个字符;
2、若字符是操作数,则入栈;
3、若字符是运算符,则连续出栈两个操作数,计算它们的值,然后把运算结果入栈;
4、重复步骤1~3,直至表达式结束,栈中最后一个元素即是后缀表达式的值。

网站数据信息

"若执行fopen函数时发生错误,若有定义语句: int m=5, y=2; 则执行表达式 y+ =y - =m =y ; y的值是多少?"浏览人数已经达到22次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:若执行fopen函数时发生错误,若有定义语句: int m=5, y=2; 则执行表达式 y+ =y - =m =y ; y的值是多少?的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!