程序阅读课程训练.docx

上传人:b****6 文档编号:12878793 上传时间:2023-06-08 格式:DOCX 页数:17 大小:20.70KB
下载 相关 举报
程序阅读课程训练.docx_第1页
第1页 / 共17页
程序阅读课程训练.docx_第2页
第2页 / 共17页
程序阅读课程训练.docx_第3页
第3页 / 共17页
程序阅读课程训练.docx_第4页
第4页 / 共17页
程序阅读课程训练.docx_第5页
第5页 / 共17页
程序阅读课程训练.docx_第6页
第6页 / 共17页
程序阅读课程训练.docx_第7页
第7页 / 共17页
程序阅读课程训练.docx_第8页
第8页 / 共17页
程序阅读课程训练.docx_第9页
第9页 / 共17页
程序阅读课程训练.docx_第10页
第10页 / 共17页
程序阅读课程训练.docx_第11页
第11页 / 共17页
程序阅读课程训练.docx_第12页
第12页 / 共17页
程序阅读课程训练.docx_第13页
第13页 / 共17页
程序阅读课程训练.docx_第14页
第14页 / 共17页
程序阅读课程训练.docx_第15页
第15页 / 共17页
程序阅读课程训练.docx_第16页
第16页 / 共17页
程序阅读课程训练.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

程序阅读课程训练.docx

《程序阅读课程训练.docx》由会员分享,可在线阅读,更多相关《程序阅读课程训练.docx(17页珍藏版)》请在冰点文库上搜索。

程序阅读课程训练.docx

程序阅读课程训练

程序阅读课程训练

要求:

⑴写出每个题程序的功能

⑵给程序每一行标上注释

⑶选择必要的测试数据

⑷写出程序的运行结果,并分析程序的正确性

⑸程序存在的问题,或修改程序的意见

第三章阅读程序练习

1.选择题

⑴以下说法正确的是()。

A.输入项可以为一个实型常量,如scanf("%f",3.5)

B.只有格式控制没有输入项也能进行正确输入,如scanf("%d")

C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f)

D.当输入数据时,必须指明变量的地址,如scanf("%f",&f)

⑵若x和y均定义为int型,z定义为double型,以下scanf()函数调用语句不合法的是()。

A.scanf("%d%lx,%le",&x,&y,&z);  B.scanf("%2d*%d%lf",&x,&y,&z);

C.scanf("%x%*d%o",&x,&y);        D.scanf("%x%o%6.2f",&x,&y,&z);

⑶字母a的ASCII码为97,则下列语句的运行结果为()。

chara='a';a--;printf("%d,%c\n",a+'2'-'0',a+'3'-'0');

A.b,cB.a--运算不合法,故有语法错

C.98,cD.格式描述和输出项不匹配,输出无定值

⑷有如下程序,输入数据12345678↙后,x的值是(①),y的值是(②)。

#include

main()

{intx;floaty;

scanf("%3d%f",&x,&y);

}

①A.12345B.123C.45D.345

②A.45.000000B.45678.000000C.678.000000 D.123.000

⑸若k1,k2,k3,k4均为int型变量,为了将整数10赋给k1和k3,将整数20赋给k2和k4,则对应以下scanf()函数调用语句的正确输入方式是()。

scanf("%d%d",&k1,&k2);

scanf("%d,%d",&k3,&k4);

A.1020

B.1020

C.10,20

D.1020

1020

1020

10,20

10,20

⑹if后面的逻辑表达式之值()。

A.只能是0或1B.只能是正整数或负整数

C.只能是整型或字符型数据D.可以是任何类型的数据

⑺下列程序的输出结果是()。

main()

{inti=1,j=2,k=3;

if(i++==1&&(++j==3‖k++==3))printf("%d%d%d\n",i,j,k);

}

A.123B.234C.223D.233

⑻以下不正确的if语句是()。

A.if(x>y);B.if(x=y)&&(x!

=0)x+=y;

C.if(x!

=y)scanf("%d",&x);D.if(x

elsescanf("%d",&y);

⑼执行下列程序,输入为1的运行结果是(①),输入为3的运行结果是(②)。

#include

main()

{intk;

scanf("%d",&k);

switch(k)

{case1:

printf("%d",k++);break;

case2:

printf("%d",k++);

case3:

printf("%d",k++);break;

case4:

printf("%d",k++);

default:

printf("Full!

\n");

}

}

①A.1B.2C.2345D.1234

②A.3B.4C.34D.45

⑽以下程序的运行结果是()。

#include

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:

a++;break;

case1:

b++;break;

}

case2:

a++;b++;break;

}

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

}

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

⑾下列叙述中正确的是()。

A)break语句只能用于switch语句

B)在switch语句中必须使用default

C)break语句必须与switch语句中的case配对使用

D)在switch语句中,不一定使用break语句

