【C/PTA】循环结构专项练习(选择+填空)

简介: 【C/PTA】循环结构专项练习(选择+填空)

本文结合PTA专项练习带领读者掌握循环结构,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。


选择题1

下列程序段执行后s的值为( )。

int i=5, s=0;
   while(i--)
       if (i%2) continue;
       else s+=i;

A.15

B.10

C.9

D.6

选择题2

下列程序段执行后s值为__。

int i=5, s=0;
while(i--)
    if (i%2) continue;
    else s+=i;

A.15

B.10

C.9

D.6

选择题3

设有程序段

int m=20; while (m=0) m=m++;

则下面描述中正确的是( )。

A.while 循环执行 10 次

B.循环是无限循环

C.循环体语句一次也不执行

D.循环体语句执行一次

选择题4

下面的这个循环的循环次数是( )。

for(int i=0,j=10; i=j=10; i++,j--)

A.语法错误,不能执行

B.无限次

C.10

D.1

选择题5

C语言中while和do-while循环的主要区别是()。

A.do-while的循环体至少无条件执行一次

B.while的循环控制条件比do-while的循环控制条件严格

C.do-while允许从外部转到循环体内

D.do-while的循环体不能是复合语句

选择题6

执行以下循环语句时,下列说法正确的是()。

x = -1; 
do { 
      x = x * x; 
} while (x == 0);

A.循环体将执行一次

B.循环体将执行两次

C.循环体将执行无限次

D.系统将提示有语法错误

选择题7

运行以下程序后,如果从键盘上输入65 14<回车>,则输出结果为()。

int main(void)
{  
      int  m, n;
      printf("Enter m,n;");   
      scanf("%d%d", &m,&n);
      while (m != n)
      {   while (m > n)       m = m - n;
          while (n > m)       n = n - m;    
      }
      printf("m=%d\n",m);    
      return 0;
}

A.m=3

B.m=2

C.m=1

D.m=0

选择题8

下列程序段的输出结果是()。

int main(void) 
{
      for(int i = 1; i < 6; i ++) {
            if( i % 2 != 0) { 
                  printf("#");
                  continue;  
            }
      printf("*");     
      }
      printf("\n");    
      return 0;
}

A.#*#*#

B.#####

C.*****

D.*#*#*

选择题9

下列程序段执行后s值为__。

int i=5, s=0;
while(--i!=0){
        if (i%2==1)
            continue;
        s+=i;  

A.15

B.9

C.6

D.4

选择题10

要求通过 while 循环不断输出字符,当读入字母 N 时结束循环。若变量已正确定义,下列程序段正确的是( )。

A.

while ((ch = getchar()) == 'N')  
     printf("%c", ch);

B.

while (ch = getchar() == 'N')
   printf("%c", ch);

C.

while ( (ch = getchar( )) != 'N')
printf("%c", ch);

D.

while (ch = getchar() != 'N')
printf("%c", ch);

选择题11

下列程序段中,非死循环的是( )。

A.

int i=100;
 while(1)
 { i=i%100+1;
   if(i>=100)
       break;    
}

B.

int k=0;
 do{
     ++k;
 }while(k>=0);

C.

int s=10;
 while(s) 
   s++;

D.

for(   ;   ;    )

选择题12

下面程序段执行后的输出结果是( )。

char a[] = "language", *p;
p = a;
while ( *p != 'u' )
{
    printf( "%c", *p - 32 ); p++;
}

A.LANGUAGE

B.language

C.LANG

D.langUAGE

选择题13

当执行以下程序段时,以下答案正确的是?

x=-1;
do {
   x=x*x; 
} while(!x);

A.循环体将执行一次

B.循环体将执行两次

C.循环体将执行无限次

D.系统将提示有语法错误

选择题14

若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是?

for (i=5;i;i--)
   for (j=0;j<4;j++) 
      {......} //内循环体

A.25

B.20

C.24

D.30

选择题15

以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算每位学生的平均分并输出,但运行后结果不正确,调试中发现有一条语句出现的位置不正确。这条语句是:

int main(void)
{ 
  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);
   }
   return 0;
}

A.sum=0.0;

B.sum+=score;

C.ave=sum/4.0;

D.printf(“NO%d:%f\n”,n,ave);

选择题16

阅读下面程序,从给出的4个选项中选出程序的运行结果。

#include <stdio.h>
int main()
{
    int k = 1, m = 0;
    do{
        k += 2;
        m += k;
        if (m > 50)
            break;
    } while (1);
    printf ("sum=%d\n", m);
    return 0;
}

