下列程序的功能是输入一个正整数,判断是否是素数,若为素数输出1,否则输出0,请为程序填空。 #include "stdio.h" void main() { int i,x,y=1; scanf("%d",&x); for (i=2;i<=x/2;i++) if () { y=0;break;} printf("%dn",y); }

题目

下列程序的功能是输入一个正整数,判断是否是素数,若为素数输出1,否则输出0,请为程序填空。 #include "stdio.h" void main() { int i,x,y=1; scanf("%d",&x); for (i=2;i<=x/2;i++) if () { y=0;break;} printf("%dn",y); }


相似考题
参考答案和解析
'D:\\a1.dat'For Random Put #10ik Seek #105 根据分析可知,本题打开的文件可以先写后读,既可以读又可以写,同时又发现文件读写使用Get#和Put#语句,因此,应该用随机方式打开文件,故[13]处应填“'D:\\a1.dat'ForRandom”。通过一个For循环输入10个数,并把它们写到文件中去,因此[14]处应填“Put#10,i,r”。为读出第5个整数,必须首先把记录指针移到第5条记录处,可使用Seek#语句,故[15]处应填“Seek#10,5”。
更多“下列程序的功能是输入一个正整数,判断是否是素数,若为素数输出1,否则输出0,请为程序填空。 #include "stdio.h" void main() { int i,x,y=1; scanf("%d",&x); for (i=2;i<=x/2;i++) if () { y=0;break;} printf("%dn",y); }”相关问题
  • 第1题:

    请选出以下程序的输出结果

    #include<stdio.h>

    main()

    { int a[]={1,2,3,4},i;

    int x=0;

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

    { sub(a,x);printf("%d",x);}

    printf("\n");}

    sub(s,y)

    int *s,y;

    { static int t=3;

    y=s[t];t--; }

    A.1 2 3 4

    B.4 3 2 1

    C.0 0 0 0

    D.4 4 4 4


    正确答案:C
    解析:考查通过指针来引用一维数组元素的方法。若指针s指向数组a,则s[t]可以引用数组a中下标为t的元素。

  • 第2题:

    以下程序段的运行结果是( )。 include main() {int x=2,y=1: switch(x) {case 1: switch

    以下程序段的运行结果是( )。 include<stdio.h> main() {int x=2,y=1: switch(x) {case 1: switch(y) {case 0:printf("x=2,y=1\n");break; case 1:printf("y=1\n");break; } case 2:printf("x=2\n"); } }


    正确答案:x=2
    x=2

  • 第3题:

    下列给定的程序中,函数hn()的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。

    请改正函数fun()中的错误,使它能得出正确的结果。

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

    试题程序:

    include <stdio.h>

    include <math.h>

    void fun(int a, int *b, int *c)

    { int i,j,d,y;

    for (i=3;i<=a/2;i=i+2)

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

    {y=0;

    for (j=2;j<=sqrt((double)i);j++)

    if (i%j==0) y=0;

    if (y==1)

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

    { d=i-a;

    for (j-2;j<=sqrt((double)d);

    j++)

    if (d%j==0) y=0;

    if (y=-1)

    {*b=i; *c=d;}

    }

    }

    }

    main ()

    { int a,b,c;

    do

    { printf("\nInput a: ");

    scanf ("%d", &a); }

    while (a%2);

    fun (a, &b, &c);

    printf ("\n\n%d=%d+%d\n", a,b,c);

    }


    正确答案:(1)错误:y=0; 正确:y=1: (2)错误:d=i-a; 正确:d=a-i;
    (1)错误:y=0; 正确:y=1: (2)错误:d=i-a; 正确:d=a-i; 解析:这道题是历年的考题经典。也就是验证哥德巴赫猜想之变体,原来的思路是(任意一个大于等于6的偶数都可以分解为两个素数之和)n为大于等于6的任一偶数,可分解为n1和n2两个数,分别检查n1和n2是否为素数,如都是,则为一组解。如n1不是素数,就不必再检查n2是否素数。先从n1=3开始,检验n1和n2(n2=N-n1)是否素数。然后使n1+2 再检验 n1,n2是否素数,…直到n1=n/2为止。该题思路是与“经典猜想”是相同的。

  • 第4题:

    下面程序的结果【】。 include int f(int); void main() { int x=1,i; for (i=0; i<3;

    下面程序的结果【 】。

    include<iostream.h>

    int f(int);

    void main() {

    int x=1, i;

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

    cout<<f(x)<<‘ ’ ;

    cout<<end1;

    }

    int f(int x){

    int y=1;

    static int z=3

    y++;

    z++;

    return (x+y+z);

    }


    正确答案:7 8 9
    7 8 9

  • 第5题:

    下列程序的输出结果是includeclass Myclass{public:Myclass(int i=0,int j=0){x=i;

    下列程序的输出结果是 #include<iostream.h> class Myclass{ public:Myclass(int i=0,int j=0) { x=i; y=j; } void show( ) {cout < <"x=" < < x < <" " <"y=" < < y < < endl;} void show( ) const{cout < <"x=" < <" " < <"y=" < < y < < endl;} privated: int x; int y; }; void main( ) { Myclass my1(3,4) ; const my2(7,8) ; my1.show( ) ;my2.show( ) ;}

    A.x=4,y=3;x=7,y=8

    B.x=3,y=4;x=7,y=8

    C.x=7,y=8;x=4,y=3

    D.x=8,y=7;x=7,y=8


    正确答案:A
    解析:在Myclass类中定义了两个同名函数show,其中一个是常成员函数。在main函数中定义了两个对象my1、my2,其中对象my2是常对象。这两个对象调用成员函数show时,通过对象my1调用的是没有用const修饰的一般成员函数,而通过对象my2调用的是const修饰的常成员函数。

  • 第6题:

    请选出以下程序的输出结果includemain(){ int a[]={1,2,3,4},i;int x=0;for(i=0;i<4;i

    请选出以下程序的输出结果 #include<stdio.h> main() { int a[]={1,2,3,4},i; int x=0; for(i=0;i<4;i++) { sub(a,x);printf("%d",x);} printf("\n");} sub(s,y) int*s,y; { static int t=3; y=s[t];t--; }

    A.1 2 3 4

    B.4 3 2 1

    C.0

    D.4444


    正确答案:C
    解析:若指针s指向数组a,则s[t]可以引用数组a中下标为t的元素。注意:通过数组的首地址引用数组元素。

  • 第7题:

    字符串str由数字字符组成(长度不超过5个字符),可看作任意进制的数,请补充函数fun(),该函数的功能是:把 str字符串转换成任意进制的数,结果保存在数组xx中,由函数返回转换后数组腆的实际长度。其中x表示str原来的进制, y表示要转换成的进制。例如,输入str=“1111”,x=2,y=10,结果输出:15。如果输入str=“15”, x=10,Y=2,结果输出: 1111。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    include <stdio.h>

    include<stdlib.h>

    include<string.h>

    define N 8

    int xx[N];

    int fun(char *str,int x,int y)

    {

    int sum;

    int i=0;

    char *p=str;

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

    xx[i]=0;

    sum=*p-'0';

    p++;

    while (*p)

    {

    sum=【 】;

    p++;

    }

    i=0;

    while(sum!=0)

    {

    xx[i]=【 】;

    【 】;

    i++;

    }

    return i;

    }

    main ()

    {

    char str[6];

    int i;

    int n;

    int x;

    int y;

    printf("Enter a string made up of '0' to

    '9' digits character:");

    gets(str);

    if(strlen (str) >5)

    {

    printf("Error:string too longer!,

    please input again!\n\n");

    exit(0);

    }

    for(i=0;str[i];i++)

    if(str[i]<'0'||str[i]>'9')

    {

    printf("Error:%c not is '0' to

    '9' digits character!\n\n",

    str[i]);

    exit(0);

    }

    printf("The original string: ");

    puts(str);

    printf("\nINPUT x= ");

    scanf("%d",&x);

    printf("\nINPUT y= ");

    scanf("%d",&y);

    n=fun(str,x,y);

    printf("\n%s is convered to",str);

    for (i=n-1; i>=0; i--)

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

    }


    正确答案:sum*x+*p-'0' sum%y sum=sum/y
    sum*x+*p-'0' sum%y sum=sum/y 解析:第一空:为了进行数字运算,必须要将字符串中的数字字符转换为数字,用数字字符减去字符'0'的ASCII码,就得到对应的数字。将x进制数转换为十进制数的算法是:以1001为例,对应的十进制数为l*x3+0*x2+O*x+1=x*(x*(x*1+0) +0)+1。第二空:将十进制数转换为y进制数的算法与将y进制数转换为十进制数的算法正好相反,十进制数对y取余,得到y进制数的最低位。第三空:将十进制数整除y后得到的数,再对y取余,则得到y进制数的次低位,如此循环,得到y进制数的各位,转换的结果存于数值xx[N]中。

  • 第8题:

    有以下程序 main() { int x=0,y=0,i; for(i=1;++i) { if(i%2==0) {x++;continue;} if(i%5==0){y++;break;}} printf("%d,%d",x,y);} 程序的输出结果是

    A.2,1

    B.2,2

    C.2,5

    D.5,2


    正确答案:A
    解析: 本题考查了continue和break语句在循环语句中的作用。break语句的作用是结束本层循环,而continue语句的作用是结束本次循环直接进入到下次循环。

  • 第9题:

    有以下程序:includedefine N 8void fun(int*x,int i){*x=*(x+i)+1;}main(){int a[N]=

    有以下程序: #include<stdio.h> #define N 8 void fun(int*x,int i) {*x=*(x+i)+1;} main() {int a[N]={1,2,3,4,5,6,7,8},i; fun(a,2); for(i=0;i<N/2;i++) {printf("%d",a[i]);} printf("\n"); } 程序运行后的输出结果是( )。

    A.1 3 1 3

    B.3 2 3 4

    C.4 2 3 4

    D.1 2 3 4


    正确答案:C
    解析:函数fun(int*x,int i)的功能是把数组元素x[i]的值加1赋给x[0]。所以在主函数中执行fun(a,2)后,数组元数a[0]的值等于4。然后在for循环语句中,输出数组a中的前4个元素的值,分别是4,2,3,4。

  • 第10题:

    下面程序的输出结果是( )。 #include "stdio.h" fun (x int x { int y=0; static int z=5; z=x++,y++; return(Z); } main() { int a=4,i,j; for(i=0;i<2;i++) j=fun(a++); printf("%d",j); }

    A.0

    B.3

    C.4

    D.5


    正确答案:D
    解析:本题在fun()函数中定义了一个静态局部变量z,在第一次调用此函数时,z被初始化为5,而以后的调用2都会保留上次调用后的值。主函数通过一个for循环,二次调用fun()函数,第1次调用实参表达式a++的值为4,执行z=x++,y++;语句,因运算符“=”的优先级高于“,”,故z的值为表达式x++的值,x++是先对z赋值再对x加1,则z的值为4。第二次调用实参表达式a++的值为5,返回结果也为5,所以最后输出结果是5。D为所选。

  • 第11题:

    有以下程序:includevoid main(){int x=10,y=10;for(int i=0;x>8;y=++i)cout<

    有以下程序: #include<iostream.h> void main() { int x=10,y=10; for(int i=0;x>8;y=++i) cout<<x--<<","<<y<<","; } 该程序运行后的输出结果是( )。

    A.10,1,9,2

    B.9,8,7,6

    C.10,9,9,0

    D.10,10,9,1


    正确答案:D

  • 第12题:

    有以下程序:include void f(int * x,int * y) int t;t= *x; *x= *y; *y=t;main ( ){in

    有以下程序:#include <stdio.h>void f(int * x,int * y) int t; t= *x; *x= *y; *y=t;main ( ){ int a[8] = { 1,2,3,4,5,6,7,8} ,i, * p, * q; p=a;q =&a[7]; while(p<q) { f(p,q) ;p ++ ;q --; } for(i =0;i<8;i ++ ) printf(" % d," ,a[i]); }程序运行后的输出结果是( )。

    A.8,2,3,4.,5,6,7,1,

    B.5,6,7,8,1,2,3,4,

    C.1,2,3,4,5,6,7,8,

    D.8,7,6,5,4,3,2,1,


    正确答案:D
    解析:程序中函数f的作用是交换指针变量x和y所指向的存储单元的值。在main函数中,通过P=a;q=&a[7];指针变量p指向数组的第一个元素,指针变量q指向数组的最后一个元素。通过调用函数f(p,q)进行前后对称位置上的数组元素的交换。当while循环4次(即p=q)后,a数组中各元素的值分别为8,7,6,5,4,3,2,1,所以程序输出的结果为:8,7,6,5,4,3,2,1,

  • 第13题:

    下列程序的输出结果是()。 include VOid p(int *x) {printf("%d",++*x); } void main()

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

    #include<stdio.h>

    VOid p(int *x)

    { printf("%d",++*x);

    }

    void main()

    { int y=3;

    p(&y);

    }

    A.3

    B.4

    C.2

    D.5


    正确答案:B
    解析:本题考查函数调用时的参数传递。在函数调用时,形参是指向实参的指针变量,则printf的执行结果为3+1=4。

  • 第14题:

    下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,请填空。

    main()

    {int i, x, y=1;

    scanf("%d", &x);

    for(i=2; i<=x/2; i++)

    if【14】{ y=0; break;}

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

    }


    正确答案:
    (x%i==0)

  • 第15题:

    阅读下列函数说明和C代码,填入(n)处。

    [说明]

    以下C语言程序实现了生成从里到外是连续的自然数排列的回旋矩阵,矩阵形式如下:

    7 6 5 16

    8 1 4 15

    9 2 3 14

    10 11 12 13

    程序的变量说明如下:

    x1:矩阵上边界;

    x2:矩阵下边界;

    y1:矩阵左边界;

    y2:矩阵右边界;

    s:数组元素升降标记,s等于1为升,s等于-1为降;

    a[]:存放矩阵元素的数组。

    仔细阅读C语言程序源码,将(n)处的语句补充完整。(注:每处仅一个语句)

    [C程序]

    include<stdio.h>

    void main ( )

    {

    const int N=20;

    int i=0,j=0,a[N][N],n;

    int m,x1,x2,y1,y2,s;

    while (1)

    {

    Printf ("\ninput matrix row N( N>=2): ");

    scanf ("%d",&n);

    printf ("\n");

    if (n>=2)

    break;

    }

    m=n*n;

    x1=0; y1=0; x2=n; y2=n;

    if(n%2==0)

    {j=n-1; y2=n-1; s=1;}

    else

    {i=n-1; y1=1; s=-1; }

    while (1)

    {

    if (s==1)

    {

    for (i; i<x2; i++) a[i][j]=m--;

    i--;

    j--;

    (1)

    for (j;j>=y1;j--) a[i][j]=m--;

    j++;

    i--;

    y1++;

    (2)

    }

    else

    {

    for (i;i>=x1;i--)

    a[i][j]=m--;

    i++;

    j++;

    (3)

    for (j;j<y2;j++)

    (4)

    (5)

    i++;

    (6)

    S=i;

    }

    if (m<1) break;

    }

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

    {

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

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

    printf ("\n");

    }

    printf ("\n");

    }


    正确答案:(1)x2--; (2)s=-1; (3)x1++; (4)a[i][j]=m--; (5)j--; (6)y2--;
    (1)x2--; (2)s=-1; (3)x1++; (4)a[i][j]=m--; (5)j--; (6)y2--; 解析:自然数排列的回旋矩阵是一个经典程序设计题目。本题中生成的是一个从里到外是连续的自然数排列的回旋矩阵。仔细阅读代码,能够发现(1)处应该为矩阵下边界递减;(2)处应该为数组元素递减状态,即为降;(3)处应该为矩阵上边界递增;(4)处应该为存放矩阵元素的数组中的数据递减;(5)处应该为数组元素的列序号递减,即j--;(6)矩阵右边界递减。

  • 第16题:

    下列程序的输出结果是______。main(){ int i; for(i=0;i<2;i++) add();}add(){ int x=0; static int y=0; printf("%d,%d\n",x,y); x++;y=y+2;}

    A.0,0 0,0

    B.0,0 0,2

    C.0,0 1,0

    D.0,0 1,2


    正确答案:B

  • 第17题:

    有以下程序#include <stdio.h>#define N 4void fun(int a[][N], int b[]) { int i; for(i=0; i<N; i++) b[i]=a[i][i];}main(){ int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N], i; fun(x,y); for (i=0; i<N; i++) printf("%d,", y[i]); printf("\n");}程序的运行结果是A.l,2,3,4, B.1,0,7,0, C.1,4,5,9, D.3,4,8,10,


    正确答案:B
    本题考查二维数组的相关操作。程序主要包括两个部分:主函数部分和fun函数。主函数初始给出了一个4×4的二维矩阵,并对每一行赋初值,可以看出每一行都要有4个元素,而对于给出的初值个数不满足4个的,要先从第一列开始将各个值赋给各列,不足的部分用0补齐。函数fun的作用是将二维矩阵a中行号与列号相同的数据赋值给一维矩阵y,y的下标与该数据在a中的行号相同。题目所要求解的即通过printf函数将矩阵y中的元素按照顺序输出。本题中二维矩阵a初始化后为{{1,2,3,0},{4,0,0,0},{5,6,7,8},{9,10,0,0}}。将行号与列号相同的元素赋给y,则y矩阵的数据为{1,0,7,0},输出即可得到结果。

  • 第18题:

    有以下程序:includevoid main(){int x=l0,y=l0:for(int i=0;x>8;y=++i)cout<

    有以下程序: #include<iostream.h> void main() { int x=l0,y=l0: for(int i=0;x>8;y=++i) cout<<x--<<","<<y<<",": } 该程序运行后的输出结果是( )。

    A.10,1,9,2

    B.9,8,7,6

    C.10,9,9,0

    D.10,10,9,1


    正确答案:D

  • 第19题:

    有以下程序 include define N 4 void fun(int a[][N],int b[]) { int

    有以下程序 #include <stdio.h> #define N 4 void fun(int a[][N],int b[]) { int i; for(i=0;i<N;i++) b[i]=a[i][i]; } main() {int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10} },Y[N],i; fun(x,y); for(i=0;i<N;i++) printf("%d,",y[i]); printf("\n"); } 程序的运行结果是______。

    A.1,2,3,4,

    B.1,0,7,0,

    C.1,4,5,9,

    D.3,4,8,10,


    正确答案:B
    解析:在主函数中,定义并初始化了4行4列的二维数组x。对于二维数组元素的赋值,可以只对部分元素赋初值,未赋初值的元素自动取0。x数组元素赋初值后各元素为:

    fun函数的作用是将二维数组a中主对角线元素赋给数组b,由于数组a与数组x共用同一存储单元,也即将数组x中主对角线元素赋给了数组b。又因为数组b与数组y共用同一存储单元,所以主函数中通过语句“printf("%d,"y[i]);”输出的即为数组b中的值,所以程序运行结果为“1,0,7,0,”。

  • 第20题:

    有以下程序,程序执行后,输出结果是【】include void fun(int*A) {a[0]=a[1];} main() {i

    有以下程序,程序执行后,输出结果是【 】

    include<stdio.h>

    void fun(int*A)

    { a[0]=a[1];}

    main()

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

    for(i=2;i>1=0;i-) fun(&a[i]);

    for(i=0;i<10;i++) printf("%d,a[i]);

    printf("\n");

    }


    正确答案:7777654321
    7777654321 解析:本题主要考查函数的调用,第—次调用把数组元素a[2]的地址赋给a,此时a[1]即是原数组的a[3]等于7,再执行赋值语句a[0]=a[1],则a[0]和a[1]中的值都是7,然后再把这个值返回给a[2]同样地第二次调用的时候函数返回值也是7,第三次调用返回值也是7,因此数组的前4个元素,即对a[0]、a[1]、a[2]和a[3]的值都为7,当执行第二个for循环时输出数组中所有元素的值7777654321。

  • 第21题:

    下列程序的输出结果是______。 include main() {intx=10,y=10,i; for(i=0;x>8;y=++) pri

    下列程序的输出结果是______。

    include<stdio.h>

    main()

    { intx=10,y=10,i;

    for(i=0;x>8;y=++)

    printf("%d%d",X--,y);

    }


    正确答案:101091
    101091 解析:for(表达式1;表达式2;表达式3) 语句的功能是:首先计算表达式1的值,然后检测表达式2的值,若其值为真,则执行循环体语句,执行完毕后,再计算表达式3的值。然后再检测表达式2的值是否为真,若为真,继续执行循环体语句,若为假,则退出循环;第 1次循环x>8成立,输出x=10,y=10后,x的值减1,i=1,执行y=++i操作,y的值变为1;判断条件还成立,输出x=9,y=1,然后x的值减1,循环条件不成立,则退出循环。

  • 第22题:

    请选出以下程序的输出结果_______。 includesub(int*s,inty){ static int t=3,y=s[t];t

    请选出以下程序的输出结果_______。 #include<stdio.h> sub(int*s,inty) { static int t=3, y=s[t];t-; } main() { int a[]={1,2,3,4},i,x=0; for(i=0;i<4;i++){ sub(a,x);printf("%d",x);} printf("\n"); }

    A.1234

    B.4321

    C.0

    D.4444


    正确答案:C
    解析:x作为函数sub()的实参时,函数对x值的改变没有返回主函数,并不能使得x的值变化,所以在打印时,x的值是始终不变的,即为0。

  • 第23题:

    请选出以下程序的输出结果()。includesub(int *s,int y){static int t=3; y=s[t];t--;}

    请选出以下程序的输出结果( )。 #include <stdio.h> sub(int *s,int y) { static int t=3; y=s[t];t--; } main() { int a[]={1,2,3,4},i,x=0; for(i=0;i<4;i++) { sub(a,x);printf("%d",x); } printf("\n"); }

    A.1234

    B.4321

    C.0

    D.4444


    正确答案:C
    解析:本题考查函数的形参和实参的关系。函数sub将实参x的值传给形参y,y值的改变不能使x的值发生改变,所以输出的x值始终为0。

  • 第24题:

    试题28

    有以下程序

    #include <stdio.h>

    #define N 4

    void fun(int a[][N], int b[])

    { int I;

    for(i=0; i<N; i++) b[i]=a[i][i]-a[i][N-1-i];

    }

    main()

    { int x[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N], i;

    fun(x,y);

    for(i=0;i<N;i++) printf(“%d,”, y[i]); printf(“\n”);

    }

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

    A.-12,-3,0,0,

    B.-3,-1,1,3

    C.0,1,2,3,

    D..-3,-3,-3,-3


    正确答案:B
    试题28分析
    b[0]=a[0][0]-a[0][3]=1-4=-3;b[1]=a[1][1]-a[1][2]=6-7=-1;b[2]=a[2][2]-a[2][1]=11-10=1;b[3]=a[3][3]-a[3][0]=16-13=3;
    试题28答案
    B