问题 问答题

编写一个函数findStr(),该函数的功能是:统计一个以单词组成的字符串中(各单词之间以空格隔开)所含指定长度单词的个数。例如,输入字符串为"you are very good you",指定要查找的单词的长度为3,则函数返回值是3。
函数readWriteData()的功能是从IN.DAT中读取字符串和子字符串,并把统计结果输出到屏幕和文件OUT.DAT中。
注意:部分源程序已给出。
请勿改动主函数main()和函数WriteData(int n)中的内容。

试题程序:


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void readWriteData();
int findStr(char*str,int find_len)


void main()

char str[81];
int find_len;
int n;
system("CLS");
printf("input the strings:");
gets(str);
printf("input the length:");
seanf("%d",&find_len);
puts(str);
printf("length=%d",find_len);
n=findStr(str,find_len);
printf("n=%d",n);
readWriteData();

void readWriteData()

char str[81],substr[11];
int n,len,i=0;
FILE*rf,*wf;
rf=fopen("IN.DAT","r");
wf=fopen("OUT.DAT","W");
while(i<3)

fgets(str,80,rf);
fgets(substr,10,rf);
len=substr[0]-’0’;
n=findStr(str,len);
fprintf(wf,"%d",n);
i++:

fclose(rf);
felose(wf);

答案

参考答案:int findStr(char*str,int find len)
{
int str_len,i,count=0,mark=-1;
str_len=strlen(str);/*求出字符串的长度*/
for(i=0;i<str_len;i++)
{
if(*(str+i)>’z’||*(str+i)<’A’||(*(str+i)>’Z’&&*(str+i)<’a’))/*如果是非字母符号*/
{
if(i-mark==find_len+1)count++;
/*如果两个非字母符号当中的字母个数等于所要查找的长度,则将计数器加1*/
mark=i;/*将i记成标记*/
}
}
if(mark<str_len-1&&str_len-1-mark==find_len)count++;
/*如果是最后一个单词,当其长度等于所要查找的长度时就将计数器加1*/
return count;
}

解析: 本题主要考查如何在字符串中找单词。本程序将单词界定为,两个相邻的非字母符号间的字母为一个单词。所以在程序中通过找两个非字母符号之间字母的个数来确定单词的长度。如果单词长度等于要求查找的长度,则将计数器加1。在查找时应注意一行中的第一个单词和最后一个单词的特殊性,它们只有一侧有非字母符号,故要将其单独处理。

判断题
多项选择题

甲公司为上市公司,2010~2011年发生如下交易或事项:
(1)2010年1月1日,甲公司从证券市场上购入乙公司于2009年1月1日发行的5年期债券,票面年利率为5%,每年1月5日支付上年度的利息,到期日为2013年12月31日,到期一次归还本金和最后一次利息。甲公司购入债券的面值为1000万元,实际支付价款为1005.35万元,另支付相关费用10万元。甲公司购入后将其划分为持有至到期投资。购入债券的实际利率为6%。假定按年计提利息。2010年12月31日,该债券的预计未来现金流量现值为930万元。2011年1月2日,甲公司将该持有至到期投资重分类为可供出售金融资产,其公允价值为925万元。2011年12月31日,该债券的公允价值为910万元(属于暂时性的公允价值变动)。
(2)2010年10月10日,甲公司自证券市场购入丙公司发行的股票100万股,共支付价款860万元,其中包括交易费用4万元。购入时,丙公司已宣告但尚未发放的现金股利为每股0.16元。甲公司将购入的丙公司股票作为可供出售金融资产核算。2010年年末丙公司股票市价为9元/股,2011年2月5日,甲公司出售该可供出售金融资产,收到价款960万元。
要求:根据上述资料,不考虑其他因素,回答下列各小题。

下列关于甲公司对丙公司投资的说法,正确的有( )。

A.发生的交易费用应计入投资成本

B.可供出售金融资产的入账价值为844万元

C.持有该项投资对2010年损益的影响为56万元

D.出售该项投资对2011年损益的影响为60万元

E.买价中包含的已宣告但尚未发放的现金股利应计入应收项目