用gets()函数从键盘输入一个字符串(包含有空格),用puts()函数输出,并分别统计字母、数字和其他字符的数目并输出。
第1题:
●试题四
请补充函数fun(),该函数可以统计一个长度为n的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd ascasdfg asd as asd mlosd,子字符串为asd,则应输出4。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
int fun(char *str,char *substr)
{
int n;
char *p,*r;
(1) ;
while(*str)
{
p=str;
r=substr;
while(*r)
if( (2) )
{
r++;
p++;
}
else
break;
if( (3) )
n++;
str++;
}
return n;
}
main()
{
char str[81],substr[3];
int n;
clrscr();
printf("输入主字符串:");
gets(str);
printf("输入子字符串:");
gets(substr);
puts(str);
puts(substr);
n=fun(str,substr);
printf("n=%d\n",n);
}
【答案】(1)n=0(2)*r==*p(3)*r==′\0′
【解析】填空1:变量n用来记录子字符串在字符串中出现的次数,函数中对变量n进行了类型声明,但并没有进行初始化,所以此处对n初始化为0。填空2:进行比较时,如果子字符串的字符与字符串中的字符相同,则将两个字符串的指针都自加1,继续进行比较,否则跳出循环。填空3:如果此时指针r所指的字符为'\0',则说明子字符串在字符串中出现了一次,将记录变量n加1。
第2题:
编写一个函数,从传入的num个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。
注意:部分源程序给出如下.
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include<conio.h>
include<stdio.h>
include<string.h>
fun(char (*a) [81], int num, char *max)
{
}
main ()
{
char ss[l0] [81],*ps;
int n, i=0;
clrscr();
prlntf("输入若干个字符串");
gets(ss[i]);
puts(ss[i]);
while(!strcmp(ss[i], "****")==0)
/*用****作为结束输入的标志*/
{
i++;
gets(ss[i]);
puts(ss[i]);
}
n=i;
ps=fun(ss,n,&ps);
print~("\nmax=%s\n",ps);
}
第3题:
以下叙述中错误的是
A.gets函数用于从终端读入字符串
B.getehar函数用于从磁盘文件读入字符
C.fputs函数用于把字符串输出到文件
D.fwrite函数用于以二进制形式输出数据到文件
第4题:
编写一个函数,从传人的M个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。 试题程序: include<stdio.h> include<string.h> include<conio.h> char*proc(char(*a)[81],int num) { } void main { char ss[l0][81],*max; int n,i=0; printf("输入若干个字符串:"); gets(ss[i]); puts(ss[i]); while(!strcmp(ss[i],"****")= =0) { i++: gets(ssEi]); puts(ss[i]); } n=i: max=proe(SS,n); printf("\nmax=%s\n",max); }
第5题:
cout函数不能输出包含空格的字符串。()
第6题:
以下叙述中错误的是( )。
A.gets函数用于从终端读人字符串
B.getehar函数用于从磁盘文件读人字符
C.fputs函数用于把字符串输出到文件
D.fwrite函数用于以二进制形式输出数据到文件
第7题:
编程. 已知字符串:”this is a test of java”.
按要求执行以下操作:
(1) 统计该字符串中字母s出现的次数
(2) 取出子字符串”test”
(3) 将本字符串复制到一个字符数组Char[] str中.
(4) 将字符串中每个单词的第一个字母变成大写, 输出到控制台。
(5) 用两种方式实现该字符串的倒叙输出。(用StringBuffer和for循环方式分别实现)
(6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的英文单词,并输出到控制台
第8题:
编写一函数reverse实现一个字符串按反序存放,要求在主函数main中输入字符串,并输出反序后的字符串。不能使用strlen库函数。 例如:输入string,则输出gnirts。
第9题:
完善程序,用puts函数输出字符数组str。charstr[]={“abc/ndef”};();
第10题:
下面关于gets()与puts()函数描述正确的项是()
第11题:
字符串处理函数gets()函数的作用是()
第12题:
从左起输出该字符串,右补空格
按原字符串长度从左向右全部输出
右对齐输出该字符串,左补空格
输出错误信息
第13题:
( 16 )下列关于输入流类成员函数 getline() 的描述中,错误的是
A )该函数是用来读取键盘输入的字符串的
B )该函数读取的字符串长度是受限制的
C )该函数读取字符串时,遇到终止符便停止
D )该函数读取字符串时,可以包含空格
第14题:
编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为asd asasdfg asd as zx67 asd mklo,子字符串为as,则应当输出6。
注意:部分源程序给出如下。
请勿改动主函数main和具他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include <conio.h>
include <stdio.h>
include <string.h>
int fun(char *str, char *substr)
{
}
main ( )
{
char str[81],substr[3];
int n;
clrscr ();
printf ("输入主字符串 ");
gets (str);
printf ("输入子字符串");
gets (substr);
puts (str);
puts (substr);
n=fun (shr, substr);
printf("n=%d\n ",n);
}
第15题:
请补充函数fun(),该函数的功能是:把ASCII码为奇数的字符从字符串str中删除,结果仍然保存在字符串str中。字符串str从键盘输入,其长度作为参数传入函数fun()。
例如,输入“abcdef”,输出“bdf”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
include <stdio.h>
define N 80
void fun(char s[],int n)
{
int i, j;
j=0;
for(i=0;【 】;i++)
{
if(【 】)
s [j++]-s [i];
}
【 】;
}
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);
}
第16题:
假定输入的字符串中只包含字母和*号。请编写函数 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);
}
第17题:
函数ReadDat实现从文件in.dat中读取一篇英文文章存入到字符串数组xx中,请编制函数ConvertCharA,其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母Z,则改写成字母a,大写字母和其他字符保持不变。把已处理的字符串仍按行重新存入字符串数组xx中。最后main函数调用函数WriteDat把结果xx输出到文件out.dat中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 注意:部分源程序存放在test.c文件中。 请勿改动主函数main、读函数ReadDat和输出函数WriteDat的内容。
第18题:
函数ReadDat实现从文件in.dat中读取一篇英文文章存入到字符串数组XX中,请编制函数ConvertCharD,其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的上一个字母,如果是字母a,则改写成字母z,其他字符保持不变。把已处理的字符串仍按行重新存入字符串数组xx中。最后main函数调用函数WriteDat把结果xx输出到文件out.dat中。例:原文:Adb.Bcdza abck.LLhj结果:Aca.Bbcyzzabj.LLgi原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 注意:部分源程序存放在test.c文件中。 请勿改动主函数main、读函数ReadDat0和输出函数WriteDat的内容。
第19题:
printf( )函数中用到格式符%4s,其中,数字4表示输出的字符串占用4列。若字符串长度大于4,则输出按下列4种方式之一进行,该方式是()。
第20题:
printf函数中用到格式符%5s,其中数字5表示输出的字符串占用 5列,如果字符串长度大于5,则输出按方式().
第21题:
数据结构里,下面关于字符数组描述正确的是()
第22题:
单字符输出函数是()。
第23题:
从左起输出该字符串,右补空格
按原字符长从左向右全部输出
右对齐输出该字符,左补空格
输出错误信息
第24题: