一、填空題
Str是全部由小寫字母字符和空格字符組成的字符串,由num傳入字符串的長度,請補充fun函數(shù),該函數(shù)的功能是:統(tǒng)計字符串str中的單詞數(shù),結(jié)果由變量num傳回。給個單詞之間有空格隔開,并且字符串str開始不存在空格。
例如,str=”how are you”,結(jié)果為:num=3.
注意:部分源程序給出如下
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在fun函數(shù)的橫線上填入所編寫的若干表達式或語句。
試題程序:
#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
二、改錯題
下列給定程序中,函數(shù)fun的功能是:將p所指字符串中每個單詞的最后一個字母改成大寫(這里的“單詞”是指由空格隔開的字符串)。例如,若輸入:
I am a student to take the examination.
則應(yīng)輸出: I aM A studenT tO takE thE examinatioN.
請改正程序中的錯誤,使其能得出正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
試題程序:
#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==’ ’)應(yīng)改為if(*p==’ ’)
第2處:*p=toupper(*(p-1));應(yīng)改為*(p-1)=toupper(*(p-1));
三、編程題
請編寫一個函數(shù),用來刪除字符串中的所有空格。
例如,輸入asd af aa z67,則輸出為asdafaaz67。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)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’;
}
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |