全国计算机等级考试二级C语言上机编程题参考答案
时间:2025-04-03
时间:2025-04-03
(1)将两个两位的正整数a、b合并形成一个整数放
c中:将a的十位和个位数放在c的千位和十位,的十位和个位数放在
c的百位和个位。例如:若,使c = 4152。 void fun(int a, int b, int *c)
// c是指针 {
*c = a/10*1000+b/10*100+a%10*10+b%10; (7)求3到n之间所有素数的平方根之和,并返回。 double fun(int n) { int i, k; double s = 0; for (i = 3; i <= n; i++) {
}
(2)判断整数x是否是同构数(规定x是不大于100的正整数)。若是,函数返回1,否则返回0。如果某个整数能够在它的平方数的最右边出现,就是“同构数”。例如:5的平方数是25,5是25右边的数,所以5是同构数。 int fun(int x) { return (x < 10 && x*x%10 == x) || (x >= 10 && x*x%100 == x); }
(3)w是大于10的无符号整数,求w后n-1位的数作为函数值返回。例如:若w是234,则返回34。 unsigned fun(unsigned w) {
unsigned t = w, m = 1; while (t)
{ t /= 10; m *= 10; } return w % (m / 10); }
(4)对变量x中的值保留2位小数,并对第3位进行四舍五入(规定x中的值为正数)。 double fun(double x) {
return (int)(x * 100 + 0.5) / 100.0; }
(5)求n以内(不包括n)同时能被3和7整除的所 double fun(int n) {
int i;
double s = 0;
for (i = 1; i < n; i++)
if (i % 3 == 0 && i % 7 == 0)
s += i;
return sqrt(s); //平方根 }
(6)求1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过函数返回这些数的个数。 int fun(int *a, int m) {
int i, j = 0;
for (i = 1; i <= m; i++)
if (i % 7 == 0 || i % 11 == 0) a[j++] = i; // j++模式 return j; }
for (k = 2; k < i; k++) //判断素数 if (i % k == 0) break; //整除中止 if (i == k) s += sqrt(i); //是素数 } return s; }
(8)求出小于或等于lim的所有素数并放在a数组中,该函数返回所求的素数的个数。 int fun(int lim, int a[MAX]) {
int i, k, j = 0;
for (i = 2; i <= lim; i++) {
for (k = 2; k < i; k++) if (i % k == 0) break; if (k == i) a[j++] = i; // j++模式 }
return j; }
(9)将大于整数m且紧靠m的n个素数存入x所指的数组中。
void fun(int m, int n, int x[ ]) {
int i, k, j = 0;
for (i = m + 1; j < n; i++) {
for (k = 2; k < i; k++) if (i % k == 0) break; if (k == i) x[j++] = i; // j++模式 } }
(10)求数组前n个数的小数部分的和,并返回。 double fun(int n, double a[ ]) { int i; double s = 0; for (i = 0; i < n; i++)
s += a[i] - (int)a[i]; //原数-整数 return s; }
(11)把a数组的n个数的平方值,与b数组中逆序的n个数的平方值一一对应相加,存放在c数组中。 void fun(int a[ ], int b[ ], int c[ ], int n) { int i; for (i = 0; i < n; i++) c[i] = a[i] * a[i] + b[n-1-i] * b[n-1-i]; }
(12)计算并返回a数组中n门课程的平均分。 double fun(int *a, int n) {
int i;
double s = 0;
for (i = 0; i < n; i++) s += a[i]; return s / n; }
(13)返回a数组n个学生中低于平均分的人数,并将低于平均分的分数放在b所指的数组中。 int fun(int a[ ], int n, int b[ ]) { int i, j = 0; double s = 0;
for (i = 0; i < n; i++) s += 1.0 * a[i] / n; //平均分 for (i = 0; i < n; i++)
if (a[i] < s) b[j++] = a[i]; // j++模式 return j; }
(14)求N×N的二维数组周边元素的平均值并作为函数值返回给主函数。 double fun(int a[N][N]) {
int i, k;
double s = 0;
for (i = 0; i < N; i++)
for (k = 0; k < N; k++) if (i==0 || k==0 || i==N-1 || k==N-1) s += a[i][k]; return s / (4*N-4); //除以个数 }
(15)求出s数组t个元素中最大元素在数组中的下标,并存放在k所指的存储单元中。 void fun(int *s, int t, int *k) {
int i, m = 0;
for (i = 1; i < t; i++) if (s[i] > s[m]) m = i; *k = m; }
(16)求出数组a[M][N]里每列中的最小元素,并依次放入b[N]数组中。
void fun(int a[M][N], int b[N]) { int i, k, m;
for (k = 0; k < N; k++) //共N列 { m = a[0][k];
for (i = 0; i < M; i++) //每列M行 if (a[i][k] < m) m = a[i][k]; b[k] = m; } }
(17)求Fibonacci数列中大于t的最小的一个数,
果由函数返回。其中数列f(n)的定义为: f(0) = 0,f(1) = 1,f(n) = f(n-1) + f(n-2) int fun(int t) {
int a = 0, b = 1, c = 0;
while (c <= t)
{
c = a + b; a = b; b = c; }
return c; }
(18)根据以下公式求P的值,结果由函数值带回。
float fun(int m, int n) { int i; float x = 1, y = 1, z = 1;
for (i = 1; i <= m; i++) x *= i; // m! for (i = 1; i <= n; i++) y *= i; // n! for (i = 1; i <= m-n; i++) z *= i; // (m-n)! return x / y / z; }
(19)根据以下公式计算s,结果由函数值返回。 double fun(int m) { int i; double s = 0; for (i = 1; i <= m; i++) s += log(i); return sqrt(s); //平方根 }
(20)计算下列级数和,结果由函数值返回。 若x = 0.3,n = 10,则函数值为
1.349859。 double fun(double x, int n) { int i; double s = 1, z = 1, m = 1; for (i = 1; i <= n; i++) s += (z *= x) / (m *= i); return s; }
(21)根据以下公式计算s,结果由函数值返回。
float fun(int n) {
int i, t = 0; // t作分母
float s = 0;
for (i = 1; i <= n; i++) { t += i; s += 1.0 / t; } return s; …… 此处隐藏:9181字,全部文档内容请下载后查看。喜欢就下载吧 ……