您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页c语言复习题(有答案)●

c语言复习题(有答案)●

来源:意榕旅游网
.

思 考 题

不仅要会做这些题,

更重要的是要掌握其相关知识点

一、一般填空题

1-1、调用fopen函数打开一文本文件,在“打开模式”这一项中,为输出(写)而打开需填入【1】. 1-2、调用fopen函数打开一文本文件,在“打开模式”这一项中,为追加而打开需填入【1】. 1-3、fopen函数的原形在头文件【1】中. 1-4、getchar函数的原形在头文件【1】中. 1-5、sqrt函数的原形在头文件【1】中.

1-6、如果函数不要求带回值,可用【1】来定义函数返回值为空. 答案:w或w+;a或a+;stdio.h ; stdio.h ; math.h ;void . 2-1、字符串“\\1011234\\\\at”的长度(字符数)是【1】. 2-2、字符串“abc\\103\\\\bcd”的长度(字符数)是【1】. 2-3、字符串“1\\\\\x43\\abx44”的长度(字符数)是【1】. 2-4、“a“在内存中占【1】个字节. 2-5、‘a’在内存中占【1】个字节. 2-6、“\\71“在内存中占【1】个字节.

2-7、一维数组下标的最小值是【1】;数组char a[]=“china” ;在内存应占【1】个字节。 答案:8; 8; 9; 2;1;2 ;0;6. 3-1、设x=(5>1)+2, x的植为【1】.

3-2、表达式‘B’+15+‘\\x41’+011+0x10的值是【1】. 3-3、表达式‘b’+5+‘\\x42’+011+0x10的值是【1】. 答案:3;171;194;

4-1、假设所有变量都为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是【1】. 4-2、if(!a)中的表达式!a等价于【1】.

4_3、已知a=1,b=2,c=3,执行if(a>b>c) b=a;else b=c;a=4;b=8;后,b的值是【1】.

答案:8;a==0;8;

5-1、若所用变量都已定义,下列程序段的执行结果是【1】. for(i=1;i<=5;i++);printf(“OK\\n”);

5-2、执行语句char s[3]=”ab”,*p;p=s;后,*(p+2)的值是【1】.

5-3、若有以下定义和语句:int a[4]={0,1,2,3},*p; p=&a[2]; ,则*--p的值是【1】. 5-4、下列程序的输出结果是【1】,main(){int a=011;printf(“%d\\n”,++a);} 答案:OK;’\\0’ ;1;10

6-1、若宏定义为:#define y(x) 2+x, 则表达式a=3*y(3)的值为【1】. 6-2、若宏定义为:#define y(x) 2+x, 则表达式a=4*y(2)的值为【1】. 6-3、若宏定义为:#define y(x) 2/x, 则表达式a=4+3*y(3)的值为【1】. 答案:9;10;6 .

二、单项选择题

1-1、若以\"a+\"方式打开一个已存在的文件,则以下叙述正确的是()。

A:文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B:文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 C:文件打开时,原有文件内容被删除,只可作写操作 D:以上各种说法皆不正确

1-2、若执行fopen函数时发生错误,则函数的返回值是()。

编辑版

.

A:地址值 B:0 C:1 D:EOF

1_3、若要打开A盘上user子目录下名为abc.txt的文件进行读、写操作,符合要求的是()。

A:fopen(“A:\\abc.txt”, “r”) B:fopen(“A:\\\\\\abc.txt”, “r+”) C:fopen(“A:\\abc.txt”, “rb”) D:fopen(“A:\\\\\\abc.txt”, “w”)

答案:A;B;B;

2-1、以下属于c语言预先规定的保留字是()。

A:int B:score C:aver D:sum 2-2、下列运算符中优先级最高的是()。

A:< B:+ C:&& D:!= 2-3、下面不正确的字符串常量是()。

A:‘abc’ B:’’12’12” C:”0” D:” “ 2-4、运算对象必须是整型的运算符是()。

A:% B:/ C:= D:<= 2-5、下面错误的常量是()。

A: 0xff B:1.2e0.5 C:2L D:’\\72’ 2-6、下列变量定义语句中,正确的是()。

A: char: a b c; B:char a; b; c; C:int x;z; D:int x,z; 2-7、sizeof(float)是()。

