(c语言的)为什么oj平台一直显示运行时错误?

图片说明

#include<stdio.h>
int myStrLen(char *s);
void myStrConcat(char *string1, char *string2);
int main()
{
    int n, i, a, b, c[10];
    char s[10][41];
    scanf("%d %d %d", &n, &a, &b);
    for (i = 0; i < n; i++)
        scanf("%d", &c[i]);
    for (i = 0; i < n; i++)
        scanf("%s", s[i]);
    myStrConcat(s[a], s[b]);
    for (i = 0; i < n; i++)
    {
        printf("%d", myStrLen(s[i]));
        if (s[i + 1])
            printf(" ");
    }
    printf("\n");
    for (i = 0; i < n; i++)
    {
        printf("%s", s[c[i]]);
        if (i < n - 1)
            printf("\n");
    }

    return 0;
}
int myStrLen(char *s)
{
    int i;
    for (i = 0; s[i]; i++)
    { }
    return i;
}
void myStrConcat(char *string1, char *string2)
{
    int i = 0, j = 0;
    while (string1[i] != '\0')
        i++;
    while (string2[j] != '\0')
        string1[i++] = string2[j++]; 
    string1[i] = '\0';
}

2个回答

错误原因myStrConCat函数,两个字符串拼接,当两个字符串特别长的时候,就需要动态分配内存来完成。
char *str_after_concat=(char*)malloc ( sizeof(char) * (myStrLen(string1)+mystrLen(string2)+1));这里的+1是因为我们将要返回一个C风格的字符串,
即字符串末尾以\0结尾。
那么至于你的myStrLen的for函数,可以换成 for (i = 0; s[i]; i++);这种看着很简洁。也可以不用这种方法,有很多不做举例。
那么上面进行新建了函数,那么后面的逻辑就差不多正确了,只需要将string1换成前面我的代码所创建的变量 str_after_concat
然后并且将这个指针返回并输出(因为malloc是在堆中动态分配,不会像局部变量一样回收。)