A.m=48

B.sum=63

C.sum=48

D.m=63

选择题17

当执行以下程序段时

x=-1;
do {
 x=x*x;
} while(!x);

A.系统将提示有语法错误

B.循环体将执行一次

C.循环体将执行无限次

D.循环体将执行两次

选择题18

有以下程序

int k=5;
while(--k) 
printf("%d", k-=3);

程序执行后的输出结果是( )。

A.1

B.2

C.4

D.死循环

选择题19

请问下面哪个选项与程序段中while(x)含义一样?

int x,sum=0;
scanf("%d",&x);
while(x)
 sum+=x;

A.while(x!=0)

B.while(x>0)

C.while(x<>0)

D.while(x==0)

选择题20

假设变量 x 数据类型为 int,且初始值为2,则执行下面代码段后

while(x–);

printf(“%d\n”,x);

程序的输出结果是:( )

A.

2

1

0

B.-1

C.1

0

D.死循环

选择题21

以下程序段运行后,输出结果是:

int x = 5;
    while (x > 0)
    {
        printf("%d ", x);
        x /= 2;
    }
    printf("%d ", x);

A.5 2 1 0

B.5 2 1

C.5 2.5 1.25 0.625

D.5 2.5 1 0

选择题22

若j为整型变量,则以下结构中,循环体语句执行的次数是( )。

for(j=2; j<=10; j+=2) 
      printf(“%d”, j);

A.0

B.2

C.5

D.10

选择题23

假设变量s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0),则与以下程序段功能等价的赋值语句是()。

s = a;  
for(b = 1; b <= c; b++) 
      s = s + 1;

A.s = a + b;

B.s = a + c;

C.s = s + c;

D.s = b + c;

选择题24

如下程序的执行结果是

#include <stdio.h>
int main (void)
{
    int i, sum = 0;
    for ( i = 1; i <= 3; sum ++ )
        sum += i ;
    printf ("%d\n", sum);
    return 0;
}

A.6

B.3

C.死循环

D.0

选择题25

下列程序段的功能是

#include <stdio.h>
int main (void)
{
    int i, s = 0;
    for (i = 1; i < 10; i += 2)
        s += i + 1;
    printf("%d\n", s);
    return 0;
}

A.自然数1~9的累加和

B.自然数1~10的累加和

C.自然数1~9中的奇数之和

D.自然数1~10中的偶数之和

选择题26

以下程序段若要使输出值为2,则应该从键盘给n输入的值是

int s = 0, a = 1, n;
scanf("%d", &n);
do {
    s += 1; a = a - 2;
} while (a != n);
printf("%d\n", s);

A.-1

B.-3

C.-5

D.0

选择题27

以下程序段的输出结果是

int i, j;
for (i = 1; i < 4; i++) {
    for (j = i; j < 4; j++)
        printf("%d * %d = %d  ", i, j, i * j);
    printf("\n");
}

1 * 1 = 1 1 * 2 = 2 1 * 3 = 3

2 * 2 = 4 2 * 3 = 6

3 * 3 = 9

选择题28

从键盘输入的整数中,找出最小值min,输入0时结束。请在 1 处填写正确语句。

#include"stdio.h"
main()
{  int min=0,a;
   do{
          scanf("%d",&a);
          if(min>a)min=a;
   }while(__1__);
  printf("%d",min);
}

A.a==0

B.a>0&&a<0

C.a !=0

D.a=0

选择题29

请读程序:

#include<stdio.h>
int main()
{     int x,i;
      for(i=1;i<=50;i++)
     {    x=i;
          if(x%2==0)
          if(x%3==0)
          if(x%7==0)
            printf("%d",i);
       }
       return 0;
}

则上面程序的输出结果是:

A.28

B.27

C.42

D.41

选择题30

以下程序段的输出结果是:

#include<stdio.h>
int main()
{
      int  num = 0, s = 0;
      while(num <= 3){
            num ++;
            s += num;
      }
      printf("%d",s);
      return 0;
}

A.10

B.6

C.3

D.1

填空题1

一群猴子摘了一堆香蕉,它们决定每天吃剩余香蕉的一半,其他留到第二天再吃,可每次吃完后,总有个贪心的小猴会偷偷再吃掉一根香蕉,猴子们每天都按照这种方式吃着香蕉,到第十天时,大家发现只剩下最后一根香蕉了,请问猴子们一共摘了多少根香蕉?