A:一个双精度型表达式 B:一个整型表达式 C:一种函数调用 D:不合法表达式 2_8、c语言的注释语句开头必须是()。

A:/ B:* C:/* D:’

2_9、设以下变量均为int类型,则值不等于7的表达式是()。

A:(x=y=6,x+y,x+1) B:(x=y=6,x+y,y+1) C:(x=6,x+1,y=6,x+y) D:(y=6,y+1,x=y,x+1) 2_10、C程序的语句结束符是()。

A:; B:: C:. D:换行

2_11、C语言中用于结构化程序设计的三种基本结构是()。

A:顺序结构、选择结构和循环结构 B:if、switch、break C:for、while、do-while D:if、for、continue

2_12、C语言中,int、char和short三种类型的数据在内存中占用的字节数()。

A:由用户自己定义 B:均为两个字节 C:是任意的 D:由所用机器的字长决定

答案:A;B;A;A;B;D;B;C;C; A;A;D; 3-1、在一个c程序中()。

A:main函数必须出现在所有函数之前 B:main函数的位置没有特别 C:main函数必须出现在所有函数之后 D:main函数必须出现固定位置 3-2、已知函数原形声明为:float www(char a, char b); 该函数的类型为()。

A:指向字符型的指针 B:字符型 C:浮点型 D:指向浮点型的指针 3-3、与实际参数为整型数组名相对应的形式参数不可以定义为()。

A:int a[]; B:int *a; C:int a; D:int a[3]; 3_4、全局变量的定义不可能在()。

A:函数内部 B:函数外面 C:文件外面 D:最后一行 3_5、putchar函数可以向终端输出一个()。

A:整型变量表达式的值 B:实型变量的值 C:字符串 D:字符或字符型变量值 3_6、数组名作为实际参数传给函数时,数组名被处理为()。

A:数组的长度 B:数组的元素个数 C:数组的首地址 D:数组中各元素的值

编辑版

.

3_7、C语言中,当调用函数时()。

A:实参和虚参本身各占一个的存储单元 B:实参和虚参可以共用存储单元 C:实参和虚参可以由用户指定是否共用存储单元 D:由计算机自动确定是否共用存储单元 3_8、调用函数时,实参和虚参必须保持一致的是()。

4-1、int a=3,b=2,c=1; if(a>b>c)a=b; else a=c; 则a的值为()。

A:3 B:2 C:1 D:0 4-2、下列程序的输出为()。 main()

{ int y=10; while(y--); printf(\"y=%d\\n\

A: y=0 B: while构成无限循环 C: y=1 D: y=-1 4-3、假设所有变量都为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是().

A: 7 B:8 C: 9 D: 2 4-4、以下程序的输出结果是()。 main()

{ int i=010, j=10 ; printf(\"%d,%d\\n\}

A: 11,10 B:9,10 C: 10,9 D: 10,9

4_5、设a=2,且a定义为整型变量,执行语句a+=a-=a*=a;后,a的值为()。

A: 12 B: 144 C: 0 D: 132 4-6、int a=1,b=2,c=3; if(a>c)a=b; a=c;c=b; 则c的值为()。

A:1 B:2 C:3 D:不一定

4-7、若变量a与i已正确定义,且i已正确赋值,合法的语句是()。

A: a==1 B:++i; C:a=a++=5; D:a=int(i); 4_8、strlen(“12\\0345\\n”)与strlen(“12\\0845\\n”)的测试结果分别是。

A:相同 B:2和5 C:5和2 D:5和5 4_9、设 char s[10]=\"\a\\017bc\";则数组s所占的字节数是()。 A:9 B:10 C:6 D:7

4_10、设 char *s=\"\a\\017bc\";则指针变量s指向的字符串所占的字节数是()。 A:9 B:5 C:6 D:7

4_11、若i=3,则printf(\"%d\输出的值和i的值分别为()。 A:相同 B:-3和4 C:5和2 D:5和5 答案:C;D;B;B; C; B;B;C;B;C;B; 5-1、一维数组定义的格式为:类型说明符 数组名()。

A:[常量表达式] B:[整型表达式] C:[整型常量] 或[整型表达式] D:[整型常量] 5-2、以下能正确定义数组并正确赋初值的邮局语句是()。

A:int N=5,b[N][N]; B: int a[1][2]={{1},{3}}; C: int c[2][]={{1,2},{3,4}}; D: int d[3][2]={{1,2},{34}}; 5_3、以下不正确的定义语句是()。

A:double x[5]={2.0,4.0,6.0,8.0,10.0}; B: int y[5]={0,1,3,5,7,9};

C: char c1[]={‘1’,’2’,’3’,’4’,’5’}; D: char c2[]={‘\\x10’,’\\xa’,’\\x8’}; 5_4、在C语言中,引用数组元素时,其数组下标的数据类型允许是()。

A: 整型常量 B:整型表达式 C: 整型常量或整型表达式 D: 任何类型的表达式 5_5、若有说明:int a[10];则对a数组元素的正确引用是()。

A:a[10] B:a[3,5] C:a(5) D:a[10-10]

编辑版

A:在个数上 B:在类型上 C:在顺序上 D:在个数、类型、顺序上 答案:B;C;D;A;D;C;A;D;

.

3_6、下列数组定义中,正确的是()。

A:int a[][4]; B:int a[][]; C:int a[][][5]; D:int a[3][]; 5_7、若有说明:int a[10];则对a数组元素的正确引用是()。

A:a[10] B:a[3,5] C:a(5) D:a[3>1]

答案:A;D;B;C;D;A;D;

6-1、相同结构体类型的变量之间可以()。

A: 相加 B:赋值 C: 比较大小 D: 地址相同 6_2、结构体类型的定义允许嵌套是指()。

A:成员是已经或正在定义的结构体型 B: 成员可以重名 C: 结构体型可以派生 D: 定义多个结构体型

6_3、有如下定义:struct student{char name[20];int age;}wang,*p;p=&wang;,以下不合法的引用为()。

A: p.age B: wang.age C: p->age D: (*p).age 6_4、在定义构造数据类型时,不能()。

A:说明变量 B:说明存储类型 C:初始化 D:末尾不写分号 6_5、当定义一个结构体变量时,系统分配给它的内存是()。

A:各成员所需内存量的总和 B:结构中第一个成员所需内存量 C:结构中最后一个成员所需内存量 D:成员中占内存量最大者所需的容量 6_6、enum a {sum=9,mon=-1,tue};定义了()。

A:枚举变量 B:3个标识符 C:枚举数据类型 D:整数9和-1 6_7、以下各选项企图说明一种新的类型名,其中正确的是()。

A:typedef v1 int; B:typedef v2=int; C:typedef int v3; D:typedef v4: int;

答案:B;A;A;D;A;C;C;

7-1、若宏定义为:#define y 2+3, 则表达式y*3+3的值为().

A: 14 B:16 C: 18 D: 20

7-2、若宏定义为:#define y 2+3, 则表达式2+y*3的值为().

A: 11 B:13 C: 15 D: 17

7_3、有宏定义为#define Y(a,b) a+b ,则表达式2+Y(2,3)*3的值为().

A: 11 B: 13 C: 15 D: 17

答案:A;B;B;

8-1、如有int *p,a=5,b; 定义,则以下正确的程序段为()。

A: p=&b;scanf(“%d’,&p); B: p=&b; scanf(“%d’,*p); C: scanf(“%d’,&b); p=b; D: p=&b;p=a;

8-2、若有语句:int a[3][4],*p[3]={a[0],a[1],a[2]}; 不能表示a[2][3]的元素的是()。

A: *(*(a+2)+3) B: *(*(p+2)+3) C: (p[2]+3) D: (*(p+2)) 8_3、p1,p2为指向浮点的指针变量,则下列运算错误的是()。

A: *p1-*p2 B: p1++ C: *p1%*p2 D: p1-p2 8_4、有以下定义:int a[2][3];,则对数组元素的正确引用()是。

A: *(*(a+i)+j) B: (a+i)[j] C: *(a+i+j) D: a[i]+j 8_5、若有定义:int (*p)();,则该指针为()。

A: 指向整型的指针 B: 指向字符型的指针 C: 指向整型函数的指针 D: 指向字符型函数的指针

编辑版

.

8_6、下列正确的定义是()。

① int i,*p=&i; ②int *p=&i,i; ③int *p,i;p=&i;④int *p,i;p=i;⑤int *p,i,p=&i; A: ①③ B: ②④ C:②⑤ D:④①

答案:D;D;C;A;C;A;

三、多项选择题

1_1、下列选项中合法的标识符有()。

A: good_morning B:main C: stdio.h D: 8abc 答案:AB;

1_2、下列选项中合法的用户标识符有()。

A: page B:short C: _3com D: int 答案:AC;

1_3、下列选项中合法的用户标识符有()。

A: return B:f2_G3 C: a3-3 D: abc 答案: BD;

1_4、以下叙述正确的是()。

A:C语言严格区分大小写英文字母。 B:C语言用“;”作为语句分隔符。 C:C程序书写格式自由:一行内可以写几个语句,一个语句也可以写在几行。 D:可以使用/*…*/对C程序中的任何部分作注释。 答案:ABCD;

