当前位置:文档之家› C语言基础题第七章:函数

C语言基础题第七章:函数

C语言基础题第七章:函数
C语言基础题第七章:函数

第七章:函数

一、单选题

1、若已用k=fun( fun (a,b,&c ) , 5, &a ); 形式正确调用fun函数,则该函数的形参个数为 B

A、2

B、3

C、4

D、5

2、以下叙述中正确的是。 D

A、形参和实参均属于局部变量

B、形参和实参必须是变量

C、形参的默认类型是register

D、形参的默认类型是auto

3、假设x为局部变量,而且在整个程序运行期间始终占据固定的存储单元,则它的存储类应是。B

A、auto

B、static

C、extern

D、register

4、int fun( int x , int y ) C

{ return x+y ; }

main( )

{ printf(“%d \n”, fun(fun(1,2), fun ( 3,4 ) ) ) ; }

程序运行后的输出结果是。

A、3

B、7

C、10

D、编译错误

5、void fun ( char *s ) B

{ s=s+2; *s = *s +2 ; }

main ()

{ char *a="12345 " ;

fun ( a ) ;

printf ( " % s \n ", a ); }

程序运行后的输出结果是。

A、12345

B、12545

C、345

D、545

6、void fun ( int *a, int * b)

{ int *t ;

t=a ; a = b ; b = t ;

( *a )++ ; (* b) +=2 ; }

main ( )

{ int a=1, b=10 ;

fun ( &a, & b) ;

printf ( " %d, %d \n ",a , b ); }

程序运行后的输出结果是。 D

A、1,10

B、10,1

C、12,2

D、3,11

7、void fun ( char *p ) B

{ p++ ; *p=' a ' ; }

main ( )

{ char a[20]= " 13579 " ;

fun ( a +1 ) ;

fun( a + 3) ;

printf ( " %s\n ", a ); }

程序运行后的输出结果是。

A、1a5a

B、13a7a

C、1a5a9

D、a3a79

8、#include A

main()

{ char s[10]="537236";

fun(s);

puts(s); }

fun(char *p)

{ char *q ;

for(q=p; *p!='\0';p++)

if(*p=='3')

{ *q=*p; q=p+1; }

}

程序运行后的结果是。

A、333236

B、537236

C、337236

D、333333

9、void fun ( int a, int * b ) C

{ int t ;

t=a; a=*b; *b=t ; }

main ( )

{ int a=3, b=5 ;

fun ( a, &b ) ;

printf (" %d, %d \n ", a, b); }

程序运行后的输出结果是。

A、3,5

B、5,3

C、3,3

D、5,5

10、int a=4, b=5 ; B

int fun( int x , int y )

{ int a=2, b=3, c ;

c=a >b ? a : b ;

return c + x + y ; }

main ( )

{ printf ( " %d " , fun ( a, b) ) ; }程序运行后的输出结果是:

A、11

B、12

C、13

D、14

11、有以下程序: C

int fun ( int n )

{ static int f=1 ; f= f * n ; return f ; }

main ( )

{ int i , a[5] ;

for ( i=1 ; i<=5 ; i++)

a [ i -1 ] = fun ( i ) ;

printf ( " %d " , a [ 3 ] ) ; }

程序运行后的输出结果是:

A、2

B、6

C、24

D、120

12、有以下程序: C

int fun ( )

{ static int x=10 ;

x = x+20;

return x ; }

a = fun ( );

b = fun ( );

printf (" %d, %d \n " ,a , b ); }

程序运行后的输出结果是:

A、30,30

B、50,50

C、30,50

D、20,20

13、以下程序运行结果为___B____

#define PII 3

#define S(x) PII*x*x

main()

{ int a=1, b=2, c;

c = a+b;

printf("%d\n",S(c));

}

A、9

B、27

C、7

D、10

二、填空题

1.以下程序的运行结果是___a=1__ ,___b=2__ 。

#include

int fun( )

{ static int x=0;

x++ ;

return x ; }

main( )

{ int a=0, b=0;

a=fun( );

b=fun( );

printf ( "a=%d , b=%d\n " , a, b ); }

2.以下程序的运行结果是___8___。

#include

int fun ( )

{ static int x=1; x=x+2;

return x; }

main( )

{ printf( "%d\n" , fun( )+fun( )); }

3、以下程序运行后的输出结果是 2415 :

main()

{ int a=2 , b=4, c=6 ;

fun ( a+b , &c) ;

printf ( "%d%d%d\n" ,a, b, c ); }

fun(int a, int *c)

{ int b=8 ; a++ ; *c= a +b ; }

4、运行以下程序后,从键盘输入Right? <回车>,则程序运行后的输出结果是 4 。

#include

gets(a); printf( "%d\n" , fun ( a+2) ); }

fun ( char a[ ] )

