下列代码取出一个整数的千位数字。请完善以下代码:int n = 9175023; int m = __(1 )__; Console.WriteLine(m);

题目

下列代码取出一个整数的千位数字。请完善以下代码:int n = 9175023; int m = __(1 )__; Console.WriteLine(m);


相似考题

1.试题四阅读以下说明和C代码,将应填入 (n) 处的字句写在答题纸的对应栏内。[说明]函数MultibaseOutput(long n, int B)的功能是:将一个无符号十进制整数n转换成B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:#define MAXSIZE 32typedef struct {int *elem; /* 栈的存储区 */int max; /* 栈的容量,即栈中最多能存放的元素个数 */int top; /* 栈顶指针 */}Stack;[C代码]int InitStack(Stack *S, int n) /* 创建容量为n的空栈 */{ S->elem = (int *)malloc(n * sizeof(int));if(S->elem == NULL) return -1;S->max = n; (1) = 0 ; return 0;}int Push(Stack *S, int item) /* 将整数item压入栈顶 */{ if(S->top == S->max){ printf("Stack is full!\n"); return -1;}(2) = item ; return 0;}int StackEmpty(Stack S) { return (!S.top) ? 1 : 0; } /* 判断栈是否为空 */int Pop(Stack *S) /* 栈顶元素出栈 */{ if(!S->top) { printf("Pop an empty stack!\n"); return -1;}return (3) ;}void MultibaseOutput(long n, int B){ int m; Stack S;if (InitStack(&S, MAXSIZE)) {printf("Failure!\n"); return;}do {if (Push(&S, (4) )) {printf("Failure!\n"); return;}n = (5) ;}while(n != 0);while(!StackEmpty(S)) { /* 输出B进制的数 */m = Pop(&S);if(m < 10) printf("%d", m); /* 小于10,输出数字 */else printf("%c", m + 55); /* 大于或等于10,输出相应的字符 */}printf("\n");}

2.阅读以下说明和C程序代码,将应填入______处的语句写在答题纸的对应栏内。[说明]函数MultibaseOutput(long n,int B)的功能是:将一个无符号十进制整数n转换成 B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:define MAXSIZE 32typedef struct{int * elem; /* 栈的存储区 */int max; /* 栈的容量,即栈中最多能存放的元素个数 */int top; /* 栈顶指针 */}Stack;[C代码]int InitStack(Stack * S,int n) / * 创建容量为n的空栈 */{ S->elem=(int *)malloc(n * sizeof(int));if(S->elem==NULL)return-1;S->max=n; (1)=O;return 0;}int Push(Stack * S,int item) / * 将整数item压入栈顶 * /{ if(S->top==S->max){ printf(“Stack is full! \n”);return-1;}(2)=item;return 0;}int StackEmpty(StackS) {return (! S.top)? 1:0;} / * 判断栈是否为空 * /int Pop(Stack *S ) / * 栈顶元素出栈 * /{ if(! S->top){printf(“Pop an empty stack! \n”);return-1;}return (3);}void MultibaseOutput(long n,int B){ int m;StackS;if (InitStack(&S,MAXSIZE)){printf(“Failure! \n”);return;}do {if(Push(&S, (4) )){printf(“Failure! \n”);return;}n=(5);}while(n!=0);while(! StackEmpty(S)){ / * 输出B进制的数 * /m=Pop(&S);if(m<10)printf(“%d”,m); / * 小于10,输出数字 * /else printf(“%c”,m+55); / * 大于或等于10,输出相应的字符 * /}printf(“\n”);}

更多“下列代码取出一个整数的千位数字。请完善以下代码:int n = 9175023; int m = __(1 )__; Console.WriteLine(m);”相关问题
  • 第1题:

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

    [说明1]

    函数int fun1(int m, int n)的功能是:计算并返回正整数m和n的最大公约数。

    [函数1]

    int fun1(int m, int n)

    {

    while ((1)) {

    if (m>n) m=m-n;

    else n=n-m;

    }

    (2);

    }

    [说明2]

    函数long fun2(char*str)的功能是:自左至右顺序取出非空字符串str中的数字字符形成一个十进制整数(最多8位)。

    例如,若字符串str的值为“f3g8d5.ji2e3p12fkp”,则函数返回值为3852312。

    [函数2]

    long fun2(char *str)

    {

    int i=0;

    long k=0;

    char *p=str;

    while (*p!='\0' &&(3)) {

    if (*p>='0' && *p<='9') {

    k=(4)+ *p - '0';

    ++i;

    }

    (5);

    }

    return k;

    }


    正确答案:(1)m!=n;(2)return n或return m;(3)i8;(4)k*10;(5)p++
    (1)m!=n;(2)return n或return m;(3)i8;(4)k*10;(5)p++

  • 第2题:

    请编写一个函数void fun(int m, int k, int xx[]),该函数的功能是将大于整数m且紧靠m的k个非素数存入所指的数组中。

    例如,若输入15,5,则应输出16,18,20,21,22。

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

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include<conio.h>

    include<stdio.h>

    void fun(int m,int k,int xx[])

    {

    }

    main()

    {

    int m,n,zz[1000];

    clrscr();

    printf("\nPlease enter two integers:");

    scanf("%d%d",&m,&n);

    fun(m,n,zz);

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

    printf("%d",zz[m]);

    printf("\n");

    }


    正确答案:void fun(int m int k int xx[]) { int ijn; for(i=m+1n=0;nk;i++) /*找大于m的非素数循环k次即找出紧靠m的k个非素数*/ for(j=2;ji;j++) /*判断一个数是否为素数*/ if(i%j==0) { xx[n++]=i; /*如果不是素数放入数组xx中*/ break; /*并跳出本层循环判断下一个数*/ } }
    void fun(int m, int k, int xx[]) { int i,j,n; for(i=m+1,n=0;nk;i++) /*找大于m的非素数,循环k次,即找出紧靠m的k个非素数*/ for(j=2;ji;j++) /*判断一个数是否为素数*/ if(i%j==0) { xx[n++]=i; /*如果不是素数,放入数组xx中*/ break; /*并跳出本层循环,判断下一个数*/ } } 解析:本题只要掌握了判断非素数和素数的算法即不难完成了,其实程序缺少部分也正是这部分。

  • 第3题:

    阅读以下说明和Java代码,回答问题1和问题2,将解答填写在对应栏内。

    【Java代码】

    class usethread implements (1) {

    int num

    usethread(int n){

    num=n;

    }

    public void (2) {

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

    System.out.println("running:"+num);

    System.out.println("finished:"+num);

    }

    public class multhread{

    public static void main(String args[]) (3) InterruptedException{

    Thread m1=new Thread(new usethread(1));

    Thread m2=new Thread(new usethread(2));

    m1.start();

    m2.start();

    m1.join();

    m2.join();

    }

    }

    【问题1】

    补充完整上面Java代码中(n)处。

    【问题2】

    写出上面Java代码运行的结果。


    正确答案:(1)Runnable (2)run() (3)throws 程序输出结果: running:1 running:2 running:1 running:2 running:1 running:2 finished:1 finished:2
    (1)Runnable (2)run() (3)throws 程序输出结果: running:1 running:2 running:1 running:2 running:1 running:2 finished:1 finished:2 解析:本题考查Java中线程的相关知识。
    题目要求按照程序给出的内容来完成填空和输出程序的运行结果。本题的关键是考查我们对线程的了解程度。线程的创建方法有两种,即通过类Thread和接口Runnable创建的方法。刚刚创建的线程还不能与其他的线程并发运行,当调用了方法start后,线程进入就绪态,在被Java虚拟机调度后才进入运行态。进入运行态的线程自动执行成员方法run(),在执行完这个成员方法后线程就又自动进入死亡态。下面来具体分析程序。
    第(1)空在定义类usethread语句中,从后面的关键字implements可以推断出类继承了一个接口,而在Java中,接口一般只有成员变量和成员方法的定义而没有成员方法的具体实现。根据后面的程序new Thread(new usethread(1))可以知道创建了线程对象,而这种创建线程对象的方法是通过接口Runnable来实现的,因此类usethread肯定是继承了接口Runnable,所以此空答案为Runnable。
    第(2)空是一个函数体的函数名,而函数体的作用是循环进行输出,从上面对线程的分析可以知道,此函数一定是run()函数,因此此空答案为run()。
    第(3)空是入口函数后面的语句,结合Java程序的特点,再从此空后面的内容不难推断出,此处是要显式生成异常来处理程序中的异常。而在Java中,一般用关键字throws来显式生成异常,因此此空答案为throws。
    对于问题2,我们可以根据程序来分析,程序中创建了两个线程,根据上面的分析我们可以知道,这两个线程都自动调用了函数run(),因此程序输出结果为:
    running:1
    running:2
    running:1
    running:2
    running:1
    running:2
    finished:1
    finished:2

  • 第4题:

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

    【说明】

    下面C程序代码的功能是:对于输入的一个正整数n(100≤n<1000),先判断其是否是回文数(正读反读都一样的数)。若不是,则将n与其反序数相加,再判断得到的和数是否为回文数,若还不是,再将该和数与其反序数相加并进行判断,依此类推,直到得到一个回文数为止。例如,278不是回文数,其反序数为872,相加后得到的1150还不是回文数,再将1150与其反序数511相加,得到的1661是回文数。

    函数int isPalm(long m)的功能是:将正整数m的各位数字取出存入数组中,然后判断其是否为回文数。若m是回文数则返回1,否则返回0。

    【C程序代码】

    include <stdio.h>

    include <stdlib.h>

    int isPalm(long m)

    { /*判断m是否为回文数*/

    int i = 0, k = 0;

    char str[32];

    while (m > 0) { /*从个位数开始逐个取出m的各位数字并存入字符数组str*/

    str[k++] =(1)+ '0';

    m = m / 10;

    }

    for(i = 0; i < k/2; i++) /*判断str中的k个数字字符序列是否是回文*/

    if ( str[i] != str[(2)] ) return 0;

    return 1;

    }

    int main ( )

    {

    long n, a, t;

    printf("input a positive integer:"); scanf("%ld",&n);

    if (n < 100 || n > =1000) return -1 ;

    while((3)) { /*n不是回文数时执行循环*/

    printf("%ld-> ", n);

    for(a = 0, t = n; t > 0; ) { /*计算n的反序数并存入a*/

    a =(4)*10 + t % 10; t = t / 10;

    } /*end of for*/

    n =(5); /*与反序数求和*/

    } /*end of while*/

    printf ("%id\n",n);

    system("pause"); return 0;

    }


    正确答案:(1) m%10或其等价表示 (2) k-1-i (3) !isPalm(n)或isPalm(n)!=1或isPalm(n)= =0 (4) a (5) n+a
    (1) m%10,或其等价表示 (2) k-1-i (3) !isPalm(n),或isPalm(n)!=1,或isPalm(n)= =0 (4) a (5) n+a 解析:本题考查C程序设计的基本能力。
    函数isPalm(long m)的功能是判断m是否为回文数,其方法是先将m的各位数字依次取出转换为对应的数字字符保存在数组str中,然后再判断str中的字符序列是否对称。代码如下:
    while(m>0){/*从个位数开始逐个取出m的各位数字并存入字符数组str*/
    str[k++] = m %10 +'0';
    m=m/10;
    }
    因此,空(1)处应填入“m%10",将数m的个位数字取出。以上while循环结束时,k的值即为m取初始值时的位数。
    若需判断str[0]、str[1]、…、str[k-1]中的k个数字字符序列是否对称,则应依次比较str[0]与str[k-1]、str[1]与str[k-2]、…str[k/2-1]与str[k2+1]是否相等,若都相等,则是回文数;若其中有一处不等,则不是回文数。代码如下:
    for(i=0;ik/2;i++)
    if ( str[i] !=str[(2)] )return 0;
    因此,空(2)处应填入“k-1-i”。
    根据题目描述,从最初输入的数开始,直到得到一个回文数时结束,因此对于数n,调用函数is Palm(n),根据返回值确定n是否为一个回文数,空(3)处应填入“!isPalm(n)”。
    为了求一个数t的反序数,可从其个位数字开始,依次取出其各位数字并进行组合。下面以t=345举例说明通过整除取余“%”、整除“/”取出各位数字并组合出543的过程。
    初始时:a=0t=345
    下一步:345%10=>5a*10+5=>a=5t/10=345/10=>t=34
    下一步:34%10=>4a*10+4=>a=54t/10=34/10=>t=3
    下一步:3%10=>3a*10+3=>a=543t/10=3/10=>t=0
    因此,可知空(4)处应填入“a”。
    最后数n与其反序数a相加得到新的数,继续产生回文数的过程。空(5)处应填入“n+a”。

  • 第5题:

    有以下程序includevoid f(int *p,int *q);main(){ int m=1,n=2,*r=&m;f(r, &n

    有以下程序 #include<stdio.h> void f(int *p,int *q); main() { int m=1,n=2,*r=&m; f(r, &n); printf("%d,%d",m,n); } void f(int*p,int*q) {p=p+1; *q=*q+1;) 程序运行后的输出结果是______。

    A.1,3

    B.2,3

    C.1,4

    D.1,2


    正确答案:A
    解析:本题主要考查函数实参和形参之间的传递,C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只能由实参传绐形参,而不能由形参传回来给实参。f(r&n)把n的地址传递给q,通过地址传递的函数可以有返回值,因此,n的值为q的返回值3,又因为p是形参变量没有返回值,所以m的值没有改变,因此,选项A是正确的。

  • 第6题:

    下面程序的功能是求整数m、n的最大公约数,请填空。 main() {int m,n,r; scanf("%d,%d",&m,&

    下面程序的功能是求整数m、n的最大公约数,请填空。

    main()

    { int m,n,r;

    scanf("%d,%d",&m,&n);

    if(【 】){r=m;m=n;n=r;)

    while(【 】)

    { r=m%n;m=n;n=r; }

    printf("%d",m);

    }


    正确答案:mn或n>m r或r!=0
    mn或n>m r或r!=0 解析:本题使用的是“辗转相除”法求两个数的最大公约数,即以两个数中较大的除以较小的,如果余数不为0,则将较小的数和余数做同样处理,直到被除断为止,此时较小的数就是两个数的最大公约数。本题第一空要求填写一个if语句的判断条件,如果满足此条件则交换m和n的值,再看后面while循环的循环体,使用m%n求余,则此if语句的作用应该是保证m是两个数中较大的那个,故第一空填mn或n>m。接下来的while循环实现整个辗转相除的过程,其结束条件应该是余数r为0,所以while的循环条件应该填r或r!=0。

  • 第7题:

    阅读以下程序:includeclass kk{int m;public:static int n;kk(){m=0;1void setvalu

    阅读以下程序: #include<iostream.h> class kk { int m; public: static int n; kk() { m=0; 1 void setvalue() { m++; n++; } void output() { cout<<"m="<<m<<",n="<<n<<endl; } }; int kk::n; void main() { kk obj1,obj2; obi1.Setvalue(); obj1.output(); obj2.setValue(); Obj2.output(); } 该程序的执行结果是( )。

    A.m=1,n=1

    B.m=l,n=l m=1,n=1 m=1,n=2

    C.m=1,n=1

    D.m=1,n=1 m=2,n=1 m=2,n=2


    正确答案:B

  • 第8题:

    有以下程序: int m=1; void fun(int *n) { static int m=2; *n*=m-1; m+=2; } main() { int i; for(i=1;i<4;i++) { fun(&m); printf("%d",m); } } 程序的输出结果是( )

    A.1317

    B.2630

    C.1315

    D.1111


    正确答案:C

  • 第9题:

    试题二(共 15 分)

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

    [说明]

    下面 C 程序代码的功能是:对于输入的一个正整数 n(100≤n<1000) ,先判断其是否是回文数(正读反读都一样的数) 。若不是,则将 n 与其反序数相加,再判断得到的和数是否为回文数,若还不是,再将该和数与其反序数相加并进行判断,依此类推,直到得到一个回文数为止。例如,278 不是回文数,其反序数为 872,相加后得到的 1150还不是回文数,再将 1150 与其反序数 511 相加,得到的 1661 是回文数。 函数 int isPalm(long m)的功能是:将正整数 m的各位数字取出存入数组中,然后判断其是否为回文数。若 m是回文数则返回 1,否则返回 0。

    [C 程序代码]

    #include <stdio.h>

    #include <stdlib.h>

    int isPalm(long m)

    { /*判断 m是否为回文数*/

    int i = 0, k = 0;

    char str[32];

    while (m > 0) { /*从个位数开始逐个取出 m的各位数字并存入字符数组 str*/

    str[k++] = (1) + '0';

    m = m / 10;

    }

    for(i = 0; i < k/2; i++) /*判断 str中的 k 个数字字符序列是否是回文*/

    if ( str[i] != str[ (2) ] ) return 0;

    return 1;

    }

    int main( )

    {

    long n, a, t;

    printf("input a positive integer:"); scanf("%ld",&n);

    if (n < 100 || n > =1000) return -1 ;

    while( (3) ) { /*n 不是回文数时执行循环*/

    printf("%ld -> ", n);

    for(a = 0, t = n; t > 0; ) { /*计算 n 的反序数并存入 a*/

    a = (4) *10 + t % 10; t = t / 10;

    } /*end of for*/

    n = (5) ; /*与反序数求和*/

    } /*end of while*/

    printf("%ld\n",n);

    system("pause"); return 0;

    }


    正确答案:


  • 第10题:

    阅读以下代码,回答问题:1 至问题 3 ,将解答填入答题纸的对应栏内。【代码 1】#include
    void swap(int x, int y){int tmp =x; x= y; y= tmp;}int maim(){int a= 3, b= 7;printf("al= %d b1=%d\n",a,b); Swap( a, b);Printf("a2 = %d b2=%d\n”,a,b); return 0;} 【代码 2】#include#define SPACE ¨ //空格字符 Int main(){char str[128] =”Nothing is impossible! “; int i,num =0,wordMark=0; for(i=0;str[i];i++)
    If(str[i]=SPACE)WordMark=0;elseIf(wordMark=0){ wordMark=1;Mun++;} Printf(“%d/n”,num) retun 0; } 【代码 3】#include#define SPACE “//空格字符 int countStrs(char *); int main(){char str[128] = " Nothing is impossible! "; Printf(‘%d/n,(1)(str))retum 0;
    } int countStrs(char *p){int num=0, wordMark= 0; for(;(2);p++) {If((3)=SPACE)wordMark= 0;elseif( !wordMark ) { wordMark = 1;++mun}}retum (4) ;}【问题 1】(4 分)写出代码 1 运行后的输出结果。【问题 2】(3 分)写出代码 2 运行后的输出结果。【问题 3】(8 分)代码 3 的功能与代码 2 完全相同,请补充 3 中的空缺,将解答写入答题纸的对应栏内。


    答案:
    解析:
    a1=3
    b1=7
    a2=7
    b2=3

  • 第11题:

    请写出下列代码段的运行结果 int i=1,n=-1; if(i==0); n=100; Console.Write(n);


    正确答案: 100

  • 第12题:

    问答题
    请写出下列代码段的运行结果 int i=1,n=-1; if(i==0); n=100; Console.Write(n);

    正确答案: 100
    解析: 暂无解析

  • 第13题:

    给出下列代码,如何使成员变量m被方法fun( )直接访问?Class Test{private int m;public static void fun( ){} }

    A.将private int m改为protected int m

    B.将private int m改为public int m

    C.将private int m改为static int m

    D.将private int m改为int m


    正确答案:C

  • 第14题:

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

    [说明]

    设计一程序,输入10个整数到一个数组中,调整这10个数在数组中的位置,使得其中最小的一个数成为数组的首元素,最大的一个数成为数组的末元素。

    [C++程序]

    include <iostream.h>

    define SIZE 10

    void main ( )

    {

    int data [SIZE];

    int m;

    cout<<"请输入"<<SIZE<<"个整数:";

    for ( m=0;m<SIZE; m++ ) (1);

    int j=0,k=0;

    for ( int i=1;i<SIZE; i++ )

    if ((2)) j=i;

    else if ( data[i]<data[k] ) (3);

    if (j>0 ) {

    int d=data[0];

    (4);

    data[k]=d;

    }

    if ( k<SIZE-1 )

    {

    int d=data [SIZE- 1 ];

    data[SIZE- 1 ]=data[j];

    (5);

    }

    cout<<end1<<" 排序后: ";

    for ( m=0;m<SIZE; m++ ) cout<<data[m]<<" " ;

    }


    正确答案:(1)n>>data [m] (2) data[i]>data[j] (3) k=i (4) data[0]=data[k] (5) data[j]=d
    (1)n>>data [m] (2) data[i]>data[j] (3) k=i (4) data[0]=data[k] (5) data[j]=d

  • 第15题:

    给出下列代码,如何使成员变量m被方法fun( )直接访问? class Test{ private int m; public static void fun( ){ … } }

    A.将private int m改为protected int m

    B.将private int m改为public int m

    C.将private int m改为static i

    D.将private int m改为int m


    正确答案:C
    解析:在静态方法中不能直接访问非静态的成员,如果要在fun()中直接访问变量m,应将变量m用static修饰。

  • 第16题:

    以下程序的功能是调用函数fun计算m=1-2+3-4+…+9-10,并输出结果,请填空。int fun( int n){ int m=0,f=1,i; for(i=1;i<=n;i++) { m+=i*f; f=-f; } return m;}main{ printf("m=%d\\n",); }


    正确答案:fun(10)
    在本题中,题目给出了程序的功能是调用函数fun计算m=1-2+3-4+…+9-10,并输出结果。
    在程序中,首先定义了fun函数,该函数带有一个整型变量的形参,在函数体中,定义三个整型变量m、f和i,变量m用来存放计算的结果,变量i作为循环变量,变量f用来控制数据的正负。程序运行for循环。
    当循环变量i=1时,m=0+1*1=1,然后将变量f变为-1。
    当循环变量i=2时,m=1+2*(-1),然后将变量f变为1。
    当循环变量i=3时,m=1+2*(-1)+3*1,然后将变量f变为-1。以此类推,直到循环结束,可以实现m=1-2+3-4+…+9-10。最后通过return语句返回m的结果。
    在主函数中,只有一条输出语句,本题的空就是输出语句的输出表达式,从题目的要求可以知道,此空是调用fun计算m=1-2+3-4+…+9-10,从上面对fun的分析可以,形参n就是要计算数的最大数。因此,此空需要填写的内容为fun(10)。

  • 第17题:

    有以下程序include<stdio.h>int*f(int*p,int*q);main( ){int m=1,n=2,*r=&m;r=f(r,&am

    有以下程序

    include<stdio.h>

    int*f(int*p,int*q);

    main( )

    {int m=1,n=2,*r=&m;

    r=f(r,&n);printf(”%d\n”,*r);

    }

    int-f(int*P,int*q)

    (return(*p>*q)?p:q;)

    程序运行后的输出结果是______。


    正确答案:2
    2 解析:函数f的返回值的类型是int*,作用是返回两个int*型指针所指变量中值大的那个指针的。本题中定义了一个int*型指针r并置初值&m,即指针r指向m。r=f(r,&n),由于m的值小于n值,所以f函数返回值为&n,所以输出为2,即n值。

  • 第18题:

    阅读以下说明及C++程序代码,将应填入(n)处的语句写在对应栏内。

    【说明】

    本程序的功能是实现任意两个大整数的乘法运算,例如:

    输入整数1:8934793850094505800243958034985058

    输入整数2:234584950989689084095803583095820923

    二者之积:

    209596817742739508050978890737675662366433464256830959194834854876 8534

    【C++代码】

    include<iostream.h>

    const int MAXINPUTBIT=100;

    const int MAXRESULTBIT=500;

    class LargeNumber{

    int i,j;

    int temp;

    int one[MAXINPUTBIT+1];

    int onebit; //one的位数

    int two[MAXINPUTBIT+1];

    int twobit; //two的位数

    int result[MAXRESULTBIT+1];

    public:

    LargeNumber();

    ~LargeNumber();

    int inputone(); //出错返叫0,否则返回1

    int inputtwo(); //同上

    void multiplication(); //乘

    void clearresult(); //清零

    void showresult(); //显示

    };

    LargeNumber∷LargeNumber()

    {

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

    {

    one[i]=0;

    two[i]=0;

    }

    nebit=0;

    twobit=0;

    inputone();

    inputtwo();

    }

    LargeNumber∷~LargeNumber()

    {

    }

    int LargeNumber∷inputone()

    {

    char Number[MAXINPUTBIT+1];

    cout<<"Please enter one:";

    cin>>Number;

    i=0;

    j=MAXINPUTBIT;

    while(Number[i]!='\0')

    i++;

    nebit=i;

    for(i--;i>=0;i--,j--)

    {

    if(int(Number[i])>=48&&int(Number[i])<=57)

    (1); //由字符转换为数字

    else

    return 0;

    }

    return 1;

    }

    int LargeNumber∷inputtwo()

    {

    char Number[MAXINPUTBIT+1];

    cout<<"Please enter two:";

    cin>>Number;

    i=0;

    j=MAXINPUTBIT;

    while(Number[i]!='\0')

    i++;

    twobit=i;

    for(i--;i>=0;i--,j--)

    {

    if(int(Number[i])>=48&&int(Number[i])<=57)

    two[j]=int(Number[i]-48); //由字符转换为数字

    else

    return 0;

    }

    return 1;

    }

    void LargeNumber∷multiplication() //乘法

    {

    clearresult();

    int m;

    for(i=MAXINPUTBIT;i>=0;i--)

    {

    temp=two[i];

    for(j=(2),m=MAXINPUTBIT;m>=0;m--,j--)

    {

    result[j]+=temp*one[m];

    if(result[j]>9)

    {

    result[j-1]+=result[j]/10;

    (3);

    }

    }

    &n


    正确答案:(1)one[j]=int(Number[i]-48) (2)MAXRESULTBIT-(MAXINPUTBIT-i) (3)result[j]%=10 (4)result[i] (5)result[i]=0
    (1)one[j]=int(Number[i]-48) (2)MAXRESULTBIT-(MAXINPUTBIT-i) (3)result[j]%=10 (4)result[i] (5)result[i]=0 解析:本题考查用C++实现大整数的乘法运算。
    题目要求程序能实现从键盘任意输入的两个大整数的乘法运算。在程序中定义了一个大整数类,在类中抽象了大整数的一些属性,如长度等,还声明了一些操作,有对大整数输入的操作和对大整数求乘积的操作等。下面来具体[分析]程序。
    第(1)空在第一个大整数的输入函数中,根据此空后面的注释我们知道,其功能是把字符转换为数字。在这里需要注意的是,从键盘输入的是字符型的一串字符,此空所在的条件判断语句是用来把这串字符中的数字找出来,接下来就是此空,要求把字符型的数字转换为整型的数字,而字符型数字与整型数字之间的ASCⅡ码值相差48。从第二个大整数的输入函数中,我们也可以很容易知道此空答案为one[j]=int(Number[i]-48)。
    第(2)空在对大整数求乘积的函数中,是一个循环的初始条件,从程序中不难看出,这个二重循环是用来实现对两个大整数求乘积的,而变量j是用来存放计算结果数组的当前下标的,根据乘法的规则,不难得出此空答案为MAXRESULTBIT-(MAXINPUTBIT-i)。
    第(3)空也在求积的二重循环中,它是在语句if(result[j]>9)为真的情况下执行的语句,如果这个条件为真,说明当前需要进位,但到底是进几位,进位后余下的数又应该是多少呢?这就是这个条件判断语句下要完成的任务,从程序中不难看出,对于到底进几位这个问题已经解决,剩下的就是对进位后余数的处理,此空的任务就是求出进位后的余数并存放到数组的当前位置。所以,此空答案为result[j]%=10。
    第(4)空在输出计算结果的函数中,从程序中可以看出,此空在_个循环中,循环的作用是输出计算结果,而计算结果存放在数组中,因此,这个循环是用来输出数组中的所有元素。因此,此空答案为result[i]。
    第(5)空是在清除计算结果的函数中,函数中只有一个循环,此空就在循环下面,计算结果存放在数组中,要清除计算结果就是把数组清零,那么此空的任务是把数组中的每个元素变成零,因此,此空答案为result[i]=0。

  • 第19题:

    下列程序的输出结果为【 】。ineludeint &max(int &x, int &y){return (x

    下列程序的输出结果为【 】。

    inelude<iostream. h>

    int &max(int &x, int &y)

    {return (x>y? x: y); }

    void main() {

    int n=3, m=12;

    max(m, n)++

    cout<<"m="<<m<<", n= "<<n<<end1;

    }


    正确答案:m=13n=3
    m=13,n=3 解析:本题考察引用作为形参进行参数传递的知识。max函数的功能是返回较大的那个数,而max(m,n)++的作用是将较大值再进行增一运算。

  • 第20题:

    阅读以下代码,回答问题:1至问题3 ,将解答填入答题纸的对应栏内。 【代码1】 include<stdio.h > void swap(int x, int y) { int tmp =x; x= y; y= tmp; } int maim() { int a= 3, b= 7; printf("a1= %d b1=%d\n",a,b); Swap( a, b); Printf("a2 = %d b2=%d\n”,a,b); return 0; } 【代码2】 include<stdio.h> define SPACE " //空格字符 Int main() { char str[128] =" Nothing is impossible! "; int i,num =0,wordMark=0; for(i=0;str[i];i++) If(str[i]==SPACE) WordMark=0; else If(wordMark=0){ wordMark=1; num++; } Printf(“%d/n”,num) return 0; } 【代码3】 include<stdio.h> define SPACE " //空格字符 int countStrs(char *); int main() { char str[128] = " Nothing is impossible! "; Printf("%d/n",(1)(str)) return 0; } int countStrs(char *p) { int num=0, wordMark= 0; for(;(2); p++) { If((3)==SPACE) wordMark= 0; else if( !wordMark ) { wordMark = 1; ++num } } return (4) ; }

    【问题1】(4分) 写出代码1运行后的输出结果。 【问题2】(3分) 写出代码2运行后的输出结果。 【问题3】(8分) 代码3的功能与代码2完全相同,请补充3中的空缺,将解答写入答题纸的对应栏内。


    正确答案:1、a1=3  b1=7    a2=3  b2=7
    2、3
    3、
    1) countStrs
    2) p[i]
    3) p[i]
    4) num

  • 第21题:

    阅读以下C代码,回答问题1至问题3,将解答填入答题纸的对应栏内。【C代码1】 float adjustSalary(int service_year,int age,float salary) { if( service_year <=5 ) { if( age > 30 ) salary *= 1.2; } else salary *= 2.0; return salary;} 【C代码2】 void foo(int coin) { switch (coin) { case 1: printf("Cent\n"); case 5: printf("Nicke1\n");break; case 10: printf("Dime\n"); case 25: printf("Quarter\n"); }} 【C代码3】 int getSum(int n){ int t, i = 0, sum = 0; while ( i < n ) { scanf("%d", &t); if( t<0 ) continue; sum += t; i++; } return sum;} 问题:3.1 【问题1】(3分)对于【C代码1】,写出下面的函数调用后x1、x2和x3的值。x1 = adjustSalary(1,25,9000.0);x2 = adjustSalary(8,32,7000.0);x3 = adjustSalary(5,41,5000.0); 问题:3.2 【问题2】(6分)(1)写出函数调用为foo(1)的输出结果;(2)写出函数调用为foo(5)的输出结果;(3)写出函数调用为foo(10)的输出结果;(4)写出函数调用为foo(25)的输出结果。 问题:3.3 【问题3】(6分)(1)简要说明【C代码3】中的函数getSum()的功能;(2)程序员小王将函数getSum改写后得到下面的函数getSum_v2(即用for语句来描述循环)。请问,getSum_v2的功能是否与【C代码3】的getSum完全相同,若不同,请说明原因。int get Sum_v2(int n){int t,i=0,sum=0;for(i=0;1 scanf("%d",&t);if(t<0)continue;sum+=t;}return sum;}


    答案:
    解析:
    【参考答案】(1)x1=9000.000000(2)x2=14000.000000(3)x3=6000.000000【参考答案】(1)foo(1):Cent Nickel(2)foo(5):Nickel(3)foo(10):Dime Quarter(4)foo(25):Quarter
    【参考答案】(1)函数getSum()是求n个不小于0的整数之和。(2)函数getSum_v2的功能与函数getSum不同,getSum()是求n个不小于0的整数之和,计算和的数目总数是n个,而getSum_v2是总共输入了n个数,这n个数种有大于等于0,也有小于0的数,最终只把大于等于0的数进行求和,因此最终计算的和的个数有可能是小于n的。
    【解析】

    【解析】 对于x1,service_year=1,age=25,salary=9000.0,首先判断service_year<=5,因此再判断age<30,不进行任何运算,salary仍为9000.0,由于salary为float类型数据,因此输出为9000.000000。 对于x2,service_year=8,age=32,salary=7000.0,首先判断service_year>5,因此直接进行else中的运算,salary=7000.0*2.0=14000.0,由于salary为float类型数据,因此输出为14000.000000。 对于x3,service_year=5,age=41,salary=5000.0,首先判断service_year<=5,因此再判断age>30,进行运算salary=5000.0*1.2=6000.0,由于salary为float类型数据,因此输出为6000.000000。【解析】foo(1):coin=1,执行printf(“Cent\n”),输出Cent并回车,继续执行printf(“Nickel\n”),输出Nickel并回车,再执行break,结束foo函数。foo(5):coin=5,执行printf(“Nickel\n”),输出Nickel并回车,再执行break,结束foo函数。foo(10):coin=10,执行printf(“Dime\n”),输出Dime并回车,继续执行printf(“Quarter\n”),输出Quarter并回车,结束foo函数。Foo(25):coin=25,执行printf(“Quarter\n”),输出Quarter并回车,结束foo函数。【解析】(1)函数getSum()是求n个不小于0的整数之和。(2)函数getSum_v2的功能与函数getSum不同,原因:在getSum中,当t<0时,继续运行scanf函数获得t,而不会运行i++运算,i的值不会改变,最终会获得n个不小于0的整数并求和;而在getSum_v2中,当t<0时,首先进行i++,再继续scanf函数,因此当输入的数出现负值时,会导致最终运算的值可能少于n个。

  • 第22题:

    对于下列代码段,执行后输出结果是()。 int n,m; int[] a=new int[5]; n=10; m=10; try{ for(inti=0;i<=a.Length;i++); a[i]=i; n=1/(n-m); } catch(DivideByZeroExceptione1){ Console.WriteLine(“产生零除异常!”); } catch(IndexOutOfRangeExceptione2) { Console.WriteLine(“产生数组访问越界异常!”); }


    正确答案: 输出“产生数组访问越界异常!

  • 第23题:

    下列程序的运行结果是()。 classprogram { staticvoidFunc(inta,outintx,outinty) { x=a/10; y=a%10; } staticvoidMain() { int m=35; int a,b; Func(m,outa,outb); Console.WriteLine("{0},{1}",a,b);


    正确答案:3,5

  • 第24题:

    问答题
    对于下列代码段,执行后输出结果是()。 int n,m; int[] a=new int[5]; n=10; m=10; try{ for(inti=0;i<=a.Length;i++); a[i]=i; n=1/(n-m); } catch(DivideByZeroExceptione1){ Console.WriteLine(“产生零除异常!”); } catch(IndexOutOfRangeExceptione2) { Console.WriteLine(“产生数组访问越界异常!”); }

    正确答案: 输出“产生数组访问越界异常!
    解析: 暂无解析