}
3.以下程序的输出结果是 4 。 fun1(int a, int b) { int c;
a += a; b += b; c = fun2(a, b); return c * c;
}
fun2(int a, int b)
{ int c;
c = a * b % 3; return c;
}
void main()
{ int x = 11, y = 19;
printf(“%d\\n”, fun1(x, y));
}
4.下面pi函数的功能是,根据以下公式返回满足精度eps要求的π的值。请填空。
double pi ( double eps) { double s = 0.0, t = 1.0;
int n;
for( n=1 ; t > eps); n++) { s += t;
t = n * t / (2* n +1); }
return (2.0 * s ); }
5.以下函数用以求x的y次方。请填空。 double fun( double ,x double y) { int i; double z=1.0;
for( i = 1; i <=y ; i++) z = z*x ; return z;
} n6.以下程序的功能是计算 s?。请填空。k!k?0 long f(int n) { int i; long s;
s = 1L ; for(i = 1; i <= n; i++) s = s*i ; return s;
}
?31
void main()
{ long s; int k, n;
scanf(“%d”, &n); s = 0 ; for(k = 0; k <= n; k++) s = s + f(k) ; printf(“%d\\n”, s);
}
7.以下程序的输出结果是 7 。
fun( int x ) { int p;
if( x == 0 || x ==1)
return (3);
p = x - fun(x - 2); return p; }
void main()
{ printf(“%d\\n”, fun(9) ); }
8.以下程序的输出结果是 2,5,1,2,3,-2 。
void main()
{ int a = 3, b = 2, c = 1; c -= ++b; b *= a + c;
{ int b = 5, c = 12; c /= b * 2;
a -= c;
printf(“%d, %d, %d, ”, a, b, c ); a += --c; }
printf(“%d, %d, %d\\n”, a, b, c); }
9.以下程序的输出结果是 2 4 6 。
void fun( )
{ static int a = 0;
a += 2; printf(“%d “, a); }
void main() { int i;
for( i = 1; i < 4; i++)
fun(); printf(“\\n” ); }
10.下列程序的执行结果是 8 4 。
32
int d = 1; fun(int p) { int d = 5; d += p++;
pritnf(“%d “, d); }
void main() { int a = 3; fun(a); d += a++;
printf(“%d\\n”, d); }
11.若输入3个整数3 2 1, 则以下程序的输出结果是 2721 。 void sub( int n, int uu[]) { int t;
t = uu[n --]; t += 3 * uu[n]; n ++;
if( t >= 10)
{ uu[n++] = t / 10; uu[n] = t % 10; }
else uu[n] = t;
}
void main()
{ int i, n, aa[10] = {0};
scanf(“%d%d%d”, &n, &aa[0], &aa[1]);
for( i = 1; i < n; i++) sub(i, aa);
for( i = 0; i <= n; i++) printf(“%d”, aa[i]);
printf(“\\n”);
}
12. 以下findmax返回s中最大元素的下标,数组中元素的个数由t传入。请填空。
fndmax( int s[], int t) { int k, p;
for(p = 0, k = p; p < t; p++) if(s[p] > s[k] )
k=p ; return k ; }
13. 以下程序的输出结果是 itis 。
#include “string.h” #include “ctype.h”
33
void fun(char str[]) { int i, j;
for(i = 0, j = 0; str[i]; i++) if(isalpha(str[i]) )
str[j ++] = str[i];
str[j] = ‘\\0’; }
void main()
{ char ss[80] = “it is!”; fun(ss);
printf(“%s\\n”, ss); }
14. 以下fun函数的功能是将一个字符串的内容逆置。请填空。
#include “string.h” void fun( char str[]) { int i, j, k;
for(i = 0, j = strlen(str)-1 ; i < j; i++, j-- ) { k = str[i] ;
str[i] = str[j]; str[j] = k; }
}
第八章 善于利用指针
A1. 下面程序的输出结果是
void main() {
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf(\\n\(p+2)); }
A)3 B)4 C)1 D)2 B2.以下程序的输出结果是 void main()
{ int a[] = {1, 2, 3, 4}, i, x = 0;
for(i = 0; i < 4; i++)
{ sub(a, &x); printf(“%d ”, x); } pritnf(“\\n”);
}
sub(int *s, int *y) { static int t = 3;
*y = s[t]; t--;
}
A)1 2 3 4 B)4 3 2 1 C)0 0 0 0 D)4 4 4 4 D3. 若已有定义:
34
int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p = a, i;
其中0≤i≤9,则对a数组元素的引用不正确的是
A)a[p - a] B)*(&a[i]) C)p[i] D)*(*(a+i)) A4. 以下程序的输出结果是
void main()
{ int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p = a; printf(“%d\\n”, *(p+2) ); }
A)3 B)4 C)1 D)2 C5.以下程序的输出结果是
void main()
{ int a[] = {2, 4, 6, 8, 10}, y = 1, x, *p; p = &a[1];
for(x = 0; x < 3; x++)
y += *(p + x); printf(“%d\\n”, y); }
A)17 B)18 C)19 D)20 A6.以下程序的输出结果是
void main()
{ int a[] = {2, 4, 6, 8}, *p = a, i; for(i = 0; i <4; i++)
a[i] = *p++; printf(“%d\\n”, a[2]); }
A)6 B)8 C)4 D)2 C7.以下程序的输出结果是
fun( int *s, int n1, int n2) { int i, j, t; i = n1; j = n2; wile(i < j)
{ t = *(s + i); *(s + i) = *(s + j); *(s+ j) = t; i ++; j --; } }
void main()
{ int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, i, *p = a; fun(p, 0, 3); fun(p, 4, 9); fun(p, 0, 9)
for(i = 0; i < 10; i++)
printf(“%d”, *(a+i)); }
A)0987654321 B)4321098765 C)5678901234 D35
)0987651234