{ int n=0;

while ( *a != '\0' ) { n++ ; a++ ; }

return n ; }

三、 判断题

1.调用函数时,实参和形参个数必须相同,对应参数的数据类型也必须一致。 T

2.由于函数中可以出现多个return 语句,所以程序运行后函数同时可以有多个返回值。 F

3.C 语言中,所有函数都能被其他函数调用,而且主调函数必须在被调函数后面。 F

4.在C 语言中,可以根据情况将实参和形参起相同的名字,这样可以节省存储单元。 F

5、C 程序由函数组成,函数是构成程序的基本单位。 T

6、C 程序中可以没有main 函数,但至少应包含一个其他函数。 F

7、C 语言中规定,函数返回值的类型是由定义该函数时所指定的函数类型决定。 T

四、改错或程序填空题:

1、以下程序的功能是:用户从键盘输入两个float 型数据a 和 b ,计算并输出a 除以b 的商。程序中有

语法错误,请修改。

float cal ( float a, b ) float x; x= a/ b; return x; main( )

{ float a, b ;

scanf( " %f%f", &a, &b );

printf( " % .2f 除以 %.2f 的商是:%.2f\n ", a, b, cal (a,b) ); }

2、#include

float mysum(int b[], int n)

{ float s; int i; for (i=0; i

}

3、以下程序的功能是将用户从键盘输入(输入‘#’时结束)的若干大写字母转换成对应的小写字母。

请补充完整tocaps 函数。

#include

char tocaps (char ch)

{

float cal ( float a, float b ) { float x; return x;} float s=0;

if( b[i]>=70&&b[i]>=80)

mysum(a,8)

}

main( )

{ char c ,d ;

c=getchar( );

while(c!='#')

{ d= tocaps(c) ; putchar (d ); c=getchar(); }

}

4.以下程序的功能是通过调用函数chang()将实参中两个变量值进行交换,将程序补充完整。 #include

Int chang( ) int *x, int *y

{ int z ;

z= *x ; ; *y = z ; } *x = * y

main()

{ int a=15, b=72 ;

chang ( ) ; /* 填写合适的实参 */ &a, &b printf("a=%d, b = %d \n", a, b ) ; }

char c; if(ch>='A'&&ch<='Z') c=ch+32; else c=ch; return c ;

c语言第二版第七章答案

7.1 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。 参考程序如下: #include int aa(int m,int n) //求最大公约数 { int k; if(m int aa(int n) { int i; int flag; // flag标志 for(i=2;i<=sqrt(n);i++) { if(n%i==0) break; } if(i>sqrt(n)) flag=1; else flag=0;

return(flag); } main() { int n,flag; // flag标志 printf("\nInput n:"); scanf("%d",&n); flag=aa(n); if(flag==1) printf("%d is a prime number.\n",n); else printf("%d is not a prime number.\n",n); } 7.4 写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换。 参考程序如下: #include main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int b[3][3],i,j; printf("array a:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%5d",a[i][j]); printf("\n"); } printf("After switch:\n"); aa(a,b); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%5d",b[i][j]); printf("\n"); } } void aa(int a[3][3],int b[3][3]) { int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) b[j][i]=a[i][j]; } 说明:当数组名作函数参数时,形参也必须是同类型的数组名,形参数组名的实质是一个指针变量,存放的第0行第0列的元素的地址;这样,子函数中a[i][j]就是主函数中的a[i][j]; 7.11写一个函数,用“起泡法”对输入的10个字符按由小到大的顺序排列 参考程序如下: main()

C语言 第七章 函数

第七章函数 一、选择题 1.【B】 分析:函数返回值的隐含类型是整型。 2.【B】 分析:main函数可以在任何地方出现。它是程序的入口。 3.【D】 分析:函数的调用有一个返回值或者实现一定的功能,因此可以作为独立的语句存在,也可以出现在表达式中,可以作为一个函数的实参(返回值是一个实际的值)。4.【B】 分析:实参与形参之间的数据传递,只能是实参传给形参,单向传递。 5.【B】 分析:任何函数(除了main函数)的使用通过调用实现。普能的函数都能被单独编译(一定要能过调用才能运行),不能在一个函数中嵌套定义另一个函数。 6.【CD】 分析:C选项程序就是由若干个函数组成,无论是否有其他函数,主函数一定得存在。每个程序都必须有且仅有一个主函数,但不是每个程序文件都必须有main()函数。因为一个程序可能包含多个程序文件。函数不能嵌套定义。 7.【D】 分析:函数调用时实参必须与形参在个数,类型,顺序上相同。A选项中的"abc"是字符串,所以错误。C选项中'65'本身就是错误的。函数的返回值为空,不能用于赋值运算,所以B选项错误。D选项的第二个32在传给形参时可以转换为实型,正确。8.【A】 分析:实参都是用逗号隔开,第二个实参是个加法表达式,第三个实参是个逗号表达式。9.【C】 分析:fl函数功能返回较大的值,f2函数的功能返回较小的值。f1(a,b)返回为4,f2(a,b)返回为3。 10.【C】 分析:void *fun();的含义是fun函数的返回值是无值型的指针类型。 11.【C】 分析:函数在调用时不会出现类型说明符,所以A,D错误。函数的返回值为空,不能用于赋值运算,所以B选项错误。 12.【D】 分析:fun函数的功能选择两个数中较大的一个作为返回值。x为3,y为8,z为6以实参传到形参中,所以fun(fun(x,y), 2*z)等价于fun(fun(3,8), 2*6)等价于fun(8, 12),最后r被赋12。答案选D。 13.【B】 分析:fun函数功能返回两个数之和。此题就是函数调用作为函数实参。a为2,b为5,c 为8传到fun((int)fun(a+c,b),a-c))中那么它等价于fun(15,-6)。所以答案选B。14.【C】 分析:此题关键的一点就是实参与形参数据是单向传递的,a为31以实参传到函数中或者说传到形参z中,而函数体z=x*x+y*y会使z发生改变,形参改变了,但是实参是不

C语言第七章习题答案

7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。 hcf(u,v) int u,v; { int a,b,t,r; if(u>v) { t=u;u=v;v=t; } a=u;b=v; while((r=b%a)!=0) { b=a;a=r; } return(a); } lcd(u,v,h) int u,v,h; { int u,v,h,l; scanf("%d,%d",&u,&v); h=hcf(u,v); printf("H.C.F=%dn",h); l=lcd(u,v,h); printf("L.C.d=%dn",l); return(u*v/h); } #include

void main() { int u,v,h,l; scanf("%d,%d",&u,&v); h=hcf(u,v); printf("H.C.F=%dn",h); l=lcd(u,v,h); printf("L.C.D=%dn",l); } 7.2 求方程根 float x1,x2,disc,p,q; greater_than_zero(a,b) float a,b; { x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); } equal_to_zero(a,b) float a,b; { x1=x2=(-b)/(2*a);} smaller_than_zero(a,b) float a,b; { p=-b/(2*a);

q=sqrt(disc)/(2*a); } main() { float a,b,c; printf("n输入方程的系数a,b,c:n"); scanf("%f,%f,%f",&a,&b,&c); printf("n 方程是:% 5.2f*x*x+%5.2f*x+%5.2f=0n",a,b,c); disc=b*b-4*a*c; printf("方程的解是:n"); if(disc>0) { great_than_zero(a,b); printf("X1=%5.2ftX2=%5.2fnn",x1,x2); } else if(disc==0) { zero(a,b); printf("X1=%5.2ftX2=%5.2fnn",x1,x2); } else { small_than_zero(a,b,c); printf("X1=%5.2f+%5.2fitX2=%5.2f-%2.2fin",p,q,p,q);

C语言程序设计第四版第七章答案-谭浩强

第七章函数 7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 maxyueshu(m,n) int m,n; { int i=1,t; for(;i<=m&&i<=n;i++) {if(m%i==0&&n%i==0) t=i; } return(t); } minbeishu(m,n) int m,n; {int j; if(m>=n) j=m; else j=n; for(;!(j%m==0&&j%n==0);j++); return j; } main() {int a,b,max,min; printf("enter two number is: "); scanf("%d,%d",&a,&b); max=maxyueshu(a,b); min=minbeishu(a,b); printf("max=%d,min=%d\n",max,min); } 7.2求方程的根,用三个函数分别求当b2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。 #include"math.h" float yishigen(m,n,k) float m,n,k; {float x1,x2; x1=(-n+sqrt(k))/(2*m); x2=(-n-sqrt(k))/(2*m); printf("two shigen is x1=%.3f and x2=%.3f\n",x1,x2); } float denggen(m,n) float m,n; {float x; x=-n/(2*m); printf("denggen is x=%.3f\n",x); }

C语言第七章复习题(不含答案)

1.下列对C语言字符数组的描述中错误的是( )。 (A)字符数组可以存放字符串 (B)字符数组中的字符串可以整体输入、输出 (C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 (D)不可以用关系运算符对字符数组中的字符串进行比较 2.不能把字符串:Hello!赋给数组b的语句是( )。 (A)char b[10]={'H','e','l','l','o','!'}; (B)char b[10];b="Hello!"; (C)char b[10];strcpy(b,"Hello!"); (D)char b[10]="Hello!"; 3.若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是( )。 (A)a[g-c] (B)a[4] (C)a['d'-'c'] (D)a['d'-c] 4.以下程序的输出结果是( ) (A) 20 (B) 21 (C) 22 (D)23 main() { int i, k, a[10], p[3]; k=5; for (i=0;i<10;i++) a[i ]=i; for (i=0;i<3;i++) p[i ]=a[i *(i+1)]; for (i=0;i<3;i++) k+=p[i] *2; printf("%d\n",k); 5.以下程序的输出结果是( )。 (A) 1,5,9 (B) 1,4,7 (C) 3,5,7 (D)3,6,9 main() { int i, x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf("%d,",x[i][2-i]); 6.下面程序运行的结果是( )。 (A) 2ba56 (B) 6521 (C) 6 (D) 62 main() { char ch[7]={“65ab21“}; int i,s=0 for(i=0;ch[i]>='0' && ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf("%d\n",s); } 7.合法的数组定义是( )。 (A)int a[]="string"; (B)int a[5]={0,1,2,3,4,5}; (C)char s[6]="string"; (D)char a[]={0,1,2,3,4,5}; 8.函数调用:strcat(strcpy(str1,str2),str3)的功能是( )。 (A)将串str1复制到串str2中后再连接到串str3之后 (B)将串str1连接到串str2之后再复制到串str3之后 (C)将串str2复制到串str1中后再将串str3连接到串str1之后

c语言课后习题第7章函数

习 题 7 7.1 已有变量定义和函数调用语句:int a=1,b=–5,c ;c=fun(a,b);fun 函数的作用是计算 两个数之差的绝对值,并将差值返回调用函数,请编写fun 函数。 Fun(int x,int y) { } 7.1 求两数之差绝对值 #include fun(int x,int y) { return abs(x-y); } main() { int a=1,b=-5,c; c=fun(a,b); printf("|%d-%d|=%d\n",a,b,c); } 7.2 已有变量定义和函数调用语句:int x=57;isprime(x);函数isprime( );用来判断 一个整型数a 是否为素数,若是素数,函数返回1,否则返回0。请编写isprime 函数。 isprime(int a) { } 7.3 已有变量定义和函数调用语句int a ,b ;b=sum(a);函数sum()用以求∑=n k k 1,和数作为 函数值返回。若a 的值为10,经函数sum 的计算后,b 的值是55。请编写sum 函数。 Sum(int n) { } 7.3 求∑k #include sum(int n) { int k,s=0; for(k=1;k<=n;k++) s=s+k; return s; } main() { int a,b; printf("Input a: "); scanf("%d",&a); b=sum(a);

printf("%c(1,%d)=%d\n",228,a,b); } 7.4 一函数,输入一行字符,将此字符串中最长的单词输出。 7.4 输出最长的单词,假设只包含字母和空格,单词间以空格分隔,空格个数不限#include void fun(char a[]) { int n,i,j,k=0,len[80],p; char c[80][80],max[80]; n=strlen(a); for(i=0;i #include int fun(char a[]) { int i,n=0,m; for(i=0;a[i];i++) { if(isalpha(a[i])) /*如果a[i]是字母,求出相应的十进制数*/ switch(a[i]) { case 'a': case 'A': m=10; break;

C语言课后习题

习题 第三章 #include #include int main() { int d,p; double r,a,m; scanf("%d %d %lf",&d,&p,&r); a=(p/(p-d*r)); m=log(a)/log(1+r); if(p>0&&d>0) { if(d<=m*p) printf("%.1f",m); else printf("God"); } else printf("0.0"); return 0; } 勾股数 #include int main() { int a,b,c,n; scanf("%d",&n); for(a=1;a<=n;a++) { for(b=1;b<=n;b++) { for(c=1;c<=n;c++) { if(c*c==a*a+b*b) { if(a<=b) { printf("%d %d %d\n",a,b,c); } }

} } } return 0; } 第四章 计算分段函数值 #include int main() { float x,y; scanf("%f",&x); if(x<1) y=x; else if(x>=1&&x<10) y=2*x-1; else if(x>=10) y=3*x-11; printf("%.2f",y); return 0; } 找出三个数中最大的数 #include int main() { int a,b,c,max; scanf("%d%d%d",&a,&b,&c); max=a>b?a:b; if(c>max) max=c; printf("%d",max); return 0; } 10844成绩等级评分 #include int main() { int x; scanf("%d",&x); if(x>=0&&x<=100) { switch(x/10) { case 10:

C语言程序设计(何钦铭)课后习题作业

第一章习题 1、对C语言来说,下列标示符中哪些是合法的,哪些是不合法的 Total, _debug, Large&Tall, Counter1, begin_ 答:合法的:_debug、Counter1、begin_。 不合法的:Total、Large&Tall。 2、改写节中的流程图,求1—100中能被6整除的所有整数的和。 3、改写节中的程序,求1—100中能被6整除的所有整数的和,并在编程环境中验证该程序

的运行结果。 答:程序为: #include<> int main(void) { int i,sum=0; for(i=1;i<=100;i++) if(i%6==0)sum=sum+i; printf("sum=%d\n",sum); return 0; } 4、对于给定的整数n(n>1),请设计一个流程图判别n是否为一个素数(只能被1和自己整除的整数),并分析该流程图中哪些是顺序结构、哪些是分支结构和循环结构。

第二章作业 1.编写程序,输入两个整数num和num2,计算并输出她们的和、差、积、商。 答:程序: #include<> void main() { int num1,num2,y1,y2,y3,y5; double y4; printf("请输入两个数:num1,num2\n"); scanf("%d%d",&num1,&num2); y1=num1+num2; y2=num1-num2; y3=num1*num2; y4=num1*num2; y5=num1%num2; printf("num1,num2和y1=%d\nnum1,num2差y2=%d\nnum1,num2积y3=%d\nnum1,num2商y4=%lf\nnum1,num2余y5=%d\n",y1,y2,y3,y4,y5); } 2.为了倡导居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时以内的,电价为元/千瓦时;超出50千瓦时的用电量,电价上调元/千瓦时。编写程序,输入用户的月用电量(千瓦时),计算并输出该用户应支付的电费(元)。 答:程序: #include<> void main()

C语言第7章函数

第七章函数 一、选择题 1.如果在一个函数的复合语句中定义了一个变量,则该变量()。 A)只在该复合语句中有效,在该复合语句外无效 B)在该函数中任何位置都有效 C)在本程序的源文件范围内均有效 D)此定义方法错误,其变量为非法变量 2.C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是:。A)地址传递;B)单向值传递; C)双向值传递;D)由用户指定传递方式 3.以下关于C语言程序中函数的说法正确的是:。 A)函数的定义可以嵌套,但函数的调用不可以嵌套; B)函数的定义不可以嵌套,但函数的调用可以嵌套; C)函数的定义和调用均不可以嵌套; D)函数的定义和调用都可以嵌套。 4.以下正确的函数形式是:。 A)double fun(int x,int y)B)fun(int x,y) {z=x+y;return z;}{int z;return z;} C)fun(x,y)D)double fun(int x,int y) {int x,y;double z;{double z; z=x+y;return z;}z=x+y;return z;} 5.以下说法不正确的是:。 C语言规定 A)实参可以是常量、变量或表达式 B)形参可以是常量、变量或表达式 C)实参可以是任意类型 D)形参应与其对应的实参类型一致或赋值兼容 6.在下面的函数声明中,存在着语法错误的是。 A)BC(int a,int);B)BC(int,int); C)BC(int,int=5);D)BC(int x,int y); 7.以下错误的描述是。 函数调用可以 A)出现在执行语句中B)出现在一个表达式中 C)做为一个函数的实参D)做为一个函数的形参 8.下面叙述中正确的是。 A)对于用户自己定义的函数,在使用前必须加以说明 B)函数可以返回一个值,也可以什么值也不返回 C)说明函数时必须明确其参数类型和返回类型 D)空函数不完成任何操作,所以在程序设计中没有用处 9.下面叙述中错误的是。 A)主函数中定义的变量在整个程序中都是有效的

C语言复习题及答案 第七章 数组

第七章数组 (8学时) 学习目的与要求: 1 、重点掌握一维数组的定义和引用; 2 、基本掌握二维数组的定义和引用; 3 、重点掌握字符型数组的定义与引用; 4 、能正确使用字符串处理函数; 5 、学会使用数组解决实际问题。 重点: 1 、一维数组的定义与引用; 2 、二维数组的定义与引用; 3 、字符数组的定义与引用; 第1讲 知识归纳: 1、一维数组的定义:类型说明符数组名[ 常量表达式] ; (1) (1)数组名后必须用方括弧[ ] ,用其他括弧均错误; (2) 方括弧中的常量表达式表示数组的元素个数; (3) 方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量; 2、一维数组的引用: 数组名[ 下标] //下标从0开始,可以是整型常量或整型表达式; (1) 注意:数组元素引用时,不要超出数组范围; 如int a[10] ; //可以引用的数组元素为a[0]……a[9] , a[10] 不是本数组元素; 3、一维数组的初始化: (1) (1)可以在定义数组后,立刻赋值;如int a [3] = { 1,3, 5} ; 但下面这样是错误的: int a[3] ; a = { 1,3, 5} ; (2) (2)可以给数组的部分元素赋值,不赋值的元素,默认值为int 0, char, …?, float 0.0 ; 如int a [3]= {1,3 } ; //a[0] =1 ; a[1]= 3 ; a[2]= 0 ; (3) 在对数组全部元素赋初值时,可以不指定元素个数; (4) 可以在循环控制下,给数组各元素赋值; 如:int a[10] ; for ( i=0 ; i <10 ;i ++ ) a [ i ] = i ; 基础训练(A) 一、选择题 1、在c语言中,引用数组元素时,其数组下标的数据类型允许是()。 A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 2、要说明一个有10个int元素的数组,应当选择语句()。 A) int a[10]; B) int a(10); C) int a[9] D) int a[11] 3、以下对数组的正确定义是:()。 A) float b[5.0] B) float b[5] C) float b(5) D) float b[] 4、对以下说明语句的正确理解是()。 int a[10]={6,7,8,9,10}; A)将5个初值依次赋给a[1]至a[5]

C语言基础题第七章:函数

第七章:函数 一、单选题 1、若已用k=fun( fun (a,b,&c ) , 5, &a ); 形式正确调用fun函数,则该函数的形参个数为 B A、2 B、3 C、4 D、5 2、以下叙述中正确的是。 D A、形参和实参均属于局部变量 B、形参和实参必须是变量 C、形参的默认类型是register D、形参的默认类型是auto 3、假设x为局部变量,而且在整个程序运行期间始终占据固定的存储单元,则它的存储类应是。B A、auto B、static C、extern D、register 4、int fun( int x , int y ) C { return x+y ; } main( ) { printf(“%d \n”, fun(fun(1,2), fun ( 3,4 ) ) ) ; } 程序运行后的输出结果是。 A、3 B、7 C、10 D、编译错误 5、void fun ( char *s ) B { s=s+2; *s = *s +2 ; } main () { char *a="12345 " ; fun ( a ) ; printf ( " % s \n ", a ); } 程序运行后的输出结果是。 A、12345 B、12545 C、345 D、545 6、void fun ( int *a, int * b) { int *t ; t=a ; a = b ; b = t ; ( *a )++ ; (* b) +=2 ; } main ( ) { int a=1, b=10 ; fun ( &a, & b) ; printf ( " %d, %d \n ",a , b ); } 程序运行后的输出结果是。 D A、1,10 B、10,1 C、12,2 D、3,11 7、void fun ( char *p ) B { p++ ; *p=' a ' ; } main ( ) { char a[20]= " 13579 " ; fun ( a +1 ) ; fun( a + 3) ; printf ( " %s\n ", a ); } 程序运行后的输出结果是。 A、1a5a B、13a7a C、1a5a9 D、a3a79

C语言程序设计第二版第四章第七章课后答案

1、输入函数scanf的参数错误,应该为:scanf("%f",&k); 2、|1234 1234 | 3、ff10 4、1,3,1 5、原字符串左边加空格再加字符串本省,字符个数总和为5个 6、scanf("%d,%d,%c,%c",&a1,&a2,&c1,&c2); 7、 printf("a+b=%d\n",a+b); printf("a-b=%d\n",a-b); printf("a*b=%d\n",a*b); printf("a/b=%d\n",a/b); printf("(float)a/b=%f\n",(float)a/b); printf("a%b=%d\n",a%b); 8、 void main() { float r; float s,c; printf("please input the number:"); scanf("%f",&r); if(r>=0) { s = 3.14*r*r; c = 2*3.14*r; printf("s = %f, c = %f\n",s,c); } else printf("you input number is error!"); } 9 void main() {int n; printf("please input the number:"); scanf("%d",&n); if(n>=100 && n <= 999) printf("%d%d%d",n%10,(n/10)%10,n/100); else printf("you input number is error!"); } 10、 void main() { int i,j,k; scanf("%d,%d,%d",&i,&j,&k); ((i%2 != 0?1:0) + (j%2 != 0?1:0)+(k%2 != 0?1:0)) == 2?printf("YES\n"):printf("NO\n"); } 11、 void main()

