1单选(1分)
声明语句int (*p)();的含义是________。
-
A.以上都不对
-
B.p是一个指向一维数组的指针变量
-
C.p是指针变量,指向一个整型数据
-
D.p是一个指向函数的指针,该函数的返回值是一个整型
正确答案:D
2单选(1分)
声明语句int *f();中f的含义是________。
-
A.一个用于指向整型数据的指针变量
-
B.一个用于指向一维数组的行指针
-
C.一个用于指向函数的指针变量
-
D.一个返回值为指针类型的函数名
正确答案:D
3单选(1分)
给出下面程序的运行结果。
#include <stdio.h>
int main(void)
{ static int x[] = {1,2,3};
int s = 1, i, *p = x;
for (i=0; i<3; i++)
{ s*= *(p + i);
}
printf("%d\n", s);
return 0;
}
-
A.3
-
B.5
-
C.6
-
D.4
正确答案:C
4单选(1分)
从键盘任意输入10个整数,计算并输出最大值和最小值及其它们在数组中的下标位置。按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。
程序运行结果示例1:
Input 10 numbers:1 2 3 4 5 6 7 8 9 10↙
max=10,pos=9
min=1,pos=0
程序运行结果示例2:
Input 10 numbers:2 4 5 6 8 10 1 3 5 7 9↙
max=10,pos=5
min=1,pos=6
#include <stdio.h>
int FindMax(int a[], int n, int *pMaxPos); int FindMin(int a[], int n, int *pMinPos);
int main()
{ int a[10], maxValue, maxPos, minValue, minPos, i; printf("Input 10 numbers:");
for (i=0; i<10; i++)
{ scanf("%d", &a[i]); // 输入10个数 }
maxValue = FindMax(a, 10, _________); // 找最大值及其所在下标位置 minValue = FindMin(a, 10, _________); // 找最小值及其所在下标位置 printf("max=%d,pos=%d\n", maxValue, maxPos); printf("min=%d,pos=%d\n", minValue, minPos);
return 0;
} //函数功能:求有n个元素的整型数组a中的最大值及其所在下标位置,函数返回最大值 int FindMax(int a[], int n, int *pMaxPos)
{ int i, max;
max = a[0]; //假设a[0]为最大值 __________; //假设最大值在数组中的下标位置为0 for (i=1; i<n; i++)
{ if (a[i] > max)
{ max = a[i]; __________; //pMaxPos指向最大值数组元素的下标位置 }
}
return max ;
} //函数功能:求有n个元素的整型数组a中的最小值及其所在下标位置,函数返回最小值 int FindMin(int a[], int n, int *pMinPos)
{ int i, min;
min = a[0]; //假设a[0]为最小 __________; //假设最小值在数组中的下标位置为0 for (i=1; i<10; i++)
{ if (a[i] < min)
{ min = a[i];
__________; //pMinPos指向最小值数组元素的下标位置 }
}
return min ;
}
-
A.第13行:maxPos
第14行:minPos
第25行:pMaxPos = 0
第32行:pMaxPos = i
第43行:pMinPos = 0
第50行:pMinPos = i
-
B.第13行:&maxPos
第14行:&minPos
第25行:*pMaxPos = 0
第32行:*pMaxPos = i
第43行:*pMinPos = 0
第50行:*pMinPos = i
1.00/1.00
-
C.第13行:&maxPos
第14行:&minPos
第25行:pMaxPos = 0
第32行:pMaxPos = i
第43行:*pMinPos = 0
第50行:*pMinPos = i
-
D.第13行:maxPos
第14行:minPos
第25行:pMaxPos = 0
第32行:*pMaxPos = i
第43行:pMinPos = 0
第50行:*pMinPos = i
正确答案:B
5单选(1分)
采用梯形法编程实现在积分区间[a,b]内计算下面两个函数的定积分。
按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。
程序运行结果示例:
y1=1.333350
y2=1.151212
#include <stdio.h>
float Fun1(float x);
float Fun2(float x);
float Integral(float (*f)(float), float a, float b);
int main()
{ float y1, y2;
y1 = Integral(Fun1, 0.0, 1.0);
y2 = Integral(Fun2, 0.0, 3.0);
printf("y1=%f\ny2=%f\n", y1, y2);
return 0; } /* 函数功能:计算函数1+x*x的函数值 */
float Fun1(float x)
{ return 1 + x * x;
} /* 函数功能:计算函数x/(1+x*x)的函数值 */
float Fun2(float x)
{ return x / (1 + x * x);
} /* 函数功能:用梯形法计算函数的定积分 */
float Integral(float (*f)(float), float a, float b)
{ float s, h;
int n = 100, i;
s = __________;
h = __________;
for (i=1; i<n; i++)
{ s += __________;
}
return __________;
}
-
A.第31行:(*f)(a+b) / 2
第32行:(b - a) / n
第36行:(*f)(a + i * h)
第38行:s
-
B.第31行:(*f)(a+b) / 2
第32行:(a - b) / n
第36行:*f(a + i * h)
第38行:s
-
C.第31行:((*f)(a) + (*f)(b)) / 2
第32行:(a - b) / n
第36行:*f(a + i * h)
第38行:s * h
-
D.第31行:((*f)(a) + (*f)(b)) / 2
第32行:(b - a) / n
第36行:(*f)(a + i * h)
第38行:s * h
正确答案:D