一、填空题
Str是全部由小写字母字符和空格字符组成的字符串,由num传入字符串的长度,请补充fun函数,该函数的功能是:统计字符串str中的单词数,结果由变量num传回。给个单词之间有空格隔开,并且字符串str开始不存在空格。
例如,str=”how are you”,结果为:num=3.
注意:部分源程序给出如下
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#define N 80
void fun(char *s, int *num)
{
int i, n = 0;
for (i=0; ___1___; i++)
if (s[i]>='a' && s[i]<='z' && s[i+1]==' ' || s[i+1]=='\0')
___2___;
___3___;
}
main() www.Examda.CoM
{
char str[N];
int num = 0;
printf("Enter a string :\n");
gets(str);
while (str[num])
num++;
fun(str, &num);
printf("The number of word is : %d\n\n", num);
}
第1处填空:i<*num或*num>i
第2处填空:n++或++n或n+=1或n=n+1
第3处填空:*num=n
二、改错题
下列给定程序中,函数fun的功能是:将p所指字符串中每个单词的最后一个字母改成大写(这里的“单词”是指由空格隔开的字符串)。例如,若输入:
I am a student to take the examination.
则应输出: I aM A studenT tO takE thE examinatioN.
请改正程序中的错误,使其能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
#include
void fun(char *p)
{
int k = 0;
for (; *p; p++)
/********found********/
if (k)
{
if (p == ' ')
{
k = 0;
/********found********/
*p = toupper(*(p-1));
}
}
else
{
k = 1;
}
}
main()
{
char chrstr[64];
int d;
printf("\nPlease enter an english sentence within 63 letters: ");
gets(chrstr);
d = strlen(chrstr);
chrstr[d+1] = ' ';
chrstr[d+1] = 0;
printf("\n\nBefor changing: %s", chrstr);
fun(chrstr);
printf("\nAfter changing:\n %s", chrstr);
}
第1处:if (p==’ ’)应改为if(*p==’ ’)
第2处:*p=toupper(*(p-1));应改为*(p-1)=toupper(*(p-1));
三、编程题
请编写一个函数,用来删除字符串中的所有空格。
例如,输入asd af aa z67,则输出为asdafaaz67。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:#include
#include
#include
void fun(char *str)
{
}
main()
{
char str[81];
char Msg[] = "Input a string:";
int n;
FILE *out;
printf(Msg) ;
gets(str);
puts(str);
fun(str);
printf("*** str: %s\n", str);
out=fopen ("out.dat", "w");
fun(Msg);
fprintf (out, "%s", Msg);
fclose (out );
}
答案是:
void fun(char *str)
{
int i=0;
char *p=str;
while(*p)
{
if(*p!=’ ’)
{
str[i]=*p;
i++;
}
p++;
}
str[I]=’\0’;
}
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |