itgle.com
更多“设i和k都是int类型,则for循环语句( )。for(i=0,k=-1;k=1;i++,k++) printf("****\n");A 循环结束 ”相关问题
  • 第1题:

    下列给定程序中,函数fun()的功能是求出数组中最小数和次最小数,并把最小数和a[0]中的数对调,次最小数和a[1]中的数对调。

    请改正程序中的错误,使它能得到正确结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

    试题程序:

    include <conio.h>

    include <stdio.h>

    define N 20

    void fun(int *a,int n)

    {

    int i, m,t,k;

    /*************found**************/

    for(i=O; i<n; i++)

    {

    m==i;

    for(k=i; k<n; k++)

    if(a[k]<a[m])

    /*************found**************/

    k=m;

    t=a[i];

    a[i]=a[m];

    a[m]=t;

    }

    }

    main()

    {

    int x,b[N]={11,5,12,0,3,6,9,7,10,8},

    n=10,i;

    clrscr();

    for(i=0; i<n; i++)

    printf("%d",b[i]);

    printf("\n");

    fun(b,n);

    for(i=0; i<n; i++)

    printf("%d",b[i]);

    printf("\n");

    }


    正确答案:(1) 错误: for(i=0;in;i++) 正确:for(i=0;i2;i++) (2) 错误:k=m; 正确:m=k;
    (1) 错误: for(i=0;in;i++) 正确:for(i=0;i2;i++) (2) 错误:k=m; 正确:m=k; 解析:错误1:由于题目要求将最小数和次最小数分别与a[0]和a[1]中的数对调,因此这层循环只需循环两次。错误2:赋值语句的执行方向是从右向左,即把右边的值赋给左边的变量。

  • 第2题:

    阅读以下函数说明和C语言函数,将应填入(n)处的语句写在对应栏内。

    【函数2.1说明】

    有1、2、3、4四个数字,输出由这些数字组成的互不相同且无重、复数字的三位数。

    【函数2.1】

    main()

    {

    int i,j,k;

    printf("\n");

    for((1)) /*以下为三重循环*/

    for(j=1; j<5;j++)

    for (k=1;k<5;k++)

    {

    if ((2)) /*确保i, j, k 三位互不相同*/

    printf("%d,%d,%d\n",i,j,k);

    }

    }

    【函数2.2说明】

    计算并输出100之内的素数,每行输出10个,超过10个则换行。

    【函数2.2】

    include <stdio.h>

    include "math.h"

    define N 101

    main()

    {

    int i,j,line,a[N];

    for(i=2;i<N;i++)(3);

    for(i=2;i<sqrt(N);i++)

    for(j=i+1;j<N;j++)

    {

    if(a[i]!=0&&a[j]!=0)

    if(a[j]%a[i]==0)

    (4);

    }

    printfC\n");

    for(i=2,line=0;i<N;i++)

    {

    if(a[i]!=0)

    {

    prinff("%5d",a[i]);

    (5);

    }

    if(line==10)

    {

    prinff("\n");

    line=0;

    }

    }

    }


    正确答案:(1)i=1;i5;i++ (2)i!=k&&i!=j&&j!=k (3)a[i]=I (4)a[j]=0 (5)line++
    (1)i=1;i5;i++ (2)i!=k&&i!=j&&j!=k (3)a[i]=I (4)a[j]=0 (5)line++ 解析:本题考查用C语言程序对组合数和素数的求解。
    在函数2.1中,要求输出由1、2、3、4这些数字组成的互不相同且无重复数字的三位数。程序中是用三重循环来实现的。
    第(1)空是三重循环中第一重循环的循环条件,三位数的最高位可以取题目给出的任意一个数,那么应该和其他循环的条件一样,结合程序中变量的应用情况,不难知道这重循环是用变量i,因此,此空答案为i=1;i5;i++。
    第(2)空是条件判断语句的条件,此条件判断语句的作用注释中已经给出,是用来确保i,j,k三位互不相同的,即所组成的三位数中无重复数字。因此,此空答案为i!=k&&i!=j&&j!=k。
    在函数2.2中,题目要求计算并输出100之内的素数,且每行只能输出10个数,从试题一中我们应该很清楚素数的定义了,最小的素数是2。下面我们来分析程序。
    第(3)空是第一个循环下面的执行语句,此循环是从2开始一直到100,结合程序不难发现程序中用了一个数组来存放要参加运算的100个数,但是并没有对数组进行赋初值操作,那么此空的作用应该就是对数组进行赋初值,因此,此空答案为a[i]=i。
    第(4)空是在循环中的两个条件判断语句下面,从条件判断语句if(a[j]%a[i]==0)不难推断出此循环是用来求当前最小素数的倍数的,此空是对当前最小素数倍数的处理,结合后面的程序可以知道,如果是素数的倍数,那么在数组中的值要被变为0,因此,此空答案为a[j]=0。
    第(5)空是在循环输出语句下面,从条件判断语句if(line==10)及下面的操作可以推断出变量line是用来记录一行中输出素数的个数的,在此空的上面一行程序是输出一个素数,那么接下来应该是将变量line加1,因此,此空答案为line++。

  • 第3题:

    若i和k都是int类型变量,有以下for语句:for(i=0,k=-1;k=1;k++)printf("*****\n");下面关于语句执行情况的叙述中正确的是( )。

    A.循环体执行两次

    B.循环体执行一次

    C.循环体一次也不执行

    D.构成无限循环


    正确答案:D
    此题考查的是基本的循环,答案为D。

  • 第4题:

    下面程序的输出是( )。

    main()

    { int arr[8],i,k=0;

    for(i=0;i<8;i++)

    arr[i]=i;

    for(i=1;i<5;i++)

    k+=arr[i]+i;

    printf("%d\n",k);

    }


    正确答案:20
    20

  • 第5题:

    设已定义i和k为int类型变量,则以下for循环语句_______。 for(i=0;k=-1,k=1;i++,k++) printf("****\n");

    A.判断循环结束的条件不合法

    B.是无限循环

    C.循环一次也不执行

    D.循环只执行一次


    正确答案:B
    解析:本题定义了一个for循环,循环变量是i,但由于本题并没有设置循环条件,所以循环的条件永远默认为真,即无限次执行循环。

  • 第6题:

    下列各循环语句中,不是死循环的是( )。

    A.int i=100; while(1){ i=i%100+1; if(i==20) break; }

    B.int i,sum=0; for(i=1;;i++) sum=sum+1;

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

    D.int s=3379; while(s++%2+3%2) s++;


    正确答案:A
    解析:分析各个选项。选项A中,当变量i的值等于20时,会执行break;语句,即退出整个while循环体。所以选项A的循环语句不是死循环。其他各个选项的循环语句中,没有循环退出点,所以都是死循环。

  • 第7题:

    以下程序运行后的输出结果是main{ int i,m=0,n=0,k=0; for(i=9;i<=11;i++) switch(i/10) { case 0: m++;n++;break;  case 1: n++;break;  default:k++;n++; } printf("%d %d %d\n",m,n,k);}


    正确答案:1 3 0
    在本题中,程序首先定义了四个整型变量,其中变量i为循环变量,其他三个变量都被初始化为0。然后执行循环,从循环变量i的初值和结束条件我们可以看出,循环运行了三次。
    第一次循环,当i=9时,执行switch(i/10),由于变量i和10都是整型数值,按照C语言的规定,计算结果也应为整型,因此,i/10的结果为0,执行case 0结构,即变量m和n的值分别加1,然后执行break语句结束switch结构。
    第二次循环时,i=10,此时i/10=1,执行case 1结构,变量n的值再增加1,然后执行break语句结束switch结构。
    第三次循环时,i=11,此时i/10的结果仍然为1,执行case 1结构,变量n的值再增加1,然后执行break语句结束switch结构。
    循环结束,此时,变量m、n和k的值分别为1、3、0,然后执行输出语句,分别输出这几个变量的值,因此,程序最后的输出结果是1 3 0。

  • 第8题:

    以下程序的输出结果是#include <conio.h>#include <stdio.h>#define M 100void fun(int m, int *a, int *n){ int i,j=0; for(i=1;i<=m;i++) if(i%7==0||i%11==0) a[j++]=i; *n=j;}main(){ int aa[M],n,k; clrscr(); fun(100,aa,&n); for(k=0;k<n;k++) if((k+1)%20==0)printf("\n"); else printf("%d",aa[k]); printf("\n"); }


    正确答案:77
    在本题中,程序首先定义一个宏M,然后定义一个fun函数,函数带有三个形参,分别是一个整型形参m和两个整型指针形参a、n。在函数体中,首先定义两整型变量i和j,并给j赋初值为0,然后执行循环,循环体中首先是一个条件判断语句,如果结果为真,则说明变量i能同时被7和11整除,并将变量i保存到数组中,循环结束后,将数组中元素的个数通过指针变量n进行返回。通过分析可以知道,fun函数的作用是求取1到m中能同时被7和11整除的整数,并将结果保存到数组a中。
    在主函数中,首先定义了两个整型变量和一个整型数组aa,然后调用clrscr()函数对文本模式窗口进行清除操作。接着调用fun函数,根据上面我们对fun函数的分析,要计算1~100之间能同时被7和11整除的整数,很显然,这样的数只有77一个,那么此时数组aa中只有一个元素为77,而n的值是1。
    接着执行for循环,从程序中不难看出循环的作用是将数组aa中的元素按一定的规则输出,其规则为每行最多只能输出20个值。结合上面的分析,数组aa中只有一个元素为77,因此,本题程序的最终输出结果为77。

  • 第9题:

    以下程序的输出结果是 ______ 。main() { int i,k,a[10],p[3]; k=5; for(i=0;i<10;i++)a[i]=i; for(i=0;i<3;i++)p[i]=a[i*(1+1)]; for(i=0;i<3;i++)k+=p[i]*2; printf("%d\n",k); }

    A.20

    B.21

    C.22

    D.23


    正确答案:B
    解析:按程序的流程走一遍,可以得到p[0]=0,p[1]=2,p[3]=6;执行三次k+=p[i]*2,相当于k=5+0*2+2*2+6*2=21。

  • 第10题:

    阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

    [说明]

    函数int psort(int a[],int n)实现将含n个整数的数组a[]的不同元素按从小到大顺序存于数组a[]中。实现方法是从未确定的元素列中找到最小元素并将a[]的第i最小元素交换至a[i]位置。如该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面;否则,忽视该元素。

    [C函数]

    int psort(int a[],int n)

    {int i,J,k,P;

    for(i=0,k=0;i<(1);i++){

    for(j=i+1, (2) ;j<n; j++)

    if(a[p]>a[j])

    p=j;

    if(p!=i){

    t=a[p];

    a[p]=a[i];

    a[i]=t;

    }

    if( (3) ) k++;

    else if( (4) <a[i])

    (5)=a[i];

    }

    return k;

    }

    int a[]={5,7,5,6,4,3,4,6,7};

    main()

    {int k,n;

    for(k=0;k<(Sizeof a)/Sizeof(int);k++)

    printf("%5d",a[k]);

    printf ("\n\n");

    n=psort(a,(sizeof(a))/sizeof(int));

    for(k=0;k<n;k++)

    printf("%5d",a[k]);

    printf("\n\n");

    }


    正确答案:(1) n-1 (2) P=i (3) k==0 (4) a[k-1] (5) a[k++]
    (1) n-1 (2) P=i (3) k==0 (4) a[k-1] (5) a[k++] 解析:本程序排序方法是从未确定的元素列中找到最小元素并将a[]的第i最小元素交换至a[i]位置。如该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面;否则,忽视该元素。这是采用选择法对数组元素进行排序,因此空(1)填“n-1”,空(2)填“p=i”。若该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面;否则,忽视该元素。因此,空(3)填“k==0”;而当a[k-1]a[i]时”,则a[k++]=a[i];否则忽略元素a[i]。所以空(4)填“a[k-1]”空(5)填“a[k++]”。

  • 第11题:

    设i,j,k均为int型变量,则执行完for循环 for(i=0,j=10;i<=j;i++,j--) k=i+j;     后,k的值为()


    正确答案:10

  • 第12题:

    单选题
    若i和k都是int类型变量,有以下for语句:for(i=0,k=-1;k=1;k++)printf("* * * * *");下面关于语句执行情况的叙述中正确的是(  )。
    A

    循环体执行两次

    B

    循环体执行一次

    C

    循环体一次也不执行

    D

    构成无限循环


    正确答案: D
    解析:
    本题中for循环判断条件为k=1,这个语句是赋值语句,总是正确的,所以会陷入无限循环中。答案选择D选项。

  • 第13题:

    该程序运行的结果是( )。

    #include

    #include

    #define M 100

    void fun(int m, int *a, int *n)

    { int i,j=0;

    for(i=1;i<=m;i++)

    if(i%7==0||i==0)

    a[j++]=i;

    *n=j;}

    main()

    { int aa[M],n,k;

    clrscr();

    fun(10,aa,&n);

    for(k=0;k

    if((k+1) ==0)printf("\n");

    else printf("M",aa[k]);

    printf("\n");}


    正确答案:
    7

  • 第14题:

    下列程序段中的变量已正确定义: for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*&qu

    下列程序段中的变量已正确定义:

    for(i=0;i<4;i++,i++)

    for(k=1;k<3;k++);printf("*");

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

    A.********

    B.****

    C.**

    D.*


    正确答案:D
    D。【解析】本题中第二个for循环语句的后面有一个分号,所以两个for循环语句的执行语句为空。当两个for循环语句执行完后,再执行printf语句输出一个星号。所以正确答案为选项D。

  • 第15题:

    阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。

    【说明】

    设有3n+2个球互连,将自然数1~3n+2分别为这些球编号,使相连的两球编号之差的绝对值正好是数列1,2,…,3n+1中的各数,如下图所示:

    其中填自然数的思想如下;

    (1)先自左向右,第1列中间1个填数,然后第2列上、下2个填数,每次2列;但若n为偶数,最后1次只排第1列中间一个数。

    (2)自右向左,先右第1列中间填数;若n是奇数,再右第2列中间填数。然后依次右第1列上、下2个填数,再右第2列中间1个填数,直到左第2列为止。

    【程序】

    include <stdio.h>

    define size 10

    int a[3][size];

    void main()

    {

    int i,k,m,n;

    printf("imput the n:");

    scanf("%d",&n);

    k=1;

    for(i=0; i<=n/2; i++)

    {

    a[1][2*i]=k; k++;

    if((i==n/2)&& (1) ||(i<n/2))

    {

    a[0][2*i+1]=k;

    k++;

    (2)

    k++;

    }

    }

    if(n%2==1)

    {

    (3)

    k++;

    m=n;

    }

    else

    (4)

    for(i=0; i<n/2; i++)

    {

    a[1][m-2*i]=k; k++;

    (5)

    k++;

    a[2][m-2*i-1]=k; k++;

    }

    a[1][1]=k;

    printf("\n");

    printf(" ");

    for(i=1; i<=n; i++)

    printf("%6d",a[0][i]);

    printf("\n\n");

    for(i=0; i<=n+1; i++)

    printf("%6d",a[1][i]);

    printf("\n\n");

    printf(" ");

    for(i=1; i<=n; i++)

    printf("%6d",a[2][i]);

    printf("\n");

    }


    正确答案:(1)(n%2==1) (2)a[2][2*i+1]=k; (3)a[1][n+1]=k; (4)m=n+1; (5)a[0][m-2*i-1]=k;
    (1)(n%2==1) (2)a[2][2*i+1]=k; (3)a[1][n+1]=k; (4)m=n+1; (5)a[0][m-2*i-1]=k; 解析:本题考查C语言中具体算法的实现。
    题目中要求将3n+2个球互连,并用自然数1~3n+2分别为这些球编号,使相连的两球编号之差的绝对值正好是数列1,2,…,3n+1中的各数。题目中还给出了具体的填自然数的思想。我们要完成的工作就是用C语言描述出题目中给出的思想。首先我们需要对其思想有个正确的认识,这是关键所在。
    下面,我们来分析代码。结合整段程序代码,我们可以分析出,二维数组a用来存放我们要填的数字,第一维表示行数,总行数应该是3。第二维表示列数,总列数应该是n+2。其中的第(1)空所在的位置是表示一个条件判断语句的条件,在这之前已经对第1列的中间1个进行了填数,那么根据“先自左向右,第1列中间1个填数,然后第2列上、下2个填数,每次2列”的思想,再结合下面的填数程序语句,我们可以知道,此语句就是用来实现在先第1列中间1个填数后,对第2列上、下2个进行填数,每次2列这个思想的。因此,第(2)空的答案就出来了,是对第2列下(第3行)进行填数,因此,答案为“a[2][2*i+1]=k”。因为条件判断语句下面是进行了2次填数,因此可以判断n应该是个奇数,因为若n为偶数,最后1次只排第1列中间一个数,就不需要这个操作了。因此,第(1)空的作用应该是用来判断n是奇数,所以此空答案为 (n%2==1)。
    第(3)空所在的位置在条件n%2==1成立的情况下才执行,条件n%2==1成立表明 n是奇数,根据若n是奇数,再右第2列中间填数的思想,我们可以知道,此处应该是对右第2列中间填数,因此,答案为a[1][n+1]=k。
    第(4)空所在的位置是条件n%2==1不成立的情况下才执行,在上面我们知道 n%2==1是用来判断n是否为奇数,如果n不是奇数,我们不做什么,但为了方便后面的操作,应该将n+1的值保存起来,因此,此空的答案为m=n+1。
    根据思想:若n是奇数,再右第2列中间填数。然后依次右第1列上、下2个填数,再右第2列中间1个填数,直到左第2列为止。在前面程序中,我们已经完成了前面部分,第(5)空所在的循环体就是用来完成后面部分的,在循环体中已经实现了对中、下进行填数,缺一个对上进行填数的代码,因此,第(5)空要完成的任务就是对上行进行填数,因此,答案为a[0][m-2*i-1]=k。

  • 第16题:

    下面程序的输出是main(){ int arr[10],i,k=0; for(i=0;i<10;i++) arr[i]=i; for(i=1;i<4;i++) k+=arr[i]+i; printf("%d\n",k);}


    正确答案:12
    本题的考查点是for循环。
    第一个循环
    for(i=0;i<10;i++)
          arr[i]=i;
    是将数组元素0~9分别赋值为0~9。
    第二个循环
    for(i=1;i<4;i++)
          k+=arr[i]+i;
    可以变化成以下形式:
    for(i=1;i<4;i++)
          k=arr[i]+i+k;
    计算数组arr[1]、arr[2]、arr[3]的各个值,可以得到k的最终值为12。

  • 第17题:

    分析下列程序,其最终执行结果是______。 main() { int n[3],i,j,k; for(i=0;i<3;i++)n[i]=O; k=2; for(i=0;i<k;i++) for(j=0;j<k;j++) n[j]=n[i]-1; printf("%d\n",n[0]); }

    A.-2

    B.-1

    C.0

    D.-3


    正确答案:D
    解析:当i为0,内循环在j为0时,执行n[j]=n[i]-1;,即n[0]=n[0]-1, n[0]值变为-1:在j为1时,执行n[j]=n[i]-1;,即n[1]=n[0]-1,将-2赋给n[1]。当i为1时,内循环在j为0时,执行n[j]=n[i]-1;,即n[0]=n[1]-1,n[0]值变为-3;在j为1时,执行n[j]=n[i]-1;,即n[1]=n[1]-1,将-3赋给n[1];最后n[0]和n[1]的值均为-3。

  • 第18题:

    有下列程序: include void fun(int * s,int n1,int n2) { int i,j,

    有下列程序: #include <stdio.h> void fun(int * s,int n1,int n2) { int i,j,t; i=n1;j=n2; while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;} } main() { int a[10]={1,2,3,4,5,6,7,8,9,0},k; fun(a,0,3); fun(a,4,9);fun(a,0,9); for(k=0;k<10;k++)printf("%d",a[k]);printf("\n"); } 程序的运行结果是( )。

    A.987654321

    B.4321098765

    C.5678901234

    D.987651234


    正确答案:C
    解析:从题目的主函数入手,定义了一个一维数组并赋韧值,接着调用函数fun(),fun()函数的功能为使数组中的元素逆序,当调用 fun(a,0,3),将实参传递给形参实现数组a中a[0]-a[3]这4个元素逆序;同理调用fun(a,4,9)是将上步排列好的a数组中a[4]-a[9]这6个元素逆序;调用fun(a,0,9)是将数组中a[0]-a[9]这10个元素在逆序,再用printf()函数输出结果为5678901234,故选项C)正确。

  • 第19题:

    若i和k都是int类型变量,有以下for语句

    for(i=0,k=一1;k=l;k++)printf(“*****-\n”);

    下面关于语句执行情况的叙述中正确的是

    A.循环体执行两次

    B.循环体执行一次

    C.循环体一次也不执行

    D.构成无限循环


    正确答案:D
    解析:for循环的执行过程为:(1)计算表达式i=O,k=l。(2)计算表达式k=1,若其值为非0.执行循环体:若其值为0,结束循环。(3)执行一次for循环体。(4)计算表达式k++,转向步骤(2)。本题中表达式k=l的值为0,故构成无限循环。

  • 第20题:

    设已定义i和k为int类型变量,则以下for循环语句______。 for(i=0;k=-1,k=1,i++,k++) printf("****\n");

    A.判断循环结束的条件不合法

    B.是无限循环

    C.循环—次也不执行

    D.循环只执行一次


    正确答案:B
    解析:本题定义了一个for循环,循环变量是i,但由于本题并没有设置循环条件,所以循环的条件永远默认为真,即无限次执行循环。

  • 第21题:

    有以下程序

    #include <stdio.h>

    void fun(int *s,int n1,int n2)

    { int i,j,t;

    i=n1; j=n2;

    while(i<j) {t=s[i];s[i]=s[j];s[j]=t;i++;j--;}

    }

    main()

    { int a[10]={1,2,3,4,5,6,7,8,9,0},k;

    fun(a,0,3); fun(a,4,9); fun(a,0,9);

    for(k=0;k<l0;k++)printf("%d",a[k]); printf("\n");

    }

    程序的运行结果是

    A.0987654321

    B.4321098765

    C.5678901234

    D.0987651234


    正确答案:C
    解析:函数fun(int *s,int n1,int n2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5,6,7,8,9,0};再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。

  • 第22题:

    以下程序输出结果为() #include voidmain() {int i,b,k=0;for(i=1;i<=3;i++) {b=i%3;while(b-->=0)k++;} printf("%d,%d/n",k,b);}

    • A、3,-1
    • B、6,-1
    • C、3,0
    • D、6,-2

    正确答案:D

  • 第23题:

    设j和k都是int类型,则for循环语句 for(j=0,k=-1;k=1;j++,k++) printf("****/n");().

    • A、循环结束的条件不合法
    • B、是无限循环
    • C、循环体一次也不执行
    • D、循环体只执行一次

    正确答案:B