有以下程序,其中函数f的功能是将多个字符串按字典顺序排序#include<string,h>void f(char*p[],in

题目
有以下程序,其中函数f的功能是将多个字符串按字典顺序排序includevoid f(char*p[],in

有以下程序,其中函数f的功能是将多个字符串按字典顺序排序 #include <string,h> void f(char *p[], int n) { char *t; int i,j; for(i=0; i<n-1; i++) for(j=i+1;j<n; j++) if(strcmp(p[i],p[j])>0) {t=p[i];p[i]=p[j]; p[j]=t;} } main() { char *p[5]={"abc","aabdfg","abbd","dcdbe","cd"}; f(p,5); printf("%d\n"。strlen(p[1])); } 程序运行后的输出结果是

A.2

B.3

C.6

D.4

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

第1题:

有以下程序,其中函数的功能是将多个字符串按字典顺序排序: includevoid f(char*p[],i

有以下程序,其中函数的功能是将多个字符串按字典顺序排序: # include<string.h> void f(char*p[],int n) {char *t; int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strcmp(p[i],p[j])>0){t=p[i];p[i]=p[j]p[j]=t;} } main() {char *p[5]={"abc","aabdfg","abbd","dcdbe","cd"}; f(p,5); printf("%d\n",strlen(p[1])); } 程序运行后的输出结果是 ______。

A.2

B.3

C.6

D.4


正确答案:D
解析:strcmp(s1,s2)是比较两个字符串的大小,s1>s2时值为正数,s1s2时值为负数,s1=s2时值为0。调用 f(p,5)函数的功能是将存储字符串的数组p中的字符串从小到大进行排列。最后的排列结果为:p[5]={"aabdfg","abbd", "abc","cd","dcdbe"},最后要求输出的是"abbd"的长度。

第2题:

有以下程序:includevoid f(char p[][10],int n)/* 字符串从小到大排序*/{char t[10];

有以下程序: #include<string.h> void f(char p[][10],int n) /* 字符串从小到大排序 */ {char t[10];int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strcmp(p[i],p[j])>0{strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy([i],t);} } main() {char p[5][10]={"abc","aabdfg","abbd","dcdbe","cd"; f(p,5); printf("%d\n",strlen(p[0])); } 程序运行后的输出结果( )。

A.2

B.4

C.6

D.3


正确答案:D
解析:strcmp(str1,str2)是比较字符串str1和str2,若str1>str2,返回值为正数;f()函数的功能就是将字符串按照从小到大的顺序进行排列,需要注意的是比较的足字符串中每个字符的ASCII值的大小,所以元素p[0]是“abc”,它的长度为3。

第3题:

请补充函数fun(),该函数的功能是:依次取出字符串中所有的小写字母以形成新的字符串,并取代原字符串。

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

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

试题程序:

include<stdio.h>

include<conio.h>

void fun(char *s)

{

int i=0;

char *p=s;

while(【 】)

{

if (*p>='a'&&*p<='z')

{

s[i]=*p;

【 】;

}

p++;

}

s[i]=【 】;

}

main()

{

char str[80];

clrscr();

printf("\nEnter a string:");

gets(str);

printf("\n\nThe string is:\%s\n",str);

fun(str);

printf("\n\nThe string of changing

is:\%s\n",str);

}


正确答案:*p i++ '\0'
*p i++ '\0' 解析:第一空:while循环的循环条件是指针p所指的字符不是'\0',也就是说,当处理到字符串最后的结束标记字符 '\0'时,while循环结束。第二空:如果指针p所指的字符为小写字母,则将这个字符存于原字符串s中,同时,下标自加1,为下一次存放做准备。第三空:在取出所有小写字母并存于原字符串s后,要注意在最后加上字符串结束标志符'\0'。

第4题:

有以下等程序include void f(char *s, char *t){ chark; k=*s; *s=*t; *t=k; s++;t-

有以下等程序#include <string. h>void f(char *s, char *t){ char k; k=*s; *s=*t; *t=k; s++; t--; if(*s) f(s, t);}main (){ char stt[10] ="abcdefg", *p; p=str+strlen (str)/2+1; f (p,p-2); print f ( "%s\n", str);}

A.abcdefg

B.gfedcba

C.gbcdefa

D.abedcfg


正确答案:B
解析:本题考查的是递归函数。在一个函数中直接或间接地调用了自身,则称此函数为递归函数。本题定义的函数f()就是一个递归函数。它先交换两个字符指针所指的内容,然后将第1个指针往后移动一位,第2个指针往前移动一位,如果第1个指针所指内容不是字符串结束标志,则递归调用自身。主函数中首先定义了一个字符数组sTR[10]="abcdefg",然后定义了一个字符指针p=str+strlen(str)/2+1,即让p指向str+4(或&str[4])的位置.然后调用f(p,p-2);,这使得p所指的str[4]及其以后的2个位置str[5]、str[6]中的内容同p-2所指的3tr[2]及其以前的2个位置str[1]、str[0]中的内容互相交换。即让整个字符串逆序。所以本题应该选择B。

第5题:

有以下程序,其中函数f的功能是将多个字符串按字典顺序排序#includestring.hvoidf(char*p[],intn){char*t;inti,j;for(i=0;in-1;i++)for(j=i+1;jn;j++)if(strcmp(p[i],p[j])0){t=p[i];p[i]=p[j];p[j]=t;}}main(){char*p[5]={“abc”,“aabdfg”,“abbd”,“dcdbe”,“cd”}。

:A.2

B.3

C.6

D.4


正确答案:D

第6题:

有以下程序:includeincludeincludevoid f(char*s,char*t){char k;k=*s; *

有以下程序: #include<stdio.h> #include<string.h> #include void f(char*s,char*t) { char k; k=*s; *s=*t; *t=k; s++;t--; if(*s)f(s,t): } main() {char str[10]="abcdefg",*P; P=str+strlen(str)/2+1: f(p,p-2); printf("%s\n",str); } 程序运行后的输出结果是( )。

A.abcdefg

B.gfedcba

C.gbcdefa

D.abedcfg


正确答案:B

第7题:

函数Rdata()实现从文件IN.dat中读取一篇英文文章存入字符串数组string中,请编写函数SortCharA(),其功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字爷串数组string中。最后调用函数Wdata(),把结果string输出到OUT.dat文件中。

例如,原文:dAe, BfC.

CcbbAA

结果:,. ABCdef

AACbbc

原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。

注意:部分源程序已经给出。请勿改动主函数main()、读数据函数Rdata()和输出数据函数Wdata()的内容。

include <stdio.h>

include <string.h>

include <conio.h>

char string [50] [80];

int maxline = 0; /* 文章的总行数 */

int Rdata (void);

void Wdata (void);

void SortCharA(void)

{

}

void main ()

{ if (Rdata ())

{ printf("数据文件 IN. dat 不能打开! \n\007");

return;

}

SortCharA ();

Wdata ( );

}

int Rdata (void)

{ FILE *fp;

int i = 0;

char *p;

if ((fp = fopen("IN. dat", "r")) == NULL)

return 1;

while (fgets(string[i], 80, fp) != NULL)

{ p = strchr(string[i], '\n');

if (p)

*p = 0;

i++;

}

maxline = i;

fclose (fp);

return 0;

}

void Wdata (void)

{ FILE *fp;

int i;

fp = fopen("OUT. dat", "w");

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

{ printf("%s\n", string[i]);

fprintf(fp, "%s\n", string[i]);

}

fclose (fp);

}


正确答案:void SortCharA (void) { int i j k str1; char ch; for (i=0; imaxline; i++) { str1 = strlen(string[i]); for (j=0; jstr1-1; j++) for (k=j+1; kstr1; k++) if (string[i] [j] > string [i] [k]) { ch = string[i] [j]; string[i] [j] = string[i] [k]; string[i] [k] = ch; } } } [解题思路] 这里采用strlen字符函数获取字符串的长度;对文章中的每一行的字符利用双重循环进行两两比较较小的字符往行前放较大的字符往行后放这样就实现了以行为单位对字符从小到大的排序。在程序中的语句是if(string[i][j]>string[i][k])成立string[i][j]和string[i][k]就交换数据。
void SortCharA (void) { int i, j, k, str1; char ch; for (i=0; imaxline; i++) { str1 = strlen(string[i]); for (j=0; jstr1-1; j++) for (k=j+1; kstr1; k++) if (string[i] [j] > string [i] [k]) { ch = string[i] [j]; string[i] [j] = string[i] [k]; string[i] [k] = ch; } } } [解题思路] 这里采用strlen字符函数获取字符串的长度;对文章中的每一行的字符利用双重循环进行两两比较,较小的字符往行前放,较大的字符往行后放,这样就实现了以行为单位对字符从小到大的排序。在程序中的语句是if(string[i][j]>string[i][k])成立,string[i][j]和string[i][k]就交换数据。

第8题:

有以下程序 include void f(char p[][10],int n)/*字符串从小到大排序*/ {

有以下程序 #include<string.h> void f(char p[][10],int n)/*字符串从小到大排序*/ { char t[10];int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strcmp(p[i],p[j])>0) {strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);} } main() { char p[5][10]={"abc","aabdfg:,"abbd","dcdbe","cd"}; f(p,5); printf("%d\n",strlen(p[0])); } 程序运行后的输出结果是

A.2

B.4

C.6

D.3


正确答案:C
解析:本题中函数f()利用选择法对字符串数组p中的字符中按从小到大排序,字符串比较的方法是:依次对S1和S2所指字符串对应位置上的字符两两进行比较,当出现第一对不相同的字符时,即由这两个字符(ASCII码值)决定所在串的大小,因此最后在 p[0]中存储的是最小的字符串是“aabdfg”。最后用 strlen()函数求得该字符串的长度为6。

第9题:

有以下程序:includevoid f(char *s, char *t){ char k;k=*s;*s=*t; *t=k;s++;t- -;

有以下程序:#include <string .h>void f(char *s, char *t){ char k; k=*s; *s=*t; *t=k; s++; t- -; if(*s) f(s, t);}main(){ char str[10]="abcdefg",*p; p=str+strlen(str)/2+ 1; f(p,p-2); printf("%s\n", str);}程序运行后的输出结果是( )。

A.abcdcfg

B.gfedcba

C.gbcdefa

D.abedcfg


正确答案:B
解析:本题定义的函数f()是一个递归函数。它先交换两个字符指针所指的内容,然后将第1个指针往后移动—位,第2个指针往前移动一位,如果第1个指针所指内容不是字符串结束标志,则递归调用自身。主函数中首先定义了—个字符数组sir[10]=“ahcdeft”然后定义了一个字符指针p=str+strlen(str)/2+1,即让p指向str+4(或&str[4])的位置。然后调用f(p,p-2);,这使得p所指的str[4]及其以后的2个位置str[5]、str[6]中的内容同p-2所指的str[p]及其以前的2个位置str[1]、str[0]中的内容互相交换。即让整个字符串逆序。所以本题应该选择B。

第10题:

有以下程序:includevoid f(char*s,char*t){ char k;k=*s;*s=*t;*t=k;s++;t--;if(*s)f

有以下程序: #include<string.h> void f(char*s,char*t) { char k; k=*s; *s=*t; *t=k; s++; t--; if(*s) f(s,t); } main( ) {char str[10]="abcdefg",*p; p=str+strlen(str)/2+1; f(p,p-2); printf(~%s\n",str); } 程序运行后的输出结果是 ______。

A.abcdef

B.gfedcba

C.gbcdefa

D.abedcfg


正确答案:B
解析:p=str+strlen(str)/2+1=str+4,f(p,p-2)的功能是将p[4]与p[2]互换,p[5]与p[1]互换,p[6]与p[0]互换,最后的结果为gfedcba。

更多相关问题