int a[10] = {0,1,2,3,4,5,6,7,8,9}, *p = a+3; printf(“%d”, *++p); return 0; }
A.3 B.4 C.a[4]的地址 D.非法 5.对于下列程序,正确的是 void f(int *p) {
*p = 5; }
int main(void)
{
int a, *p; a = 10; p = &a; f(p);
printf(“%d”, (*p)++); return 0;
第75/106页
}
A.5 B.6 C.10 D.11 二、填空题
1. 下列函数在一维数组a中将x插入到下标为i(i>=0)的元素前。如果i>=元素的个数,则x插入到末尾。原有的元素个数存放在指针n所指向的变量中,插入后元素个数加1。请填空。
void insert(double a[ ], int *n, double x, int i) {
int j;
if __ (i<*n)__
for (j=*n-1;__ j>=i_; j--)
__ a[j+1]_ = a[j]; else i = *n;
a[i]=___x___; (*n)++; }
2.下列程序先消除输入字符串的前后空格,再判断是否是“回文”(即字符串正读和倒读都是一样),若是则输出YES,否则输出NO。请填空。
#include
#include
char s[80], ch, *p, *q; int i, j, n; gets(s);
p = ___s___;
while ( *p == ‘ ‘) ___p++___; n = strlen(s); q = ___s+n-1__;
while ( *q == ‘ ‘) ____q--____; while ( __p _q--____; } if ( p printf(“NO\\n”); else printf(“YES\\n”); return 0; } 3. 下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在main()函数的 第76/106页 max和min变量中。请填空。 void find(int *, int, int *, int *); int main(void) { int max, min, a[]={5,3,7,9,2,0,4,1,6,8}; printf(“%d,%d\\n”, max, min); return 0; } void find(int *a, int n, int *max, int *min) { int i; *max=*min=0; for (i = 1; i < n; i++) { } } 4. 写出下列程序的执行结果 0 0 1 2 2 4 0 0 2 3 4 6 #include int main(void) { int a[10], b[10], *pa, *pb, i; pa = a; pb = b; for( i=0; i<3; i++, pa++, pb++) { *pa = i; *pb = 2*i; printf(“%d\\t%d\\n”, *pa, *pb); } pa = &a[0]; pb = &b[0]; for ( i=0; i<3; i++) { *pa = *pa + i; *pb = *pb + i; printf(“%d\\t%d\\n”, *pa++, *pb++); 第77/106页 } return 0; } 三、程序设计题 1. 从键盘输入10个整数,然后根据提示选择输入’A’或者’D’,如果输入为’A’,将这10个数按从小到大的顺序输出;如果输入为’D’,则按从大到小的顺序输出。 解答: #include void sortAsc(int a[],int n); void sortDesc(int a[],int n); int main(void) { int i, n, a[10]; char c; n=10; printf(\for(i = 0; i < n; i++) scanf(\ getchar(); printf(\c=getchar(); if (c=='A') sortAsc(a, n); else if (c=='D') sortDesc(a,n); else { printf(\exit(1); } printf(\for(i = 0; i < n; i++) printf(\printf(\} void sortAsc(int a[], int n) { int index, j, k, temp; for(k = 0; k < n-1; k++){ index = k; for(j = k + 1; j < n; j++) if(a[j] < a[index]) index = j; temp = a[index]; a[index] = a[k]; a[k] = temp; 第78/106页 } } void sortDesc(int a[], int n) { int index, j, k, temp; for(k = 0; k < n-1; k++){ index = k; for(j = k + 1; j < n; j++) if(a[j] > a[index]) index = j; temp = a[index]; a[index] = a[k]; a[k] = temp; } } 2. 输入10个整数存入数组a,再输入一个整数x,在数组a中查找x,若找到则输出相应的下标,否则显示“Not found”。要求定义和调用函数 search(int list[ ],int n,int x),在数组list中查找元素x,若找到则返回相应下标,否则返回-1,参数n代表数组list中元素的数量。 解答: #include int main(void) { int i, n, res, x; int a[10]; int search(int list[], int n, int x); n=10; for(i = 0; i < n; i++) scanf(\scanf(\ res = search(a, n, x); if(res != -1) printf(\else printf(\} int search(int list[], int n, int x) { int i;