【笔试题】WEEK06

作业一

分析程序
typedef int (*FUNC1)(int);
typedef int (*FUNC2)(int *, int *, int *);
int inc(int a)
{
	return (++a);
}
int multi(int *a, int *b, int *c)
{
	return (*c=*a**b);
}
void show(FUNC2 fun, int arg1, int *arg2)
{
	FUNC1 p = inc;
	int temp = p(arg1);
	fun(&temp, &arg1, arg2);
	printf("%d\n", *arg2);
}int a = 0; show(multi, 10, &a);
主程序:

分析如下:
1.前两行定义两个指向函数指针,并用typedef改名为func1和func2,参数分别为一个int类型,和三个int指针类型
2.下面定义了两个函数    一个是让参数自增1,另一个是让指针c指向的值等于aheb的值得乘积
3.show函数是传递了一个函数指针和两个int类型指针,函数中中定义了一个int类型的变量通过func1调用inc函数来获取值   此题中temp的值为11
4.通过func2调用函数,使得arg2的值被赋值为temp和arg1的乘积
5.执行过程为  temp 先被赋值为 11  arg1 为10  —----->arg2 = 10*11 = 110
结果为110

作业二

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/**
3、编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefg”

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

void LoopMove ( char * pStr, int steps )
{
 //请填充...
}
*/
void LoopMove(char*,int);
int main()
{
    int n;
    scanf("%d",&n);
    LoopMove("abcdefghi",n);
    return 0;
}

void LoopMove(char *pstr,int steps) {
    int len = strlen(pstr);
    int i;
    for(i = len - steps;i <=len - 1;i++) {
        printf("%c",pstr[i]);
    }
    for(i = 0;i < len - steps;i ++) {
        printf("%c",pstr[i]);
    }
}

作业三

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
2、阅读一下程序,找出错误并更改。PS:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”*/

int main()
{
    char *src = "hello,world";
    char *dest = NULL;
    int len = strlen(src);
    dest = (char*)malloc(len);
    char *s = &src[len - 1];
    while(len--!=0) {
        dest = s--;
        printf("%c",*dest);
    }
    return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值