c语言数据结构问题,*&必须形参对应的实参参是类型,如图CreateList函数中,形参是*&A,对应的形参应该填什么?

已知一函数的形参说明为double * * p,则下列定义中的变量名不可以作为对应实参的是(
)。
A.double * F[10];
B.double * F[5];
C.double F[5][10];
D.double * * F;
请问为什么选择C,请
已知一函数的形参说明为double * * p,则下列定义中的变量名不可以作为对应实参的是(
)。
A.double * F[10];
B.double * F[5];
C.double F[5][10];
D.double * * F;
请问为什么选择C,请讲解一下此题。
double * * p 的意思是
p 变为 *p时 找到了第一个一级指针 ,相当于p[0]
p 找到第x个一级指针
*p--->**p , *p---->*p[y] ,p[x][y]
上面三种形式都是通过一级指针找到第一(y)个元素
A,B 是正确的形式 分配了10(5)个一级指针
D是正确的形式 还没分配了一级指针
C是数组没有一级指针,它的级里没有x级指针的概念,
不管几级数组,都只有一个头指针,后面全是数据
把主板驱动重新装一下,最好装原版盘的再试试,显卡驱动也再重新装下,不一定要最新的,适合你的系统就足够了。
感觉是驱动不兼容的问题
当乙骑车出发时已有四辆车在路上,当乙出发后从站里发出的有15-4=11辆,也就是说当乙到达终点时从车站发出11辆车,每辆车间隔5分钟,所以11*5=55
如果你持的是中国护照,必须申请签证!可以申请旅游签证很便宜的!
这是哪个省的高考题,题目很灵活,好
既然是带头结点的非空单链表,那删除首元结点还不简单么。
只要将头结点的指针域指向首元结点的下一个结点就行了,释放,就行了。
例如,L是头结点的指针,next是结...
答: void main放错位置了,你的main函数的函数体是 { scanf("%d,%d,%d",&a,&b,&d); c=max(a,b); e=max(c,d...
答: 想学习C++,可以参考《[我的第一本C.书].陈良乔.扫描版》
这本书不错,去电驴下载。
答: 新年好!首先,你必须了解计算机的组成和结构以及操作系统的运作原理,这是基础
如果你想学习开发多线程、WINDOWS应用、动态链接库、WINDOWS组件的话,建议...
大家还关注
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区文档分类:
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,
下载前请先预览,预览内容跟原文是一样的,在线预览图片经过高度压缩,下载原文更清晰。
您的浏览器不支持进度条
下载文档到电脑,查找使用更方便
还剩?页未读,继续阅读
播放器加载中,请稍候...
该用户其他文档
下载所得到的文件列表c语言备考习题及部分答案.doc
文档介绍:
一、判断题 1.在函数定义中,形参变量有时也可以是全局变量。(× 2.在C程序中,函数调用可以作为函数的形参。× 3.在 C程序中,函数调用可以作为函数的实参。√ 4.在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是指针类型。× 5.对任一变量一旦被指定为某一确定类型后,该变量在程序运行时所占存储空间的多少和所能参加的运算类型便已确定了。( √ 6.C语言程序必须包含库函数。( × 7.如果被定义函数的返回值是整型,可以不必进行说明。( √ 8.一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量。( √ 9. return 语句可以带有表达式也可以不带。( √ 10. 若某自定义函数中无 return 语句,则该函数一定没有返回值。× 11. 在C语言中,变量的初始化都是在编译阶段完成的。× 12. 在同一源文件中,全局变量与局部变量同名, 在局部变量作用范围内,全局变量的值等于局部变量的值。× 13. return 语句作为函数的出口,在某一个函数体内必须唯一。(× 14. C语言程序必须包含库函数。( × 15. C语言中,任意两个函数间不能嵌套定义,但可以互相调用。( × 16. 在函数的定义中,若函数没有参数,则可以省略函数名后的括号。× 17. 函数返回值的数据类型取决于 return 语句中表达式的数据类型。× 18. 函数返回值的数据类型取决于主调函数传递过来的实参的数据类型。× 19. 函数返回值的数据类型取决于函数定义时为函数指定的数据类型。√ 20. 在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是地址量。√ 21. C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是整个数组。× 22. C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是数组的首元素值。× 23. C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是数组的首地址值。√ 24. 求 n!既可以用递归的方式,也可以用递推的方式。(√ 25. 递归函数在实现过程中,要使用“堆栈”这种数据结构来保存递归调用过程中的值。√ 26. 在C语言中,所有函数之间都可以相互调用。× 27. 一个 C程序无论有多少个源程序文件组成,在其中一个源程序文件中定义的全局变量的作用域默认为整个 C程序。× 28. 一个 C程序无论有多少个源程序文件组成,在其中一个源程序文件中定义的全局变量的作用域默认为其所在的源程序文件。√ 29. 在C程序的主函数 mai n中定义的变量就是全局变量。× 30. 在C程序的主函数 main 中定义的变量也是局部变量。√ 31. 在函数定义中,形参变量是局部变量。√ 32. 在函数定义中,形参变量可以是静态变量。× 33. 在一个函数定义中,只能有一个 return 语句。× 34. 在一个函数定义中,可以根据需要使用多个 return 语句。√ 35. 在 C程序中,函数可以嵌套定义,也可以嵌套调用。× 36. 在C程序中,函数不能嵌套定义,但可以嵌套调用。√ 37. 在 C程序中,函数既不能嵌套定义,也不能嵌套调用。× 38. 在C程序中,函数调用只能作为单独语句出现。× 39. 在C程序中,函数调用不能作为单独语句出现。× 40. 在C程序中,函数调用只能出现在表达式语句中。× 41. 在C程序中,函数调用不能出现在表达式语句中。× 42. 在 C程序中,函数调用既可以出现在表达式语句中,也可以作为单独的语句出现。√ 43. 在C函数中,形参可以是变量、常量或表达式。× 44. 在 C程序中,实参可以是变量、常量或表达式。√ 45. C语言规定,函数调用时,若形参和实参都是简单变量,则它们之间的数据传递方式是双向值传递。× 46. C语言规定,函数调用时,若形参和实参都是简单变量,则它们之间的数据传递方式是单向值传递。√ 47. 如果一个函数只能被本文件中的其他函数所调用,则该函数为外部函数。× 二、单选题 1.C语言中,以下叙述中错 0的是( A)。 A)主函数中定义的变量是全局变量 B)同一程序中,全局变量和局部变量可以同名 C)全局变量的作用域从定义处开始到本源程序文件结束 D)局部变量的作用域被限定在其所定义的局部范围中 2.C语言中,以下叙述正确的是( )。 A)函数不能嵌套定义但可以嵌套调用 B)函数可以嵌套定义也可以嵌套调用 C)函数可以嵌套定义但不能嵌套调用 D)函数不能嵌套定义也不能嵌套调用 3.C语言中,函数调用时若实参是数组名,则被调函数对应形参( )。 A)可以是相应类型简单变量 B)必须是相应类型数组名 C)可以是相应类型数组名 D)必须是相应类型的指针变量 4.C语言中,函数调用时若实参是数组名,则被调函数对应形参( D)。 A)可以是相应类型简单变量 B)必须是相应类型的指针变量 C)必须是相应类型数组名 D)可以是相应类型的指针变量 5.在下面 C语言的函数说明语句中,正确的是( )。 A) int fun(int , int); B) int fun(int x,y); C) int fun(x,y); D)int fun( int y); 6.在C程序中,如果限定一个局部变量只能在所定义的范围中起作用,那么这个变量的存储类型(C)。 A)只能是 auto B)只能是 extern C)可以是 auto 或 static D)可以是 extern 或 static 7.在C语言中,若定义函数时未说明函数的类型,则该函数的数据类型为( A)。 A) int B) float C) char D) double 8.在C语言中,函数默认的存储类型为( D)。 A) auto B) register C) static D) extern 9.C语言中规定,简单变量做实参时,它和对应形参之间的数据传递方式是(B)。(A) 地址传递(B) 单向值传递(C) 有实参传给形参,再由形参传回给实参(D) 由用户指定传递方式 10. 如果在 C程序中有 main(int argc,char *argv[]) ,那么(D)是指命令行中的参数个数。(A)argv (B)argv[] (C)argc,argv[] (D)argc 11. 如果程序中有则编译程序会对其自动设置初值为( D)。(A) ''\n'' (B) &\n& (C) 0 (D) ''\0'' 12. 在C函数中,局部变量的隐含存储类型是(A)。(A) auto (B) static (C) register (D) extern 13. C程序在( C)可以使用表达式 A)函数内部 B)函数外部 C)程序的任何地方 D) 变量出现的地方 14. 在C语言中,函数返回值的数据类型取决于( C)。 A)函数的名字 B) return 语句中表达式的数据类型 C)在定义该函数时所指定的数据类型 D)主调函数的数据类型 15. 在一个源程序文件中定义的全局变量,其作用域为( 1
内容来自淘豆网www.taodocs.com转载请标明出处.
文件大小:0 KB
下载次数:计算机等级考试学习网,提供全国计算机等级考试辅导、ncre考试时间、计算机等级考试报名、等考历年真题模拟试题答案、计算机等级考试成绩查询、一级MS Office、一级WPS Office、一级B、二级公共基础知识、二级C语言程序设计、二级C++语言程序设计、二级Delphi语言程序设计、二级Java语言程序设计、二级Visual Basic语言程序设计、二级Visual FoxPro数据库程序设计、二级Access数据库程序设计、三级PC技术、三级信息管理技术、三级网络技术、三级数据库技术、四级网络工程师、四级数据库工程师、四级软件测试工程师、计算机职业英语一级等信息。
您当前的位置:&>&&>&&>&&>&&>&
  前面我们说的都是无参数无返回值的函数,实际程序中,我们经常使用到带参数有返回值的函数。
  一、函数参数传递
  1.形式参数和实际参数
  函数的调用值把一些表达式作为参数传递给函数。函数定义中的参数是形式参数,函数的调用者提供给函数的参数叫实际参数。在函数调用之前,实际参数的值将被拷贝到这些形式参数中。
  2.参数传递
  先看一个例子:
  void a(int); /*注意函数声明的形式*/
  main()
  scanf(%d,&num);
  a(num); /*注意调用形式*/
  void a(int num_back) /*注意定义形式*/
  printf(%dn,num_back);
  在主函数中,先定义一个变量,然后输入一个值,在a()这个函数中输出。当程序运行a(num);这一步时,把num的值赋值给num_back,在运行程序过程中,把实际参数的值传给形式参数,这就是函数参数的传递。
  形参和实参可能不只一个,如果多于一个时,函数声明、调用、定义的形式都要一一对应,不仅个数要对应,参数的数据类型也要对应。
  void a(int,float);
  main()
  int num1;
  float num2;
  scanf(%d,&num1);
  scanf(%f,&num2);
  a(num1,num2);
  void a(int num1_back,float num2_back)
  printf(%d,%fn,num1_back,num2_back);
  上面的例子中,函数有两个参数,一个是整型,一个是浮点型,那么在声明、调用、定义的时候,不仅个数要一样,类型也要对应。如果不对应,有可能使的编译错误,即使没错误,也有可能让数据传递过程中出现错误。
  再看一个例子:
  void a(int);
  main()
  scanf(%d,&num);
  a(num);
  void a(int num)
  printf(%dn,num);
  看上面的例子,形式参数和实际参数的标识符都是num,程序把实际参数num的值传递给形式参数num。有些人可能就不明白了,既然两个都是num,为什么还要传递呢?干脆这样不就行了吗:
  void a();
  main()
  scanf(%d,&num);
  void a()
  printf(%dn,num);
  其实不然,这就要涉及到标识符作用域的问题。作用域的意思就是说,哪些变量在哪些范围内有效。一个标识符在一个语句块中声明,那么这个标识符仅在当前和更低的语句块中可见,在函数外部的其实地方不可见,其他地方同名的标识符不受影响,后面我们会系统讲解作用域的问题。在这儿你就要知道两个同名的变量在不同的函数中是互不干扰的。
  前面将的都是变量与变量之间的值传递,其实函数也可以传递数组之间的值。看下面的例子:
  void a(int []);
  main()
  int array[5],i;
  for(i=0;i&5;i++) scanf(%d,&array[i]);
  a(array);
  void a(int array[])
  for(i=0;i&5;i++) printf(%dt,array[i]);
  printf(n);
  这就是数组之间的值传递。注意他们的声明和定义形式,和变量参数传递有什么区别?有了后面的[]就表明传递的是一个数组。其中在定义的时候,也可以写成void a(int array[5]);想想,如果我们写成了int array[4]会有什么情况发生?
  目前我们只学了数组和变量,以后还会知道指针、结构,到那是,函数也可以传递它们之间的值。
  二、函数值的返回
  其实我们也可以把函数当作一个变量来看,既然是变量,那一定也可以有类型。还举最前面的例子,现在要求在main()函数里输入一个整数作为正方形的边长,在子函数里求正方形的面积,然后再在主函数里输出这个面积。
  我们前面的程序都是在子函数里输出的,现在要求在主函数里输出,这就需要把算好的值返回回来。先看例子:
  int a(int); /*声明函数*/
  main()
  int num,
  scanf(%d,&num);
  area=a(num); /*调用时的形式*/
  printf(%d,area);
  int a(int num)
  int area_
  area_back=num*
  return area_ /*返回一个值*/
  和前面的程序有几点不同:
  (1).声明函数类型时,不是void,而是int。这是由于最后要求的面积是整型的,所以声明函数的返回值类型是整型。
  (2).return语句 它的意思就是返回一个值。在C语言中,return一定是在函数的最后一行。
  (3).调用函数的时候,由于函数有一个返回值,所以必须要用变量接受这个返回值(不是绝对的),如果我们不用一个变量接受这个值,函数还照样返回,但是返回的这个值没有使用。
  上面的例子运行过程是这样的,先把实参的值传递给形参,然后在子函数里计算面积得到area_back,然后返回这个面积到主函数,也就是把area_back赋值给area,最后输出。
  前面说了,返回值有时不一定非要用一个变量来接受,我们可以把上面的程序简化为:
  int a(int);
  main()
  scanf(%d,&num);
  printf(%d,a(num)); /*函数调用放在这儿*/
  int a(int num)
  int area_
  area_back=num*
  return area_
  这样函数返回的值就可以直接放到输出缓冲区直接输出了。
  还可以再简化为:
  int a(int);
  main()
  scanf(%d,&num);
  printf(%d,a(num));
  int a(int num)
  return num* /*直接在这儿返回*/
  对于函数而言,一个函数只能返回一个值,如果想返回一组数值,就要使用数组或者结构或者指针。其实对于这些,还是返回一个值,只是这个值是一个地址而已。但是对于数组的返回有和变量不同,因为数组和地址是联系在一起的。看一个例子:
  void a(int []);
  main()
  int array[5]={1,2,3,4,5},i;
  a(array);
  for(i=0;i&5;i++) printf(%d,array[i]);
  void a(int array[])
  for(i=0;i&5;i++) array[i]++;
  看看这个程序,好象函数没有返回值,但是函数的功能的确实现了,在主函数当中输出的值的确都各加了1上来。这就是因为数组和变量不同的缘故,在后面讲指针的时候再详细说明。
  下面看一个实际例子,加深对函数的理解:
  用函数实现,判断一个整数是不是素数?在主函数里输入输出,子函数里判断。
  #include math.h
  int judge(int);
  main()
  int num,
  scanf(%d,&num);
  result=judge(num);
  if(result==1) printf(yesn);
  else printf(non);
  judge(int num)
  int i,flag=1;
  for(i=2;i&=sqrt(num);i++)
  if(num%i==0)
  flag=0;
  可以看出,函数的功能就是为了让程序看起来有条理,一个函数实现一个特定的功能。如果我们还和以前那样,把所有代码都放在main()函数,好象程序就显的臃肿了。而且函数有一个显著的好处就是很方便的使用。这里面的judge()函数判断一个数是不是素数,如果我们以后还有判断某个数是不是素数,就可以直接使用这个函数了。我们这样,把下面的代码:
  judge(int num)
  int i,flag=1;
  for(i=2;i&=sqrt(num);i++)
  if(num%i==0)
  flag=0;
  保存为judge.h文件,放到include目录里面。
  以后就可以直接使用这个函数了,就好象直接使用abs(),sqrt()这些函数一样方便。
  #include math.h /*必须要有它*/
  #include judge.h
  main()
  int num,
  scanf(%d,&num);
  result=judge(num);
  if(result==1) printf(yesn);
  else printf(non);
  看上面的例子,我们在程序中直接使用了函数judge(),这就是我们自己编写的第一个所谓的库函数。但是程序的第一行要包含math.h文件,这是因为在judge.h里面使用了sqrt()函数,所以为了方便,我们可以把math.h放到judge.h里面,也就是在judge.h文件的第一行加上include math.h,这样,我们的主程序中就不需要包含它了,但是这样做也有副作用,具体有什么副作用,我们以后接触到时再介绍。
  我们实际用到的一些程序,也许代码有很长,上千行,甚至上万行,这些代码不可能放在一个*.c文件中,所以我们经常把一些功能做成*.h,*c的文件形式,然后在主程序中包含这些文件,这样就把一个大程序分割成几个小块,不仅浏览方便,对以后的修改也有很多好处。
  我们在平时就应该有这样的好习惯,把一些经常使用的功能做成库函数的形式保存下来,也许刚开始你会觉得很烦琐,可到了后来,也许几年过去了,你会发现,一个好几千行上万行的程序,有一大半的功能你都有,直接调用就可,这会大大缩短你的程序开发周期的。就好象这里的判断素数一样,如果以后还需要判断一个数是不是素数,就没必要再写那些代码了,直接调用judge()函数就可。
由于相关情况不断变化,本网站提供的信息仅供参考,请以官方机构发布为准!
转载资料请务必注明出处和原始作者。资料版权归原始作者所有。
如果本站所转载内容不慎侵犯了您的权益,请与我们联系,我们将会及时处理。
最近浏览过的信息
暂无最近浏览记录扫二维码下载作业帮
3亿+用户的选择
下载作业帮安装包
扫二维码下载作业帮
3亿+用户的选择
c语言的问题。。按c语言的规定,下列说法不正确的是A 实参可以是常量,变量,表达式。B 形参可以是常量,变量,表达式。C实参可以为任意类型D形参应于其对应的实参类型一致。答案是C我觉得是B。。。
作业帮用户
扫二维码下载作业帮
3亿+用户的选择
答案是B形参就是声明的时候“形式化”的出现一下,告诉计算机有这么一个函数~实参就是实际参与运算的参数,管他什么乱七八糟的形式,只要是能传递的数据类型,都可以(不过要注意类型的匹配)~
为您推荐:
扫描下载二维码}

我要回帖

更多关于 c语言中的形参和实参 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信