移轴拍摄是怎么拍的:c语言的问题

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 10:15:53
41
有以下程序
int fa(int x) {return x*x; }
int fb(int x) {return x*x*x; }
int f(int (*f1)(), int (*f2)(),int x) {return f2(x)-f1(x); }
main() {int i; i=f(fa,fb,2); printf("%d\n",i); }
输出结果是4
int fa(int x) {return x*x; }
int fb(int x) {return x*x*x; }
int f(int (*f1)(), int (*f2)(),int x)
{return f2(x)-f1(x); }

14
若fp已经正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为“读”而打开此文件fp=fopen("d1.dat","rb"="d1.dat","r+b"="d1.dat","rb+")
为什么

16
fun函数的功能是:首先对a所指的N行N列的矩阵,照常个航中的最大的数,要求这N个最大值中的最小的那个数作为函数值返回
#include <stdio.h>
#define N100
int fun(int(*a)[N] (int row,col,max,min; for(row=0;row<N; row++)
{for (max =a[row][0],col=1;col<N; col++) if (填空部分1)max=a[row][col];
if(row==0) min=max; else if(填空部分2)min=max;}return min;}
填空部分1(据说1和2都是可以的)
max<=a[row][col]
a[row][col]>max
a[row][col]>=max
填空部分2
max<min
main<=min
min>max
min>=max
麻烦解释一下语句我不太懂

其实看不太懂你的问题,但是按我的想法说一下,看看是否有帮助。

是41题
这是一个指向函数的指针的问题。
这两句是声名两个函数名为fa和fb的函数
int fa(int x) {return x*x; }
int fb(int x) {return x*x*x; }
这一句是声名函数名为f的函数
int f(int (*f1)(), int (*f2)(),int x) {return f2(x)-f1(x); }
其中函数的参数int (*f1)()说明函数f要求以指向函数的指针作为参

数,且指针所指向的函数不含有任何参数,但是我觉得这里好像写错

了,应该传入一个参数,否则后面的函数调用是没有办法带参数的。

同时后面的return语句也写错了,函数f2和f1都应当是用指针表示,

修改后的代码是:
int f(int (*f1)(int), int (*f2)(int),int x) {return (*f2)

(x)-(*f1)(x); }
这句代码说的是函数f将返回由函数f2和f1带入参数x后的返回值相减

的差。
具体到main函数中,就是
调用语句为 i=f(fa,fb,2);
这表示函数f调用函数fa和fb为参数,代入之后返回
fb(2)-fa(2)的结果,其中fb(2)=8,fa(2)=4;所以相减后的4是最后的

结果。

第14题
你的问题是
A) "d1.dat","rb"
B) "d1.dat","r+b"
C) "d1.dat","rb+"
三个选项都可以读取二进制文件出来吧。
还真是让我猜了一通
应该是这样的,这三个选项中
r代表只允许读取,是readonly
r+代表允许读取并更新,其实也就是可读可写

而b代表采取二进制方式,和b地位相同的还有t,它代表使用文本方

式,但是b和t只可以用一个。C语言也允许将其插在r+的中间,也就

是说r+b和rb+的意思是完全一样的。当不写b或者t时,C语言按照默

认的读取方式进行。由_fmode决定的,当开始运行程序时_fmode表示

使用文本方式。

第16题
把题目整理一下,得到以下的程序
#include <stdio.h>
#define N 100
int fun(int(*a)[N])
{
int row,col,max,min;
for(row=0;row<N; row++)
{
for (max =a[row][0],col=1;col<N; col++)
{
if (填空部分1)max=a[row][col];
}
if(row==0) min=max;
else if(填空部分2)min=max;
}
return min;
}
#define N 100是定义 N=100
函数的参数int(*a)[N]是传进了一个二维数组a[][]
下面进入程序
首先声明变量,这个我们都清楚了,其中row代表行数,col代表列数

,max代表每行中的最大值,min代表所有行中最大值的最小值。

接着开始循环,首先从第一行开始,然后进入第一行的第一列,并让

这一行中的最大值max首先等于这一行的第一个值,之后进入条件判

断,判断这一行中是否有比这个max的值更大的值,如果有则将其赋

给max,所以填空部分1中的内容应该是条件:
当前行的值a[row][col]应大于本行中的最大值max,因为不论
a[row][col]大于或者等于max效果是一样的,所以以下的四个条件都

可以用
max<a[row][col]
max<=a[row][col]
a[row][col]>max
a[row][col]>=max
填空的第二部分
是从所有行的最大值中挑选出最小值的条件
if(row==0) min=max; 是为最小值min赋一个初始值,因为如果只有

一行的话最大值中的最小值就是这个最大值。
else if(填空部分2)min=max; 的作用是判断当前行的最大值是否比

min要小,如果小的话,则将将其赋给min,所以填空部分2中的内容

应该是条件:
当前行的最大值max应小于min,因为不论
min小于或者等于max效果是一样的,所以以下的四个条件都可以用
max<min
max<=min
min>max
min>=max

最后要说一句,这是什么考题,到处是错误,都快看晕了