① 请教一道杭电oj 2017的编程题,请教高手来解答啊
/*
杭电oj 2017的编程题
*/
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,n;
while(scanf("%d",&n)!=EOF)//n 字符串个数
{ char a[100][1000];
//下一步改正
char (*p)[1000]=&a[0];//指向一维数组的char型指针变量
int cout[1000]={0};
for(i=0;i<n;i++)
{
gets(a[i]);//n 个字符串
}
for(i=0;i<n;i++)
{
for(j=0;j<strlen(a[i]);j++)
{
if( *(*(p+i)+j) <='9' && *(*(p+i)+j) >='0' )
{
cout[i]++;
}
}
}
for(i=0;i<n;i++)
{
printf("%d\n",cout[i]);
}
}
return 0;
}
② 大家帮看一下OJ上的一道C语言的题。谢谢!!
在s[j 1]=s[i];语句后加语句j ;我只看出这一点,如果不对,见谅!Helloyujingping2009,希望有帮助.更多到软件测试基地,365testing泡泡
③ 南阳理工OJ第一题A+B problem 用java编程在eclipse上能运行正确,为什么在OJ上提交时总是CompileError!
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int a = cin.nextInt(), b = cin.nextInt();
System.out.println(a + b);
}
}
用这个试试
④ C语言 OJ系统题目
那么问题在于:
1 . 输入的是整数,没说明是正整数,所以说输入的可能是-100,那么上述代码就有逻辑问题。
2. i和N的值应该在while循环里面从新赋值为i=1,N=0。否则随着迭代的增加,i和N就会是上次计算的值了。
#include<stdio.h>
int main()
{
int i=1,n,N=0;
while((scanf("%d",&n))!=EOF)
{
i=1, N=0;
if(n>=1)
{
while(i<=n)
{
N=N+i;
i++;
}
}
else{ // n为负数,不是要continue,而也是要计算。比如n=-2,就计算1+0+(-1)+(-2)
while(i>=n)
{
N=N+i;
i--;
}
}
printf("%d\n",N);
}
return 0;
}
⑤ 关于C语言OJ的一道题:Time Limit Exceeded
调试了一下你的代码
有两个问题:
如果ori字符串本身比pat短,是不需要匹配的,直接结果0
如果已经有i个字符匹配,测试第4组数是,pat从头开始匹配,而实际上是从pat下标为3的地方开始匹配
最后,代码太多逻辑判断影响速度,附KMP函数代码
intKMP(char*ori,char*pat)
{
char*temp,*p;
intnum=strlen(pat);
inti=0,j=0;
int*next;
intsum=0;
//求出next数组
next=(int*)malloc((num+1)*sizeof(int));
memset((int*)next,0,(num+1)*sizeof(int));
p=temp=pat;
pat++;
while(*pat)
{
if(*pat==*temp)
{
*(next+i+2)=j+1;
pat++;
temp++;
j++;
}
else
{
pat++;
j=0;
}
i++;
}
//匹配字符串
pat=p;
i=0;
while(*ori)
{
if(strlen(ori)<strlen(pat))
break;
if(*ori==*pat)
{
ori++;
pat++;
i++;
if(*pat=='