c语言第七章习题

第七章结构体 一、选择题 1、若有语句:char s1[]="string",s2[8],*s3,*s4="string2";则对库函数strcpy的错误调用是()A)strcpy(s1,"string2"); B)strcpy(s4,"string1"); C)strcpy(s3,"string1"); D)strcpy(s1,s2); 2、下面程序的运行结果是() fun(int **a,int p[2][3]) {**a=p[1][1];} main() {int x[2][3]={2,4,6,8,10,12},*p;p=(int *)malloc(sizeof(int));fun(&p,x);printf("%d\n",*p);} A)10 B)12 C)6 D)8 3、以下scanf函数调用语句中对结构体变量成员的不正确引用是()。 struct pupil { char name[20]; int age; int sex;} pup[5],*p; p=pup; A)scanf("%s",pup[0].name); B)scanf("%d",&pup[0].age); C)scanf("%d",&(p->sex)); D)scanf("%d",p->age); 4、以下对结构体变量stul中成员age的非法引用是()。 struc student { int age; int num; }stul,*P; p=&stul; A)stul.age B)student.age C)p->age D)(*p).age 5、设有以下说明和定义语句,则下面表达式中值为3的是()。 struct s { int i1; struct s *i2;}; struct s a[3]={1,&a[1],2,&a[2],3,&a[0]},*ptr; ptr=&a[1]; A)ptr->i1++ B)ptr++->i1 C)*ptr->i1 D)++ptr->i1 6、若要利用下面的程序片段使指针变量p指向一个存储整型变量的存储单元,则《1》中应填入的内容是: int *p; p=《1》malloc(sizeof(int)); A)int B)int * C)(*int) D)(int *) 7、以下对C语言中共用体类型数据的叙述正确的是()。 A)可以对共有体变量名直接赋值B)一个共用体变量中可以同时存放其所有成员 C)一个共有体变量中不能同时存放其所有成员 D)共用体类型定义中不能出现结构体类型的成员 8、当说明一个共用体变量时系统分配给它的内存是()。

C语言 第七章课后答案

//7.1用筛选法求100之内的素数。#if 0 #include void main() { int i,k; for(i=0;i<100;i++) { k=i-1; while(k>0) { if(i%k==0) {break;} else {k--;} } if(k==1) { printf("%5d是素数\n",i); } } } #endif #if 0 //7.2 用选择法对10 个整数排序 #include void main() { int i,j,t,min; //int a[10]; // for(i=0;i<10;i++) // { // printf("a[%d]=",i); // scanf("%d",&a[i]); // } /// printf("\n");

int a[10] = {5,3,7,6,4,9,10,8,2,1}; for(i=0;i<=9;i++) { min=i; { for(j=i+1;j<=10;j++) if(a[min]>a[j]) { min=j; t=a[i]; a[i]=a[min]; a[min]=t; } } } printf("10个数由小到大排序"); for(i=0;i<10;i++) { printf("%5d",a[i]); } printf("\n"); } #endif #if 0 //7.3 求一个3x3的整型矩阵对角线元素之和#include void main() { int i,j,sum=0,sum1=0; int a[3][3]={{1,2,5},{45,56,3},{12,45,67} }; printf("输出矩阵:\n");

C语言 第七章 函数

C语言函数实验 【试验目的】 1、掌握C语言中函数定义、调用函数的方法。 2、掌握函数形参与实际参数的参数传递关系。 【试验内容】 1、以下程序的输出结果是()。 #include double f(int n) { int i; double s=1.0; for(i=1;i<=n;i++) s+=1.0/i; return s; } int main() { int i; double a=0.0; double f(int n); for(i=0;i<3;i++) a+=f(i); printf("a=%f\n",a); return 0; } 2、以下程序输出结果是()。 #include int fun(int b) { int d=5; d+=b++; printf("d1=%d\n",d); } int main() {

int a=2,d=3; int fun(int b); fun(a); d+=a++; printf("d2=%d\n",d); return 0; } 3、以下程序输出结果是()。#include int f(int g) { switch(g) { case 0: return 0; case 1: case 2: return 1; } return (f(g-1)+f(g-2)); } int main() { int k; int f(int g); k=f(5); printf("k=%d\n",k); } 4、以下程序的输出结果是()。#include int fun(int n) { int s; if(n==0) s=7; else s=n+fun(n-1); return s; } int main() { printf("%d\n",fun(3)); return 0; }

c语言第七章课后题

一、第七章习题7(p184-p187),全做,中选做两道,要求给出程序执行结果。7-1、 #include <> int Square(int i) { return i*i; } int main() { int i=0; i=Square(i); for(; i<3;i++) { static int i=1; i+=Square(i); printf("%d,",i); } printf("%d\n",i); return 0; } 结果: 结果分析: 开头定义square()函数 功能:计算一个数的平方 入口参数:整数x 返回值:i*i 主函数:i=0;进入循环: 静态变量i=1; i=i+square(1)=2; 输出 2; 循环变量i=0+1=1; i=1<3 成立

int i; second=0; for(i=0;i<1000000;i++) { update(); /*利用循环控制时钟运行时间*/ display(); /*显示时,分,秒*/ delay(); /*模一尺时间为1秒*/ } return 0; } 结果: 自动跳出时间 7-3、 #include <> /*max()函数 功能:找两个数的最大值 入口参数:两个整数a,b 返回值:两数的最大值 */ int max(int a, int b) { int max=0; max = (a>b)a:b; return max; }

void main() { int x=0; /*输入的两个数x,y*/ int y=0; int m=0; /*m用于接收max()函数的返回值*/ printf("input two integer numbers:"); scanf("%d,%d",&x,&y); m=max(x,y); printf("the max number is %d\n",m); } 结果: 7-4 #include <> /*LCM()函数 功能:计算两个整数的最小公倍数 入口参数:两整数a,b 返回值:最小公倍数 */ int LCM(int a,int b) { int i=0; /*循环变量*/ int min=0; /*循环寻找范围的最小值*/ int max=0; /*循环寻找范围的最大值*/ min = (a>b)a:b; /*最小值为a,b中的最大值*/ max = a*b; /*最大值为a*b*/ for (i=min; i<=max; i++) { if(i%a==0 && i%b==0) return i;