⑿设变量x和y均已正确定义并赋值。

下列if语句中,在编译时将出错是()

A)if(x++);B)if(x>y&&y!

=0);

C)if(x>0)x--D)if(y<0){;}

elsey++;elsex++;

⒀语句while(!

e);中的条件!

e等价于()

A.e==0B.e!

=1C.e!

=0D.~e

⒁下面有关for循环的正确描述是()。

A.for循环只能用于循环次数已经确定的情况

B.for循环是先执行循环体语句,后判定表达式

C.在for循环中,不能用break语句跳出循环体

D.for循环体语句中,可以包含多条语句,但要用花括号括起来

⒂C语言中()。

A.不能使用do-while语句构成的循环

B.do-while语句构成的循环必须用break语句才能退出

C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环

D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环

⒃C语言中while和do-while循环的主要区别是()。

A.do-while的循环体至少无条件执行一次

B.while的循环控制条件比do-while的循环控制条件严格

C.do-while允许从外部转到循环体内

D.do-while的循环体不能是复合语句

⒄以下程序段()。

intx=-1;

do

{x=x*x;}while(!

x);

A.是死循环      B.循环执行二次

C.循环执行一次           D.有语法错误

⒅下列语句段中不是死循环的是()。

A.i=100;

while

(1)

{i=i%100+1;if(i==20)break;}

B.for(i=1;;i++)sum=sum+1;

C.k=0;

do{++k;}while(k<=0);

D.s=3379;

while(s++%2+3%2)s++;

⒆与以下程序段等价的是()。

while(a)

{if(b)continue;

c;}

A.while(a)B.while(c)

{if(!

b)c;}{if(!

b)break;c;}

C.while(c)D.while(a)

{if(b)c;}{if(b)break;c;}

⒇以下程序的输出结果是()。

#include

main()

{inti;

for(i=4;i<=10;i++)

{if(i%3==0)continue;

printf("%d",i);}

}

A.45B.457810C.69D.678910

2.阅读下列程序,给出程序的执行结果

⑴main()⑵main()

{floatf=3.5;{charc;

printf("%f,%g",f,f);scanf("%3c",&c);

}printf("c=%c\n",c);}

⑶main()⑷main()

{inta=3,b=4,c=5,t=99;{ints=1,t=1,a=5,b=2;

if(b0)s++;

{t=a;a=c;c=t;}if(a>b)t+=s;

if(a

{t=b,b=a,a=t;}elset=2*s;

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

⑸main()⑹main()

{inti,j,k;{intk=2;

for(i=1;i<=6;i++)switch(k)

{for(j=1;j<=20-3*i;j++){case1:

printf("%d",k++);

printf("");case2:

printf("%d",k++);

for(k=1;k<=i;k++)case3:

printf("%d",k++);

printf("%3d",k);case4:

printf("%d",k++);

for(k=i-1;k>0;k--)break;

printf("%3d",k);default:

printf("Full!

\n");

printf("\n");}

}printf("\n");

}}

⑺main()⑻main()

{inti=1,s=3;{inti,j;

do{s+=i++;for(i=4;i>=1;i--)

if(s%7==0)continue;{printf("*");

else++i;for(j=1;j<=4-i;j++)

}while(s<15);printf("*");

printf("%d\n",i);printf("\n");}

}}

⑼main()⑽main()

{inti,j,k;{ints=0,k;

for(i=1;i<=4;i++)for(k=7;k>=0;k--)

{for(j=1;j<=20-3*i;j++)printf("");{switch(k)

for(k=1;k<=2*i-1;k++){case1:

printf("%3s",’*’);case4:

printf("\n");}case7:

s++;break;

for(i=3;i>0;i--)case2:

{for(j=1;j<=20-3*i;j++)printf("");case3:

:

for(k=1;k<=2*i-1;k++)case6:

break;

printf("%3s","*");case0:

printf("\n");case5:

s+=2;break;}

}}

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

第四章阅读程序练习

1.选择题:

(1)有如下说明

inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

则数值为9的表达式是

A)*p+9B)*(p+8)

C)*p+=9D)p+8

(2)若有以下调用语句,则不正确的fun函数的首部是

main()

{…

inta[50],n;

fun(n,&a[9]);

}

A)voidfun(intm,intx[])

B)voidfun(ints,inth[41])

C)voidfun(intp,int*s)

D)voidfun(intn,inta)

(3)执行下面的程序段后,变量k中的值为

intk=3,s[2];

s[0]=k;k=s[1]*10;

A)不定值B)33C)30D)10

(4)以下函数返回a所指数组中最大值所在的下标值

fun(int*a,intn)

{inti,j=0,p;

p=j;

for(i=j;i

if(a[i]>a[p])_________;

return(p);

}

在下划线处应填入的内容是

A)i=pB)a[p]=a[i]

C)p=jD)p=i

