if(!isspace( ② ))c[t++]=s[i]; c[t]=‘\\0’; strcpy(s,c); }
① A) s[i] B) !s[i] C) s[i]=‘\\0’ D) s[i]==‘\\0’ ② A) s+i B) *c[i] C) *(s+i)=‘\\0’ D) *(s+i)
18. 以下conj函数的功能是将两个字符串s和t连接起来。
char *conj(char *s,char *t) { char *p=s;
while(*s) ① ; while(*t)
{*s= ② ;s++;t++;} *s=‘\\0’; ③ ; }
① A) s-- B) s++ C) s D) *s ② A) *t B) t C) t-- D) *t++ ③ A) return s B) return t C) return p D) return p-t
19. 下列程序的输出结果是 。
#include <> main()
{int **k,*a,b=100;a=&b; k=&a;printf(“%d\\n”,**k);}
A) 运行出错 B) 100 C) a的地址 D) b的地址 20. 下列程序的输出结果是 。
#include <> fun(int *a,int *b)
{int *w;*a=*a+*a;*w=*a; *a=*b; *b=*w;} main()
{int x=9,y=5,*px=&x,*py=&y;fun(px,py);printf(“%d, %d\\n”,x,y);} A)出错 B) 18, 5 C) 5, 9 D) 5, 18 21. 若定义了以下函数:
void f(……) {……
p=(double *)malloc(10*sizeof(double)); …… }
p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是 。
A) double *p 三.编程题
1. 编写函数,对传递进来的两个整型量计算它们的和与积之后,通过参数返回。
#include <>
void compute(int m, int n, int *sum, int *p); void compute(int m, int n, int *sum, int *p) { *sum=m+n; *p=m*n; }
void main()
{ int x,y,sum,product;
printf(\ scanf(\
compute(x,y,&sum,&product);
printf(\}
2. 编写一个程序,将用户输入的字符串中的所有数字提取出来。
#include <> #include <> void main()
{ char string[81],digit[81]; char *ps; int i=0;
printf(\ gets(string); ps=string;
while(*ps!='\\0')
{if(*ps>='0' && *ps<='9') { digit[i]=*ps; i++; }
ps++; }
digit[i]='\\0';
printf(\ digit=%s\\n\}
B) float **p C) double **p D) float *p
3. 编写函数实现,计算字符串的串长。
#include <> #include <>
int StringLength(char *s); int StringLength(char *s) { int k;
for(k=0;*s++;k++); return k; }
void main()
{ char string[81];
printf(\ gets(string);
printf(\}
4. 编写函数实现,将一个字符串中的字母全部转换为大写。
#include <> #include <>
char *Upper(char *s); char *Upper(char *s) { char *ps; ps=s; while(*ps)
{if(*ps>='a' && *ps<='z') *ps=*ps-32; ps++; }
return s; }
void main()
{ char string[81];
printf(\ gets(string);
printf(\
printf(\}
5. 编写函数实现,计算一个字符在一个字符串中出现的次数。
#include <> #include <>
int Occur(char *s, char c); int Occur(char *s, char c) { int k=0; while(*s) { if(*s==c) k++; s++;
}
return k; }
void main()
{ char string[81],c;
printf(\ gets(string);
printf(\ c=getchar(); printf(\%c occurs string %s\\n\}
#include <> #include <>
int IsSubstring(char *str,char *substr) { int i,j,k,num=0;
for(i=0;str[i]!='\\0' && num==0 ;i++)
{ for(j=i ,k=0;substr[k]==str[j];k++,j++) if(substr[ k+1 ]=='\\0') { num=1; break; } }
return num; }
void main()
{ char string[81],sub[81]; printf(\ gets(string);
printf(\ gets(sub);
printf(\ if(!IsSubstring(string,sub)) printf(\
printf(\}
%d times in
6. 编写函数实现,判断一个子字符串是否在某个给定的字符串中出现。
7. 有n个人围成一圈,顺序排号。由用户从键盘输入报数的起始位置,从该人开始报数(计数从0开始),凡报数为3的倍数出圈。问最后剩下的是几号 见导学例
8. 由一个整型二维数组,大小为m×n,要求找出其中最大值所在的行和列,以及该最大值。请编一个函数max,数组元素在main函数中输入,结果在函数max中输出。