以下程序调用函数swap将指针s和t所指单元(a和b)中的内容交换,请填空。

题目

以下程序调用函数swap将指针s和t所指单元(a和b)中的内容交换,请填空。


相似考题
更多“ 以下程序调用函数swap将指针s和t所指单元(a和b)中的内容交换,请填空。 ”相关问题
  • 第1题:

    请编写函数fun(),其功能是:将s所指字符串中下标为奇数的字符删除,串中剩余字符形成的新串放在t所指数组中。

    例如,当s所指字符串中的内容为siegAHdied,则在t所指数组中的内容应是seAde。

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

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

    试题程序:

    include<conio.h>

    include<stdio.h>

    include<string.h>

    void fun(char*S,char t[])

    {

    }

    main()

    {

    char s[100],t[100];

    clrscr();

    printf("\nPlease enter string s:");

    scanf("%S",S);

    fun(S,t);

    printf("\nThe result is:%s\n",t);

    }


    正确答案:void fun (char *Schar t[]) { int ij=0k=strlen(s); /*k为字符串的长度*/ for(i=0;ik;i=i+2) /*将s所指字符串中下标为偶数的字符存入t所指字符串中*/ t[j++]=s[i]; t[j]='\0'; /*在字符串最后加上结束标志*/ }
    void fun (char *S,char t[]) { int i,j=0,k=strlen(s); /*k为字符串的长度*/ for(i=0;ik;i=i+2) /*将s所指字符串中下标为偶数的字符存入t所指字符串中*/ t[j++]=s[i]; t[j]='\0'; /*在字符串最后加上结束标志*/ } 解析:本题使用了一种i永远是偶数的循环方法,即for(i=0;ik;i=i+2),因为开始时i的值为0,当i+2循环时,此值永远是偶数。

  • 第2题:

    以下程序调用函数swap将指针s和t所指单元(a和B)中的内容交换,请填空。 main() {int a=10,b=20,*s,*t; s=&a;t=&b; ( ) printf("%d%d",a,B); } swap(int*ss,int*tt) {int te; te=*ss; *ss=*tt; *tt=te; }


    正确答案:swap(st);
    swap(s,t); 解析:本题要在主函数中调用swap函数交换a、b的值,实现数据交换需要进行地址传递,所以函数的形参都应该是需要交换的数据的地址,程序中通过“s=&a;t=&b;”将指针变量s和t指向变量a、b的地址,因此,引用时直接引用指针变量s和t即可。

  • 第3题:

    假定输入的字符串中只包含字母和*号。请编写函数 fun(),它的功能是:除了尾部的,:号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。

    例如,若字符串中的内容为****A*BC*DEF*G******,删除后,字符串中的内容应当是ABCDEFG******。

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

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

    试题程序:

    include<conio. h>

    include<stdio. h>

    void fun(char *a, char *p)

    {

    }

    main ( )

    char s[81],*t;

    printf ("Enter a string: \n ");

    gets (s);

    t=s;

    while (*t)

    t++;

    t--; /*指针t指向字符串尾部* /

    while (*t== '*' )

    t--; /*指针t指向最后一个字母*/

    fun (s, t);

    printf ("The string after deleted: \n");

    puts (s);

    }


    正确答案:void fun(char *a char *p) { char *t=a; for (; t=p; t++) if(*t!='*') * (a++)=*t; /*将p以前所有不是*号的字符保留下来*/ for (;*t!='\0' ;t++) * (a++) =.t; / * 将p以后的所有*号保留下来*/ *a='\0'; / *在字符串最后加上结束标记位*/
    void fun(char *a, char *p) { char *t=a; for (; t=p; t++) if(*t!='*') * (a++)=*t; /*将p以前所有不是*号的字符保留下来*/ for (;*t!='\0' ;t++) * (a++) =.t; / * 将p以后的所有*号保留下来*/ *a='\0'; / *在字符串最后加上结束标记位*/ 解析:本题曾在历年上机考试及模拟试题中多次出现,一般用两个循环语句来实现。第1个循环的作用是将p以前所有不是*号的字符保留下来,即删除所有的*号。第2个循环的作用是将p以后的所有*号保留下来。

  • 第4题:

    下列给定程序中,函数fun()的功能是:从s所指字符串中,找出t所指字符串的个数作为函数值返回。例如,当s所指字符串中的内容为abcdabfab,t所指字符串的内容为ab,则函数返回整数3。

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

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

    试题程序:

    include <conio.h>

    include <stdio.h>

    include <string.h>

    int fun (char *s, char *t)

    {int n; char *p, *r;

    n=0;

    while(*s)

    {p=s;

    r=t;

    while (*r)

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

    if(*r==*p) {r++; p++}

    else break;

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

    if(r=='\0')

    n++;

    s++;

    }

    return n;

    }

    main()

    {char s[100], t[100]; int m;

    clrscr();

    printf("\nPlease enter string s: ");

    scanf ("%s",s);

    printf("\nPlease enter substring t: ");

    scanf ("%s",t);

    m=fun (s,t);

    printf("\nThe result is: m=%d\n", m);

    }


    正确答案:(1)错误:if(*r==*p) {r++;p++} 正确:if(*r==*p) {r++;p++;} (2) 错误;if(r=='\0') 正确:if(*r=='\0')
    (1)错误:if(*r==*p) {r++;p++} 正确:if(*r==*p) {r++;p++;} (2) 错误;if(r=='\0') 正确:if(*r=='\0') 解析:从字符串s中找出于串t的方法是:从第一个字符开始,对字符串进行遍历;若s串的当前字符等于t串的第1个字符,两字符串的指针自动加1,继续比较下一个字符;若比较至字符串t的结尾,则跳出循环;若s串的字符和t串的字符不对应相同,则继续对下一个字符进行处理。

  • 第5题:

    以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空:includefind

    以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空: #include<stdio.h> findmax(int*s,int t,int*k) { int p; for(p=0,*k=p;p<t;p++) if(s[p]>s[*k])________; } main() { int a[10],i,k; for(i=0;i<10;i++)scanf("%d",&a[i]); findmax(a,10,&k); printf("%d,%d\n",k,a[k]); }

    A.k=p

    B.*k=p-s

    C.k=p-s

    D.*k=p


    正确答案:D
    解析:k是—个指针,它的值是—个地址,要通过它为主函数的变量改变数据,必须使用*p,边样就可以把—个下标数赋给p指针指向的那个内存单元,所以横线处应填入*k=p。

  • 第6题:

    请编写函数fun,其功能是分别统计形参t所指二维数组中字母A和c的个数。

    注意:部分源程序存在PROGl.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所缩写的若干语句。

    试题程序:


    正确答案:
    inti=0,j=0;//循环统计的下标【考点分析】主要考察考生对多重循环的理解与使用,以及字符串的比较。【解题思路】对二维数组的行列分别循环,行优先,查找数组中元素为A或者C,分别对其进行计数。

  • 第7题:

    给定程序MODll.C中函数fun的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。

    例如,当s所指字符串为:“ABCD”时,则t所指字符串中的内容应为:“ABCDDCBA”。

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

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


    正确答案:(1)void fun(char*s char*t) (2)t[2*d]=‘\0’;
    (1)void fun(char*s, char*t) (2)t[2*d]=‘\0’; 解析:本题中函数的功能是将字符串的正序和反序进行连接。题目中首先由字符串的起始位置正序取字符,然后再由串尾逆序取字符,实现正序和逆序的连接。

  • 第8题:

    请编写函数fun,参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中。注意:部分源程序存在PROGl.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun鸽花括号中填入所缩写的若干语句。给定源程序:


    正确答案:
    【考点分析】主要考察考生对临时变量的初始化及使用,以及如何比较多个数的大小【解题思路】通过初始化指定最大值,最小值,再使用当前的最值与剩下的值比较,若比最大值大,修改最大值;若比最小值小,修改最小值。

  • 第9题:

    下面函数swap_p的功能是完成交换两个指针的操作。请按指定的顺序在题后的相应序号后填上适当的内容,使之成为完整正确的函数。swap_p(s,t)int(),();{int*term;term=();*s=();*t=_();}

    • A、s(或t);*t(或*s);*s;*t;term;
    • B、**s(或**t);**t(或**s);*s;*t;term;
    • C、**s(或**t);**t(或**s);s;t;*term;
    • D、s(或**t);t(或**s);*s;*t;&term;

    正确答案:B

  • 第10题:

    以下关于key()和current()函数的叙述,请找出两个正确的答案()。

    • A、key()函数用来读取目前指针所指向资料的索引值
    • B、key()函数是取得目前指针位置的内容资料
    • C、current()函数用来读取目前指针所指向资料的索引值
    • D、current()函数是取得目前指针位置的内容资料

    正确答案:A,D

  • 第11题:

    多选题
    以下关于key()和t()函数的叙述,请找出两个正确的答案:()。
    A

    key()函数用来读取目前指针所指向资料的索引值

    B

    key()函数是取得目前指针位置的内容资料

    C

    current()函数用来读取目前指针所指向资料的索引值

    D

    current()函数是取得目前指针位置的内容资料


    正确答案: D,B
    解析: 暂无解析

  • 第12题:

    单选题
    下面函数swap_p的功能是完成交换两个指针的操作。请按指定的顺序在题后的相应序号后填上适当的内容,使之成为完整正确的函数。swap_p(s,t)int(),();{int*term;term=();*s=();*t=_();}
    A

    s(或t);*t(或*s);*s;*t;term;

    B

    **s(或**t);**t(或**s);*s;*t;term;

    C

    **s(或**t);**t(或**s);s;t;*term;

    D

    s(或**t);t(或**s);*s;*t;&term;


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

  • 第13题:

    下面程序应能对两个整型变量的值进行交换。以下正确的说法是

    main()

    {int a=10,b=20;

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

    swap(&a,&b);

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

    }

    swap(int p,int q)

    {int t;

    t=p;p=q;q=t;

    }

    A.该程序完全正确

    B.该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可

    C.该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可

    D.以上说法都不对


    正确答案:D

  • 第14题:

    请编写函数fun(),其功能是:将s所指字符串中除了下标为偶数、同时ASCII码值为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。

    例如,若s所指字符串中的内容为ABCDEFG12345,其中字符B的ASCII码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A的ASCII码值为奇数,所在数组中的下标为偶数,因此不应当删除,其他依次类推。最后t所指的数组中的内容应是ACEG。

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

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

    试题程序:

    include<conio.h>

    include<stdio.h>

    include<string.h)

    void fun(char *s, char t[])

    {

    }

    main()

    {

    char s[100],t[100];

    clrscr();

    printf("\nPlease enter string s:");

    scanf("%s",s);

    fun(s,t);

    printf("\nThe result is: %s\n",t);

    }


    正确答案:void fun(char *s/char t[]) {int ij=0; for(i=0;s[i]!='\0';i++) {if(i%2==0 && s[i]%2!=0) t[j++]=s[i]; } /*将下标为偶数同时ASCII码值为奇数的字符放入数组t中*/ t[j]='\0'; /*在字符串最后加上结束标志位*/ }
    void fun(char *s/char t[]) {int i,j=0; for(i=0;s[i]!='\0';i++) {if(i%2==0 && s[i]%2!=0) t[j++]=s[i]; } /*将下标为偶数同时ASCII码值为奇数的字符放入数组t中*/ t[j]='\0'; /*在字符串最后加上结束标志位*/ } 解析:本题要求除了下标为偶数同时ASCII码值为奇数的字符之外,其他字符都删除。即要留下下标为偶数同时ASCII码值为奇数的字符。所以,在if的条件语句中应使用if(i%2==0&&s[i]%2!=0)。

  • 第15题:

    请编写函数fun(),该函数的功能是:将s所指字符串中 ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。

    例如,若s所指字符串中的内容为ABCDEFGl2345,其中字符B的ASCⅡ码值为偶数、…、字符2的ASCⅡ码值为偶数、…,都应当删除,其他依次类推。最后t所指的数组中的内容应是ACEGl35。

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

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

    试题程序;

    include <stdio. h>

    include<string.h>

    include<conio. h>

    void fun(char *s, char t[])

    {

    }

    main ( )

    {

    char s[100],t [100];

    clrscr ();

    printf (,\nPlease enter string S: ");

    scanf ("%s", s);

    fun(s,t);

    printf ("\nThe result is :%s\n",t);

    }


    正确答案:void fun(char *s char t[]) { int i=0; for (;*s!='\0' ;s++) /*找出ASCII值为奇数的字符依次存入数组t中*/ if (*s%2==1) t [i++] =*s; t[i]='\0'; /*在字符串的末尾口上串结束符*/ }
    void fun(char *s, char t[]) { int i=0; for (;*s!='\0' ;s++) /*找出ASCII值为奇数的字符依次存入数组t中*/ if (*s%2==1) t [i++] =*s; t[i]='\0'; /*在字符串的末尾口上串结束符*/ } 解析:要删除ASCH值为偶数的字符,也就是要留下ASCH值为奇数的字符,由于最终是要求求出剩余字符(BPASCⅡ值为奇数)形成的新串,所以本题程序的算法是从原字符串的头到尾扫描并找出ASCⅡ值为奇数的字符依次存入数组冲。此外,还要注意数组t的下标变化和下标的初值(初值必须为0,即i=0),t[i++]州的作用是先使用t[i]然后再使自增1。任何字符串的末尾都要有串结束符。这种算法在很多题中都要用到,学习者可以举一反三地找一些其他相关习题练习一下。

  • 第16题:

    下面程序应能对两个整型变量的值进行交换。以下正确的说法是 include void swap

    下面程序应能对两个整型变量的值进行交换。以下正确的说法是 #include<iostream.h> void swap(int p,int q) { int t; t=p; p=q; q=t;} void main( ) { int a=10,b=20; cout<<a<<" "<<b; swap(&a,&b); cout<<a<<" "<<b;}

    A.该程序完全正确

    B.该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可

    C.该程序有错,只要将swap( )函数中的形参p和q以及t均定义为指针(执行语句不变)即可

    D.以上说法都不对


    正确答案:D
    解析:本题应该把swap()函数改成这样:swap(int*P,int*q){intt;t=*p;*p=*q;*q=t;}执行程序时,先将a的地址传递给指针变量p,b的地址传递给指针变量q,然后将*p(a的值)的值传递给t,将*q(b的值)传递给*p,将t的值传递给*q,从而将a值和b值互换。

  • 第17题:

    以下关于key()和t()函数的叙述,请找出两个正确的答案:()。

    A.key()函数用来读取目前指针所指向资料的索引值

    B.key()函数是取得目前指针位置的内容资料

    C.current()函数用来读取目前指针所指向资料的索引值

    D.current()函数是取得目前指针位置的内容资料


    参考答案:A, D

  • 第18题:

    函数fun的功能是:将s所指字符串中下标为偶数同时ASCIl值为奇数的字符删除,S所指串中剩余的字符形成的新串放在t所指的数组中。

    例如,若s所指字符串中的内容为“ABCDEFGl2345”,其中字符C的ASCIl码值为奇数,在数组中的下标为偶数,因此必须删除;而字符l的ASCIl码值为奇数,在数组中的下标为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是“BDFl2345”。

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

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

    试题程序:


    正确答案:

  • 第19题:

    请编写函数proc(),其功能是:将str所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。

    例如,当str所指字符串中的内容为abcdefg,则在t所指数组中的内容应是bdf。

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

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

    试题程序:


    正确答案:



    【解析】题目要求将下标为偶数的字符删除,其余字符放在新的字符数组t中。首先取出字符串str中下标为奇数的字符,将其赋值给新的字符串t,最后用ˊ\0ˊ作为字符串结束的标志。

  • 第20题:

    函数swap(intx,inty)可以完成对x值和y值的交换,在运行调用函数中的如下语句后,a=2;b=3;swap(a,b);a和b的值分别是()

    • A、3,2
    • B、3,3
    • C、2,2
    • D、2,3

    正确答案:D

  • 第21题:

    以下关于key()和t()函数的叙述,请找出两个正确的答案:()。

    • A、key()函数用来读取目前指针所指向资料的索引值
    • B、key()函数是取得目前指针位置的内容资料
    • C、current()函数用来读取目前指针所指向资料的索引值
    • D、current()函数是取得目前指针位置的内容资料

    正确答案:A,D

  • 第22题:

    多选题
    以下关于key()和current()函数的叙述,请找出两个正确的答案()。
    A

    key()函数用来读取目前指针所指向资料的索引值

    B

    key()函数是取得目前指针位置的内容资料

    C

    current()函数用来读取目前指针所指向资料的索引值

    D

    current()函数是取得目前指针位置的内容资料


    正确答案: C,B
    解析: 暂无解析

  • 第23题:

    问答题
    给定程序MODI1.C中函数fun的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。  例如,当s所指字符串为:“ABCD”时,则t所指字符串中的内容应为:“ABCDDCBA”。请改正程序中的错误,使它能得出正确的结果。  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!  给定源程序:#include #include /*********found*********/void fun(char s,char t){ int i,d; d=strlen(s); for(i=0;i

    正确答案:

    (1)错误:void fun(char s,char t)
    正确:void fun(char *s,char *t)
    (2)错误:t[2*d-1]='\0';
    正确:t[2*d]='\0';或t[d+i]='\0';或t[2*d]=0;或t[d+i]=0;
    解析:

      错误1:根据main函数中fun(s,t)可知,fun函数的第一个参数为数组名称,也就是指针类型。
      错误2:数组t中字符个数是s的2倍,字符存储在t[0]~t[2*d-1],t[2*d]= '\0';第2个for循环结束后,i=d,答案也可为t[d+i]='\0'。