11.下面函数用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。
int add(int x,int y, int * z)
{ *z =x+y;}
12.以下fun函数的功能是:累加数组元素中的值。n为数组中元素的个数。累加的和值放入x所指的存储单元中。请填空。
fun(int b[ ],int n,int *x)
{int k,r=0;
for(k=0;k
*x =r;
}
13.以下函数的功能是:把两个整型指针变量所指的存储单元中的内容进行交换。请填空。
exchange(int *x,int *y)
{int t;
t=*y; *y= *x ; *x= t ;
}
14.以下程序的输出是 49 。
main()
{int a[10]={19,23,44,17,37,28,49,36},*p;
p=a;
printf(“%d\n”,(p+=3)[3]);
}
15.下面程序的输出结果是 024 。
#define MAX 3
int a[MAX];
main()
{fun1();fun2(a);printf(“\n”);}
fun1()
{int k,t=0;
for(k=0;k
}
fun2(int b[])
{int k;
for(k=0;k
}
16.下面程序的输出结果是 ABCDCD 。
char b[]=“ABCD”;
main()
{char *chp;
for(chp=b; *chp; chp+=2) printf(“%s”, chp);
printf(“\n”);
}
17.以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。
#include
main()
{char str[81],*sptr;
int i;
for(i=0;i<80;i++)
{str[i]=getchar();
if(str[i]==‘\n’) break;
}
str[i]= '\0' ;
sptr=str;
while(*sptr) putchar( *sptr++ );
}
18.fun1函数的调用语句为:fun1(&a,&b,&C);它将三个整数按由大到小的顺序调整后依次放入a、b、c三个变量中,a中放最大数。请填空。
void fun2(int *x, int *y)
{int t;
t=*x; *x=*y; *y=t;
}
void fun1(int *pa,int *pb,int *pC)
{if(*pc>*pB) fun2( pc,pb );
if(*pa
if(*pa
}
19.以下函数用来在w数组中插入数x,w数组中的数已按由小到大的顺序存放,n所指存储单元中存放数组中数据的个数,x插入后数组中的数仍有序。请填空。
void fun(char *w,char x,int *n)
{int i,p;
p=0;
w[*n]=x;
while(x>w[p]) p++ ;
for(i=*n;i>p;i--) w[i]= w[i-1] ;
w[p]=x;
++*n;
}
20.阅读程序:
main()
{char str1[]=“how do you do”, str2[10];
char *p1=str1, *p2=str2;
scanf(“%s”, p2);
printf(“%s ”, p2);
printf(“%s\n”, p1);
}运行上面的程序,输入字符串HOW DO YOU DO,则程序的输出结果是 HOW how do you do 。
21.下面程序的输出结果是 SO 。
main()
{char *p[]={“BOOL”, “OPK”, “H”, “SP”};
int i;
for(i=3;i>=0;i--,i--) printf(“%c”,*p[i]);
printf(“\n”);
}
22.下面程序的输出结果是 17 。
funa(int a,int B)
{return a+b;}
funb(int a,int B)
{return a-b;}
sub(int(*t)(),int x,int y)
{return((*t)(x,y));}
main()
{int x,(*p)();
p=funa;
x=sub(p,9,3);
x+=sub(funb,8,3);
printf(“%d\n”, x);
}
23.下面程序的输出结果是 XYZA 。
#include
void fun(char *a1,char *a2,int n)
{int k;
for(k=0;k
a2[k]=(a1[k]-‘A’-3+26)%26+‘A’;
a2[n]=‘\0’;
}
main()
{char s1[5]=“ABCD”, s2[5];
fun (s1, s2, 4);
puts(s2);
}
24.下面程序的输出结果是 7 1 。
void as(int x,int y,int *cp,int *dp)
{*cp=x+y;
*dp=x-y;
}
main()
{int a=4,b=3,c,d;
as(a,b,&c,&D);
printf(“%d %d\n”,c,D);
}
25.下面程序的输出结果是 eybdooG 。
#include
main()
{static char b[]=“Goodbye”;
char *chp=&b[7];
while(--chp>=&b[0]) putchar(*chp);
putchar(‘\n’);
}
26.若输入:this test terminal,以下程序的输出结果为:terminal test this。填空补充以下程序。
#include
#define MAXLINE 20
main()
{int i;
char *pstr[3],str[3][MAXLINE];
for(i=0;i<3;i++) pstr[i]=str[i];
for(i=0;i<3;i++) scanf(“%s”,pstr[i]);
sort(pstr);
for(i=0;i<3;i++) printf(“%s\n”,pstr[i]);
}
sort( char *pstr [3] )
{int i,j;
char *p;
for(i=0;i<3;i++)
{for(j=i+1;j<3;j++)
{if(strcmp(*(pstr+i),*(pstr+j))>0)
{p=*(pstr+i);
*(pstr+i)= *(patr+j) ;
*(pstr+j)=p;
}
}
}
}
27.以下程序利用指针法将两个数按从小到大的顺序输出来。
main()
{int a,b, *p1,*p2 , p ;
printf(“input a, b:”);
scanf(“%d%d”, &a,&B);
p1=&a ;
p2=&b;
if(a
{p=p1; p1=p2; p2=p;}
printf(“a=%d b=%d\n”,a,B);
printf(“max=%d min=%d\n”, *p1,*p2 );
}
28.以下程序的输出结果是 8 。
fun(int n,int *s)
{int f1,f2;
if(n==1||n==2) *s=1;
else
{fun(n-1,&f1);
fun(n-2,&f2);
*s=f1+f2;
}
}
main()
{int x;
fun(6,&x);
printf(“%d\n”,x);
}
29.下面的程序通过函数average计算数组中各元素的平均值,请填空。
float average(int *pa,int n)
{int i;
float avg=0.0;
for(i=0;i
avg=avg+ *(pa+i) ;
avg= avg/n ;
return avg;
}
main()
{int i,a[5]={2,4,6,8,10};
float mean;
mean=average(a,5);
printf(“mean=%f\n”,mean);
}
30.以下程序将字符串s1中的所有与字符串str1相同的子串替换成字符串str2,并将替换后的新串存于字符数组s2中。
#include
void replace(char *s1,char *s2,char *str1,char *str2)
{char *t0,*t1,*t2;
while( *s1 )
{for(t0=s1,t1=str1;(*t1!=‘\0’&& *t0=*t1 );t0++,t1++);
if(*t1!=‘\0’) *s2++ = *s1++ ;
else
{for(t1=str2;*t1!=‘\0’;) *s2++ = *t1++ ;
s1=t0 ;
}
}
*s2=‘\0’;
}
main()
{static char s1[]=“abcef ababcd abab.”, s2[25];
replace (s1, s2, “abc”, “XYZ”);
printf(“%s\n”, s2);
}
31.以下语句的输出结果是 hELLO! 。
char s[80],*sp=“HELLO!”;
sp=strcpy (s, sp); s[0]=‘h’; puts(s);
本文介绍了C语言中关于函数的使用,包括参数传递、返回值以及函数指针的应用。此外,还展示了如何进行字符串操作,如字符串交换、累加字符串元素以及查找和插入有序字符数组。同时,文章涵盖了指针在数组、交换变量及调整数值顺序中的应用。通过对这些基础知识的深入理解和实践,可以提升C语言编程能力。
302

被折叠的 条评论
为什么被折叠?



