1.选择题
(1)语句while(!E);中的条件!E等价于 。
A.E==0 B.E!=1 C.E!=0 D.~E
(2)以下for循环语句 。
for(x=0,y=0;(y!=123)&&(x<4);x++);
A.是无限循环 B.循环次数不定
C.执行4次 D.执行3次
(3)C语言中, 。
A.不能使用do...while语句构成的循环
B.do...while语句构成的循环必须用break语句才能退出
C.对于do...while语句构成的循环,当while语句中的表达式值非0时,结束循环
D.对于do...while语句构成的循环,当while语句中的表达式值为0时,结束循环
(4)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int i;
for (i=1;i<=5;i++)
{
if(i%2) printf("*");
else continue;
printf("#");
}
printf("$\n");
}
A.*#*#*#$ B.#*#*#*$ C.*#*#$ D.#*#*$
(5)有以下程序:
#include <stdio.h>
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);
case 4: putchar(c+2); break;
}
}
printf("\n");
}
从第一列开始输入2743<CR>,则程序的输出结果是 。
A.66877 B.66866 C.6677877 D.6688766
(6)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int i=1,j=3;
printf("%d,",i++);
{
int i=0;
i+=j*2;
printf("%d,%d,",i,j);
}
printf("%d,%d\n",i,j);
}
A.1,6,3,1,3 B.1,6,3,2,3 C.1,6,3,6,3 D.1,7,3,2,3
(7)以下程序片段的输出结果是 。
int x=23;
do
{
printf("%2d",x--);
} while(!x);
A.打印出321 B.打印出23
C.不打印任何内容 D.陷入死循环
(8)若x是int型变量,以下程序片段的输出结果是 。
for(x=3;x<6;x++)printf((x%2)?("**%d"):("##%d\n"),x);
A.**3 B.##3 C.##3 D.**3##4
##4 **4 **4##5 **5
**5 ##5
(9)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int a,b;
for(a=1,b=1;a<=100;a++)
{
if(b>=20) break;
if(b%3==1)
{
b+=3;
continue;
}
b-=5;
}
printf("%d\n",a);
}
A.7 B.8 C.9 D.10
(10)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int num=0;
while(num<=2)
{
num++;
printf("%d\n",num);
}
}
A.1 B.1 C.1 D.1
2 2 2
3 3
4
(11)若执行以下程序时,从键盘上输入3.6 2.4<CR>,则输出结果是 。
#include <stdio.h>
#include <math.h>
main()
{
float x,y,z;
scanf("%f%f",&x,&y);
z=x/y;
while(1)
{
if(fabs(z)>1.0)
{ x=y; y=z; z=x/y; }
else break;
}
printf("%f\n",y);
}
A.1.500000 B.1.600000 C.2.000000 D.2.400000
(12)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int x=3;
do
{
printf("%d\n",x-=2);
}while(!(--x));
}
A.1 B.3
-2 0
C.1 D.程序陷入死循环,无输出结果
(13)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int x=023;
printf(%d\n",--x);
}
A.17 B.18 C.23 D.24
(14)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int y=9;
for(;y>0;y--)
{
if(y%3==0)
{
printf("%d",--y);
continue;
}
}
}
A.741 B.852 C.963 D.875421
(15)执行以下程序后,a的值为 。
#include <stdio.h>
main()
{
int a,b;
for(a=1,b=1;a<=100;a++)
{
if(b>=20) break;
if(b%3==1)
{
b+=3;
continue;
}
b-=5;
}
printf ("%d",a);
}
A.7 B.8 C.9 D.10
(16)以下程序片段的输出结果是 。
int x=3;
do
{
printf("%3d",x-=2);
} while(!(--x));
A.1 B.3 0 C.1-2 D.死循环
(17)定义变量为int n=10;,则以下循环语句的输出结果是 。
while(n>7)
{
n--;
printf("%d\n",n);
}
A.10 B.9 C.10 D.9
9 8 9 8
8 7 8 7
7 6
(18)若i、j已定义为int型变量,则以下程序片段中,内循环体的执行次数是 。
for(i=5;i;i--)
for(j=0;j<4;j++) {…}
A.20 B.25 C.24 D.30
(19)设x和y均为int型变量,则执行以下循环语句后,y值为 。
for(y=1,x=1;y<=50;y++)
{
if(x>=10) break;
if(x%2==1)
{
x+=5;
continue;
}
x-=3;
}
A.2 B.4 C.6 D.8
(20)设a和b均为int型变量,则执行以下程序片段后,b的值为 。
a=1; b=10;
do
{
b-=a;
a++;
} while(b--<0);
A.9 B.-2 C.-1 D.8
(21)设j为int型变量,则以下for循环语句的执行结果是 。
for(j=10;j>3;j--)
{
if(j%3) j--;
--j;
--j;
printf("%d ",j);
}
A.6 3 B.7 4 C.6 2 D.7 3
(22)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int i,j;
for(j=10;j<11;j++)
for(i=9;i<=j-1;i++)
printf("%d",j);
}
A.11 B.10 C.9 D.10 11
(23)在执行以下程序时,如果从键盘上输入ABCdef<CR>,则输出结果为 。
#include <stdio.h>
main()
{
char ch;
while((ch=getchar())!='\n')
{
if(ch>='A' && ch<='Z') ch=ch+32;
else if(ch>='a' && ch<='z') ch=ch-32;
printf("%c",ch);
}
printf("\n");
}
A.ABCdef B.abcDEF C.abc D.DEF
(24)执行以下程序片段时, 。
x=-1;
do
{
x=x*x;
} while(!x);
A.循环体将执行一次 B.循环体将执行两次
C.循环体将执行无限次 D.系统将提示有语法错误
(25)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int y=10;
do
{
y--;
} while(--y);
printf("%d\n",y--);
}
A.-1 B.1 C.8 D.0
(26)以下选项中,没有构成死循环的程序片段是 。
A.int i=100 B.for(;;);
while(1)
{
i=i%100+1;
if(i>100)break;
}
C.int k=1000; D.int s=36;
do while(s);
{ --s;
++k;
} while(k>=10000);
(27)执行语句for(i=l:i++<4:);后,变量i的值是 。
A.3 B.4 C.5 D.不定
(28)运行以下程序后,如果从键盘上输入china#<CR>,则输出结果为 。
#include <stdio.h>
main()
{
int v1=0,v2=0;
char ch;
while((ch=getchar())!='#')
switch(ch)
{
case 'a':
case 'h':
default: v1++;
case '0': v2++;
}
printf("%d,%d\n",v1,v2);
}
A.2,0 B.5,0 C.5,5 D.2,5
(29)执行以下程序时,如果从键盘上输入65 14<CR>,则输出结果为 。
#include <stdio.h>
main()
{
int m,n;
printf("Enter m,n;");
scanf("%d%d",&m,&n);
while(m!=n)
{
while(m>n) m-=n;
while(n>m) n-=m;
}
printf("m=%d\n",m);
}
A.m=3 B.m=2 C.m=1 D.m=1
(30)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int x=10,y=10,I;
for(i=0; x>8; y=++i)
printf("%d,%d ",x--,y);
}
A.10 1 9 2 B.9 8 7 6 C.10 9 9 0 D.10 10 9 1
(31)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int n=4;
while(n--)
printf("%d ",--n);
}
A.2 0 B.3 1 C.3 2 1 D.2 1 0
(32)以下程序的输出结果是 。
#include <stdio.h>
main( )
{
int i;
for(i=1;i<6;i++)
{
if(i%2)
{
printf("#");
continue;
}
printf("*");
}
printf("\n");
}
A.#*#*# B.##### C.***** D.*#*#*
(33)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int i;
for(i='A';i<'I';i++,i++)
printf("%c",i+32);
printf("\n");
}
A.编译不通过,无输出 B.aceg
C.acegi D.abcdefghi
(34)以下程序中,while循环的循环次数是 。
#include <stdio.h>
main()
{
int i=0;
while(i<10)
{
if(i<1) continue;
if(i==5) break;
i++;
}
}
A.1 B.10
C.6 D.死循环,不能确定次数
(35)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int a=0,i;
for(i=1;i<5;i++)
{
switch(i)
{
case 0:
case 3: a+=2;
case 1:
case 2: a+=3;
default: a+=5;
}
}
printf("%d\n",a);
}
A.31 B.13 C.10 D.20
(36)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int i=0,a=0;
while(i<20)
{
for(;;)
{
if((i%10)==0) break;
else i--;
}
i+=11;
a+=i;
}
printf("%d\n",a);
}
A.21 B.32 C.33 D.11
(37)以下程序的功能是:按顺序读入10名学生的4门课程的成绩,计算出每位学生的平均分并输出。程序如下:
#include <stdio.h>
main()
{
int n,k;
float score,sum,ave;
sum=0.0;
for(n=1;n<=10;n++)
{
for(k=1;k<=4;k++)
{
scanf("%f",&score);
sum+=score;
}
ave=sum/4.0;
printf("NO%d:%f\n",n,ave);
}
}
以上程序运行后,结果不正确。在调试的过程中,发现有一条语句在程序中的位置不正确,这条语句是 。
A.sum=0.0; B.sum+=score;
C.ave=sum/4.0; D.printf("NO%d:%f\n",n,ave);
(38)有以下程序片段:
int n=0,p;
do
{
scanf("%d",&p);
n++;
} while(p!=12345 &&n<3);
此处do...while循环的结束条件是 。
A.P的值不等于12345,并且n的值小于3
B.P的值等于12345,并且n的值大于等于3
C.P的值不等于12345,或者n的值小于3
D.P的值等于12345,或者n的值大于等于3
2.填空题
(1)以下程序片段的输出结果是 。
int i=0,sum=1;
do
{
sum+=i++;
} while(i<6);
printf("%d\n",sum);
(2)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int i=10,j=0;
do
{
j=j+i;
i--;
}while(i>2);
printf("%d\n",j);
}
(3)以下程序运行时,如果从键盘上输入1298;,则输出结果为 。
#include <stdio.h>
main()
{
int n1,n2;
scanf("%d",&n2);
while(n2!=0)
{
n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}
(4)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int s,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n",s);
}
(5)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int x=15;
while(x>10 && x<50)
{
x++;
if(x/3) { x++; break; }
else continue;
}
printf("%d\n",x);
}
(6)以下程序运行时,如果从键盘上输入Y?N?<CR>,则输出结果为 。
#include <stdio.h>
main()
{
char c;
while((c=getchar( )) != '?') putchar(--c);
}
(7)以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。
#include <stdio.h>
main()
{
float x,amax,amin;
scanf("%f",&x);
amax=x;
amin=x;
while( )
{
if(x>amax) amax=x;
if( ) amin=x;
scanf("%f",&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
(8)以下程序的功能是:从键盘上输入若干个学生的成绩,计算出平均成绩,并输出低于平均分的学生成绩,用输入负数的方式结束输入。
#include <stdio.h>
main()
{
float x[1000],sum=0.0,ave,a;
int n=0,i;
printf("Enter mark:\n"); scanf("%f",&a);
while(a>=0.0 && n<1000)
{
sum+ ;
x[n]= ;
n++;
scanf("%f",&a);
}
ave= ;
printf("Output:\n");
printf("ave=%f\n",ave);
for(i=0;i<n;i++)
if( ) printf("%f\n",x[i]);
}
3.上机操作题
(1)编写一个程序,求两个整数的最大公约数和最小公倍数。
(2)编写一个程序,求1+2+3…+99+100的值。
(3)编写一个程序,求1+3+5+…+97+99的值。
(4)编写一个程序,判断m是否为素数。
(5)编写一个程序,求大于100的且紧靠100的10个素数。
(6)编写一个程序,输出所有水仙花数,所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
(7)编写一个程序,求 的值。
(8)编写一个程序,求…的值。
(9)编写一个程序,求…的值。
(10)编写一个程序,求1!+2!+3!+…+20!的值。