三九宝宝网宝宝教育教学论文

一道C语言试题

02月22日 编辑 39baobao.com

[C语言一道简单的数组编程题]//#include "stdafx.h"//vc++6.0加上这一行. #include "stdio.h" void main(void){ int a[1000],i,k; for(k=i=0;iif((a[i]=i+1)%77 & (a[i]%7==0 || a[i]%11==0)) printf(++k%5...+阅读

理解复杂的声明语法的规则说起来很简单,

就是从变量名(或者更泛一点,自定义的标识符)开始,

先右后左,遇到括号就反向——向右时遇到右括号")"反向,

向左时遇到左括号"("就反向——一个一个的分析,最后得到完整的理解。

float (*(*fp2)(int, int, float))(int);

这个的含义就是:fp2是一个指向函数的指针,

该函数接受三个参数(int, int, float)且返回一个指向函数的指针,

该函数接受一个整型参数并返回一个float。

double(*(*(*fp3)())[10])();

fp3是一个指向函数的指针,该函数没有参数并且返回一个含有10个元素的数组的指针,数组的每个元素都是一个函数指针,指向不带参数并返回double值的函数。

int(*(*f4())[10])();

初一看,f4也和前面的类似,是一个复杂的函数指针。其实仔细分析的话会发现f4只是一个普通的函数而已,我们可以看看分析过程就清楚了:

f4

(右) ——> f4() ;f4是一个函数,这个函数没有参数

(左) ——> (*f4()) ;f4是一个函数,这个函数没有参数并且返回一个指针

(右) ——> (*f4())[10] ;f4返回的指针指向含有10个元素的数组

(左) ——> (*(*f4())[10]) ;数组的每个元素都是指针

(右) ——> (*(*f4())[10])() ;数组的每个元素都是函数指针,指向不带参数的函数

(左) ——> int (*(*f4())[10]() ;数组的每个元素都是函数指针,指向不带参数并且返回int的函数

//*******//

PS:

复杂声明的语法规则:从标识符(变量名或类型名)开始,先右后左,一步一步的分析,每一步的分析都必须建立在上一步的分析结果之上,最后汇总各步的分析结论就是整个声明或定义的含义。写复杂的声明或定义也要按照这个规则来写。

以下为关联文档:

二级C语言一道上机题关于函数的递归调用if (n > 1) return (n*fun(n-1)); return 1; 如果 n>1 执行 return (n*fun(n-1)); 否则执行 return 1; 因为 main 函数里调用的是 fun(10); 所以对于 fun 函数,入口参数 n 等于10;...

一道C语言判断字符类型的问题求大神解决#include<stdio.h> int i=0,j=0,k=0,m=0,n=0; void fun(char a) { if (a>='a'&a<='z') { ++i; } else if (a>='A'&a<='Z') { ++j; } else if (a>='0'&a<='9') { ++m; } els...

三道C语言笔试题1)输出是31,49,1 原因是%x是指按16进制输出,而1的ASCII码是49,换成16进制就是31;%d就是49,也许你会说这里应该是1才对吧,但是你要注意他加上了单引号,就代表他是将1作为字符处理,所...

关于C语言的一道试题NODE_S* insert( NODE_S* single_list, NODE_S* cycle_list){ NODE_S *s_tail, *c_tail; s_tail = single_list; c_tail = cycle_list; while(s_tail->next != NULL) s_tail...

解答一个c语言笔试题这个题,你要知道A,B,C,D四个函数库都包含那些函数。在头文件中定义了输入输出函数,类型和宏。c语言的话每一个程序都要用到这个头文件。在中定义了一些数学函数和宏,用来实现不...

C语言笔试题一道整形数字去减字符2, 等于 c 的 ASCII 值 减 字符2 的ASCII 值。2743回车:c = '2', c-'2' 等于 0。进case 0: case 1: 打 ASCII 值 等于 c+4 的符号 ,就是符号6,没有 break; 进case...

我想不通的一道C语言考试题咱们跑一边程序看看 第一次i=0,i%2=0,i++,s+=i(s=s+i);这时i是1,s 为1; 第二次i=1, i%2=1, i++,continue;这时i是2,s还是1; 第三次i=2,i%2=0, i++,s+=i(s=s+i);这时i是3,s是4;...

c语言常见面试题网上找的 #include int cal(int h1,int length,int b[]); int main(){ unsigned int n[]=; int length=7; printf("%d",cal(-2,length,n)); return 0; } int cal(int h1,int l...

一道c语言求大神解答你好,代码如下 #include<stdio.h> float avg(float *p,int n) { int i = 0; float sum = 0; for(i = 0 ;i < n;i++) { sum += *(p+i); } return sum/n; } int main(void) { f...

推荐阅读
图文推荐