C语言小练习4

来源:互联网 发布:手机淘宝怎么指纹支付 编辑:程序博客网 时间:2024/05/22 14:47

1、 读程序,写出你的分析步骤,得出结果。

typedef int (*FUNC1)(int);

typedef int (*FUNC2)(int *, int *, int *);  //不懂(==!)

int inc(int a)

{

return (++a);//a自加1后返回

}

int multi(int *a, int *b, int *c)

{

return (*c=*a**b);//c的指向的值为a指向的值乘以b指向的值

void show(FUNC2 fun, int arg1, int *arg2)

{

FUNC1 p = inc;   //不懂(==!)

int temp = p(arg1);//11

fun(&temp, &arg1, arg2);//

printf("%d\n", *arg2);//输出0

}

主程序:int a = 0; show(multi, 10, &a);


2、阅读一下程序,找出错误并更改。

PS:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”

<所有头文件都已包含>

main()   

{   

char*src="hello,world";   

char* dest=NULL;   

int len=sizeof(src);   //应用strlen()函数

dest=(char*)malloc(len);      

char* s=src[len];     //下标从0开始,应为len-1      

while(len--!=0)   

dest++=s--;   //应为*desk       

printf("%s",dest);   //应为&dest

return 0;   //无返回值类型应去掉

}



3、编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefg”

 

//pStr是指向以''结尾的字符串的指针
//steps是要求移动的n

void LoopMove ( char * pStr, int steps )
{
//请填充...

int MAX_LEN=20;
char tmp[MAX_LEN];
int n=strlen(pStr);
int m=steps%n;
memcpy(tmp,&pStr[n-m],m);
memcpy(&pStr[n-m],pStr,n-m);
memcpy(pStr,tmp,m);


}

原创粉丝点击