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

题目

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

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

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

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

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

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

试题程序:

include<conio. h>

include<stdio .h>

include<string.h>

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

{

}

main ()

char s[l00] ,t[l00];

clrscr ();

printf("%nPlease enter string S: ");

scanf("%s ",s);

fun(s,t);

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

}


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

第2题:

请编写函数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循环时,此值永远是偶数。

第3题:

设有如下程序段

char s[20]= "Be i jing",*p;

p=s;

则执行 p=s; 语句后,以下叙述正确的是

A) 可以用 *p 表示 s[0]

B)s 数组中元素的个数和 p 所指字符串长度相等

C)s 和 p 都是指针变量

D) 数组 s 中的内容和指针变量 p 中的内容相等


正确答案:A

第4题:

假定输入的字符串中只包含字母和*号。请编写函数 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以后的所有*号保留下来。

第5题:

以下程序调用函数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即可。

第6题:

下列程序中函数reverse()的功能是将a所指数组中的内容进行逆置。includevoid reverse(i

下列程序中函数reverse()的功能是将a所指数组中的内容进行逆置。 #include<stdio.h> void reverse(int a[],int n) { int i,t; for(i=0;i<n/2,i++) { t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;} } main() { int b[10]={1,2,3,4,5,6,7,8,9,10};int i,s=0; reverse(b,

A.ptr是一个返回值是血的函数

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向血型数据的指针


正确答案:C
解析: 本题考查的是指向函数的指针。函数指针定义的基本格式为:类型标识符(*指针变量名)()。“类型标识符”为函数返回值的类型。

第7题:

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

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

第8题:

设有如下的程序段:char s[]="girl", *t t=s则下列叙述正确的是()。

A.s和t完全相同

B.数组s中的内容和指针变量t中的内容相等

C.s数组长度和t所指向的字符串长度相等

D.*t与s[0]相等


答案:D

第9题:

请编写函数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)。

第10题:

请编写函数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。任何字符串的末尾都要有串结束符。这种算法在很多题中都要用到,学习者可以举一反三地找一些其他相关习题练习一下。

更多相关问题