读书人

下午刚考二级C,有个郁闷的有关问题,请

发布时间: 2012-02-12 17:16:33 作者: rapoo

下午刚考二级C,有个郁闷的问题,请熟悉TC的高手帮看看!!!
下午刚考了机试,填空题很简单,觉得没什么错,但编译提示一个warnning 出在main函数那,考试要求不能改动别的地方,搞得我无法运行这程序,也不敢确定自己那样写对了没。

改错题肯定对了。30分到手

程序题40分,我觉得自己写对了,编译也没问题,但用TC运行时输入数据回车后就卡那不动了,也关不了那运行的窗口....
可我用VC运行就没问题,程序如下,高手帮看看是不是什么地方真的有问题,还是TC本身的问题?

题目:请补充函数fun,该函数可以统计一个长度为n的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为asdf fdas afsdf asd hasd,子字符串为asd,则
应输出3
要求不能改动main函数和其他内容,在fun函数中编写语句。

我写的答案(fun函数部分,其他都是题目有的):

#include <stdio.h>
#include <string.h>
#include <conio.h>
int fun(char *str, char *substr)
{
int i=0,j,k=0;
while(str[i]!= '\0 ')
{
for(j=0;j <2;j++)
if(str[i]==substr[j]) i++;
while(substr[j]== '\0 ') k++;
}
return k;
}

main()
{
char str[81],substr[3];
int n;
printf( "输入主字符串: ");
gets(str);
printf( "输入子字符串: ");
gets(substr);
puts(str);
puts(substr);
n=fun(str,substr);
printf( "n=%d\n ",n);
}

不知道TC运行出这种问题,但VC能运行,还能不能得分,要不得我这次可能机试就不过了!_! 90块报名费啊,5555555555555

中午做练习就做了一题一模一样的,只不过是填空题,fun函数部分有点不一样,全用while语句。但效果和我写的当然是一样的。

我心里不服,高手告诉我是不是我写错了,还是TC有问题?
谁知道他们怎么改分的,这样有没有可能得分啊?????

[解决办法]
你的程序没有问题吗?
for(j=0;j <2;j++) //这里2是怎么来的?如果说是子串的长度,那也不一定是2
if(str[i]==substr[j]) i++;
while(substr[j]== '\0 ') k++; //这里不会死循环吗?

VC能通过?怀疑

[解决办法]
#include <stdio.h>
#include <string.h>
#include <conio.h>
int fun(char *str, char *substr)
{
int i=0,j,k=0;
while(str[i]!= '\0 ')
{
if(str[i]==substr[0] &&
str[i+1]==substr[1] &&
str[i+2]==substr[2])
{
i += 3;
++k;
}
else
++i;
}
return k;
}

main()
{
char str[81],substr[3];
int n;
printf( "输入主字符串: ");
gets(str);
printf( "输入子字符串: ");
gets(substr);
puts(str);
puts(substr);
n=fun(str,substr);
printf( "n=%d\n ",n);
}

稍微改了下

读书人网 >C语言

热点推荐