C语言课堂练习习题集(4)

2019-08-30 21:34

{ a[k]=a[k-1];

k=k-l;}

a[k]=______;} 5.已知e=l++

1!112!+

13!+?+

1n!,试用此公式求e的近似值,要求累加所有不小于1e-6的项值,

请在程序中下划线处填上合适内容,完成程序功能。 #include main()

{ int i; float e,n; e=1.0;i=1; n=1.0;

while(______)

{ n=1.0 / tun(i);i++;

e+=n; } } fun(int i)

{ int j,k; k=l;

for(j=1; ____;++j) k=k*j;

return(k); }

6. 下面程序可从键盘上输入一个大于0且小于1000的整数,然后输出此整数的所有整数因子。如:输入12,输出l,2,3,4,6,12。请在下划线处填上合适的内容,完成该程序。 16

main()

{int a,k;

scanf(”%d,&a); if((a>0)&&(a<1000)) {printf(\%d\,a); for(k=1; ;++k)

if(______)printf(\%d\,k);} }

7. 现有一等差数列,已知第一项a=1,公差b=4,下面程序的功能是输出满足前n项之和小于100的n最大值,请填空完成该程序。 #include main()

{ int a=1,b=4,sum=1,n=1; while(______) { a=a+b; sum=sum+a; n++; }

printf(\%d\,n-1); }

8.以下程序的输出结果是______。 #incude main()

{ int i;

for(i=0;i<=20;i=i+5) switch(i/5)

{case 0:printf(\;break; case 1:printf(\;break; case 2:printf(\; default:printf(\;}}

9.已知一正整数递增等差数列前5项之和为25,之积为945,根据以上条件,要求编写以下程序,输出该数列的前十项,请完成该程序。 #include main()

{ int x,y,z,i,a,b; for(x=1;x<30;x++) for(y=1;y<=5;y++) {a=0;b=1;z=x;

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

{a=a+z;b=b*z;z=z+y;} if(a= =25&&b= =945) for(i=0;i<10;i++)

printf(\%4d\,______);} }

10. 下面程序的功能是求1到1000之间能同时被3,5,7整除的数,按每行十个数的格式输出这些数,请完成该程序。 #include main()

{ int i=1,j=0;

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

17

{if(____){pfintf(\%4d\,i);j=j+1;}

if(j= =10){printf(\;j=0;} } }

11.下面程序的功能是:从键盘上输入一个五位整数,对此整数中的五个数值(即万位,千位,百位,十位,个位上的数字)进行从大到小的排序,形成一个新的五位整数,输出这个整数。如输入12435,则输出54321。请完成该程序。 #include main()

{ long int x,y; int i,a[5];

scanf(\%1d\,&x);

if((x<10000)||(x>99999))

{printf(\; exit(0);}

for(i=0;i<5;++i) {a[i]=x%10; x=x/10;} fun(a); y=0;

for(i=0;i<5;++i) y=y*10+a[i];

printf(\%1d\,y);} fun(int a[])

{ int i,j,k; for(i=0;i<5;++i) for(j=i;j<5;++j) if(______) {______; a[i]=a[j];

a[j]=k; } }

12.下面程序的功能是求500以内的所有完全数,请填空(说明:一个数如果恰好等于它的因子(自身除外)之和,则称该数为完全数,如6=1+2+3,则6是完全数)。 #include main()

{ int i,sum,a=2; do

{i=1;sum=0; do

{if(a%i= =0)______

i++;} while(i<=a/2);

if(sum==a) printf(\%d\,______);

a++;}while(a<500); }

第七章 数组 单项选择题 1.请读程序: 18

#include main()

{int n[2],i,j,k;

for(i=0;i<2;i++) n[i]=0; k=2;

for(i=0;i

for(j=0;j

A)不确定的值 B)3 C)2 D)1 2.下列四个选项中,正确的数组定义是。

A)int 3a[3]; B)int i;scanf(\%d\,&i);char ch[i]; C)#define MAX l0 D)#define MAX l0.0 int a[MAX] int a[MAX]; 3.下列数组的定义中,会产生错误的是

A)int a[10]={'0','1','2','3','4','5','6','7','8','9'}; B)int a[10]={0,1,2,3,4,5,6,7,8,9}; C)char a[5]=\;

