C语言各章练习题(4)

2019-01-07 18:59

while ((ch = getchar()) != '\\n') if (ch >= '0'&&ch <= '7') a[ch - '0']++; for (i = 0; i<8; i += 2) printf(\}

a[0],1 a[2],2 a[4],2 a[6],2 【程序2】

#include main() { int y[2][3] = { 9, 8, 7, 6, 5, 4 }; int m[2], k, j; for (k = 0; k<2; k++) { m[k] = y[k][0]; for (j = 1; j<3; j++) if (y[k][j]

四、程序设计

1. 将一个字符串中的所有数字字符组合成一个整数(如“a1bc23d4”,组合成整数1234)。

#include if(n[i]>='0' &&n[i]<='9') void main() { j=n[i]-'0'; { m=m*10+j; char n[20]; } int m=0,i,j; printf(\ gets(n); for(i=0;n[i]!='\\0';i++) }

2. 将输入的十进制数转换为二进制数输出。 #include n=n/2; void main() } { for(i--;i>=0;i--) int i,n,a[20]; printf(\ scanf(\ printf(\ for(i=0;n!=0;i++) } { a[i]=n%2;

16/28

3. 计算200以内的其平方具有回文性质的正整数输出。例如11^2=121,111^2=12321都是

满足条件的正整数。 #include n=n/10; void main() } { for(k=0;k<=(j-1)/2;k++) int i,j,k,n,a[20]; if(a[k]!=a[j-1-k]) break; for(i=0;i<=200;i++) if(k>(j-1)/2) { n=i*i; printf(\ for(j=0;n!=0;j++) } { a[j]=n; }

第六章 函数

一、选择题:

1. 在C程序中,若对函数类型未加说明,则函数的隐含类型为( A )

A、int B、double C、void D、char 2. C语言中的函数( D )

A、可以嵌套定义 B、不可以嵌套调用 C、可以嵌套定义,但不能递归调用 D、嵌套调用和递归调用都可以 3. C语言auto型变量是( A )

A、存储在动态存储区中 B、存储在静态存储区中 C、存储在外存储器中 D、存储在计算机CPU的寄存器中 4. 有以下函数定义:

void fun( int n, double x) { …………} 下面函数调用正确的是( A ) A、fun( x, n) B、k=fun(10,12.5) C、fun(int x, double y) D、void fun(n, x) 5. 有以下程序

int f1(int x,int y){return x>y?x:y;} int f2(int x,int y){return x>y?y:x;} main()

{ int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f;

printf(\}

程序运行后的输出结果是 ( A ) A、4,3,7 B、3,4,7 C、5,2,7 D、2,5,7 6. 以下叙述中错误的是 ( C )

A、对于double类型数组,不可以直接用数组名对数组进行整体输入或输出 B、数组名代表的是数组所占存储区的首地址,其值不可改变

C、当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”

的出错信息

17/28

D、可以通过赋初值的方式确定数组元素的个数 7. 有以下程序

#define N 20

fun(int a[],int n,int m) { int i,j;

for(i=m;i>=n;i--) a[i+1]=a[i];

} main()

{ int i,a[N]={1,2,3,4,5,6,7,8,9,10}; fun(a,2,9);

for(i=0;i<5;i++) printf(\}

程序运行后的输出结果是( C ) A、10234 B、12344 8. 有以下程序

int a = 2; int f(int n)

{ static int a = 3; int t = 0; if (n % 2){ static int a = 4; t+=a++; } else { static int a = 5; t+=a++; } return t+a++; }

main()

{ int s = a, i; for (i = 0; i<3; i++) s += f(i); printf(\}??

程序运行后的输出结果是 ( C ) ?? A、26 B、28 9. 有以下程序

void sum(int a[])

{ a[0] = a[-1] + a[1]; } main()

{ int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; sum(&a[2]); printf(\}

??程序运行后的输出结果是( A ) ?? A、6 B、7 10. 有以下程序

18/28

C、12334 C、29 C、5 D、12234

D、24

D、8

int f(int a)

{ return a%2; } main()

{ int s[8]={1,3,5,2,4,6},i,d=0; for (i=0;f(s[i]);i++) d+=s[i]; printf(\}

程序运行后的输出结果是( A ) A、9 B、11

C、19 D、21

二、程序填空

下面程序实现删除字符串中某个字符,请将程序补充完整。

# include < stdio.h>

char s[] = \void main()

{ void sdelete (char s[] , char c);

char c =','; //这里说的是可以删除的字符,这里删除的是“,”,可以更改 printf(\ sdelete( s,c ); printf(\ }

void sdelete (char s[] , char c)

{ int i,j;

for(i=j=0;s[i]!= '\\0'; ++i) if (s[i]!= c)

s[j++]=s[i] ; s[j]=?\\0? ; }

三、写出程序运行的结果:

【程序1】以下程序运行后的输出结果是:

#include\

int f(int c)

{ static int a=10;

int b=++a;

printf(“%d,%d,%d\\n”,a,b,c); return (a+b+c); }

main()

{ printf(\11,11,5 12,12,27 51

19/28

【程序2】以下程序运行后的输出结果是:

#include\int fun( int n) { if(n<10)

return n;

else return (n)*fun(n/10);

}

main()

{ printf(\16

//将218给n,n=218,n>10,所以(218)*fun(218/10)=8*fun(22) fun(22),n=22>10,所以(22)*fun(22/10)=2*fun(2) fun(2),n<10,所以返回n,8*2=16

【程序3】以下程序运行后的输出结果是:

int w=2; int f(int x) { int y=1;

static int z=3; y++;z++;

return(x+y+z); }

main() { int k;

for(k=0;k<3;k++)

printf(\}

8 10 12

【程序4】以下程序运行后的输出结果是:

#include long fun( int n) { long s;

if( n== 1|| n==2) s=2; else s=n+ fun(n-1);

return s; }

void main ( )

{ printf(\ 14

【程序5】以下程序运行后的输出结果是:

void swap(int x,int y)

20/28


C语言各章练习题(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:思想政治工作先进个人申报材料

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: