几个搞不清楚的问题
1,三种不同的出错处理方式:
a.用exit语句终止执行并报告错误
b.以函数的返回值区别正确返回和错误返回
c.设置一个整型变量的函数参数以区别正确返回和某种错误返回
三个之间有什么优缺点。
2,
a.通过scanf 和printf语句
b.通过函数的参数显示回传
c.通过全局变量隐式传递
三个各有什么优缺点?
谢谢各位
问题点数:20、回复次数:4Top
1 楼antijpn(antijpn)回复于 2005-09-23 21:46:16 得分 0
转新手乐园Top
2 楼yayafu(维生素C)回复于 2005-09-23 22:12:12 得分 0
应用范围,情况都不一样,说什么优缺点啊Top
3 楼fiftymetre(50米深蓝)回复于 2005-09-24 01:16:57 得分 20
一看就是数据结构看笨掉了小朋友了吧
计算 i!×2^i 的值并存入数组 a[0..arrsize-1] 的第 i-1 个分量中(i=1,2,…,n)。假设计算机中允许的整数最大值为 maxint,则当 n>arrsize 或对某个 k(1≤k≤n) 使 k!×2^k>maxint 时,应按出错处理。注意选择你认为较好的出错处理方法。
ANSWER:
exit, 简单,直接退出,不用收拾残局,通常用在严重错误不能继续运行时,
返回值区别正确返回或错误返回,由调用环境决定程序的下一步走向。
整型变量的函数参数以区别正确返回或某种错误返回,同上,并可判别多种类型的错误。
int cal(int a[], int arrsize, int n ) {
// 计算(i!2^i)存入a[i],1≤i≤n, 若n>arrsize, 则返回-1,
// 若k!2^k (1≤k≤n)出界,则返回-2, 否则返回0
if ( n<1 || arrsize<n ) return -1;
a[1] = 2; i = 2;
while (i<=n && a[i-1]<=MAXINT/(2*i)) {
a[i]=a[i-1]*2*i; i++;
}
if (i>n) return 0;
else return -2;
}
编写算法求一元多项式P[n,x]=Sum[a[i]*x^i, {i, 0,n}]的值P[n, x0],并确定算法中每一语句的执行次数和整个算法的时间复杂度。注意选择你认为较好的输入和输出方法,本题的输入为a[i](i=0,1,…,n),x0和n,输出为P[n,x0]。
ANSWER:
(1) 直接和外部环境进行信息交换,复用性较差,一般仅用在人机对话的用户界面中;
(2) 和调用环境进行信息交换,安全性好,使模块内部出现的错误不外传,进行模块测试时,只要保证本模块从入口到出口的结果正确即可。
(3) 交换方式同(2),但不安全,容易出现各模块的错误滚动传递。
float polyval(float a[], int n, float x0) {
// a[0..n]存放(a0,a1,…,an), 返回Pn(x0)=
s = a[0]; k=0; e=1;
while (k<n) {
e* = x0; // e = e*x0
s+ = a[++k]*e;
}
return s;
} // polyval
4. 设 n 为正整数。试确定下列各程序段中前置以记号 @ 的语句的频度:
(1) i=1; k=0;
while ( i<=n-1) {
@ k += 10 * i;
i++;
}
ANSWER: n-1
(2) i=1; k=0;
do {
@ k +=10 * i;
i++;
} while(i<=n-1);
ANSWER: n-1
(3) i = 1; k = 0;
while (i<=n-1) {
i++ ;
@ k+= 10 * i;
}
ANSWER: n-1
(4) k=0;
for( i=1; i<=n; i++) {
for (j=i ; j<=n; j++)
@ k++;
}
ANSWER: n(n+1)/2
(5) for( i=1; i<=n; i++) {
for (j=1; j<=i; j++) {
for (k=1; k<=j; k++)
@ x += delta;
}
}
ANSWER: (n*(1 + n)*(2 + n))/6
(6) i=1; j=0;
while (i+j<=n) {
@ if (i>j ) j++ ;
else i++ ;
}
ANSWER: n
(7) x=n; y=0; // n 是不小于1的常数
while (x>=(y+1)*(y+1)) {
@ y++;
}
ANSWER: INT[ Sqrt[n]]
(8) x=91; y=100;
while (y>0 ) {
@ if (x>100 ) { x -= 10; y- -; }
else x++;
}
ANSWER: 1100
网上找来。看看吧Top
4 楼koil(邮桶)回复于 2005-09-24 20:54:43 得分 0
谢谢各位,以后我少来这里了 认真看书了Top




