《C语言蓝皮书》操作题参考答案
第1套 操作题参考答案
一、程序填空题
(1) 3.0或(double)3 (2) > (3) (t + 1)
二、程序修改题
(1) double fun(int n) (2) s = s + (double)a / b;
三、程序设计题
int fun(int a[ ][M])
{
int max = a[0][0], i, k;
for (i = 0; i < 2; i++)
for (k = 0; k < M; k++)
if (a[i][k] > max) max = a[i][k];
return max;
}
第2套 操作题参考答案
一、程序填空题
(1) 0 (2) n (3) (t * t)
二、程序修改题
(1) for (i = 0; str[i]; i++) (2) if (substr[k+1] == '\0')
三、程序设计题
double fun(double eps)
{
double s = 1.0, s1 = 1.0;
int n = 1;
while (s1 >= eps) /*当某项大于精度要求时循环*/
{
s1= s1 * n / (2 * n + 1); /*求多项式的每一项*/
s = s + s1; /*求和*/
n++;
}
return 2 * s;
}
第3套 操作题参考答案
一、程序填空题
(1) s[i] (2) '9' (3) *t = n
二、程序修改题
(1) t = *x; *x = y; (2) return (t); 或 return t;
三、程序设计题
void fun(int *a, int *n)
{
int i, j = 0;
for (i = 1; i <= 1000; i++)
if ((i % 7 == 0 || i % 11 == 0) && i % 77 != 0)
a[j++] = i; /* j++模式*/
*n = j;
}
第4套 操作题参考答案
一、程序填空题
(1) 1 (2) j++ (3) j
二、程序修改题
(1) t = a; a = b; b = t; (2) return (b); 或 return b;
三、程序设计题
void fun(char *a)
{
int i, j = 0;
for (i = 0; a[i]; i++)
if (a[i] != '*') a[j++] = a[i]; /* j++模式*/
a[j] = 0;
}
第5套 操作题参考答案
一、程序填空题
(1) 0 (2) 10*x (3) /10
二、程序修改题
(1) *t = 0; (2) if (d % 2 != 0) 或 if (d % 2 == 1)
三、程序设计题
void fun(char p1[ ], char p2[ ])
{
int i, j = strlen(p1);
for (i = 0; p2[i]; i++)
p1[j++] = p2[i]; /* j++模式*/
p1[j] = 0;
}
第6套 操作题参考答案
一、程序填空题
(1) a[i] (2) a[j] (3) a[j]
二、程序修改题
(1) 去掉分号 (2) case 1: case 2: return 1;
三、程序设计题
void fun(STREC *a)
{
int i;
double s = 0;
for (i = 0; i < N; i++)
s += a->s[i]; /*求成绩的总和*/
a->ave = s / N; /*求平均分*/
}
第7套 操作题参考答案
一、程序填空题
(1) char (2) ch <= '9' (3) '0'
二、程序修改题
(1) b[k] = *p; (2) b[k] = ' '; k++;
三、程序设计题
double fun(STREC *h)
{
double sum = 0;
c语言二维数组转置 STREC *p = h->next;
while (p != NULL)
{
sum += p->s;
p = p->next;
}
return sum / N;
}
第8套 操作题参考答案
一、程序填空题
(1) M (2) < (3) k
二、程序修改题
(1) if ((tt[i] >= 'a') && (tt[i] <= 'z')) (2) tt[i] -= 32;
三、程序设计题
void fun(int m, int *k, int xx[ ])
{ /*出大于1小于整数m的非素数*/
int i, v, j = 0;
for (i = 2; i < m; i++)
{
for (v = 2; v < i; v++)
if (i % v == 0) break;
if (v == i) xx[j++] = i; /* j++模式*/
}
*k = j; /*返回非素数的个数*/
}
第9套 操作题参考答案
一、程序填空题
(1) j++ 或 j += 1或 ++j 或 j = j + 1
(2) s[i] = t1[i] (3) j
二、程序修改题
(1) for (j = i + 1; j < 6; j++) (2) *(pstr + i) = *(pstr + j);
三、程序设计题
int fun(char *ss, char c)
{ /*求出ss所指字符串中指定字符的个数*/
int i, n = 0;
for (i = 0; ss[i]; i++)
if (ss[i] == c) n++;
return n;
}
第10套 操作题参考答案
一、程序填空题
(1) x (2) p (3) s
二、程序修改题
(1) long k = 1; (2) num /= 10;
三、程序设计题
float fun(float *a, int n)
{
int i;
float s = 0;
for (i = 0; i < n; i++) /*求分数的总和*/
s += a[i];
return s / n; /*返回平均值*/
}
第11套 操作题参考答案
一、程序填空题
(1) 1 (2) i (3) a[p+i] 或 *(a + p + i)
二、程序修改题
(1) float k; (2) if (*a < *c)
三、程序设计题
int fun(STREC *a, STREC *b)
{
int i, j = 0, max = a[0].s;
for (i = 1; i < N; i++) /*出最大值*/
if (a[i].s > max) max = a[i].s;
for (i = 0; i < N; i++)
if (a[i].s == max) b[j++] = a[i]; /* j++模式*/
return j; /*返回最高成绩的学生人数*/
}
第12套 操作题参考答案
一、程序填空题
(1) N (2) k (3) ss[i]
二、程序修改题
(1) int k = 0; (2) while (*p || *q)
三、程序设计题
void fun(char *a)
{
int i = 0, j;
while (a[i] == '*') i++; /*保留前导*号*/
for (j = i; a[i]; i++)
if (a[i] != '*') a[j++] = a[i]; /* j++模式*/
a[j] = 0;
}
第13套 操作题参考答案
一、程序填空题
(1) 1 (2) s[k] 或 *(s + k) (3) c
二、程序修改题
(1) long s = 0, t = 0; (2) t = t / 10;
三、程序设计题
void fun(char *tt, int pp[ ])
{
int i;
for (i = 0; i < 26; i++) pp[i] = 0; /*计数器置0*/
for (i = 0; tt[i]; i++)
if (tt[i] >= 'a' && tt[i] <= 'z')
pp[tt[i] - 'a']++;
}
第14套 操作题参考答案
一、程序填空题
(1) N (2) i (3) -1
二、程序修改题
(1) a2 = k / 10; (2) return i;
三、程序设计题
void fun(char *a)
{
int i, k = 0;
for (i = 0; a[i]; i++)
if (a[i] == '*') k++; /*统计*号个数*/
else k = 0;
a[i-k] = 0; /*添加空字符,截断串*/
}
第15套 操作题参考答案
一、程序填空题
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论