程序控制结构练习题
 
 
(一) 选择题
1.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式      ;如果字符串长度小于5,则输出按方式     
A) 从左起输出该字符串,右补空格    B) 按原字符长从左向右全部输出
C) 右对齐输出该字符串,左补空格    D) 输出错误信息
 
2.设有说明语句:int a=1,b=0; 则执行以下语句后,输出为(  )
  switch(a)
  {
case 1: switch(b)
{
  case 0: printf(“**0**\n”); break;
  case 1:printf(“**1**\n”); break;
}
  default: printf(“**2**\n”);
}
A)**0**  B)**2**  C) **0**    D)**0**
                      **1**      **2**
                      **2**     
3. 阅读以下程序,当输入数据的形式为:25,13,10<CR>(注:<CR>表示回车),则正确的输出结果为           
    main()
    {    int x,y,z;
        scanf(“%d%d%d”,&x,&y,&z);
        printf(“x+y+z=%d\n”,x+y+z);
    }
A) x+y+z=48      B) x+y+z=35      C) x+z=35          D) 不确定值
4. 根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为       
main()
    {    char ch1,ch2,ch3;
        输入语句
        printf(“%c%c%c”,ch1,ch2,ch3);
    }
    输出形式:A B C
    输入形式:A B
A) scanf(“%c%c%c”,&ch1,&ch2,&ch3);
B) scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);
C) scanf(“%c %c %c”,&ch1,&ch2,&ch3);
D) scanf(“%c%c”,&ch1,&ch2,&ch3);
5 已知ch是字符型变量,下面正确的赋值语句是     
A) ch=‘a+b’;    B) ch=‘\0’;    C) ch=‘7’+‘9’;    D) ch=5+9;
6. putchar函数可以向终端输出一个           
A) 整型变量表达式                      B) 实型变量值
C) 字符串                            D) 字符或字符型变量值
 
7. 使以下程序的输出结果为4,则a和b应该满足的条件是(  )
main()
{ int s,t,a,b;
scanf(“%d%d”,&a,&b);
s=t=1;
if(a>0) s+=1;
if(a>b) t=s+t;
else
if(a==b) t=5;
else t=2*s;
printf(“%d\n”,t);
}
 
A) A)    a>0 并且a<b      B)  a<0 并且a<b
C) a>0并且a>b        D)  a<0并且a>b
8.执行语句for(i=1;i++<4; );后变量i的值是______.
  a)3  b)4  c)5    d)不定
9.以下正确的描述是_______.
  a)continue语句的作用是结束整个循环的执行
  b)只能在循环体内和switch语句体内使用break语句
  c)在循环体内使用break语句或continue语句的作用相同
  d)从多层循环嵌套中退出时,只能使用goto语句
10.下面程序段的运行结果是__________.
  int n=0;
  while(n++<=2);printf("%d",n);
  a)2  b)3  c)4  d)有语法错
11.下面程序的运行结果是____.
    #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
12.以下程序段________.
x=-1;
do{
    x=x*x;
  }
while(!x);
a)是死循环              b)循环执行二次
c)循环执行一次          d)有语法错误
13.若有如下语句
  int x=3;
  do{printf(""%d\n",x-=2);}while(!(--x));
则上面程序段______.
  a)输出的是1  b)输出的是1-2  c)输出的是30  d)是死循环
14.下面程序的运行结果是______.
  #include<stdio.h>
main()
  {int y=10;
  do{y--;}while(--y);
  printf("%d\n",y--);
  }
  a)-1  b)1  c)8  d)0
函数printf
15.若i为整型变量,则以下循环执行次数是_____.
  for(i=2;i==0;)printf("%d",i--);
  a)无限次  b)0    c)1  d)2
16.设有程序段
int k=10;
while(k=0)k=k-1;
这下面描述中正确的是_________.
a)while循环执行10        b)循环是无限循环
c)循环体语句以此也不执行    d)循环体语句执行一次
17.语句while(!E);中的表达式!E等价于________.
  a)E==0      b)E!=1    c)E!=0      d)E==1
 
(二) 填空题
 
1 以下的输出结果是     
main()
{    short i;
    i=-4;
    printf(“\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\n”,i,i,i,i);
}
2.  以下的输出结果是     
main()
{    char c=‘x’;
    printf(“c:dec=%d,oct=%o,hex=%x,ASCII=%c\n”,c,c,c,c);
}
3 以下的输出结果是     
main()
{    int x=1,y=2;
    printf(“x=%d y=%d * sum * =%d\n”,x,y,x+y);
    printf(“10 Squared is : %d\n”,10*10);
}
4.  假设变量ab均为整型,以下语句可以不借助任何变量把ab中的值进行交换。请填空。
    a+=      ; b=a-      ; a-=      ;
5 xint型变量,则执行以下语句后的x 值为     
    x=7; x+=x-=x+x;
z=m=0xFFFF
6. 6.    有一输入语句scanf(“%d”,k); 则不能使float类型变量k得到正确数值的原因
           
7.下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束
循环。请填空。
  int n=0,c;
  c=getchar();
  while(____)
  {
  if(_____)n++;
    c=getchar();
  }
 
8.下面程序的功能是用"辗转相除法"求两个正整数的最大公约数。请填空。
 
  #include  <stdio.h>
  main()
  {int r,m,n;
  scanf("%d%d",&m,&n);
  if(m<n)_______;
  r=m%n;
  while(r){m=n;n=r;r=______;}
  printf("%d\n",n);
  }
 
9.下面程序的运行结果是_________.
  #include <stdio.h>
  main()
{int a,s,n,count;
  a=2;s=0;n=1;count=1;
  while(count<=7){n=n*a;s=s+n;++count;}
  printf("s=%d",s);
}
 
10.下面程序段的运行结果是_________.
i=1;a=0;s=1;
do{a=a+s*i;s=-s;i++;}while(i<=10);
printf("a=%d",a);
 
11.下面程序段的运行结果是_______.
  i=1;s=3;
  do{s+=i++;
      if(s%7==0)continue;
      else ++i;
    }while(s<15);
  printf("%d",i);
 
(三)程序设计题
1.求一元二次方程ax2+bx+c=0的根。
2.输入一个表示星期的数字(0表示星期天,1表示星期一,。。。6表示星期六),显示对应的英文单词。
3.已知函数f(x)=3x3-5x2+x-10,输入自变量x,输出函数值f(x)
4.百钱买百鸡问题。
公鸡值钱五,母鸡值钱三,小鸡三值一,白钱买百鸡,问公鸡、母鸡小鸡各几只?
5.编写一个人口统计算法,1982年我国人口为12亿,如果按照年增长率分别为2%, 1.5%, 1%, 0.5% 计算,各需多少年后,我国人口会翻一番(24亿)