`#include
int myStrlen(char s[]);
void myStrConcat(char string1[],char string2[]);
int main()
{
int n,a,b;
int c[10],i,j;
char str[10][40];
char * p1, * p2;
scanf("%d%d%d",&n,&a,&b);
for(i=0;i<n;i++)
{
scanf("%d",&c[i]);
}
for(i=0;i<n;i++)
{
scanf("%s",str[i]);
}
if(a!=b)
myStrConcat(str[a],str[b]);
else if(a==b)
{
i=myStrlen(str[a]);
p1=&str[a][i];
p2=&str[b][0];
for(j=0;j<i;j++)
{

*p1=*p2;
p1++;
p2++;
}

  }
for(i=0;i<n;i++)
{
    printf("%d ",myStrlen(str[i]));
}
printf("\n");
for(i=0;i<n;i++)
{
    printf("%s\n",str[c[i]]);
}
return 0;

}
int myStrlen(char s[])
{
int i;
for(i=0;s[i]!='\0';i++)
{
;
}
return i;
}
void myStrConcat(char string1[],char string2[])
{
int i,j;
for(i=myStrlen(string2),j=0;i<myStrlen(string2)+myStrlen(string1);i++,j++)
{
string1[i]=string2[j];
}

}

问一下我这个代码,为什么完成不了这一步呢?该函数的两个参数,在调用时有可能会指向同一个字符串,函数需要在这种情况下能正确完成指定的功能。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
OJ题目运行错误,本地运行没问题

### 小白求救,运行错误,但找不出问题在哪 在本地成功运行,也测试了好多组数据。但是本人可能欠缺经验,编写程序习惯不好,可能一些细节没注意,导致提交到OJ上去,显示运行错误。我自己又找不到问题。。。跪求大佬帮忙看看 ####题目描述 在n个整数中查找指定数字。 ####输入 输入数据有多组,每组数据包括两行,第一行包含一个整数n(0<n<=100)和n个整数。第二行包含一个整数m表示要查找的关键字。 ####输出 如果在n个整数中有和m相等的输出该整数,如果没有输出null。 ####样例输入 ``` 5 1 2 3 4 5 3 3 10 20 30 100 ``` 样例输出 ``` 3 null ``` 小白的代码: ``` import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] array = new int[100]; while (true) { int cin = sc.nextInt(); for (int i = 0; i < cin; i++) { int inp = sc.nextInt(); array[i] = inp; } int inpp = sc.nextInt(); for (int i = 0; i < cin; i++) { if (array[i] == inpp) { System.out.println(inpp); break; } else if (arr[i] != inpp && arr[i] == arr[cin - 1]) System.out.println("null"); } } } } ``` --- #2019-10-26 问题已解决 while循环的循环条件不能用true,要用hasNext

求助大神~自己编译器运行没有问题,oj却显示运行错误

题目描述 小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客。 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况;对于第i艘到达的船,他记录了这艘船到达的时间ti (单位:秒),船上的乘 客数星ki,以及每名乘客的国籍 x(i,1), x(i,2),…,x(i,k);。 小K统计了n艘船的信息,希望你帮忙计算出以每一艘船到达时间为止的24小时(24小时=86400秒)内所有乘船到达的乘客来自多少个不同的国家。 形式化地讲,你需要计算n条信息。对于输出的第i条信息,你需要统计满足 ti - 86400 < tp <= ti的船只p,在所有的x(p,j)中,总共有多少个不同的数。 输入格式: 第一行输入一个正整数n,表示小K统计了 n艘船的信息。 接下来n行,每行描述一艘船的信息:前两个整数ti和ki分别表示这艘船到达海港的时间和船上的乘客数量,接下来ki个整数x(i,j)表示船上乘客的国7。 保证输入的ti是递增的,单位是秒;表示从小K第一次上班开始计时,这艘船在第 ti 秒到达海港。 其中表示所有的ki的和。 输出格式: 输出n行,第i行输出一个整数表示第i艘船到达后的统计信息。 ![图片说明](https://img-ask.csdn.net/upload/201710/24/1508838562_212619.png) #include <cstdio> int n,t[11000],k[11000],a=0,x[11000][33000],s=0,y[11000],c; int main(){ scanf("%d",&n); for(int i=1;i<=n;++i){ scanf("%d%d",&t[i],&k[i]); for(int j=1;j<=k[i];++j)scanf("%d",&x[i][j]); } for(int i=1;i<=n;++i){ for(int j=i;t[j]>t[i]-86400;--j){ for(int l=1;l<=k[j];++l){ for(int u=1;u<=a;++u)if(x[j][l]!=y[u])++s; if(s==a)y[++a]=x[j][l]; s=0; } } printf("%d\n",a); a=0; } return 0; }

代码在VC上运行正常,在OJ上运行失败

1.问题描述: 在一个暴风雨的夜晚,农民约翰的牛棚的屋顶、门被吹飞了。 好在许多牛正在度假,所以牛棚(牛棚的总数S:1<= S<=200)没有住满。 剩下的牛一个紧挨着另一个被排成一行安置在有屋顶的牛棚来过夜。 所以有些牛棚里有牛,有些没有。 所有的牛棚有相同的宽度,且宽度设为1。 因为有些门遗失,农民约翰需要架起新的木板作为门。 他的新木材供应者将会供应他任何他想要的长度,但是供应者只能提供有限数目的木板。 农民约翰想将他购买的木板总长度减到最少。 计算拦住所有有牛的牛棚所需木板的最小总长度。 输出所需木板的最小总长度作为的答案。 说明:拦住一个牛棚需要的木板长度为1,拦住相邻的三个牛棚则需要木板长度为3。 比如有牛的牛棚编号为: 3 5 8 10 11 并且只能使用两块木板, 则第一块木板从3到5,长度为3, 第二块木板从8到11,长度为4, 因此,需要木板的总长度为7。 2.输入说明: 第 1 行: M 和 C(用空格分开) 第 2 到 C+1行: 每行包含一个整数,表示牛所占的牛棚的编号。 其中: 可能买到的木板最大的数目:M(1<= M<=50); 需要安置的牛的数目C(1<= C <=S) 安置后牛所在的牛棚的编号stall_number(1<= stall_number <= S)。 3.自编代码 ``` int main(){ int m,c,t,n,min; int i,j,k=0; int s[201],a[120]; scanf("%d%d",&m,&c); for(i=0;i<=200;i++){ s[i]=0; } for(i=0;i<c;i++){ scanf("%d",&n); s[n]=1; } for(i=1;s[i]==0;i++); for(t=200;s[t]==0;t--); min=t-i+1; while(i<=t){//找出i到t内所有没有牛的位置长度 j=0; if(s[i]==0){ while(s[i+j]==0){ j++; } a[k++]=j; } i=i+j+1; } for(i=0;i<k-1;i++){//对位置长度进行从大到小排序 for(j=0;j<k-i-1;j++){ if(a[j]<a[j+1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } i=0; while(m>1 && i<k){ min=min-a[i]; m--; i++; } printf("%d\n",min); return 0; } ``` 4.运行结果: OJ上的结果: ![图片说明](https://img-ask.csdn.net/upload/202003/26/1585195124_271585.png) VC上的结果: ![图片说明](https://img-ask.csdn.net/upload/202003/26/1585195148_407920.png)

在vs2017上运行没有问题,在学校的oj上(gcc编译器)发生段错误,不知道错误点在哪里,求点明

在vs2017上运行没有问题,在学校的oj上(gcc编译器)发生段错误,下面的代码是为了解决那个Biggest Number那个题目。小白一枚,实在找不到错误点,望大佬点明。 ``` #include<stdio.h> #include<stdlib.h> #include<math.h> #include<time.h> #include<string.h> char temp[40]; int high, wide; void DFS(char all[][15],int x,int y,char number[],int len) { number[len] = all[x][y]; all[x][y] -= 10; if (x + 1 < high && all[x + 1][y] != '#'&&all[x + 1][y] > '0') { DFS(all, x + 1, y, number, len+1); all[x + 1][y] += 10; } if (x - 1 >= 0 && all[x - 1][y] != '#'&&all[x - 1][y] > '0') { DFS(all, x - 1, y, number, len+1); all[x - 1][y] += 10; } if (y + 1 < wide && all[x][y + 1] != '#'&&all[x][y + 1]>'0') { DFS(all, x, y + 1, number, len+1); all[x][y + 1] += 10; } if (y - 1 >= 0 && all[x][y - 1] != '#'&&all[x][y - 1] > '0') { DFS(all, x, y - 1, number, len+1); all[x][y - 1] += 10; } if (strlen(temp) == strlen(number)) { if (strcmp(number, temp) > 0) strcpy(temp, number); number[len] = '\0'; } else if (strlen(temp) < strlen(number)) { strcpy(temp, number); number[len] = '\0'; } else number[len] = '\0'; } int main() { char all[15][15]; char number[40]; for (int i = 0; i < 25; i++) { memset(all, 0, 225); memset(temp, 0, 40); scanf("%d %d", &high, &wide); if (high == 0 && wide == 0) break; getchar(); getchar(); for (int i = 0; i < high; i++) { for (int j = 0; j < wide; j++) all[i][j] = getchar(); getchar(); } for (int i = 0; i < high; i++) for (int j = 0; j < wide; j++) if (all[i][j] != '#') { memset(number, 0, 40); int len = 0; DFS(all, i, j, number, len); all[i][j] += 10; } printf("%s \n", temp); } return 0; } ```

老哥们,这个程序在编译器上可以运行并能得到正确答案,可提交OJ却编译错误,自己找不出哪不对

![图片说明](https://img-ask.csdn.net/upload/201707/30/1501381331_963161.png) 问题链接http://acm.hdu.edu.cn/showproblem.php?pid=2124

这个程序我自己在编译器上通过了,但是OJ上一直runtime error。各位大神可否帮我看看代码有什么问题吗?

这个程序我自己在编译器上通过了,但是OJ上一直runtime error。各位大神可否帮我看看代码有什么问题吗? #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX 1000 //对字符串进行拆分 void split(char shou[MAX],char flag[26][MAX][20],int num[26]){ //遍历整个数组 int i = 0; for(i = 0;i < 26;i++){ num[i] = 0; } char *p; char *q; p = q = shou;//初始化指针,使其指向shou的头部 while(*p){ if((*p >= 'a'&&*p <= 'z')||(*p >= 'A'&&*p <= 'Z')){ q = p; while((*p >= 'a'&&*p <= 'z')||(*p >= 'A'&&*p <= 'Z')){ if(*p >= 'A'&&*p <= 'Z'){ *p += 32; } p++; } int x = *q - 97;//得到应该储存的flag中的位置 strncpy(flag[x][num[x]],q,p-q);//实现复制操作 num[x] += 1; }else{ p++; } } } int comp(const void *a,const void *b) { // return *(char **)a - *(char **)b; return strcmp((char *)a,(char *)b) ; //字典序从小到大 } int main(){ //先想办法读入数组 char flag[26][MAX][20];//用flag做标志,省去排序的步骤 char shou[MAX]; int num[26];//用于储存每一个单词表里面存储的单词的数量 // gets(shou);//先将字符串读进来 //怎么把gets做一个替换 int m = 0; char ch; while((ch = getchar()) != EOF){ shou[m] = ch; m++; } split(shou,flag,num); int i,j,k; int count = 0; //找出其中num[i]不为零的总数量 for(i = 0;i < 26;i++){ if(num[i] != 0) count++; } for(i = 0;i < 26;i++){ if(num[i] != 0){ qsort(flag[i],num[i],sizeof(flag[i][0]),comp); //利用qsort函数进行快排 count--; printf("%c:",i + 65); for(j = 0;j < num[i];j++){ if(strcmp(flag[i][j+1],flag[i][j]) != 0){ printf(" %s",flag[i][j]); } } if(count!=0) printf("\n"); } } return 0; } 就是一个文本索引的题目,要求按字典排序,然后对于空格和换行有点特殊要求。

在学校的oj里面是错误了百分之50

输入的第1行是测试数据的组数n,后面跟着n行输入。(1<=n<=90) 输出有n行,每行输出对应一个输入 #include<stdio.h> int main() { int n,i,j,x,y,b; scanf("%d",&x); int a[100]={1,1}; for(i=0;i<x;i++) { scanf("%d",&y); if(y>2) { for(j=2;j<90;j++) { a[j]=a[j-1]+a[j-2]; b=a[y-1]; } printf("%d\n",b); } else { printf("%d\n",1); } } return 0; }

c语言字符串gets()函数使用,编译为什么通过不了?

c语言字符串gets()函数使用,结果好像有安全问题?也试过改成gets_和 fgets(大一学习c语言,求大神指导) ``` #include <stdio.h> #pragma warning void main() { char phoneNumber[12]; printf("请输入手机号码:");![图片说明](https://img-ask.csdn.net/upload/201907/04/1562246312_875481.jpg) gets(phoneNumber); printf("您的手机号码是:%s\n", phoneNumber); } ```

为什么在VS2017上能正常运行而在OJ上面就Runtime Error:Segmentation fault呢?求助!!!

``` #include<iostream> #include<iomanip> #include<string> #include<queue> #include<vector> #include<stdlib.h> using namespace std; template<typename T> class TreeNode { public: T data; TreeNode<T> *leftChild; TreeNode<T> *rightChild; TreeNode(T data) { this->data = data; this->rightChild = NULL; this->rightChild = NULL; } }; template<typename T> class BinaryTree { private: TreeNode<T> *root; public: BinaryTree(T data); TreeNode<T>* getroot(); void InsertLeft(TreeNode<T> *p, T data); void InsertRight(TreeNode<T> *p, T data); TreeNode<T>* Search(TreeNode<T> *root, T data); void PreOrder(TreeNode<T> *root); void InOrder(TreeNode<T> *root); void PostOrder(TreeNode<T> *root); }; template<typename T> BinaryTree<T>::BinaryTree(T data) { TreeNode<T> *newnode = new TreeNode<T>(data); root = newnode; } template<typename T> TreeNode<T>* BinaryTree<T>::getroot() { return root; } template<typename T> void BinaryTree<T>::InsertLeft(TreeNode<T> *p, T data) { TreeNode<T> *newnode = new TreeNode<T>(data); newnode->leftChild = p->leftChild; p->leftChild = newnode; } template<typename T> void BinaryTree<T>::InsertRight(TreeNode<T> *p, T data) { TreeNode<T> *newnode = new TreeNode<T>(data); newnode->rightChild = p->rightChild; p->rightChild = newnode; } template<typename T> TreeNode<T>* BinaryTree<T>::Search(TreeNode<T> *root, T data) { queue<TreeNode<T>*> queue; TreeNode<T> *q = NULL; queue.push(root); while (!queue.empty()) { TreeNode<T> *p = queue.front(); queue.pop(); if (p->data == data) { q = p; } if (p->leftChild != NULL) { queue.push(p->leftChild); } if (p->rightChild != NULL) { queue.push(p->rightChild); } } return q; } template<typename T> void BinaryTree<T>::PreOrder(TreeNode<T>* root) { if (root != NULL) { cout << root->data; PreOrder(root->leftChild); PreOrder(root->rightChild); } } template<typename T> void BinaryTree<T>::InOrder(TreeNode<T> *root) { if (root != NULL) { InOrder(root->leftChild); cout << root->data; InOrder(root->rightChild); } } template<typename T> void BinaryTree<T>::PostOrder(TreeNode<T> *root) { if (root != NULL) { PostOrder(root->leftChild); PostOrder(root->rightChild); cout << root->data; } } int main() { string str; while (cin >> str) { BinaryTree<char> *bin = new BinaryTree<char>(str[0]); TreeNode<char> *root = bin->getroot(); for (int i = 1; i < str.length(); i++) { if (str[i] != '.') { TreeNode<char> *p = bin->Search(root, str[(i - 1) / 2]); if (i % 2 == 0) { bin->InsertRight(p, str[i]); } else { bin->InsertLeft(p, str[i]); } } } bin->PreOrder(root); cout << endl; } return 0; } ``` 测试数据 ABCDEFGHIJKL A.B...C.......D ABCD.EF.G T ABC.D.E..FG...H 输出 ABDHIEJKCFLG ABCD ABDGCEF T ABDFGCEH

杭电oj 2629题目求解惑

杭电oj2629 自己编译运行输出是符合要求的,可是再oj上就是提示输出错误,希望好心人能为我解惑!!! ``` #include<stdio.h> #include<string.h> int main() { int n; char s[20]; int place,birthday,garbage; int year, month, day; scanf("%d", &n); while (n--) { scanf("%6d", &place); scanf("%8d", &birthday); scanf("%4d", &garbage); if (place == 330000) strcpy(s,"Zhejiang"); else if (place == 110000) strcpy(s, "Beijing"); else if (place == 710000) strcpy(s, "Taiwan"); else if (place == 810000) strcpy(s, "Hong Kong"); else if (place == 820000) strcpy(s, "Macao"); else if (place == 540000) strcpy(s, "Tibet"); else if (place == 210000) strcpy(s, "Liaoning"); else if (place == 310000) strcpy(s, "Shanghai"); year = birthday / 10000; month = birthday / 100 - year * 100; day = birthday % 100; printf("He/She is from %s,and his/her birthday is on %d,%d,%d based on the table.\n", s, month, day, year); } return 0; } ```

一个c语言删数的题 没错误 运行时没输出 求指点 看了一下午了

#include<stdio.h> #define N 1000 int main() { int a[N],i,n=2,d=1,m=1,k=0; int count=1000,count1=0,sum=0; int a2,a1; scanf("%d %d",&a1,&a2); printf("\n"); for (i=0;i<N;i++) { sum+=1; a[i]=sum; } while (d<count) { for (i=d;i<count;i+n) a[i]=0; for (i=0;i<count;i++) { if (a[i]!=0) { a[k]=a[i]; k++; } else count--; } n=a[m]; d=a[m]-1; m++; } for (i=0;i<count;i++) { if (a[i]>a1) (count1)++; if (a[i]>=a2) { (count1)--; break; } } printf("%d\n",count1); return 0; }

为什么这道题根据程序,样例可以正确输出,却不能在OJ上AC?是我的代码出问题了吗?

题目描述如下: ![图片说明](https://img-ask.csdn.net/upload/201912/28/1577529512_755416.png) ![图片说明](https://img-ask.csdn.net/upload/201912/28/1577529527_134470.png) 我的代码如下: ``` #include<stdio.h> int main() { int n,fin1,fin2; long a1=1,a2=1; char cx1,cx2; scanf("%d",&n); fflush(stdin); while((cx1=getchar())!='\n') { a1=a1*(cx1-64) /*计算出第一行的字母所代表的编号的乘积*/ } while((cx2=getchar())!='\n') { a2=a2*(cx2-64);/*计算出第二行的字母所代表的编号的乘积*/ } fin1=a1%n; /*用第一行的乘积取模*/ fin2=a2%n; /*用第二行的乘积取模*/ if(fin1==fin2) { printf("Attack!\n"); } else { printf("Stay\n"); } return 0; } ``` 自己测试了几组数据,都没有问题的,可是AC不了。来向各位大佬求助!

杭电oj2093测试样例对了,但是提交的时候显示wrong answer

#include <iostream> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <iomanip> using namespace std; struct student { char name[20]; int sumsolve; int sumscore; }people[10000],temp; int main () { int n,m; cin>>n>>m; getchar(); int i=0,j; while(cin>>people[i].name) { char str1[10],str2[10],str[10]; people[i].sumsolve=0; people[i].sumscore=0; for (j=0;j<n;j++) { cin>>str; if (str[0]>='1'&&str[0]<='9') { int k,t=0; people[i].sumsolve++; for (k=0;k<strlen(str);k++) if(str[k]=='(') break; if(k<strlen(str)) { for (k=0;str[k]!='(';k++) str1[t++]=str[k]; str1[t]='\0'; t=0; for (k++;str[k]!=')';k++) str2[t++]=str[k]; str2[t]='\0'; people[i].sumscore+=atoi(str1)+atoi(str2)*m; } else { for (k=0;k<strlen(str);k++) str1[t++]=str[k]; str1[t]='\0'; people[i].sumscore+=atoi(str1); } } } getchar(); i++; } for (i=0;i<5;i++) for (j=i+1;j<6;j++) { if(people[i].sumsolve<people[j].sumsolve) { temp=people[i]; people[i]=people[j]; people[j]=temp; } else if(people[i].sumsolve==people[j].sumsolve) { if(people[i].sumscore>people[j].sumscore) { temp=people[i]; people[i]=people[j]; people[j]=temp; } else if(people[i].sumscore==people[j].sumscore) { if(strcmp(people[i].name,people[j].name)) { temp=people[i]; people[i]=people[j]; people[j]=temp; } } } } for (i=0;i<6;i++) cout<<setiosflags(ios::left)<<setw(10)<<people[i].name<<" "<<setw(2)<<people[i].sumsolve<<" "<<setw(4)<<people[i].sumscore<<endl; }

找字串 运行错误 怎么解决?

找子串个数,提交oj平台总是说运行错误,可是自己编译没问题啊,qiu'jie ``` #include<iostream> #include<algorithm> #include<string> using namespace std; int main() { int j = 0, cnt = 0; string s1, s2; getline(cin,s1); while (getline(cin,s2)) { for (unsigned int i = 0; i < s2.length() - s1.length() + 1;) { if (s2[i] == s1[j]) { unsigned int k, count = 0; for (k = 0; k < s1.length() && s2[i] == s1[j]; i++, k++, j++) { count++; } if (count == s1.length()) { cnt++; }count = 0; j = 0; } else i++; } } cout << cnt; return 0; } ```

OJ时没有数组和递归的代码提示发生了段错误

OJ题目描述 输入一个链表,从尾到头打印链表每个节点的值。 代码: ------ ```c /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ class Solution { public: vector<int> printListFromTailToHead(struct ListNode* head) { ListNode *p1, *p2, *p3; vector<int> out; p1 = head; p2 = p1->next; p1->next = NULL; //如果是单结点链表; if(p1 == NULL) { out[0] = p1->val; return out; } //非单节点列表; p3 = p2->next; p2->next = p1; p1 = p2; p2 = p3; //只有两个节点; if(p3 == NULL) { out[0] = p1->val; p2 = p1->next; out[1] = p2->val; return out; } //有三个或以上节点; while(p3 != NULL) { p3 = p2->next; p2->next = p1; p1 = p2; p2 = p3; } //现在p1指向新链表头; int i = 0; while(p1 != NULL) { out[i++] = p1->val; p1 = p1->next; } return out; } }; ``` ----- 运行结果: ------- 段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起

在牛客网oj上的一道题,本地测试正确,在网上怎么也不对,求解答(北理研究生复试题,学生查询问题)

**编程问题:** 题目描述 输入n个学生的信息,每行包括学号、姓名、性别和年龄,每一个属性使用空格分开。最后再输入一学号,将该学号对应的学生信息输出。<br /> 输入描述:<br /> 测试数据有多组,第一行为样例数m。对于每个样例,第一行为学生人数n(n不超过20),接下来n行每行4个整数分别表示学号、姓名、性别和年龄,最后一行表示查询的学号。<br /> 输出描述:<br /> 输出m行,每行表示查询的学生信息,格式参见样例。<br /> 示例1<br /> 输入<br /> 1<br /> 4<br /> 1 李江 男 21<br /> 2 刘唐 男 23<br /> 3 张军 男 19<br /> 4 王娜 女 19<br /> 2<br /> 输出<br /> 2 刘唐 男 23<br /> **我的代码: ** ``` #include<iostream> #include <stdio.h> using namespace std; int N;//学生数目 int Circle; //循环轮数 char data[100][100]; int searchN; //需要查询的id int main() { cin>>Circle; for(int j=0;j<Circle;j++){ int m; cin>>N; for(int i=0; i<N; i++) { fflush(stdin); //在前面添加清空缓冲区 cin.getline(data[i],1024); } cin>>searchN; for(int i=0; i<N; i++) { if(data[i][0]-'0'==searchN) { printf("%s", data[i]); } } } } ``` 网上oj的结果是一个样例也不通过...wsl,求大佬解答<br /> **本地测试截图:**<br /> ![图片说明](https://img-ask.csdn.net/upload/201906/07/1559921966_766126.png) **在线测试截图: **<br /> ![图片说明](https://img-ask.csdn.net/upload/201906/07/1559922007_423730.png)<br /> 求助,大家看一下我的代码有哪里可能被判错的地方吗??

windows下java调用编译后的C语言exe文件获取cmd输出内容

我在做oj系统 在java调用gcc编译c语言后,获得的exe文件,exe执行后通过java往该exe程序内写入测试用例,并将结果保存到Sting内,有人知道怎么做吗? ```java private static String execCmd() throws Exception { StringBuilder result = new StringBuilder(); Process process = null; BufferedReader bufrIn = null; BufferedReader bufrError = null; try { // 执行命令, 返回一个子进程对象(命令在子进程中执行) process = Runtime.getRuntime().exec("cmd /c start cmd.exe /c\"D:\\textwithout.exe\""); // 方法阻塞, 等待命令执行完成(成功会返回0) process.waitFor(); // 获取命令执行结果, 有两个结果: 正常的输出 和 错误的输出(PS: 子进程的输出就是主进程的输入) bufrIn = new BufferedReader(new InputStreamReader(process.getInputStream(), "UTF-8")); bufrError = new BufferedReader(new InputStreamReader(process.getErrorStream(), "UTF-8")); // 读取输出 String line = null; while ((line = bufrIn.readLine()) != null) { result.append(line).append('\n'); } while ((line = bufrError.readLine()) != null) { result.append(line).append('\n'); } } finally { // 销毁子进程 if (process != null) { process.destroy(); } } // 返回执行结果 return result.toString(); } ```

hdu 1002 (高精度加法运算)一直出现Runtime Error (ACCESS_VIOLATION),请问怎样改正?

在vs上运行没有问题,但是oj上一直结果为Runtime Error (ACCESS_VIOLATION), _请问为什么? ``` #include<iostream> using namespace std; char a[1010] = { 0 }; char b[1010] = { 0 }; bool flag = true; int main() { int T; while(cin >> T) { if (T < 1 || T > 20) break; for (int j = 1; j <= T; j++) { if (T == 0) break; //below cin >> a; cin >> b; int m = 0, n = 0;//count for (int i = 0; i < 1000; i++) { if (a[i] != 0) m++; else break; } for (int i = 0; i < 1000; i++) { if (b[i] != 0) n++; else break; } char*c = new char[m + 1];//c[m] char*d = new char[n + 1];//d[n] int t = 0; for (int i = m - 1; i >= 0; i--) { c[t] = a[i]; t++; } c[m] = 0; t = 0; for (int i = n - 1; i >= 0; i--) { d[t] = b[i]; t++; } d[n] = 0;//two integers ready char*c1 = new char[m + 1]; char*d1 = new char[n + 1]; t = 0; for (int i = m - 1; i >= 0; i--) { c1[t] = c[i]; t++; } t = 0; for (int i = n - 1; i >= 0; i--) { d1[t] = d[i]; t++; } c1[m] = 0; d1[n] = 0; cout << "Case " << j << ":" << endl; cout << c1 << " + " << d1 << " = "; int k; if (m > n) k = m; else k = n; char*e = new char[k + 1];//extra number char*f = new char[k + 1];//final number for (int i = 0; i < k; i++) { char z = 0; if (c[i] > 0 && d[i] > 0) z = (c[i] - '0') + (d[i] - '0'); else if (c[i] <= 0) z = d[i] - '0'; else z = c[i] - '0'; f[i] = z; if (z > 9) { e[i + 1] = '1'; f[i] = z - 10; } if (e[i] == '1') f[i]++; if (f[i] > 9) { e[i + 1] = '1'; f[i] = f[i] - 10; } f[i] += '0'; } if (e[k] == '1') { f[k] = '1'; for (int i = k; i >= 0; i--) { while (f[i] == '0') { i--; } if (i < 0) i++; cout << f[i]; } } else { for (int i = k - 1; i >= 0; i--) { while (f[i] == '0') { i--; } if (i < 0) i++; cout << f[i]; } } cout << endl; if (j != T) cout << endl; delete[]c; delete[]d; delete[]c1; delete[]d1; delete[]e; delete[]f; //above } } return 0; } ```

C语言关于选择排序法的问题

#include"stdio.h" #define N 10 int main()  { int i,j,min,tem,a[N];  for(i=0;i<N;i++)      scanf("%d",&a[i]); for(i=0;i<N-1;i++)  {     min=i;      for(j=i+1;j<N;j++)           if(a[min]>a[j])           min=j;      tem=a[i];      a[i]=a[min];      a[min]=tem;  }   for(i=0;i<N;i++)  printf("%5d",a[i]); retuen 0;  }  代码用手机匆忙打的,可能有些错误,不要在意那些细节,我主要是想问一下把代码:      tem=a[i];      a[i]=a[min];      a[min]=tem; 修改成代码:     tem=a[min];      a[min]=a[i];      a[i]=tem; 这样修改程序应该没错误吧? 至少在电脑上运行时结果与修改前是一样的。但是修改之后的代码提交到oj平台是错的,修改前的却正确的,最终结果一样,一对一错。而那段代码只不过是交换一下值,至于哪个先交换我觉得没什么影响。 求指点修改后那段代码放到整个程序中,应该没错吧?

学Python后到底能干什么?网友:我太难了

感觉全世界营销文都在推Python,但是找不到工作的话,又有哪个机构会站出来给我推荐工作? 笔者冷静分析多方数据,想跟大家说:关于超越老牌霸主Java,过去几年间Python一直都被寄予厚望。但是事实是虽然上升趋势,但是国内环境下,一时间是无法马上就超越Java的,也可以换句话说:超越Java只是时间问题罢。 太嚣张了会Python的人!找工作拿高薪这么简单? https://edu....

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

为什么程序猿都不愿意去外包?

分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助

Java校招入职华为,半年后我跑路了

何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

@程序员:GitHub这个项目快薅羊毛

今天下午在朋友圈看到很多人都在发github的羊毛,一时没明白是怎么回事。 后来上百度搜索了一下,原来真有这回事,毕竟资源主义的羊毛不少啊,1000刀刷爆了朋友圈!不知道你们的朋友圈有没有看到类似的消息。 这到底是啥情况? 微软开发者平台GitHub 的一个区块链项目 Handshake ,搞了一个招募新会员的活动,面向GitHub 上前 25万名开发者派送 4,246.99 HNS币,大约价...

用python打开电脑摄像头,并把图像传回qq邮箱【Pyinstaller打包】

前言: 如何悄悄的打开朋友的摄像头,看看她最近过的怎么样,嘿嘿!这次让我带你们来实现这个功能。 注: 这个程序仅限在朋友之间开玩笑,别去搞什么违法的事情哦。 代码 发送邮件 使用python内置的email模块即可完成。导入相应的代码封装为一个send函数,顺便导入需要导入的包 注: 下面的代码有三处要修改的地方,两处写的qq邮箱地址,还有一处写的qq邮箱授权码,不知道qq邮箱授权码的可以去百度一...

做了5年运维,靠着这份监控知识体系,我从3K变成了40K

从来没讲过运维,因为我觉得运维这种东西不需要太多的知识面,然后我一个做了运维朋友告诉我大错特错,他就是从3K的运维一步步到40K的,甚至笑着说:我现在感觉自己什么都能做。 既然讲,就讲最重要的吧。 监控是整个运维乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供详实的数据用于追查定位问题。目前业界有很多不错的开源产品可供选择。选择一款开源的监控系统,是一个省时省力、效率最高的方...

C++(继承):19---虚基类与虚继承(virtual)

一、菱形继承 在介绍虚继承之前介绍一下菱形继承 概念:A作为基类,B和C都继承与A。最后一个类D又继承于B和C,这样形式的继承称为菱形继承 菱形继承的缺点: 数据冗余:在D中会保存两份A的内容 访问不明确(二义性):因为D不知道是以B为中介去访问A还是以C为中介去访问A,因此在访问某些成员的时候会发生二义性 缺点的解决: 数据冗余:通过下面“虚继承”技术来解决(见下) 访问...

再不跳槽,应届毕业生拿的都比我多了!

跳槽几乎是每个人职业生涯的一部分,很多HR说“三年两跳”已经是一个跳槽频繁与否的阈值了,可为什么市面上有很多程序员不到一年就跳槽呢?他们不担心影响履历吗? PayScale之前发布的**《员工最短任期公司排行榜》中,两家码农大厂Amazon和Google**,以1年和1.1年的员工任期中位数分列第二、第四名。 PayScale:员工最短任期公司排行榜 意外的是,任期中位数极小的这两家公司,薪资...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

华为初面+综合面试(Java技术面)附上面试题

华为面试整体流程大致分为笔试,性格测试,面试,综合面试,回学校等结果。笔试来说,华为的难度较中等,选择题难度和网易腾讯差不多。最后的代码题,相比下来就简单很多,一共3道题目,前2题很容易就AC,题目已经记不太清楚,不过难度确实不大。最后一题最后提交的代码过了75%的样例,一直没有发现剩下的25%可能存在什么坑。 笔试部分太久远,我就不怎么回忆了。直接将面试。 面试 如果说腾讯的面试是挥金如土...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

win10暴力查看wifi密码

刚才邻居打了个电话说:喂小灰,你家wifi的密码是多少,我怎么连不上了。 我。。。 我也忘了哎,就找到了一个好办法,分享给大家: 第一种情况:已经连接上的wifi,怎么知道密码? 打开:控制面板\网络和 Internet\网络连接 然后右击wifi连接的无线网卡,选择状态 然后像下图一样: 第二种情况:前提是我不知道啊,但是我以前知道密码。 此时可以利用dos命令了 1、利用netsh wlan...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

女朋友过生日,我花了20分钟给她写了一个代理服务器

女朋友说:“看你最近挺辛苦的,我送你一个礼物吧。你看看想要什么,我来准备。” 我想了半天,从书到鞋子到电子产品最后到生活用品,感觉自己什么都不缺,然后和她说:“你省省钱吧,我什么都不需要。” 她坚持要送:“不行,你一定要说一个礼物,我想送你东西了。” 于是,我认真了起来,拿起手机,上淘宝逛了几分钟,但还是没能想出来缺点什么,最后实在没办法了:“这样吧,如果你实在想送东西,那你就写一个代理服务器吧”...

记一次腾讯面试,我挂在了最熟悉不过的队列上……

腾讯后台面试,面试官问:如何自己实现队列?

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

程序员写出这样的代码,能不挨骂吗?

当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好?昨夜...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

立即提问
相关内容推荐