2023年顺序结构程序设计练习题1.pdf
C语言练习题总汇 一、单选题:【顺序结构程序设计】1己知 int k,m=1;执行语句 k=-m+;后 k 的值是(A)。(提示:负号与自加运算符同级,结合方向从右向左)A)-1 B)0 C)1 D)2 2若有定义 int x=4;则执行语句 x+=x*=x+1;后,x 的值为(C)。A)5 B)20 C)40 D)无答案 3若有定义:float a=,b=,c=;则表达式 1/2*(a+b+c)的值为(C)。A)B)6 C)D)无答案 4以下程序段的输出结果是(C)。(提示:a 当约束过严时,约束失效。按自由格式输出。)int a=1234;printf(%2dn,a);A)12 B)34 C)1234 D)提示出错,无结果 5.下列程序段的输出结果是(C)。int a=1234;float b=;double c=;printf(%2d,%,%,a,b,c);A)无输出 B)12,C)1234,D)1234,6.设 x,y均为整型变量,且 x=8,y=5,则以下语句的输出结果是(D)。printf(%d,%dn,x-,+y);A)8,5 B)7,5 C)7,6 D)8,6 7.以下程序的输出结果是(A)。int main()int a=20,b=10;printf(%d,%d n,a+b,a-b);A)30,%d B)30,10 C)30,%10 D)以上答案均不正确 (%d中第一个%后面的表示字符)8下列程序的运行结果是(A)。int main()float x=;int y;y=(int)x;printf(x=%f,y=%d,x,y);A)x=,y=2 B)x=,y=2 C)x=2,y=2 D)x=,y=9.以下程序的输出结果是(A)。int main()char c=z;printf(%c,c-25);A)a B)z C)z-25 D)y (字母共有 26 个,而 z 是最后一个)10下面程序的输出结果是(C)。int main()束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值 double d=;int x=,y;y=(x+/;printf(%dn,d*y);A)3 B)C)0 D)11.下面程序的输出结果是(C)。(提示:输出时无定界符)int main()int k=17;printf(%d,%o,%x n,k,k,k);A)17,17,17 B)17,021,0 x11 C)17,21,11 D)17,0 x11,021 12下列程序执行后的输出结果是(C)。int main()char x=OxFFFF;printf(%dn,x-);A)-32767 B)FFFE C)-1 D)=-32768 (abrehiyboun);的输出结果是(C)。A)abrehiybou B)abrehiybou C)rehiyou D)abrehiybou 14有定义语句:int x,y;若要通过 scanf(%d,%d,&x,&y);语句使变量 x 得到数值 11,变量 y 得到数值 12,下面四组输入形式中错误的是(A)。A)1112 B)11,12 C)11,12 D)11,12 束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值15有以下程序段:int m=0,n=0;char c=a;scanf(%d%c%d,&m,&c,&n);printf(%d,%c,%dn,m,c,n);若从键盘上输入:10A10,则输出结果是(A)。A)10,A,10 B)16,a,10 C)10,a,0 D)10,A,0 16.若变量已正确说明为 int类型,要通过语句 scanf(%d%d%d,&a,&b,&c);给 a 赋值 1,b 赋值 2,c 赋值 3,不正确的输入形式是(B)。A)123 B)1,2,3 C)123 D)123,b,c 被定义为 int 型变量,若从键盘给 a,b,c 输入数据,正确的输入语句是(D)A)input a,b,c;B)read(%d%d%d,&a,&b,&c);C)scanf(%d%d%d,a,b,c);D)scanf(%d%d%d,&a,&b,&c);18已知 a,b,c为 int 型变量,若从键盘输入:1,2,3,使 a 的值为 1,b 的值为 2,c 的值为 3,以下选项中正确的输入语句是(B)。A)scanf(%2d,%2d,%2d,a,b,c);B)scanf(%d,%d,%d,&a,&b,&c);C)scanf(%d%d%d,&a,&b,&c);D)scanf(i=%dj=%d,k=%d,&a,&b,&c);19.执行下程序时输入:123456789,输出结果是(D)。int main()char s;int c,i;束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值 scanf(%c,&c);scanf(%d,&i);scanf(%c,&s);printf(%c,%d,%cn,c,i,s);A)123,456,789 B)1,456,789 C)1,23,456,789 D)1,23,20.已定义 c 为字符型变量,则下列语句中正确的是(C)。A)c=97 B)c=“97“C)c=97 D)c=“a”21.以下程序的功能是:给r 输入数据后计算半径为r 的圆面积 s。程序在编译时出错。#include void main()int r;float s;scanf(%d,&r);s=p*r*r;printf(s=%fn,s);出错的原因是()。A)注释语句书写位置错误 B)存放圆半径的变量 r 不应该定义为整型 C)输出语句中格式描述符非法 D)计算圆面积的赋值语句中使用了非法变量 答案:D 22.有以下程序#include void main()int m=12,n=34;printf(%d%d,m+,+n);printf(%d%dn,n+,+m);程序运行后的输出结果是()。答案:A 23.数字字符 0 的 ASCII 值为 48,若有以下程序#include void main()char a=1,b=2;束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值 printf(%c,b+);printf(%dn,b-a);程序运行后的输出结果是_。A)3,2 B)50,2 C)2,2 D)2,50 答案:C 24.有以下程序#include void main()char c1=1,c2=2;c1=getchar();c2=getchar();putchar(c1);putchar(c2);当运行时输入:a 后,以下叙述正确的是_。A)变量 c1 被赋予字符 a,c2 被赋予回车符 B)程序将等待用户输入第 2 个字符 C)变量 c1 被赋予字符 a,c2 中仍是原有字符 2 D)变量 c1 被赋予字符 a,c2 中将无确定值 答案:A 25.【选择结构程序设计】1.有变量说明语句 int a,b,c;,顺序执行下面语句:a=b=c=1;+a|+b&+c;那么,变量 b 的值应是(B)A2 B1 C0 D3 2.有变量说明 int a=3;,则表达式 a1 的运算结果和 a 的值应该是(B)A0 和 2 B0 和 3 C1 和 2 D1 和 3 3.设 int a=3,b=4,c=5;,下列表达式的值不为 1 的是(A )。A)a+bc&b=c B)a|b+c&b-c C)!(ab)&!c|1 D)!(a+b)+c-1&b+c/2 4.#include 束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值int main()int a,b,c;a=10;b=50;c=30;if(ab)a=b;b=c;c=a;printf(“a=%d,b=%d,c=%d n”,a,b,c);程序的输出结果是(C)。=10,b=50,c=10 B.a=10,b=50,c=30=10,b=30,c=10 D.a=50,b=30,c=50 5.若整型变量 a、b、c、d 中的值依次为:1、4、3、2。则条件表达式 ab?a:cd?c:d的值是(A)。(A)1 (B)2 (C)3 (D)4 6.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|10 的是(C)。A)abs(x-y)-10&x-y10 C)!(x-y)10 D)(x-y)*(x-y)100 7.若有定义:int a 7;f1oat x,y;则表达式 x+a3*(int)(x+y)24的值是(A)。A)B)C)D)8.若有定义和语句:int s,p;s=p=5;p=s+,+p,p+2,p+;则执行语句后 p 的值是(C)束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值A)9 B)8 C)7 D)6 9.若有定义:int a,b;则表达式 a=4,b=3,a+b+2,a+,a+b+2 的值为(C)。A)12 B)11 C)10 D)无答案 10.己知int k=10,m=3,n;则下列语句的输出结果是(B)。printf(%dn,n=(k%m,k/m);A)2 B)3 C)4 D)5 11.设 x 和 y 均为 int 型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是()。A)把 x 和 y 按从大到小排列 B)把 x 和 y 按从小到大排列 C)无确定结果 D)交换 x 和 y 中的值 答案:D 12.设 int i=2,j=3,k=4,a=4,b=5,c=3;,则执行表达式(a=ik)&(c=i,j,k)后,c 值是()。A)0 B)1 C)2 D)3 答案:D 13.若 x、a、b、c 均 为 int 型变量,则执行表达式 x=(a=4,b=8,c=12)后,x 的值为_。A)4 B)8 C)12 D)24 答案:C 14.以下程序的输出结果是_。#include void main()int a=-1,b=4,k;k=(+a 0)&(b+=5);printf(%d%d%d n,k,a,b);A)104 B)103 C)003 D)004 答案:D 15.下列运算符中,结合方向为自左向右的是()。(A)?:(B),(C)+=(D)+答案:(B)16.下列运算符中优先级最高的是()A)!B)%C)-=D)&答案:(A)束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值17.有以下程序#include void main()int m=3,n=4,x;x=-m+;x=x+8/+n;printf(%dn,x);程序运行后的输出结果是()。A)3 B)5 C)-1 D)-2 答案:D 18.【循环结构练习题】1.下面有关 for 循环的正确描述是()Afor 循环只能用于循环次数已经确定的情况 Bfor 循环是先执行循环体语句,后判定表达式 C在 for 循环中,不能用 break 语句跳出循环体 Dfor 循环体语句中,可以包含多条语句,但要用花括号括起来 答案:D 2.对于 for(表达式 1;表达式 3)可理解为()Afor(表达式 1:1;表达式 3)束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值Bfor(表达式 1;1;表达式 3)Cfor(表达式 1;表达式 1;表达式 3)Dfor(表达式 1;表达式 3;表达式 3)答案:B 3.以下正确的描述是()。Acontinue语句的作用是结束整个循环的执行 B只能在循环体内和 switch 语句体内使用 break 语句 C在循环体内使用 break 语句或 continue语句的作用相同 D从多层循环嵌套中退出时,只能使用 goto 语句 答案:B 4.下面程序段不是死循环的是()。Aint I=100;Bfor(;);while(1)I=I%100+1;if(I100)break;Cint k=0;Dint s=36;do-k;while(s);while(k=0);-s;答案:C 5.以下能正确计算 1*2*3*10 的程序是()。Adoi=1;s=1;Bdoi=1;s=0;s=s*i;s=s*i;束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值i+;i+;while(i=10);while(i=10);Ci=1;s=1;Di=1;s=0;do s=s*i;do s=s*i;i+;i+;while(i=10);while(i=10);答案:C 6.下面程序的运行结果是()。#include int main()int y=10;doy-;while(-y);printf(%dn,y-);A-1 B1 C8 D0 答案:D 7.下面程序的运行结果是()。#include int main()int num=0;while(num=2)num+;束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值printf(%dn,num);A1 B1 2 C1 2 3 D1 2 3 4 答案:C 8.若运行以下程序时,从键盘输入 (表示回车),则下面程序的运行结果是()。#include#include void main()float x,y,z;scanf(“%f%f”,&x,&y);z=x/y;while(1)if(fabs(z)x=y;y=z;z=x/y;else break;printf(“%f n”,y);A B C D 束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值答案:B 9.有以下程序:#include void main()int i=0,s=0;for(;)if(i=3|i=5)continue;if(i=6)break;i+;s+=i;printf(%dn,s);程序运行后的输出结果是()。A)10 B)13 C)21 D)程序进入死循环 答案:D 10.若有程序段:for(m=1;m=100;m+)scanf(%d,&y);束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值 if(y0)continue;printf(%3d,m);正确的描述是()。A)当 y=0 时什么也不输出 C)printf函数永远也不执行 D)最多允许输出 100 个非负整数 答案:D 11.下列程序的运行结果是()。#include“”void main()int i=23;do+i;while(i);printf(“%d”,i);A)23 B)24 C)死循环 D)无任何结果 答案:C 12.二、填空题【顺序结构程序设计】1有以下程序:int main()int m,n,p;scanf(m=%dn=%dp=%d,&m,n,&p);printf(%d%d%dn,m,n,p);若想从键盘上输入数据,使变量 m中的值为 123,n 中的值为 456,p 中的值为 789,则正确的输入是 束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值 m=123n=456p=789。2.以下程序段的输出结果是 28 。int main()int a=2,b=3,c=4;a*16+(b+)-(+c);printf(%d,a);3以下程序段的输出结果是 5 。int x=17,y=26;printf(%d,y/=(x%=6);4下列程序的输出结果为 12 。int main()int x=3,y=5;printf(%d,x=(x-)*(-y));5.若有以下程序:int main()char a;a=H-A+0;(0,o)printf(%c,%dn,a,a);执行后的输出结果是 7,55 。6.以下程序段的输出结果是 261 。void main()int a=177;束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值 printf(%on,a);7.以下程序的输出结果是 0 (-3276732767int)。void main()unsigned short a=65536;int b;printf(%dn,b=a);提示:当 unsigned short和 int 均占 2 个字节时。8.输入“12345,xyz”,下列程序输出的结果是 。int main()int x;char y;scanf(“%3d%3c”,&x,&y);printf(“%d,%c”,x,y);答案:123,4 9.以下程序的运行结果是 。#include void main()int i=8,j=9,m,n;m=+i;n=j+;printf(%d,%d,%d,%dn,i,j,m,n);答案:9,10,9,9 10.下列程序的输出结果是 。#include void main()int a=3,b=14,c=5;c=c+a*a+b%5*10;printf(%on,c);答案:66 11.阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后#include void main()int a,b,c;a=(b=(c=3)*5)*5;printf(a=%d,b=%d,c=%d n,a,b,c);束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值运行结果是:答案:运行结果是:a=75,b=15,c=3 12.【选择结构程序设计】1.以下程序运行的结果是 。#include void main()int a,b,c;a=1;b=2;c=3;a=b-=a|a+b!=c;printf(%d,%d,a,b);答案:1,1 2.以下程序的运行结果是 。#include void main()int a,b,c;a=b=c=1;if(a+|+b)c+;printf(%d,%d,%dn,a,b,c);答案:2,1,2 3.以下程序的输出结果是 。#include void main()int k,i=0,j=2;k=i+&j+;printf(%d,%d,%dn,i,j,k);答案:1,2,0 4.【循环结构程序设计】1.若运行以下程序时,从键盘输入 ADescriptor,则下面程序的运行结果是 v0=12,v1=4,v2=12 。#include void main()char c;int v0=0,v1=0,v2=0;do switch(c=getchar()case a:case A:case e:case E:case i :case I:束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值case o:case O:case u:case U:v1+=1;default:v0+=1;v2+=1;while(c!=n);printf(“v0=%d,v1d,v2=%dn”,v0,v1,v2);2.下面程序的运行结果是 8,-2 。#include void main()int i,b,k=0;for(i=1;i=0)k+;printf(“%d,%d”,k,b);3.下面程序的运行结果是 8,22 。#include void main()int a,b;for(a=1,b=1;a=20)break;if(b%3=1)b+=3;continue;b-=5;printf(“%d,%dn”,a,b);4.下面程序的运行结果是 x=8 。#include void main()int i,j,x=0;for(i=0;i2;i+)x+;for(j=0;j=3;j+)if(j%2)continue;x+;x+;printf(“x=%d n”,x);5.下面程序的运行结果是 *#*#*#$。#include void main()int i;束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值 for(i=1;i=5;i+)if(i%2)printf(“*”);else continue;printf(“#”);printf(“$n”);6.下面程序的运行结果是 4 。#include void main()int i,j,a=0;for(i=0;i2;i+)for(j=0;j4;j+)if(j%2)break;a+;a+;printf(“%d n”,a);7.有以下程序,若从键盘输入:247,则程序的输出结果是 。#include void main()int c;while(c=getchar()!=n)switch(c-2)case 0:case 1:putchar(c+4);case 2:putchar(c+4);break;case 3:putchar(c+3);default:putchar(c+2);break;答案:6689 8.三、程序填空题 1.下面程序的功能是将小写字母变成对应的大写字母后的第二个字母,其中 y 变成 A,z 变成 B,请在空白处填入正确内容。#include void main()束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值 char c;while(c=getchar()!=n)if(c=a&cZ&c=Z+2);printf(“%c”,c);答案:c-=30,c-=26。2.下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数 m和小写字母的个数 n,并输出 m,n 中的较大数,请在 内填入正确内容。#include void main()int m=0,n=0;char c;while(()!=n)if(c=A&c=a&c=z)n+;printf(“%d n”,mn?);解答:c=getchar(),n:m。3.从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束。请在 内填入正确内容。#include void main()float x,amax,amin;scanf(“%f”,&x);amax=x;amin=x;while()if(xamax)amax=x;if()amin=x;scanf(“%f”,&x);printf(amax=%fnamin=%fn,amax,amin);束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值 解答:x=0,xamin。4.求算式 xyz+yzz=532 中 x,y,z 的值(其中 xyz 和 yzz 分别表示一个三位数)。请在 内填入正确内容。#include void main()int x,y,z,i,result=532;for(x=1;x+)for(y=1;y+)for(z=0;z+)i=100*x+10*y+z+100*y+10*z+z;if()printf(x=%d,y=%d,z=%dn,x,y,z);解答:x10,y10,z10,i=result。束失效按自由格式输出提示出错无结果下列程序段的输出结果是无输出设均为整型变量且则以下语句的输出结果是以母共有个而是最后一个下面程序的输出结果是下面程序的输出结果是提示输出时无定界符下列程序执行后的输出结果格回车回车回车回车有以下程序段若从键盘上输入回车则输出结果是若变量已正确说明为类型要通过语句给赋值赋值