① 请教一道杭电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=='')
{
sum++;
pat=p+next[i];
i=next[i];
}
}
else
{
if(i==0)
ori++;
pat=p+next[i];
i=next[i];
}
}
returnsum;
}
next多申请了一个,主要为了存当已匹配匹配0个时对应数字
⑥ 一道入门编程题 杭电oj 2022.高手帮下~!!!
大概看了一下程序,应该是范围问题吧,他最低给到了-2147483648分,已经超出了int范围,用更大范围的数试试,c有点忘了,准备往java方向发展哈
⑦ 一道oj上的编程题c语言
#include <stdio.h>
int main() {
int n,m,i,j,t;
scanf("%d%d",&n,&m);
int arr[m];
for(j=0;j<m;j++) arr[j]=0; /*初始化*/
for(i=0; i<n; i++)
for(j=0; j<m; j++) {
scanf("%d",&t);
arr[j]+=t;
}
for(j=0; j<m; j++) {
printf("%d",arr[j]);
if(j<m-1) printf(" ");
}
}
⑧ 关于杭电OJ第一题的问题,还有顺便把提交后的系统给的状态简单解释一下吧,谢谢啦
Process to end of file就是处理到文件的结束
第一个main()打错了,并且只处理一组数据,没有处理到文件的结束。
第二个 while(scanf("%d%d", &i, &j) == 2) 的意思是当输入两个有效数字时,就执行循环,当处理到文件的结束时(即为-1),停止循环。
此句也可改为 while(scanf("%d%d", &i, &j) !=EOF) ,EOF就是end of file,其值为-1
⑨ 杭电OJ 第一题 1000 为什么超时
你的true始终是真,因此会一直要求输入,所以会超时,上面的话你把输入放在判断出,那么当你输入到最后也就是不想再输入的时候他会停止的
⑩ C++OJ编程题
(1)每次读出一行,放到缓冲字符串里面。
(2)整形:跳过字符串前面的空白、tab等看不见的字符,找到首字符位置。
(3)判断是否以//开头。是则读下一行;否则打印该行。