C语言课后习题答案

第四章选择结构 4.22 #include main() { int y0,m0,d0,y1,m1,d1,age; printf("please input your birthday(yyyy-mm-dd):\n"); scanf("%d-%d-%d",&y0,&m0,&d0); printf("please inpur current day(yyyy-mm-dd):\n"); scanf("%d-%d-%d",&y1,&m1,&d1); age=y1-y0; if(m1 main() { int i; printf("input a integer:\n"); scanf("%d",&i); if(i%2==0)printf("%d is a even\n",i); else printf("%d is a odd\n",i); } 4.24 #include main() { int a,b,c,max=0; printf("input 3 numbers:\n"); scanf("%d%d%d",&a,&b,&c); max=a; if(a main() { float x,y; scanf("%f",&x); if(x>-5&&x<0)printf("y=%f",x); if(x==0)printf("y=%f",x-1); if(x>0&&x<10)printf("y=%f",x+1); if(x<=-5||x>=10)printf("error"); }

小甲鱼C语言第七章 函数

第七章函数 如果有人问你,这个地球上什么动物最聪明?我想不会有其他答案,这个地球上人类是最聪明的。我们去百度一下“人类”,会发现百度百科中是这样描述人类的:人的总称,是地球上一中相比较来说比较高智慧的生物,可以说是地球至今的统治者。《现代汉语词典》对人的解释是:能制造工具、并且能够熟练使用工具进行劳动的高等动物。 《现代汉语词典》中对人类的解释离不开“工具”这个词。我们人类的祖先在使用天然工具的过程中,逐渐学会了如何制造工具。工具是什么呢?工具往往具有某些特定的作用、可以实现某种功能。比如打火机,可以用于打火,当我们想抽烟的时候,只需要轻轻的按一下打火机就可以了,而不需要钻木取火,如果现在还有人钻木取火的话,除非那个人是想实验一下钻木取火的真实性,否则为了帮助这个社会,我们就可以打电话通知精神病院了。 工具简化了我们的生活,也丰富了我们的生活。当我们需要实现某种功能的时候,只需要把对应的工具拿过来使用就好了。C语言中也提供了这种使用某种“工具”来处理特定问题的方法,称之为函数。 7.1 函数概述 有些人在看到本章的标题的时候可能就会惊呼:我函数学的最差了!!我最讨厌函数了!!。没错,数学中的函数的确很讨厌(针对我个人来说),我也很不喜欢它。但是不要担心,这里不会讲数学中的函数,更不会告诉你一次函数和二次函数的差别。我们这里讲的是计算机语言中的函数。 函数,在有些语言当中也称为方法。要说计算机语言中的函数和数学中的函数完全不一样吗?其实也不然,在计算机语言当中,函数就是具有特定功能的“工具”。像我们目前使用过的printf函数和scanf函数,前者用于输出,后者用于输入。还有我们每次编写代码都会使用的main函数。只不过printf和scanf函数是C语言提供的,我们只需要会用就行了,而main函数的功能是我们自己编写的。 为了更好的理解函数的概念,我举个例子来说。日常生活中我们经常会用到ATM自动取款机,这是一个非常方便的工具,我们平常只需要把钱存在卡里,需要的时候可以24小时去取款机中取钱,我想大家都应该有过去取款机取钱的经历,回想一下这个过程:走到取款机面前,我们要把卡放进去,然后取款机会提示输入密码,密码正确之后,选择取款,然后输入取款金额,取款机会把相应的钱吐出来,随后将会提示你是否打印凭条,打印完之后点击取款机屏幕上的退出,便可以取回自己的银行卡。 取款机实现了“自动取款”这个功能,在使用这个功能的时候,我们首先需要把卡放进取款机里,而且还要输入正确的密码,当密码正确之后,我们使用取款这个功能取得相应的钱。最后这个功能完成了,打印一张凭条,打印了此次取款的记录,最后把卡退还给用户。 那么自动取款机就可以说是一个函数,它具有取钱、存钱、转账等等功能,而且我们不需要知道这种功能是如何实现的,我们只需要会使用就可以了。 我们在C语言中也使用函数来实现某种特定的功能。C语言中函数分为两类,一类是库函数,一类是自定义函数。C语言有着丰富的库函数,这个库函数又是个啥子东西?C语言的语句十分简单,如果要使用C语言的语句来完成printf()和scanf()的功能,就需要编写颇为复杂的程序,因为C语言的语句中没有提供可以用于输出或输入的语句。又如为了显示一段文字,或者输入一段文字,我们可以直接使用printf和scanf函数,可以直接用于输出和输入,我们不必去关心这两个函数是如何实现输出和输入功能的。但是,C语言是不可

相关主题
文本预览
相关文档 最新文档