计算机c语言 三组数比较大小,2015年计算机二级考试C语言模拟试题(四)附答案(3)...

本文介绍了C语言中关于函数的使用,包括参数传递、返回值以及函数指针的应用。此外,还展示了如何进行字符串操作,如字符串交换、累加字符串元素以及查找和插入有序字符数组。同时,文章涵盖了指针在数组、交换变量及调整数值顺序中的应用。通过对这些基础知识的深入理解和实践,可以提升C语言编程能力。

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);

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值