c语言-华为C语言面试题目,输出内容的值

问题描述

华为C语言面试题目,输出内容的值

 11、写出下列代码的输出内容

  #include
  int inc(int a)
  {
   return(++a);
  }
  int multi(int*a,int*b,int*c)
  {
   return(*c=*a**b);
  }
  typedef int(FUNC1)(int in);
  typedef int(FUNC2) (int*,int*,int*);

  void show(FUNC2 fun,int arg1, int*arg2)
  {
   INCp=&inc;
   int temp =p(arg1);
   fun(&temp,&arg1, arg2);
   printf("%dn",*arg2);
  }

  main()
  {
   int a;
   show(multi,10,&a);
   return 0;
  }

  答:110

 INCp=&inc; ?
 int temp =p(arg1); ?

怎么弄的 问号是什么意思?

解决方案

按照你的答案倒推,程序应该是这样的

 int inc(int a)
{
return(++a);
}
int multi(int*a,int*b,int*c)
{
return(*c=*a**b);
}
typedef int(FUNC1)(int in);
typedef int(FUNC2)(int*,int*,int*);
typedef int (*INC)(int);
void show(FUNC2 fun,int arg1, int*arg2)
{
INC p=&inc;
int temp =p(arg1);
fun(&temp,&arg1, arg2);
printf("%dn",*arg2);
}
int main()
{
int a;
show(multi,10,&a);
return 0;
}

解决方案二:

根据你的代码,INC p中间少空格,p是一个函数指针,但是INC没有定义,这代码没法编译。
temp是调用这个函数指针,也就是调用inc函数。

解决方案三:

printf("%dn",*arg2);
->
printf("%d",*arg2);
这也是一个错误

解决方案四:

这个题目涉及的知识点就是C语言的函数指针。

解决方案五:

typedef 相当于定义了一个函数类型 可以给这里类型赋值 也就是函数指针的意思

解决方案六:

参照二楼的说法函数应该是那样的

int inc(int a) //函数一
{
return(++a);
}
int multi(int*a,int*b,int*c) //函数二

{
return(*c=*a**b);
}
typedef int(FUNC1)(int in);

typedef int(FUNC2)(int*,int*,int*);
typedef int (*INC)(int); //定义函数指针

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

INC p=&inc; //传递函数一
int temp =p(arg1); //得到函数一的返回值
fun(&temp,&arg1, arg2); //得到函数2的返回值

printf("%dn",*arg2);

}

int main()
{
int a;
show(multi,10,&a);
return 0;
}

解决方案七:

搞定函数指针的定义和使用先。

时间: 2024-10-19 10:20:03

c语言-华为C语言面试题目,输出内容的值的相关文章

Java语言基础相关的面试题目

常见的Java开发面试题目 1.CGLIB 和 JDK生成动态代理类的区别.JDK动态代理只能对实现了接口的类生成代理,而不能针对类 CGLIB是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法 2.HashMap.HashTable和concurrentHashMap的区别,HashMap的底层实现.1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样.2.HashTable不允许nu

c语言编程-java题目和C语言题目,面试题目,急用

问题描述 java题目和C语言题目,面试题目,急用 竞赛编程题目"> 解决方案 c语言面试题目C语言面试题目关于C语言的题目 解决方案二: 这么多,,,还是找同学助攻吧 解决方案三: 这么多,,,还是找同学助攻吧 解决方案四: 都看不清,兄弟,你这都不会,到时工作也没法进行啊 解决方案五: 参考一下这个去找找 http://www.doc88.com/p-3601057756733.html 解决方案六: 2015Java软件开发工程师面试题宝典 几百道常用题及答案 http://www.

Linux下C编程:华为C语言面试题之extern

华为C语言面试题 如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变量写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错                       3. 此外,extern修饰符可用于指示C或者C++函数的调用规范.比如在C++中调用C库函数,就需要在C++程序中用extern "

二维数组-新手, C语言寻找三维数组正切面最大和的值,测试对但WA, 有题目和代码, 望大神指点

问题描述 新手, C语言寻找三维数组正切面最大和的值,测试对但WA, 有题目和代码, 望大神指点 Description 给出一个长方体,求该长方体每个正切面上的元素之和的最大值. 正切面的意思就是与长方体某一面平行的切面.如果把长方体看作是一个三维数组,那么每个切面就是一个二维数组. Input 第一行是3个正整数a.b.c,分别表示长方体的长.宽.高.0 < a, b, c ≤ 60 接下来是 c 块数据,每一块数据有a行.每行b个整数. Output 输出切面元素和的最大值. Sample

Linux下C编程:华为C语言面试题之Variable

华为C语言面试题: 程序的局部变量存在于(堆栈)中,全局变量存 在于(静态区 )中,动态申请数据存在于( 堆)中. 一点小总结: 1.关于堆栈,印象最深的就是在做uboot移植,在你准备进入c代码时 ,你必须给c代码一个良好的运行环境,其中重要的一项就是设置堆栈. 2.关于静态内存分配和动态内存分配的区别及过程 1) 静态内存 分配是在编译时完成的,不需要占用CPU资源:动态分配内存是在运行时完成的 ,动态内存的分配与释放需要占用CPU资源: 2) 静态内存分配是在栈上 分配的,动态内存是堆上分

linux c语言 使用system echo把变量输出到文件中

问题描述 linux c语言 使用system echo把变量输出到文件中 #include #include #include int main(void) { char *url = "asdfasdfasdf"; system("echo $url > /home/ylk/Desktop/1.txt"); printf(" url=%s ", url); return 0; } 结果不能把字符串写到1.txt中,怎么修改可以写进去呢?

c语言-数据结构C语言版10道实习题目求解答!!

问题描述 数据结构C语言版10道实习题目求解答!! 除有特别说明外,每个题目请以自然语言.形式化表述(伪码.流程图等).程序代码三种方式描述. 顺序结构线性表LA与LB的节点关键字为整数.LA与LB的元素按非递减有序,线性表空间足够大.试给出一种高效算法,将LB中的元素合并到LA中,使新的LA元素仍保持非递减有序.高效是指最大限度的避免移动元素. 请写一个算法将线性表(a1,a2,-,an)逆置为(an,an-1,-,a1). 在一个递增有序的线性表中,有数值相同的元素存在.若存储方式为单链表,

c#-C#实现对c语言的在线编译并且根据输出评分

问题描述 C#实现对c语言的在线编译并且根据输出评分 大二学生狗一枚,最近在写一个c语言的考试系统.但是在编程题这里需要用到在线编译和根据输出评分.希望大神帮帮忙,最好能有代码可以让我分析一下.谢谢 解决方案 http://www.cnblogs.com/ma6174/archive/2013/05/12/3074034.html C#类似的思路,C#使用Process.Start调用命令行.

c++-C语言,输入星期首字母输出星期名,请问这小程序哪里错了,

问题描述 C语言,输入星期首字母输出星期名,请问这小程序哪里错了, 输入s或t,程序提示输入下一个字母 输入下一个字母后,程序没有显示结果就退出了 #include int main(void) { puts("enter a letter"); char ch; ch = getchar(); getchar(); switch (ch) { case 'm':puts("monday"); break; case 't':puts("enter nex