程序阅读课程训练.docx
- 文档编号:12878793
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:17
- 大小:20.70KB
程序阅读课程训练.docx
《程序阅读课程训练.docx》由会员分享,可在线阅读,更多相关《程序阅读课程训练.docx(17页珍藏版)》请在冰点文库上搜索。
程序阅读课程训练
程序阅读课程训练
要求:
⑴写出每个题程序的功能
⑵给程序每一行标上注释
⑶选择必要的测试数据
⑷写出程序的运行结果,并分析程序的正确性
⑸程序存在的问题,或修改程序的意见
第三章阅读程序练习
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;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 阅读 课程 训练