函数String(3,”str”)的功能是()
A.把数值型数据转换成字符串
B.返回有3个字符串组成的字符串
C.从字符串中第3个字符
D.从字符串中第3个字符的位置开始取字符串
A.把数值型数据转换成字符串
B.返回有3个字符串组成的字符串
C.从字符串中第3个字符
D.从字符串中第3个字符的位置开始取字符串
以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。 #include<string> char*scmp(char*s1,char*s2) { if(strcmp(s1,s2)<0) return(s1); else retrun(s2); } main() { int i;char string[20],str[3][20]; for(i=0;i<3;i++)gets(str[i]); strcpy(string,scmp(str[0],str[1]);//库函数strcpy对字符串进行复制 strcpy(string,scmp(string,str[2])); puts(string) } 若运行时依次输出:abcd、abba和abc三个字符串,则输出结果为()。
A.abcd
B.abba
C.abc
D.abca
●试题三
请补充函数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);
}
Function delchar(str As String,ch As String)As String
Dim k As Inlegcr,temp As String,ret As String
ret=""
For k=1 To Len(str)
temp=Mid(str,k,1)
If temp=ch Then
ret=ret&temp
End If
Next k
delchar=ret
En d Function
但实际上函数有错误,需要修改,下面的修改方案中正确的是()。
A.把ret=ret&temp改为ret=temp
B.把If temp=ch Then改为If temp<>ch Then
C.把delchar=ret改为delchar=temp
D.把ret=""改为temp=""
函数String(n,"str")的功能是()。
A.把数值型数据转换为字符串
B.返回由n个字符组成的字符串
C.从字符串中取出n个字符
D.从字符串中第n个字符的位置开始取子字符串
下列给定程序中,函数fun()的功能是:在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。例如,调用fun()函数之前给字符串输入ABCDeFGH,调用后字符串中的内容为 eABCDFGH。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
include<stdio.h>
/***************found************/
fun(char *p)
{ char max, *q;int i=0;
max=p[i];
while (p[i]!=0)
{if (max<p[i])
{
/***************found************/
p = q +i;max=p[i];
}
i++;
}
/***************found************/
while (q<p)
{*q=*(q-1);
q--;
}
p[0]=max;
}
main()
{ char str[80];
printf("Enter a string: "); gets(str);
printf("\nThe original string: ");
puts(str);
fun(str);
printf("\nThe string after moving: ");
puts(str); printf("\n\n");
}
例如:当str[N]“123 abcdef ABCDEF!”,结果输出:
“123ABCDEFABCDEF!”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
include<stdio.h>
include<stdlib.h>
include<conio.h>
define N 80
void main()
{
int j;
char str[N]="123abcdef ABCDEF!";
char* pf=str;
clrscr();
printf("*** original string ***\n");
puts(str);
【 】;
while(*(pf+j)).
{
if(*(pf+j)>='a'&&* (pf+j)<='z')
{
*(pf+j)=【 】;
j++;
}
else
【 】;
}
printf("****** new string ******\n");
puts(str);
system("pause");
}
阅读下列程序说明和C++程序,把应填入其中(n)处的字句,写对应栏内。
【说明】
下面的程序实现了类String的构造函数、析构函数和赋值函数。
已知类String的原型为:
class String
{
public:
String(coust char * str = NULL); //普通构造函数
String(const String &other); //拷贝构造函数
~String(void); //析构函数
String & perate =(const String &other); //赋值函数
private:
char * m_data; // 用于保存字符串
};
//String 的析构函数
String:: ~String (void)
{
(1);
}
//String 的普通构造函数
String: :String(const char * str)
{
if (2)
{
m_data = new char[1];
*m_data = '\0';
}
else
{
int length = strlen(str);
m_data = new ehar[ length + 1 ];
strepy(m_data, str);
}
}
//拷贝的构造函数
String:: String(const String &other)
{ int length = strlen(other. m_data);
m_data = new char[ length + 1 ];
strepy(m_data, other, m_data); //赋值函数
String & String::operate = (eonst String &other) //
{
if (3)
return * this;
delete [] m_clara; //释放原有的内存资源
int length = strlen(other, m_data);
m_data = new chart length + 1 ];
(4);
return (5);
}
请补充函数fun(),该函数的功能是:把字符下标为非素数的字符从字符串sb中删除,把字符下标为素数的字符重新保存在字符串e口中。字符串sb从键盘输入,其长度作为参数传入函数fun()。
例如,输入“abcdefghijkl”,输出“cdfhl”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
include <stdio.h>
define N 80
void fun(char s[],int n)
{
int i, j, k, flag;
【 】;
for(i=0; i<n; i++)
{
if (i>1)
s [k++] =s [i];
flag=I;
for(【 】; j<i&&flag; j++)
if (i%j==0)
{
flag=0;
【 】
}
}
s [k]='\0';
}
main()
{
int i=0, strlen=0;
char str[N];
clrscr ();
printf("\n Input a string:\n");
gets (str);
while (str [i] !='\0')
{
strlen++;
i++;
}
fun (str, strlen);
printf("\n*** display string ***\n");
puts (str);
}
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。
[函数2.1说明]
函数void find(int *a, int n, int * max, int * min)的功能是在长度为n的整型数组a中,查找最大元素和最小元素的下标。main()中给出了调用find函数的一个实例。
[函数2.1]
include<stdio.h>
void find(int *a, int n,int *max,int * min)
{ int i;
*max =* min=0;
for(i=1;i<n;i+ +)
if(a[i]>a[* max]) (1);
else if(a[i]<a[*min]) (2);
return;
main()
{ int a[]={4,6,8,9,0,6},max,min;
find(a,6,(3));
printf("%5d%5d\n", max,min);
}
[函数2.2说明]
以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串前端的公共部分。例如:输入的两个字符串分别是abcdefg和abceef,则输出为abc。
[函数2.2]
include <stdio.h>
main()
{ char str1[100],str2[100],str[100],c;
int i=0,s;
printf("\nInput string 1:");gets(str1);
printf("\nInput string 2:");gets(str2);
while(((4))&&(str1[i]!='\0')&&(str2[i]!='\0')){
(5);
i++;
}
printf("%s\n",str);
}
请补充函数fun(),该函数的功能是:从‘a’到‘z’统计一个字符串中所有字母字符各自出现的次数,结果保存在数组aIf中。注意:不区分大小写,不能使用字符串库函数。
例如,输入: “A=abc+5*c”,结果为:a=2, b=l,c=2。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数run的横线上填入所编写的若干表达式或语句。
试题程序:
include<conio.h>
include<stdio.h>
define N 100
void fun(char *tt,int alf[])
{
int i
char *p=tt;
for(i=0;i<26;i++)
【 】;
while(*p)
{
if(*p>='A'&&*p<='z')
【 】;
if(*p>='a'&&*p<='Z')
alf[*p-'a']++;
【 】;
}
}
main()
{
char str[N];
char a='a';
int alf[26],k;
clrscr();
printf("\nPlease enter a char string:");
scanf("%S",str);
printf("\n**The original string**\n");
puts(str);
fun(str,alf);
printf("\n**The number of letter**\n");
for(k:0;k<26;k++)
{
if(k%5==0)
printf(“\n”);
printf(“%c=%d”,a+k,alf[k]);
}
printf(“\n”);
}