(5)下列程序的运行结果是

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

printf("%d%d",a,b);

}

A)63B)36C)编译出错D)00

(6)有以下语句,则对a数组元素的引用不正确的是(0≤i≤9)

inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;

A)a[p-a]B)*(&a[i])

C)p[i]D)*(*(a+i))

(7)定义如下变量和数组:

intk;

inta[3][3]={9,8,7,6,5,4,3,2,1};

则下面语句的输出结果是

for(k=0;k<3;k++)printf("%d",a[k][k]);

A)753B)951

C)963D)741

(8)有两个字符数组a、b,则以下正确的输入语句是_______.

A)gets(a,b);B)scanf("%s%s",a,b);

C)scanf("%s%s",&a,&b);D)gets("a"),gets("b");

(9)下面程序段的运行结果是_________.

chara[7]="abcdef";

charb[4]="ABC";

strcpy(a,b);

printf("%c",a[5]);

A)空格B)\0C)eD)f

(10)判断字符串s1是否大于字符串s2,应当使用_______.

A)if(s1>s2)B)if(strcmp(s1,s2))

C)if(strcmp(s2,s1)>0)D)if(strcmp(s1,s2)>0)

2.填空题

(1)该程序运行的结果是_________。

#include

#include

#defineM100

voidfun(intm,int*a,int*n)

{inti,j=0;

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

if(i%7==0||i%11==0)

a[j++]=i;

*n=j;

}

main()

{intaa[M],n,k;

clrscr();

fun(10,aa,&n);

for(k=0;k

if((k+1)%20==0)printf("\n");

elseprintf("%4d",aa[k]);

printf("\n");

}

(2)下面程序以每行4个数据的形式输出a数组,请填空。

#defineN20

main()

{inta[N],i;

for(i=0;i

for(i=0;i

{if(_____________)_____________

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

}

printf("\n");

}

(3)下面程序可求出矩阵a的主对角线上的元素之和,请填空。

main()

{inta[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;

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

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

if(_____)sum=sum+_______;

printf("sum=%d\n",sum);

}

(4)当从键盘输入18并回车后,下面程序的运行结果是________.

main()

{intx,y,i,a[8],j,u,v;

scanf("%d",&x);

y=x;i=0;

do

{u=y/2;

a[i]=y%2;

i++;y=u;

}while(y>=1);

for(j=i-1;j>=0;j--)

printf("%d",a[j]);

}

(5)下面程序的运行结果是________.

#include

main()

{chars[]="ABCCDA";

intk;charc;

for(k=1;(c=s[k])!

='\0';k++)

{switch(c)

{case'A':

putchar('%');continue;

case'B':

++k;break;

default:

putchar('*');

case'C':

putchar('&');continue;

}

putchar('#');

}

}

(6)阅读下列程序为当运行函数时数输入asdafaaz67,则输出为

#include

#include

#include

intfun(char*str)

{inti,j=0;

for(i=0;str[i]!

=′\0′;i++)

if(str[i]!

=′′)str[j++]=str[i];

str[j]=′\0′;

}

main()

{charstr[81];

intn;

clrscr();

printf("Inputastring:

");

gets(str);

puts(str);

fun(str);

printf("%s\n",str);

}

(7)下面函数的功能是将一个字符串的内容颠倒过来,请填空。

voidfun(charstr[])

{inti,j,__________;

for(i=0,j=_________;i

{k=str[i];

str[i]=str[j];

str[j]=k;

}

}

3.读程序写结果

(1)下列程序执行后的输出结果是

voidfunc(int*a,intb[])

{b[0]=*a+6;

}

main()

{inta,b[5];

a=0;b[0]=3;

func(&a,b);

printf("%d\n",b[0]);

}

(2)下列程序执行后的输出结果是

main()

{inta[3][3],*p,i;

p=&a[0][0];

for(i=1;i<9;i++)p[i]=i+1;

printf("%d\n",a[1][2]);

}

(3)以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序,程序运行后的输出结果是

voidsort(inta[],intn)

{inti,j,t;

for(i=0;i

for(j=i+1;j

if(a[i]

{t=a[i];a[i]=a[j];a[j]=t;}

}

main()

{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;

sort(&aa[3],5);

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

printf("%d,",aa[i]);

printf("\n");

}

(4)下面程序的运行结果是________.

#include

main()

{charstr[]="SSSWLIA",c;

intk;

for(k=2;(c=str[k])!

='\0';k++)

{switch(c)

{case'I':

++k;break;

case'L':

continue;

default:

putchar(c);continue;

}

putchar('*');

}

}

(5)以下程序运行后的输出结果是

voidss(char*s,chart)

{while(*s)

{if(*s==t)*s=t-'a'+'A';

s++;

}

}

main()

{charstr1[100]="abcddfefdbd",c='d';

ss(str1,c);printf("%s\n",str1);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2