1_5、下列对逻辑运算符两侧的运算对象的数据类型描述不正确的是()。

A: 只能是0或1; B:只能是0或非0正数; C: 可以是整型或字符型数据; D:可以是任何类型的数据; 答案:AB;

1_6、以下对switch语句和break语句中描述错误的有()。

A: 在switch语句中必须使用break语句; B:break语句只能用于switch语句;

C: 在switch语句中可以根据需要使用或不使用break语句; D:break语句是switch语句的一部分; 答案:ABD;

2_1、已定义c为字符型变量,则下列语句中错误的是()。

A: c=’97’; B:c=”97” ; C: c=97; D: c=”a”; 答案:ABD;

3_1、以下正确的是()。

A:预处理命令行必须以‘#’开始。 B:以‘#’开始的都是预处理命令行。 C:程序在执行过程中对预处理命令行进行处理。 D:#define ABCD是正确的宏定义。 答案:ABD;

4_1、在定义int a[2][3]之后,对a[i][j]的正确引用有()。

A: a[0][2] B: a[1,3] C: a[1>2][!1] D: a[2][0] 答案:AC;

4_2、以下对二维数组a正确初始化的是()。

A

static

char

word[]=’Turbo\\0’;

B

static

char

word[]={‘T’,’u’,’r’,’b’,’o’,’\\0’};

C:static char word[]={“Turbo\\0”}; D:static char word[]=”Turbo\\0”; 答案:BCD;

5_1、以下4个选项中可以看作是一条语句的有()。

A: {;} B: a=0,b=0,c=0 ; C: if(a>0); D: if(b==0) m=1;n=2;

编辑版

.

答案:ABC;

5_2、若a、b、c、d都是int型变量且已赋初值0,则正确的赋值语句是()。

A: a=b=c=d=100 ; B: d++; C: c+b; D: d=(c=22)-(b++); 答案:ABD;

5_3、设有以下定义:int a=0;double b=1.25;char c=’A’;

#difine d 2 ,则正确的语句是()。

A: a++; B: b++; C: c++; D: d++; 答案:ABC;

6_1、以下述说中正确的是()。

A:一个c源程序可以由一个或多个函数组成。 B:一个c源程序必须包含一个main()函数。 C:c源程序的基本组成单位是函数。 D:在c源程序中,注释说明只能位于一条语句的最后。 答案:ABC;

6_2、以下对C语言中的函数描述不正确的是()。

A:可以嵌套定义,不可以嵌套调用。 B:不可以嵌套定义,可以嵌套调用。 C:可以嵌套定义,也可以嵌套调用。 D:嵌套定义和嵌套调用都不允许。 答案:ACD;

四、程序填空

1、功能:计算平均成绩并统计90分以上人数。成绩数据以一负数作为结束标志。 #include void main(void) {

int n,m;float grade,average;

/***********SPACE***********/ average=n=m=【?】; while(1) {

/***********SPACE***********/ 【?】(\"%f\ if(grade<0) break; n++;

average+=grade;

/***********SPACE***********/ if(grade<90)【?】; m++; }

if(n) printf(\"%.2f%d\\n\ }

答案: 1). 0 或 0.0 2). scanf 3). Continue

2、功能:找出一维数组中最大值和此元素的下标,数组元素的值由键盘输入。 #include \"stdio.h\" void main() {

int a[10],*p,*s,i; for(i=0;i<10;i++)

/***********SPACE***********/ scanf(\"%d\【?】);

/***********SPACE***********/ for(p=a,s=a;【?】<10;p++) if(*p>*s) s=p;

/***********SPACE***********/

printf(\"max=%d,index=%d\\n\【?】,s-a); }

编辑版

.

答案:1). a + i 或 &a[i] 2). p-a 或 -a+p 3). *s 3、功能:输入学生成绩并显示。 # include struct student {

char number[6]; char name[6]; int score[3]; } stu[2];

void output(struct student stu[2]); void main(void) {

int i, j;

/***********SPACE***********/ for(i=0; i<2; 【?】) {

printf(\"请输入学生%d的成绩:\\n\ printf(\"学号:\");

/***********SPACE***********/ scanf(\"%s\【?】.number); printf(\"姓名:\");

scanf(\"%s\ for(j=0; j<3; j++) {

printf(\"成绩 %d. \

/***********SPACE***********/ scanf(\"%d\【?】.score[j]); }

printf(\"\\n\"); }

output(stu); }

void output(struct student stu[2]) {

int i, j;

printf(\"学号 姓名 成绩1 成绩2 成绩3\\n\"); for(i=0; i<2; i++) {

printf(\"%-6s%-6s\ for(j=0; j<3; j++)

printf(\"%-8d\ printf(\"\\n\"); } }

答案:

1). i++ 或 ++i 或 i=i+1 或 i+=1 2). stu[i] 3). &stu[i]

4、功能:输入两个整数x,y,请把这两个数由小到大输出。 #include void main(void) {

int x,y,t;

/***********SPACE***********/ scanf(\"%d%d\【?】);

/***********SPACE***********/

编辑版

.

if (【?】)

/***********SPACE***********/ {【?】}

printf(\"small to big: %d %d\\n\ }

答案:

1). &x,&y 或 &y,&x

2). x>y 或 x>=y 或 y3). t=y;y=x;x=t; 或 t=y,y=x,x=t; 或 t=x;x=y;y=t; 或 t=x,x=y,y=t;

5、功能:输出结果为: * * * * * * * * * * * * * * * * * * * *

#include void main(void) {

/***********SPACE***********/ static char 【?】={'*','*','*','*','*'}; int i,j,k;

char space=' '; for(i=0;i<5;i++) {

printf(\"\\n\");

for(j=1;j<=3*i;j++)

/***********SPACE***********/ printf(\"%1c\【?】);

/***********SPACE***********/ for(k=0;k<【?】;k++) printf(\"%3c\ }

printf(\"\\n\");; }

答案: 1). a[5] 或 a[] 2). space 或 ' ' 3). 5 或 =4

6、功能:下面函数为二分法查找key值。数组中元素已递增排序,若找到key则返回对应的下标,否则返回-1。 #include fun(int a[],int n,int key) {

int low,high,mid; low=0; high=n-1;

/***********SPACE***********/ while(【?】) {

mid=(low+high)/2; if(key/***********SPACE***********/ 【?】;

else if(key>a[mid])

/***********SPACE***********/ 【?】; else

编辑版

.

return mid; }

return -1; }

void main(void) {

int a[10]={1,2,3,4,5,6,7,8,9,10}; int b,c; b=4;

c=fun(a,10,b); if(c==1)

printf(\"not found\"); else

printf(\"position %d\\n\ }

答案: 1). low<=high 或 high>=low 2). high=mid-1 3). low= mid + 1 7、功能:计算圆周率的近似值。(π/4=1-1/3+1/5-1/7+…) -------------------------------------------------------*/ #include #include void main(void) {

int s;

/***********SPACE***********/ float n,【?】; double t;

t=1;pi=0;n=1;s=1;

/***********SPACE***********/ while(【?】>=1e-6) {

pi+=t;n+=2;s=-s;t=s/n; }

/***********SPACE***********/ pi*=【?】;

printf(\"pi=%.6f\\n\ }

2 pi fabs(t) 4

五、程序改错

1、功能:编写函数fun求20以内所有5的倍数之积。 #define N 20 #include \"stdio.h\" void main(void) {

int sum; sum=fun(5);

printf(\"%d以内所有%d的倍数之积为: %d\\n\ getch(); }

int fun(int m) {

/**********FOUND**********/

int s=0,i; for(i=1;i/**********FOUND**********/

if(i%m=0)

编辑版

.

/**********FOUND**********/

s=*i; return s; }

答案:

1). int s=1,i;

2). if(i%m==0) 或 if(!(i%m)) 3). s*=i; 或 s=s*i; 或 s=i*s;

2、功能:编写一个程序模拟袖珍计算器的加、减、乘、除四则运算。 例如:输入3+5=或5-2=或3*4=或4/2=,求表达式结果。 #include void main(void) {

float x,y;

char operate1;

printf(\"Arithmetic expression\\n\"); /**********FOUND**********/ scanf(\"%f\

/**********FOUND**********/ while((operate1==getchar())!='=') {

printf(\"result=\"); scanf(\"%f\

/**********FOUND**********/ switch(y) {

case '+':

x+=y; break; case '-':

x-=y; break; case '*':

x*=y; break; case '/':

x/=y; break; } }

printf(\"%f\ getch(); return; }

答案: 1). scanf(\"%f\2). while((operate1=getchar())!='=') 3). switch(operate1)

3、功能:编写函数求2!+4!+6!+8!+10+12!+14!。 #include \"stdio.h\" long sum(int n) {

/**********FOUND**********/ int i,j

long t,s=0;

/**********FOUND**********/ for(i=2;i<=n;i++) {

t=1;

编辑版

.

for(j=1;j<=i;j++) t=t*j; s=s+t; }

/**********FOUND**********/ return(t); }

void main(void) {

printf(\"this sum=%ld\\n\ getch(); }

答案: 1). int i,j; 2). for(i=2;i<=n;i=i+2) 或 for(i=2;i<=n;i+=2) 或 for(i=2;i<=n;i++,i++)

3). return(s); 或 return s; 或 return (s);

4、功能:找大于m的最小素数 #include #include int fun(int m) { int i,k;

for(i=m+1;;i++)

/**********FOUND**********/ { for(k=2;k答案: 1). <= 2). == 3). >

5、功能:统计出若干个学生的平均成绩,最低分以及得最低分的人数。 例如:输入10名学生的成绩分别为92,87,68,56,92,84,67, 75,92,66,则输出平均成绩为77.9,最低高分为56,得最低分

的人数为1人。

#include \"stdio.h\" float Min=0; int J=0;

float fun(float array[],int n) {

int i;float sum=0,ave; Min=array[0]; for(i=0;iif(Min>array [i]) Min=array [i]; /**********FOUND**********/ sum=+array [i]; }

/**********FOUND**********/ ave=sum\\n; for(i=0;i/**********FOUND**********/ if(array [i]=Min) J++; return(ave); }

编辑版

.

main( ) {

float a[10],ave; int i=0;

for(i=0;i<10;i++) scanf(\"%f\ ave=fun(a,10);

printf(\"ave=%f\\n\ printf(\"min=%f\\n\ printf(\"Total:%d\\n\ getch(); }

sum+=array[i]; ave=sum/n; if(array [i]==Min) J++;

6、功能:一个已排好序的一维数组,输入一个数number,要求按原来 排序的规律将它插入数组中.

main( ) {

int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number,end,i,j; /***********FOUND***********/ for(i=0;i<=10;i++) printf(\"%5d\ printf(\"\\n\");

scanf(\"%d\

/***********FOUND***********/ end=a[10];

if(number>end)

/***********FOUND***********/ a[11]=number;

else //是小于或等于最后那个数 {

for(i=0;i<10;i++) {

/***********FOUND***********/

if(a[i]temp1=a[i]; a[i]=number;

for(j=i+1;j<11;j++) //后面所有的数后移一个位置 {

temp2=a[j]; a[j]=temp1; temp1=temp2; } break; } } }

for(i=0;i<11;i++) printf(\"%6d\ }

for(i=0;i<10;i++) end=a[9]; a[10]=number; if(a[i]>number)

编辑版

.

六、程序设计

1、功能:编写函数fun计算下列分段函数的值: x^2+x+6 x<0且x≠-3

f(x)= x^2-5x+6 0≤x<10且x≠2及x≠3 x^2-x-1 其它 #include \"stdio.h\" float fun(float x) {

/**********Program**********/

/********** End **********/ }

void main(void) {

float x,f;

printf(\"Input x=\"); scanf(\"%f\ f=fun(x);

printf(\"x=%f,f(x)=%f\\n\ //yzj(); }

答案: float y;

if (x<0 && x!=-3.0) y=x*x+x+6;

else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0) y=x*x-5*x+6; else y=x*x-x-1; return y;

2、功能:求一组数中大于平均值的数的个数。

例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函数值为3。 #include \"stdio.h\" int fun(int a[],int n) {

/**********Program**********/

/********** End **********/ }

void main(void) {

int a[10]={1,3,6,9,4,23,35,67,12,88}; int y;

y=fun(a,10);

printf(\"y=%d\\n\ //yzj(); }

答案:

int i,k=0;

float s=0,ave;

for(i=0;iprintf(\"%f \

编辑版

.

for(i=0;iave)k++; return k;

3、功能:编写函数求表达式的和(n的值由主函数输入)。 1-1/2+1/3-1/4+......+1/n

例如:当n=20时,表达式的值为0.668771。(迭代)★ #include \"stdio.h\" float sum(int n) {

/**********Program**********/

/********** End **********/ }

void main(void) {

int n;

scanf(\"%d\

printf(\"sum=%f\\n\ //yzj(); //getch(); }

答案:

float s=0;

int i,k=1; for(i=1;i<=n;i++) { s=s+k*1.0/i; k=-k; } return(s);

4、功能:把20个随机数存入一个数组,然后输出该数组中的最小值。其中确定最小值的下标的操作在fun函数中实现,请给出该函数的定义。

思考:还可有哪3种修改参数的方法 ?并同时考虑若定义了指向元素的指针,访问元素的4种方法。建议试一试。 #include \"stdio.h\"

#define VSIZE 20 int vector[VSIZE] ;

int fun(int list[],int size) {

/**********Program**********/

/********** End **********/ }

void main() {

int i;

for (i=0;ivector[i]=rand();

printf(\"Vector[%d]=%6d\\n\ }

i=fun(vector,VSIZE);

printf(\"\\nMininum: Vector[%d]=%6d\\n\ } 答案:

编辑版

.

int i,min=0; for(i=1; i if(list[min]>list[i]) min=i; return min;

再参见函数一章的课件。

5、功能:找出一个大于给定整数且紧随这个整数的素数,并作为函数值返回。 #include \"stdio.h\" #include\"conio.h\"

int fun(int n) {

/**********Program**********/

/********** End **********/ }

void main() {

int m;

printf(\"Enter m: \"); scanf(\"%d\

printf(\"\\nThe result is %d\\n\ }

答案: int i,k; for(i=n+1;;i++) {

for(k=2;kif(i%k==0) break; if(k==i)return(i);

}

6、功能:用下列6种方法求两数和:①只用主函数;②用子函数接收和返回数据本身;③用子函数接收数据地址和返回本身;④在子函数中不用返回语句返回求和结果;⑤在子函数中用返回数据的地址返回求和结果;⑥用全局变量返回求和结果。 答案:

参见函数一章的课件。

7、功能:输入三个整数x,y,z,请把大的输出。用宏和函数两种方法。 提示:用“?:”运算符。 答案:

使用宏:

#include

#define F(x,y,z) z>(x>y?x:y)?z:x>y?x:y main() {int x,y,z;

scanf(“%d,%d,%d”,&x,&y,&z); pirntf(“%d\\n”,F(x,y,z)); }

编辑版

.

使用子函数调用的方法: 自己编。

8、功能:用辗转相除法(欧几里得算法)求两个正整数的最大公约数和最小公倍数。(迭代)★

答案:用函数调用的方法求最大公约数和最小公倍数。 int zgys(int a,int b) /*最大公约数*/ { int k,r;

if(awhile(b!=0) {r=a%b;a=b;b=r;} return(a); }

int zgbs(int a,int b) /*最小公倍数*/ { int d;

if(aelse{d=a;while(d%b!=0) d+=a;}

return(d); } /* “a*b/公约数==公倍数”*/

#include void main(void) {

int a,b,gys,gbs; clrscr();

scanf(“%d,%d”,&a,&b); gys=zgys(a,b); gbs=zgbs(a,b);

printf(“%d,%d”,gys,gbs); }

编辑版

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务