填空题
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));
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |