计算机程序设计

函数String(n,"strsdfsdfsdf")的功能是()A、把数值型数据转换为字符串B、返回由n个"s"字符C、从字符串"strsdfsdfsdf")中取出前n个字符D、从字符串中第n个字符的位置开始取子字符串

题目

函数String(n,"strsdfsdfsdf")的功能是()

  • A、把数值型数据转换为字符串
  • B、返回由n个"s"字符
  • C、从字符串"strsdfsdfsdf")中取出前n个字符
  • D、从字符串中第n个字符的位置开始取子字符串
如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

请编写函数fun(),该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。

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

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

试题程序:

include<string. h>

include<stdio, h>

define N 80

int fun (char *s)

{

}

main ( )

{

char line [N];

int num=0;

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

gets (line);

num=fun (line);

printf ("The number of word is: %d\n\n ",

num);

}


正确答案:int fun(char *s) { int i j=0; for (i=0;s [i]!='\0' ;i++) if(s[i] !=' '&&(s[i+l]==' '||s[i+1]=='\O')) /*如果一个字母的下一个字符为空格或者结束标记则表示一个单词结束*/ j++; return j; /*返回单词个数*/ }
int fun(char *s) { int i, j=0; for (i=0;s [i]!='\0' ;i++) if(s[i] !=' '&&(s[i+l]==' '||s[i+1]=='\O')) /*如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束*/ j++; return j; /*返回单词个数*/ } 解析:判断单词的个数,我们首先想到的是程序怎样识别是一个单词,也即循环语句中的fir(i=0;s[i]!="\0";i++),本题重点是if句中的条件表达方式。

第2题:

函数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]就交换数据。

第3题:

●试题三

请补充函数fun(),该函数的功能是:只保留字符串中的大写字母,删除其他字符,结果仍保存在原来的字符串中,由全局变量m对删除后字符串的长度进行保存。

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

int m;

void fun(char *s)

{

int i=0,j=0;

char *p=s;

while(*(p+i))

{

if(*(p+i)>=′A′&&*(p+i)<=′Z′)

{

(1) ;

}

(2) ;

}

s[j]=′\0′;

(3) ;

}

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);

printf("\n\nThe length of changed string

is:\%d\n",m);

}


正确答案:

●试题三

【答案】(1sj++=*(p+i)2i++3m=j

【解析】填空1:将大写字母存于原字符串中,数组下标j自加1,为下一次存放做准备。填空2:为了判断字符串中的下一个字符是否为大写字母,变量i自加1。填空3:最后将大写字母的个数,即删除后字符串的长度赋给全局变量m

 

第4题:

请补充main函数,该函数的功能是:从键盘输入一组字符串,以‘*’结束输入,并显示出这个字符串。

例如,输入abcdefghi*,结果显示adcdefghi。

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

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

试题程序:

include<stdio. h>

define N 80

main ()

{

iht i=-l, j=0;

char str IN];

clrscr ();

printf("\n Input a string \n");

do

{

i++;

scanf(【 】);

}while(【 】);

printf ("\n**display the string** \n");

while (j<i)

{

printf (【 】);

j++;

}

}


正确答案:"%c"&str[i] str[i]!='*' "%c"str[j]
"%c",&str[i] str[i]!='*' "%c",str[j] 解析:第一空:本题考查对标准输入函数scanf()的掌握,输入的为字符,所以格式控制符为“%c”,并将输入的字符存于数组str中,注意在地址表列中,要在数组元素str[i]前加上取址符“&”。第二空:由于输入的字符串以'*' 结束,所以只要输入的字符不是'*',就继续输入,即do-while循环继续执行。第三空:本题考查对标准输出函数Pdntf()的掌握,因为输;U的为字符,所以格式控制符为“%c”。

第5题:

请编写函数fun(),该函数的功能是:移动字符串中的内容,移动的规则是把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。

例如,字符串中原有的内容为ABCDEFGHIJK,m的值为 3,移动后,字符串中的内容应该是DEFGHIJKABC。

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

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

试题程序:

include <stdio. h>

include <string.h>

define N 80

void fun (char *w, int m)

{

}

main ( )

{

char a[N]= "ABCDEFGHIJK";

int m;

printf ("The origina string : \n");

puts (a);

printf("\n\nEnter m: ");

scanf ("%d", &m);

fun (a, m);

printf (" \nThe string after moving : \n");

puts (a);

printf ("\n\n");

}


正确答案:void fun(char *wint m) { int ij; char t; for(i=1;i=m;i++) /*进行m次的循环左移*/ {t=w[0]; for(j=1/w[j]!='\0';j++) /*从第2个字符开始以后的每个字符都依次前移一个字符*/ w[j-1]=w[j]; w[j-1]=t; /*将第1个字符放到最后一个字符中*/ } }
void fun(char *w,int m) { int i,j; char t; for(i=1;i=m;i++) /*进行m次的循环左移*/ {t=w[0]; for(j=1/w[j]!='\0';j++) /*从第2个字符开始以后的每个字符都依次前移一个字符*/ w[j-1]=w[j]; w[j-1]=t; /*将第1个字符放到最后一个字符中*/ } } 解析:我们在学习C语言的时候,应该广泛地应用到循环的方法,本题应采用“循环左移”的算法。即从第2个字符开始以后的每个字符都依次前移一个字符,而原来的第1个字符放在串中的最后一个字符。当要平移m个字符时,则要进行m次的循环左移。内嵌的循环的作用是完成从第2个字符开始以后的每个字符都依次前移一个字符,w[j-1]=t的作用是将第1个字符放到最后一个字符中。

第6题:

请补充main函数,该函数的功能是:把字符串str中的字符向前移动一位,原来的第一个字符移动到字符串尾,结果仍然保存在原字符串中。

例如,输入“how do you do?”,则结果输出“ow do you do?h”。

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

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

试题程序:

include <stdio. h>

define N 80

main()

{

char str[N], ch;

int i;

clrscr ();

printf("\n Input a string:In");

gets (str);

printf("\n*** original string ***In");

puts (str);

ch=str [0];

for (i=0;【 】; i++)

str [i]=str [i+1];

【 】;

printf("\n *** new string ***\n");

puts (str);

}


正确答案:str[i+1 str[i]=ch
str[i+1 str[i]=ch 解析:第一空:for循环的条件是要移动的字符不为'0',即还没有到字符串的最后一个字符。第二空:ch中保存了字符串的第一个字符,按题目要求移动到字符串尾,而str[i]是'\0'的前一个字符,也就是字符串尾,故将ch赋给str[i]。

第7题:

请补充函数fun(),该函数的功能是:返回字符数组中指定子符的个数,指定字符从键盘输入。

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

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

试题程序:

include <stdio.h>

define N 80

int fun (char s[],char ch)

{

int i=0, n=0;

while(【 】)

{

if(【 】)

n++;

i++;

}

【 】;

}

main ( )

{

int n;

char str[N], ch;

clrscr ();

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

gets (str);

printf ("\nInput a charactor: \n" ;

scanf ("%c", &ch);

n=fun (str, ch);

printf("\nnumber of %c:%d", ch, n);

}


正确答案:s[i]或者s[i]!= '\0' s[i]=ch return n
s[i]或者s[i]!= '\0' s[i]=ch return n 解析:第一空:while循环的条件是当前参加比较的字符不为‘\0’,即还没有到字符串的最后一个字符。第二空:如果当前字符等于指定字符,则统计个数的变量n加1。第三空:函数要求返回字符数组中指定字符的个数,所以函数要返回 n。

第8题:

请补充函数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'。

第9题:

请补充函数fun(),该函数的功能是:把字符串str中的字符按字符的ASCⅡ码降序排列,处理后的字符串仍然保存在原串中,字符串及其长度作为函数参数传入。

例如,如果输入“cdefgh”,则输出为“hgfedc”。

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

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

试题程序:

include <stdio.h>

define N 80

void fun (char s [], int n)

{

int i, j;

char ch;

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

for(j=【 】;j<n;j++)

if (s[i]<s [j])

{

ch=s [j];

【 】;

s [i] =ch;

}

main ( )

{

int i=0, strlen=0;

char str [N];

clrscr ();

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

gets (str);

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

{

strlen++;

i++;

}

fun (str, strlen);

printf ("\n***display string ***\n");

puts (str);

}


正确答案:I s[j]=s[i]
I s[j]=s[i] 解析:第一空:本题采用选择法进行排序。选择法的算法思路是:如果有n个数则从头到倒数的第2个数一个一个往后走动,每走动一个数总是将这个数与其后的所有数进行两两比较,在比较时按题目要求的顺序将进行比较的这两个数排序 (即交换)。理解了选择法的思路,则此空就非常简单了,应该填i。第二空:借助第三个变量交换两数的方法,非常重要也非常基础,必须要求掌握。

第10题:

下列给定程序中,函数fun()的功能是:从N个字符串中找出最长的那个中,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。

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

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

试题程序:

include <string.h>

include <stdio.h>

define N 5

define M 81

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

fun(char (*sq) [N])

{int i; char *sp;

sp=sq[0];

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

if(strlen(sp)<strlen(sq[i]))

sp=sq[i];

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

return sq;

}

main ()

{char str[N][M], *longest; int i;

printf("Enter %d lines:\n ",N);

for(i=0;i<N;i++) gets(str[i]);

printf("\nThe %d string :\n ",N);

for(i=0;i<N;i++) puts(str[i]);

longest=fun(str);

printf("\nThe longest string :\n ");

puts(longest);

}


正确答案:(1)fun(char(*sq)[N] 正确:char*fun(char(*sq)[M]) (2)错误:return sq; 正确:return sp;
(1)fun(char(*sq)[N] 正确:char*fun(char(*sq)[M]) (2)错误:return sq; 正确:return sp; 解析:函数fun()的肜参为字符串指针数组,每个元素指向一个长度为M的字符串。从主函数中的语句可以看出,字符串指针数组的每个元素指向一个字符串,要求函数fun()找出其中最长的字符串。可先假设指针数组的第1个元素所指的字符串最长,之后对字符串指针数组进行遍历,若遇字符串长度大于待定最长字符期,则令该字符串为待定最长字符串,如此循环直至指针数组末尾,即可得到最氏字符中的地址。

更多相关问题