程序写在这里。下面的空分值是3分。
例如:
#include <stdio.h>
int main()
{
    int x=1,i;
    for(i=1;i<=9;i++)
        x=(x+1)*2;
    printf("%d",x);
    return 0;
}

填空题2

计算并输出一个非零整数序列(序列非空)中偶数的平均值。所有输入数据用空格隔开,用0结束输入。输出数据保留2位小数。

#include <stdio.h>
int main()
{
   int number;
   int sum,n;
   double average;
   n = 0;
   sum = 0;
   scanf("%d",&number);
   while(number!=0){
        if(number%2 == 0){
            sum += number;
            n ++;
        }
scanf("%d",&number);
   }
average=sum/n;
   printf("%.2lf\n",average);
   return 0;
}

填空题3

求100-999之间的水仙花数之和(水仙花数 是指一个三位数的各位数字的立方和是这个数本身,如:153=13+53+3^3)。。

#include <stdio.h>
int main()
{
    int d1,d2,d3;
    int n;
    int sum;
    sum = 0;
    for(d1=1;d1<=9;d1++){
        for(d2=0;d2<=9;d2++){
            for(d3=0;d3<=9;d3++){
                n = d1*100 + d2*10 + d3;
                if(n==d1*d1*d1+d2*d2*d2+d3*d3*d3){
                    sum += n;
                }
            }
        }
    }
    printf("%d\n",sum);
    return 0;
}

填空题4

计算1+3+5+7+ …… +N的值,N为奇数,且 1<=N<=10001。

#include <stdio.h>
int main()
{
    int N;
    int sum;
    int step;
    int number;
    scanf("%d",&N);
    sum=0;
    step = 2;
    for(number = 1;number<=N; number+=step )
    {
         sum += number;
    }
    printf("%d\n",sum);    
    return 0;
}

填空题5

输入一个考试成绩的序列,以-1为结束标记。成绩均为整数,且在0到100之间。序列长度在1到1000之间。计算并输出最高、最低和平均成绩。

输入举例:

10 20 30 40 50 -1

输出举例:

50 10 30.00

#include <stdio.h>
int main()
{
   int score; //分数
   int n; //已经输入的数据的数目
   int maxx,minn;
   double average;
   maxx = 0;//假设最高分为0
   minn = 100;//假设最低分为100
   average = 0;//假设平均分为0
n=0;
   scanf("%d",&score);
   while(score != -1){
      if(score>maxx){
          maxx = score;
      }
      if(score<minn){
          minn = score;
      }
      average =average+score;
      n++; 
      scanf("%d",&score);
   }
   printf("%d %d %.2lf\n", maxx,minn,average);
   return 0;
}

填空题6

输入正整数n,计算s = 1/1! + 1/2! + 1/3! + ……+ 1/n!的值。

#include <stdio.h>
int main( void)
{   
    int j, k, n;
    double f, s;
    scanf("%d", &n);
 s=0.0; 
    for (k=1; k<=n; k++){
f=1.0;
         for(j=1; j<=k; j++) 
f*=j;
         s=s+1.0/f;
    }
    printf("sum=%f\n", s); 
    return 0;
}
目录
相关文章
|
6月前
|
机器学习/深度学习 C语言
【C/PTA】选择结构专项练习
【C/PTA】选择结构专项练习
284 0
|
6月前
|
机器学习/深度学习 人工智能 C语言
【C/PTA】循环结构进阶练习(三)
【C/PTA】循环结构进阶练习(三)
248 0
|
4月前
递推 7-1 sdut-C语言实验-母牛的故事
递推 7-1 sdut-C语言实验-母牛的故事
24 0
|
4月前
递推 4----7-4 sdut-C语言实验-马拦过河卒
递推 4----7-4 sdut-C语言实验-马拦过河卒
36 0
|
4月前
7-4 sdut-C语言实验-青蛙过河
7-4 sdut-C语言实验-青蛙过河
25 0
|
6月前
|
机器学习/深度学习 C语言
【C/PTA】循环结构专项练习(选择+填空)
【C/PTA】循环结构专项练习(选择+填空)
177 0
|
6月前
|
C语言
C语言部分期末答案(来自PTA)
C语言部分期末答案(来自PTA)
|
6月前
|
人工智能
【C/PTA】循环结构专项练习(编程)
【C/PTA】循环结构专项练习(编程)
105 0
|
6月前
【C/PTA】选择结构专项练习(额外)
【C/PTA】选择结构专项练习(额外)
218 0
|
6月前
【C/PTA】选择结构进阶练习
【C/PTA】选择结构进阶练习
140 0