5.若定义char *p=“abcd”;则 printf(“%d”,*(p+4));的结果为 。(1级)6.以下函
数用来求出两整数之和,并通过形参将结果传回,请填空。 (1级) void func(int x,int y, ) { *z=x+y; }
7.若有以下定义,则通过指针p引用值为98的数组元素的表达式是 。(1级) int w[10]={23,54,10,33,47,98,72,80,61}, *p=w;
8.int a[10];则a[i]的地址可表示为 或 ,a[i]可表示为 。(0级) 9.在C语言中,对于二维数组a[i][j]的地址可表示为 或 。其中,对于a[i]来说,它代表 ,它是一个 。(0级) 10.一个指针变量P和数组变量a的说明如下: int a[10],*p;
则p=&a[1]+2的涵义是指针p指向数组a的第 个元素。(0级) 11.一个数组,其元素均为指针类型数据,这样得数组叫 。(0级) 12. 16.int *p[4]表示一个 ,int(*p)[4]表示 。(0级) 13.若有以下定义和语句
int w[10]={23,54,10,33,47,98,72,80,61},*p; p=w;
则通过指针p引用值为98的数组元素的表达式是 。(1级) 三、程序填空题
1.以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。请填空。 (1级)
# include
{ int ﹡a, ﹡b, ﹡c, mun, x, y, z;
a=&x; b=&y; c=&z;
printf (〞输入3个整数: 〞); scanf (〞%d%d%d 〞, a, b, c);
printf (〞%d, %d, %d\\n 〞, ﹡a, ﹡b, ﹡c); num=﹡a;
if(﹡a>﹡b) (1) ; if(num>﹡c) (2) ;
printf (〞输出最小整数:%d\\n 〞, num); }
2.下面程序是把从终端读入的一行字符作为字符串放在字符数组中,然后输出。请填空。
(1级)
int i; char s[80], ﹡p;
for ( i=0; i<79; i++ ) { s[i]=getchar( ); if ( s[i]= =ˊ\\nˊ) break; } s[i]= (1) ; p= (2) ; while ( ﹡p ) putchar ( ﹡p++); 3.下面程序是判断输入的字符串是否是“回文”,(顺读和倒读都一样的字符串称“回文”,如level)。请填空。(2级) # include
{ char s[81], ﹡p1, ﹡p2; int n;
gets ( s ); n=strlen ( s ); p1=s; p2= (1) ;
while ( (2) ) { if ( ﹡p1!= ﹡p2 ) break;
else { p1++; (3) ; } }
if (p1 4.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。(2级) Strcen(char a[], char b[]) { int num=0,n=0; while(*(a+num)!= (1) ) num++; while(b[n]){*(a+num)=b[n]; num++; (2) } ;} return(num); } 5.设函数findbig已定义为求3个数中的最大值。以下程序将利用函数指针调用findbig 函数。请填空。(1级) main() { int findbig(int,int,int); int (*f)(),x,y,z,big; f= (1) ; scanf(\big=(*f)(x,y,z); printf(\} 6.以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。(1级) void exchange(int *x, int *y) { int t; t=*y; *y = (1) ; *x = (2) ; } 7.定义compare(char *s1, char *s2)函数,以实现比较两个字符串大小的功能。 (2级) #include void compare(char *s1, char *s2) { while(*s1&&*s2&& (1) ) { s1++; (2) ; } return (3) ; } void main(void) {printf(\} 8.以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。素数是只能被1和本身整除且大于1的自然数。(2级) #include {int i,a[10],*p=a,sum=0; printf(\ for (i=0;i<10;i + + ) scanf(\for (i=0;i<10;i + + ) if (isprime(*(p+ (1) )) == 1) { printf(\ sum += *(a+i); } printf(\ } int isprime(int x) { int i; for (i=2;i<=x/2;i + + ) if (x%i = = 0) return (0); (2) ; } 9.以下函数的功能是删除字符串s中的所有数字字符。请填空。(2级) viod dele(char *s) { int n=0,i; for(i=0;s[i];i++) if( (1) ) s[n++]=s[i]; s[n]= (2) ; } 10. 下面函数的功能是求出形式参数array所指的数组中的最大值和最小值,并把最 大值和最小值分别存入max和min所对应的实参中,请把下面的程序填写完整。(1级) void find (array,n,max.min) int *array,n,*max.*min { int *p,*data_end; data_end=array+n; *max=*min=*array; for(p=array+1;p {if( (1) ) *max= (2) else if ( (3) ) *min= (4) } return; } 四、读程序写结果题 1.以下程序的执行结果是 。(1级) # include { int i, j; int ﹡p,﹡q; i=2; j=10; p=&i; q=&j; ﹡p=10; ﹡q=2; printf(〞i=%d, j=%d\\n 〞, i, j); } 2.以下程序的执行结果是 。(2级) # include { int ﹡﹡p,﹡q; i=10; q=&i; p=&q; printf(〞%d\\n 〞, ﹡﹡p); } 3.以下程序的执行结果是 。(1级) # include { int ﹡p; p=&i; ﹡p=2; p++; ﹡p=5; printf(〞%d,〞, ﹡p); p﹣﹣; printf(〞%d\\n 〞, ﹡p); } } 4.以下程序的执行结果是 。(1级) # include { int ﹡p, i; i=5; p=&i; i=﹡p+10; printf(〞i=%d\\n〞, i); } 5.以下程序的执行结果是 。(1级) # include { char s[ ]=”abcdefg”; char ﹡p; p=s; printf(〞ch=%c\\n〞, ﹡(p+5)); } 6.以下程序的执行结果是 。(1级) # include main ( ) { int a[ ]={2,3,4}; int s, i,﹡p; s=1; p=a; for (i=0; i<3; i++) s﹡=﹡(p+i); printf(〞s=%d\\n〞, s); } 7.以下程序的执行结果是 。 (1级) # include main ( ) { int a[ ]={1,2,3,4,5,6},﹡p; for (p=&a[5];p>=a;p﹣﹣) printf(〞%d〞, ﹡p); printf(〞\\n〞); } 8.以下程序的执行结果是 。(2级) # include { char ch[2][5]={”6934”,”8254”},﹡p[2]; int i, j, s=0; for (i=0; i<2; i++) p[i]=ch[i]; for (i=0; i<2; i++) for (j=0; p[i][j]>?\\0?&& p[i][j]<=?9?; j+=2) s=10﹡s+p[i][j]-?0?; printf(〞%d\\n〞, s); } 9.以下程序的执行结果是 。(2级) # include main ( ) { char ﹡p1,﹡p2, str[20]=”xyz”; p1=”abcd”; p2=”ABCD”; strcpy (str+1, strcat (p1+1,p2+1)); printf(〞%s〞, str); } 10.以下程序的执行结果是 。(2级) #include void main(void) {char *s, *s1 = “here is”, *s2 = “key”; s = s1; while (*s1!=?\\0?) s1++; while (*s1++=*s2++); s2 = s; while (*s2!=?\\0?) s2++; printf(“%d\\n”, s2-s); } 11.以下程序的执行结果是 。(2级) #include {static int a[] = {1, 3, 5, 7}; int *p[3] = {a+2, a+1, a}; int **q = p; printf(“%d\\n”, *(p[0]+1) + **(q+2)); } 12.以下程序的执行结果是 。(2级) #include fut(int **s, int p[2][3]) { **s=p[1][1]; } void main(void) { int a[2][3] = {1,3,5,7,9,11}, *p; p = (int *) malloc(sizeof(int)); fut(&p,a); printf(\} 13.以下程序的执行结果是 。(1级) #include { static char a[]=\char *p1,*p2; int k; p1=a; p2=b; for(k=0;k<=7;k++) if (*(p1+k)==*(p2+k)) printf(\ printf(\ }