C语言程序设计-习题5

一、选择题

  1. 若和均为型变量,则以下语句的正确判断是( A )。
    for(n=15,m=15;m!=15;++m,n++)
    printf("ok!\n);
    A. 循环一次也不执行 B. 输出ok!
    C. 循环只执行一次 D. 死循环
  2. 若为型变量,则循环语句“for(n=0;n<20;n++);”控制循环体执行( D )次。
    A. 19 B. 21 C. 22 D. 20
  3. 若有定义“int i=1;”,则执行完循环语句“while(i++<5);”以后i的值为( C )。
    A.4 B. 5 C. 6 D. 7
  4. 设E为表达式,以下与“do…while(E);”不等价的语句是( C )。
    A. do…while(!E0); B. do…while(E>0||E<0);
    C. do…while(E
    0); D. do…while(E!0);
  5. 在循环语句循环体中执行continue语句,其作用是( C )。
    A. 立即终止程序运行
    B. 继续执行continue语句之后的循环体各语句
    C. 结束本次循环
    D. 结束本次循环,跳出循环过程
  6. 以下程序的运行结果是( D )。
    int x=3;
    do
    {
    printf("%3d,",x-=2);
    }while(!(–x));
    A.1 B. 0 C. 死循环 D. 1,-2,
  7. 在C语言中,for语句( D )是不正确的。
    A. 与for语句嵌套 B. 与while语句嵌套
    C. 与do…while语句嵌套 D. 不可以嵌套
  8. 设i、j、k均为int型变量,则执行完下面的for循环后,k的值为( B )。
    for(i=0,j=10;i<=j;i++,j–)k=i+j;
    A.12 B. 10 C. 11 D. 9
  9. 在C语言中,while和do…while循环的主要区别是( A )。
    A. do…while的循环体至少无条件执行一次
    B. while的循环控制条件比do…while的循环控制条件严格
    C. do…while允许从外部转到循环体内
    D. do…while的循环体不能是复合语句
  10. 以下正确的是( B )。
    A. continue语句的作用是结束整个循环的执行
    B. 只能在循环体内和switch语句体内使用break语句
    C. 在循环体内使用break语句或continue语句的作用相同
    D. 从多层循环嵌套中退出时,只能使用goto语句
  11. 下面程序段的运行结果是( A )。
    int a=1,b=2,c=2,t;
    while(a {t=a;a=b;b=t;c–;}
    printf("%d,%d,%d\n",a,b,c);
    A. 1,2,0 B. 2,1,0 C.1,2,1 D. 2,1,1
    要注意到第二次再循环!
  12. 执行语句“for(I=1;I++<=4; );”后,变量I的值是( D )。
    A. 3 B. 4 C.5 D. 6

二、填空题

  1. while循环结构在条件为“真”时反复执行一条语句或一组语句。
  2. 在C语言的循环语句中,循环条件表达式可省略的语句是 for语句 。
  3. 在C语言的循环语句中, do … while 语句的循环体至少会被执行一次。
  4. 在“for(表达式1;表达式2;表达式3)”语句中,假定循环体被执行次数为n,则表达式1共被计算 1 次。
  5. break 语句表示结束循环,执行循环后的语句。
  6. continue 语句表示跳过这条语句到循环末尾的语句,重新下一次循环。
  7. 若定义“int n=1,s=0;”,则执行循环“do{n=2*n;s++;}while(n<8);”后s的值为 3 。
  8. do while循环语句的while后的 分号 不可以省略。
  9. 下面循环体中的语句“printf(“%d”,a);”被执行了 6次。
    int a;
    for(a=1;a<10;a++)
    {
    if(i%3==0)continue;
    printf("%d",a);
    }
  10. 有语句“for(;I<10;I++)”,如果要保证循环执行10次,则在for语句之前应使循环控制变量I的值为 0 。

三、写出下列程序的运行结果

#include
void main()
{
int n=2,k=0;
while(k++&&n++>2);
printf("%d,%d\n",k,n);
}
运行结果:1,2
2.
#include
void main()
{
int x=23;
do
{
printf("%d\n",x–);
}while(!x);
}
运行结果:23
3.
#include
void main()
{
int x,y;
for(x=y=1;x<=100;x++)
{
if(y>=10)break;
if(y%31){y=y+3;continue;}
}
printf("%d\n",x);
}
运行结果:4
4.
#include
void main()
{
long data;
scanf("%ld",&data);
while(data)
{
printf("%ld",data%10);
data=data/10;
}
printf("\n");
}
程序运行后输入12345,则输出结果为54321.
5.
#include
void main()
{
int i,j,k=0;
for(j=50;j<=60;j++)
{
for(i=2;i if(!(j%i))break;
if(i>=j-1)
printf("%d\n",j);
}
}
6.
#include
void main()
{
int i=2,j=2;
if(j
2)
{
i++;j++;
printf("\ni+j=%d",i+j);
}
else
{
i–;j–;
printf("\ni-j=%d",i-j);
}
for(j=1;j if(ji)printf("\nj=%d",j);
else
printf("\nOK! \n");
}
运行结果:i+j=6
OK!
7.
#include
void main()
{
int i=0,j=10,k=2,s=0;
for(;
{
i+=k;
if(i>j)
{
printf("%d\n",s);
break;
}
s+=i;
}
}
写出语句“if(i>j)”共执行的次数和程序运行的结果。
答:执行的次数为6,运行的结果为30。
8.
#include
void main()
{
int i;
for(i=1;i<=8;i++)
{
if(i%3
0)printf("#");
else
printf("*");
}
printf("KaTeX parse error: Undefined control sequence: \n at position 1: \̲n̲"); } 运行结果:**#*…

四、程序填空题

  1. 下列程序的功能是输入一个整数,判断其是否是素数,若为素数输出1,否则输出0。
    #include
    void main()
    {
    int i,x,y=1;
    scanf("%d",&x);
    for(i=2;i<=x/2;i++)
    if( x%i==0 ){y=0;break;}
    printf("%d\n",y);
    }
  2. 输入一个十进制正整数,将它对应的二进制数的各位反序输出,如13→1101→1011。
    #include
    void main()
    {
    int x,t;
    printf(“请输入一个整数:”);
    scanf("%d",&x);
    printf(“其二进制的反序为:”);
    while( x!=0 )
    {
    t= x%2 ;
    x=x/2;
    printf("%d",t);
    }
    printf("\n");
    }
    思考:仿此方法将十进制正整数转换成对应的八进制数的反序数。
  3. 若的以下程序段,且变量已经正确定义和赋值。
    for(s=1.0,k=1;k<=n;k++)
    s=s+1.0/(k*(k+1));
    printf(“s=%f\n”,s);
    请填空,使下面程序段的功能与之完全相同。
    s=1.0;k=1;
    while( k<=n )
    {
    s=s+1.0/(k*(k+1));
    k++ ;
    }
    printf(“s=%f\n”,s);
  4. 编写程序打印输出以下图形。
    1
    123
    12345
    1234567
    123456789

#include
void main()
{
int i,j;
for(i=1;i<=5;i++)
{
for(j=1; j<=5-I ;j++)
printf(" “);
for(j=1; j<=2*i-1 ;j++)
printf(”%d",j);
printf("\n");
}
}
5. 输入两个正整数的,求其最大公约数。
#include
void main()
{
int m,n,r;
printf(“输入两个正整数m,n=”);
scanf("%d,%d",&m,&n);
r=m%n;
while( r!=0 )
{
m=n;
n=r;
r= m%n ;
}
printf(“最大公约数为:%d\n”,n);
}
6. 以下程序求公式

的前10项之和。
#include
void main()
{
float n,t, s=0 ;
float k=1,a=1,b=2;
for(n=1;n<=10; n++ )
{
s=s+k*b/a;
k= -k ;
t=a+b;
a=b;
b=t;
}
printf(“s=%f\n”,s);
}
7. 以下程序用标记变量法判断一个数是否为素数(质数),试完善以下程序,使之通过变量f来判断n是否素数。
#include
#include< math.h >
void main()
{
int n,k,f=1;
scanf("%d",&n);
for(k=2;k<=sqrt(n);k++)
if(n%k0){f=0;break;}
if( f
1 )
printf("%d是素数\n",n);
else
printf("%d不是素数\n",n);
}

五、编写程序

  1. 有一个分数序列:

求这个序列的前20项之和。
源程序:
#include
void main()
{ float i,j,k,temp,s;
i=1;j=2;s=0;
for(k=1;k<=20;k++)
{
s+=i/j;
temp=j;j=i+j;i=temp;
}
printf(“1/2+2/3+3/5+5/8+8/13+…=%.4f\n”,s);
}
运行结果:1/2+2/3+3/5+5/8+8/13+…=12.2783
2. 编写程序,输入x的值,按下列公式计算 (精确到10-5)。

源程序:
#include
#include
void main()
{ float x,s,t,i;
printf(“输入(弧度制角)x=”);
scanf("%f",&x);
s=0;t=i=1;
while(fabs(t)>=1e-5)
{
s=s+t;
t=t*(-xx/(2i*(2*i-1)));
i++;
}
printf(“cos(%.2f)=%.5f\n”,x,s);
}
运行:输入(弧度制角)x= 1.57
结果:cos(1.57)=0.00000
3. 编写程序,按照下列的计算公式计算π值,精确
到10-6。

源程序:
#include
#include
void main()
{
float r,pi=2;
r=sqrt(2);
while(fabs(2/r-1)>=1e-6)
{
pi=pi2/r;
r=sqrt(2+r);
}
printf(“π=%.6f\n”,pi);
}
运行结果:π=3.141592
4. 要将一元钱换成1分、2分、5分的硬币,每种硬币的个数大于0且为5的倍数,编程计算并输出有多少种换法。
源程序:
#include
void main()
{
int x,y,z,s=0;
for(x=5;x<=65;x=x+5)
for(y=5;y<=35;y=y+5)
for(z=5;z<=17;z=z+5)
if(x+2
y+5*z100)
{s++;
printf(“1分:%d个 2分:%d个 5分:%d个\n”,x,y,z);
}
printf("\n满足条件的换法有:%d种。\n",s);
}
5. 求出所有三位整数100~999中同时满足除以5余2、除以7余3、除以11余7的所有整数的和及整数的个数。
源程序:
#include
void main()
{
int i,s=0,n=0;
for(i=100;i<=999;i++)
if(i%5
2&&i%73&&i%117)
{
s=s+i;
n++;
printf("%6d",i);
}
printf("\n满足条件的所有整数有:%d个\n其和为:%d\n",n,s);
}
运行结果:
227 612 997
满足条件的所有整数有:3个
其和为:1836
6.用迭代法求x的平方根y,x由键盘输入,利用下列迭代公式计算。

初值y0=x/2,精确到|yn+1-yn|<10-4。
源程序:
#include
#include
void main()
{
float x,y1,y2,t;
printf(“输入一个正数:”);
scanf("%f",&x);
y1=x/2;
do
{
y2=(y1+x/y1)/2;
t=y1;
y1=y2;
}while(fabs(y2-t)>=1e-4);
printf("%.2f的平方根为%.4f\n",x,y2);
}
运行:输入一个正数:16
结果:16.00的平方根为4.0000
7.编写程序打印以下图形。
*




源程序:
#include
#include
void main()
{
int i,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=fabs(i-3);j++)
printf(" “);
for(j=1;j<=5-2fabs(i-3);j++)
printf("
”);
printf("\n");
}
}
8.编程测试整数n是否包含数字5(n由键盘输入),若包含数字5,则输出YES,否则输出NO。
#include
#include
void main()
{
long n;
printf(“请输入整数n=”);
scanf("%d",&n);
n=fabs(n);
while(n!=0&&n%10!=5)
n=n/10;
if(n==0)
printf(“NO\n”);
else printf(“YES\n”);
}
运行结果:
 n=258
YES

你可能感兴趣的:(c语言,程序设计)