D)char a[5]={'H','e','l','l','o'}; 4. 若有以下的程序,请问执行后的输出结果是。

main()

{ int i=0;

int a[3][3]={'0','1','2','3','4','5','6','7','8','9'};

for(i=0;i<3;i++) printf(\%d\,a[i][1]); } A)50,53,56 B)49,52,55 C)2,5,8 D)1,4,7 5.阅读下列程序:

main()

{int n[3],i,j,k=2;

for(i=0;i

printf(\%d\,n[0]);} 上述程序运行后,输出结果是。 A)2 B)1 C)0 D)3

6.下列有关字符数组与字符串的说法中正确的是

A)字符数组中存放的一定是—个字符串

B)所有的字符数组都可以被当作字符串处理

C)对存放字符串的字符数组可以象一般数组一样对数组中的单个元素进行操作 D)一个字符数组可以认为就是一个字符串 7.下列对字符串的说法中,错误的是 A)字符串就是一个字符数组 B)字符串可以整体输入输出 C)字符串可以比较大小

D)存储字符串所需的内存空间等于字符串的长度 8.有以下程序:

#include main()

{ char a[4];

scanf(\%c,%c,%c\,&a[0],&a[1],&a[2]); printf(\%s\,a); }

现若从键盘上输入abc,则输出是

A)abc B)ABC C)无特定值 D)程序出错,不能通过编译 9.已知有如下说明: int i,j;

char a[3][4][5],b[3][4][5];

现数组b已赋值,则不能将数组b中所有元素的值赋给数组a的选项是。 A) for(i=0;i<3;i++) B)for(i=2;i>=0;i--) for(j=0;j<4;j++) for(j=3;j>=0;j--) for(k=0;k<5;k++) for(k=4;k>=0;k--)

a[i][j][k]=b[i][j][k]; a[i][j][k]=b[i][j][k];

C)for(i=0;i<3;i++) D)for(i=2;i>=0;i--) for(j=4;j>0;j--) for(j=3;j>=0;j--) for(k=0;k<5;k++) for(k=0;k<5;k++)

a[i][j][k]=b[i][j][k]; a[i][j][k]=b[i][j][k]; 10.若有说明:int a[ ][4]={1,2,3,4,5,6,7,8,9},则数组第一维的大小为。 A)2 B)3 C)4 D)不确定的值

11 .若数组a有m列,则ali][j]之前的数组元素个数为。 A)(i-1)*(i-1) B)i*m+j+1 C)i*m+j-1 D)i*m+j

19

12 .下面是对数组s的初始化,其中不正确的是。

A)char s[ ]=\; B)char s[5]={1,2,3,4,5};

C)char s[5]={'a','b','c','d','e'}; D)char s[5]=\; 13 .有以下程序片段,请问执行后的输出结果是 char a[6]={'a','b','c','\\0','d','e'}; printf(\%s\,a);

A)abc B)abcde C)abcde D)出错,无输出结果 填空题

1.若有以下定义:int a[9];,则数组a元素下标的上限为______,下限为______.

2.下面的findmax函数返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空:

findmax(int s[ ],int t) {int k,p;

for(p=0,k=p;ps[k])______; return k; }

3.构成数组的各个元素必须具有相同的______。 4.以下程序的输出结果为______。 #include main()

{ int i,j,il=0,jl=0,m; static int s[3][3]={{101,202,303}, {28,78,38},{85,20,89} }; 20

m=s[0][0];

for(i=0;i<3;i++) for(j=0;j<3;j++)

if(s[i][j]

#include main()

int a[10],s,i,j=0,k=0;scanf(\%d\,&s);

while(s>-1) { a[++k]=s;scanf(\%d\,&s); } for(i=1;i<=k;i++) if(a[i]%2= =0)a[j++]=a[i]; for(i=0;i 10 5 14

-1

则程序的输出结果是______

6.有以下程序,其功能是对数组中的数据由小到大进行排序,最后输出排序后的数组内容。 请在下划线处填上正确的内容,以实现程序功能。 #include main()


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

下一篇:吉林大学组合数学习题解答

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

马上注册会员

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