c语言 结构体指针输出信息不完整

#include
struct stu{
char *name;

int num;

int age;

char group;

float score;

}stus[5] = {{"Zhou ping", 5, 18, 'C', 145.0},
{"Zhang ping", 4, 19, 'A', 130.5},
{"Liu fang", 1, 18, 'A', 148.5},
{"Wang ming", 3, 17, 'B', 144.5} }, *p=stus;
int main ()
{
int j;
int pjf ( struct stu w[],int i );
int charu ( struct stu a[],int n);
pjf (stus,5);
stus[4]=stus[3];
charu(stus,3);
for(j=0;j<5;j++)
{
printf("%s,%d,%d,%c,%f\n",p[j].name,p[j].num,p[j].age,p[j].group,p[j].score);
}
return 0;
}

int pjf ( struct stu w[],int i )
{
int sum=0;
for(i=0;i<5;i++)
{
sum+=w[i].score;
}
printf ("%f\n",sum/4.0);
return 0;
}

int charu ( struct stu a[],int n)
{

printf("请输入一条记录\n");
scanf("%s,%d,%d,%c,%f",&a[3].name,&a[3].num,&a[3].age,&a[3].group,&a[3].score);

return 0;
}
图片说明

应该输出5组信息但是只有3组,不知道什么原因,跪求大神

2个回答

成员char *name 已经是个指针了,参数&a[3].name什么意思?
还有使用scanf()时要用足够空间的数组,而不是指针成员。即使没有上面的错误,你也是试图往字符串常量"Wang ming"所在的内存写读取的内容,会溢出边界的。

Tiger_Zhao
Tiger_Zhao 回复qq_36746346: name声明为数组,参数中的&不需要。
大约 3 年之前 回复
qq_36746346
名叫黑客的技术小白 那应该怎么修改
大约 3 年之前 回复

你的数组定义在常量区不能修改,需要定义成局部变量

Tiger_Zhao
Tiger_Zhao 这也是一个问题。
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言 结构体指针字符 二进制文件写入和读取 指针字符输出错误
typedef struct s{ char *name; }student; /*将结构体读出并显示*/ int IsUsed(char *str) { FILE *fp = fopen("test","rb"); student s; s.name = (char*) malloc(sizeof(char)*20); fread(&s,sizeof(student),1,fp); while(!feof(fp)){ printf("%s",s.name); //为什么这里出错?????????????????? if(strcmp(s.name,str)==0){ fclose(fp); return 1; //存在该字符串,则返回1 } fread(&s,sizeof(student),1,fp); } fclose(fp); return 0; //不存在该字符串,则返回0 } int main() { FILE *fp = fopen("test","rb+"); /*先将结构体P存入二进制文件中*/ student p; p.name = (char*) malloc(sizeof(char)*20); scanf("%s",p.name); while(IsUsed(p.name)){ //检查员工号是否唯一 printf("该字符串已经存在,请更换一个:"); scanf("%s",p.name); } fwrite(&p,sizeof(student),1,fp); } 在printf哪里显示程序停止工作!!!!!!!!!求解啊
关于C语言结构体指针数组的问题
``` #include<stdio.h> //结构体 struct student { int iNum; char cName[16]; float fChineseScore; float fMathScore; float fEnglishScore; }; typedef struct student STUDENT; //输入 void InputTranscript(STUDENT MyClass[], int num) { int i; printf("请输入学生的成绩信息:\n"); for (i = 0; i < num; i++) { scanf("%d %s %f %f %f", &MyClass[i].iNum, MyClass[i].cName, &MyClass[i].fChineseScore, &MyClass[i].fMathScore, &MyClass[i].fEnglishScore); } } //输出单体 void DisplayTranscriptOne(STUDENT MyScore) { int i; STUDENT *p1 = MyScore; printf("请输入需要显示成绩信息的学生的序号:"); scanf("%d", &i); printf("输出学生的成绩信息:\n"); printf("%d %s %f %f %f", (p1 + i) -> iNum, (p1 + i) -> cName, (p1 + i) -> fChineseScore, (p1 + i) -> fMathScore, (p1 + i) -> fEnglishScore); } //输出全体 void DisplayTranscriptAll(STUDENT *MyClass, int num) { printf("输出全体学生的成绩信息\n"); for (; MyClass < MyClass + num; MyClass++) { printf("%d %s %f %f %f", MyClass -> iNum, MyClass -> cName, MyClass -> fChineseScore, MyClass -> fMathScore, MyClass -> fEnglishScore); } } //修改 void ModifyOne(STUDENT *MyInfo) { int i; printf("请输入需修改个人信息的学生的序号:"); scanf("%d", &i); printf("请继续输入修改后的信息:"); scanf("%d %s %f %f %f", (MyInfo + i) -> iNum, &(MyInfo + i) -> cName, &(MyInfo + i) -> fChineseScore, &(MyInfo + i) -> fMathScore, &(MyInfo + i) -> fEnglishScore); } void main(void) { STUDENT sTranscript[10]; InputTranscript(sTranscript, 10); DisplayTranscriptOne(sTranscript); DisplayTranscriptAll(*sTranscript, 10); ModifyOne(*sTranscript); } ``` --------------------Configuration: 4 - Win32 Debug-------------------- Compiling... 4.c C:\Users\20453\Desktop\王俊森\4\4.c(30) : error C2115: 'initializing' : incompatible types C:\Users\20453\Desktop\王俊森\4\4.c(62) : error C2115: 'function' : incompatible types C:\Users\20453\Desktop\王俊森\4\4.c(62) : warning C4024: 'DisplayTranscriptOne' : different types for formal and actual parameter 1 C:\Users\20453\Desktop\王俊森\4\4.c(63) : error C2115: 'function' : incompatible types C:\Users\20453\Desktop\王俊森\4\4.c(63) : warning C4024: 'DisplayTranscriptAll' : different types for formal and actual parameter 1 C:\Users\20453\Desktop\王俊森\4\4.c(64) : error C2115: 'function' : incompatible types C:\Users\20453\Desktop\王俊森\4\4.c(64) : warning C4024: 'ModifyOne' : different types for formal and actual parameter 1 Error executing cl.exe. 4.obj - 4 error(s), 3 warning(s)
C语言一个结构体指针的问题
我用一个子函数初始化了一个结构体并返回结构体的地址,但是却发现在主函数中输出的num和str字符串和子函数中输出的不一样,主函数中输出的内容更像是一些乱码,但是两个函数中的地址是一致的,这是哪儿出现什么问题了吗? 代码如下,大家可以测试一下(这个代码并没有实际意义,就是在练习结构体时候瞎写的) ``` #include <stdio.h> struct Test { int num; char str[20]; }; struct Test * function(); int main() { struct Test *p = function(); printf("address : %p\n", p); printf("num = %d\n", p->num); printf("str = %s\n", p->str); } struct Test * function() { struct Test test = { 10, "hello world" }; struct Test *p = &test; printf("num = %d\n", p->num); printf("str = %s\n", p->str); printf("address : %p\n", p); return p; } ``` 附上运行结果图: 第一行是子函数中的num 第二行是子函数中的str 第三行是子函数中返回的地址 第四行是主函数中接收到的地址 第五行是主函数中的num 第六行是主函数中的str ![图片说明](https://img-ask.csdn.net/upload/201705/21/1495334379_666758.png)
设计一个函数,能够对输入的两个学生结构体信息中的成绩按照大小顺序输出。要求使用指针类型的变量进行结构体变量的定义?
设计一个函数,能够对输入的两个学生结构体信息中的成绩按照大小顺序输出。要求使用指针类型的变量进行结构体变量的定义。 解题思路:采用 malloc 函数进行结构体指针变量的定义,并使用 --> 访问成员变量的方式进行结构体变量赋值;比较两个结构体信息中学生的成绩成员变量的大小,按照大小顺序输出。 参考代码: #include "stdio.h" #include "malloc.h" #include "string.h" #define NUM 1 struct STUDENT { char STU_ID[8]; char STU_NAME[10]; int STU_AGE; int STU_SCORE; }; int main(int argc, char* argv[]) { struct STUDENT *stu1 = (struct STUDENT *)malloc(sizeof(struct STUDENT)); stu1->STU_AGE=12; strcpy(stu1->STU_ID,"04120084"); strcpy(stu1->STU_NAME," 张三 "); struct STUDENT *stu2=(struct STUDENT *)malloc(sizeof(struct STUDENT)); stu2->STU_AGE=12; strcpy(stu2->STU_ID,"04120085"); strcpy(stu2->STU_NAME," 李四 "); printf(" 输入学生成绩 \n"); scanf("%d,%d",&(stu1->STU_SCORE),&(stu2->STU_SCORE)); // 学生补充代码 { }//end of 补充代码 printf("%s,%d\n",stu1->STU_NAME,stu1->STU_SCORE); printf("%s,%d\n",stu2->STU_NAME,stu2->STU_SCORE); return 1; }
关于c语言结构体指针的小问题
current = &(list->anchor); printf("%p\n", (void*) current); printf("%p\n", (void*) &(list->anchor)); printf("此时指针相同\n"); printf("---\n"); printf("%p\n", (void*) current->prev); printf("%p\n", (void*) &(list->anchor.prev)); printf("他们的prev并不相同???current->prev是null??\n"); printf("---\n"); current->prev = newElem; printf("%p\n", (void*) &(list->anchor.prev)); printf("%p\n", (void*) current->prev); printf("修改current的prev并不能影响list->anchor的prev\n"); ``` 输出结果 00000000007113E8 00000000007113E8 此时指针相同 --- 0000000000000000 00000000007113F8 他们的prev并不相同???current->prev是null?? --- 00000000007113F8 000000000062FDD0 修改current的prev并不能影响list->anchor的prev 之前会点Java 把struct指针直接就理解成java里对象的引用了 看来好像不是这么一回事儿 这里想不太明白,求指教。
本人初学C,想请教关于结构体或者char类型指针的问题
如题,该问题我不知道是属于结构体方面的问题还是char类型的问题,本人刚接触c语言,代码如下 ``` struct MyStruct1 { char b[1]; double c; int a; }; struct MyStruct2 { char b; double c; int a; }; int main() { MyStruct mys1; MyStruct mys2; std::cout << &mys1.b << "\n"; std::cout << &mys2.b<< "\n"; } ``` 请问为什么输出mys1.b的指针时候是乱码呢??? 我有下面几个疑问: char类型指针与其他类型相比有什么特殊的地方吗?? 为什么其他类型不乱码呢? char数组也不乱码 还是char类型指针遇到字节对齐这个性质,会产生特殊的情况? 还请CSDN里的大神帮忙解惑,再次感谢
C语言 结构体 最后结果总是输出错误,不知道为啥。
题目要求: 1.读入一个英文文本文件,英文中有字母、数字、其它字符,无汉字,文件有多行。 2.编写函数实现:统计字母的出现频度,并显示结果。 3.编写函数实现:统计其中单词的个数,并显示结果。(单词个数以WORD统计为准) 找出最长的单词,并显示单词及其长度。 返回单词的统计结果。 4.统计出现的整数,存入一维数组,并显示结果。 注:学会利用字符型指针处理字符串。 我写的代码如下:(是使用vc++编译的,最后结果有一些与实际答案不同) #include<stdio.h> #include<stdlib.h> #include <string.h> #define N 1000 void main() { int zi_mu(char *sp); int statistics(char b[80][80],char a[N]); void zheng_shu(char *sp); int i=0,j=0; char b[80][80],a[80]; //一个单词相当于一个一维数组。 printf("文章全文是:\n"); FILE*fp;//------1.读入一个英文文本文件, char c; if((fp=fopen("test.txt","r"))==NULL) { printf("无法打开此文件\n"); exit(0); } while((c=fgetc(fp))!=EOF) { a[i]=c; i++; } a[i]='\0'; int n=strlen(a); printf("%s",a); zi_mu(a); statistics(b,a); zheng_shu(a); } int zi_mu(char *sp)//----------2.统计字母的出现频度, { int i,a[26]; for(i=0;i<26;i++) a[i]=0; while((*sp)!='\0') { if(((*sp)>='a'&&(*sp)<='z')||((*sp)>='A'&&(*sp)<='Z')) { i=(*sp)-'a'; a[i]++; } sp++; } printf("\n\n单词出现的次数:\n"); for(i=0;i<26;i++) printf(" %c:%d ",'a'+i,a[i]); return 0; } int statistics(char b[80][80],char a[N]) //---3,显示单词。 { int i,j,high,key=0,word=0,key1=0,max1=0,maxi=0; char *p; for(i=0;a[i]!='\0';i++) { if(a[i]==' ') key=0; else if(key==0&&(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z')) { key=1; word++; } } printf("\n一共有%d个单词.\n",word); i=0; j=0; p=a; while((*p)!='\0') { if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) { b[i][j]=*p; j++; } else { b[i][j]='\0'; j=0; i++; } p++; } b[i][j]='\0'; high=i+1; for(i=0;i<high;i++) { max1=0;j=0; while((b[i][j]>='a'&&b[i][j]<='z')||(b[i][j]>='A'&&b[i][j]<='Z')) { max1++; j++; } if(max1>key1) key1=max1; if(j==key1) maxi=i; } b[maxi][key1]='\0'; printf("最长单词是:"); for(i=0;i<key1;i++) printf("%c",b[maxi][i]); printf(" 该单词长度为%d。",key1); return 0; } void zheng_shu(char *sp)//---------4.统计出现的整数,存入一维数组,并显示结果。 { int a[20]={0},i=0,n=0; while((*sp)!='\0') { if((*sp)>='0'&&(*sp)<='9')//若是数字字符 { a[i]=a[i]*10+(*sp-'0');//*sp-'0' 数字字符转换成数字。 if((*sp)!='\0'&&(!(*(sp+1)>='0'&&*(sp+1)<='9')))//当前是数字字符下一个不是,准备处理下一个 i++; } sp++; } n=i; printf("\n\n此文共有%d个数字: ",n); for(i=0;i<n;i++)//------------------输出整数 { printf(" %d ",a[i]); } printf("\n"); }
如何返回结构体指针?
小白新学链表 想用函数来表达一下 在函数返回值的地方遇到麻烦 请大佬们帮助 ``` typedef struct student { char name[10]; int num; struct scan { int speach; int read; int write; int hear; }SCAN; struct student *next; }STUDENT; ``` 用函数创建一个链表后 想返回头节点 如何以STUDENT* 返回函数值 ``` STUDENT* creatlink() { char name[10],*t; int i, n, num, s, r, w, h; STUDENT *head, *p, *q; printf("输入要录入的人数:"); scanf("%d", &n); printf("请依次录入学生的学号 姓名 及听说读写的分数"); head = NULL; q = NULL; for (i = 0; i < n; i++) { p = (STUDENT *)malloc(sizeof(STUDENT)); scanf("%d%s%d%d%d%d", &num, name, &s, &r, &w, &h); p->num = num; strcpy(p->name,name); p->SCAN.speach = s; p->SCAN.hear = h; p->SCAN.read = r; p->SCAN.write = w; if (head == NULL) head = p; else q->next = p; q = p; } return *head; } ``` 编译时在 return *head; *号上 说 不存在从 STUDENT 到STUDENT* 的适当转换函数 然后我删掉返回值上的*(return *head;) 后 输出的函数又不能用了 求大佬帮助 全部代码在下面 ``` #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct student { char name[10]; int num; struct scan { int speach; int read; int write; int hear; }SCAN; struct student *next; }STUDENT; STUDENT* creatlink() { char name[10],*t; int i, n, num, s, r, w, h; STUDENT *head, *p, *q; printf("输入要录入的人数:"); scanf("%d", &n); printf("请依次录入学生的学号 姓名 及听说读写的分数"); head = NULL; q = NULL; for (i = 0; i < n; i++) { p = (STUDENT *)malloc(sizeof(STUDENT)); scanf("%d%s%d%d%d%d", &num, name, &s, &r, &w, &h); p->num = num; strcpy(p->name,name); p->SCAN.speach = s; p->SCAN.hear = h; p->SCAN.read = r; p->SCAN.write = w; if (head == NULL) head = p; else q->next = p; q = p; } return *head; } void putlink(STUDENT *HEAD) { STUDENT *t; t = HEAD; while (t != NULL) { printf("%d\t%s\t听%d,说%d,读%d,写%d", t->num, t->name, t->SCAN.hear, t->SCAN.speach, t->SCAN.read, t->SCAN.write); t = t + 1; } } int main() { STUDENT *HEAD; HEAD = NULL; putlink(creatlink()); return 0; } ```
关于C语言结构体的问题
``` //4. 设一个班有若干学生(如10人),请定义学生结构包含以下信息:学生学号、学生姓名、高级语言程序课的成绩,请写程序完成以下功能: //(1)定义函数以学生结构指针(指向学生数组)为参数,逐个录入该班集的学生信息; //(2)定义函数以学生结构指针(指向学生数组)为参数,求出该班高级语言程序课的排名第一的学生,并输出该第一名学生的学号、姓名及高级语言程序课成绩。 //(3)在主程序中完成测试。 #include<stdio.h> struct Student { int number; char name[20]; double scores; }; void StuInfo(struct Student *p); void Rank(struct Student *p); int main() { struct Student stus[3]; struct Student *p; p=stus; StuInfo(p); Rank(p); return 0; } void StuInfo(struct Student *p) { printf("请输入学生的学号,姓名,以及成绩:"); for(int i=0;i<3;i++) { scanf("%d%s%f",&(p+i)->number,&(p+i)->name,&(p+i)->scores); } } void Rank(struct Student *p) { struct Student *q; q=p; for(int i=0;i<2;i++) { if(q->scores<(p+i+1)->scores) { q=p+i+1; } } printf("成绩最好的学生学号%d,姓名%s,成绩%f",q->number,q->name,q->scores); } ``` 请问为什么最后输出的scores总是0.000000?很是疑惑。
请问如题用C语言要怎样编程?
# 设有一组学生的成绩数据已经放在结构体数组stu中 struct student { int num; char name[20]; char sex; float score; }stu[5]={{101,"li ping",'m',45}, {102 ,"zhang ping",'m',62.5}, {103 ,"he fang",'m',92.5}, {104 ,"cheng ling",'f',87}, {105 ,"wang ming",'m',58}}; 1)子函数实现 :不及格人数统计。 要求:使用结构体指针变量作为函数参数编程,主函数中输出结果。 2)子函数实现: 根据学号在结构体数组中查找学生信息,返回该学生所在的数组下标,若没找到则返回-1。主函数中输出该学生信息。 要求: 使用学号、结构体指针变量作为函数参数编程。 3)子函数实现:根据姓名在结构体数组中查找学生信息, 返回该学生所在的数组下标,若没找到则返回-1。主函数中输出该学生信息。 要求: 使用字符数组或字符指针变量(为了传递姓名)、结构体指针变量作为函数参数编程。
C语言小白实现记录学校人员信息:代码如下,为什么在scanf输入第一个人员数据后按回车不能输入下一个人员数据而是程序结束?
``` #include<stdio.h> /*实现记录学校人员信息,包括学生和老师,其中信息包含身份、姓名、性别、职务/班级*/ #include<stdlib.h> struct Position /*结构体变量定义班级或职务*/ { int iClass; char cStaff[]; }; union Membership /*共用体变量定义成员信息*/ { char cStatus[]; char cName[]; int iNumber; char cSex[]; int iGo; /*作为判断是否继续的依据*/ struct Position Text; /*共用体中引用结构体*/ union Membership* pNext; /*指向下一个结点指针*/ }; int iCount; /*定义全局链表长度*/ union Membership* Create() { union Membership *pHead=NULL; /*头指针初始化为空*/ union Membership *pNew, *pEnd; iCount=0; /*链表长度初始化为0*/ pNew=pEnd=(union Membership*)malloc(sizeof(union Membership)); /*创建动态链表*/ printf("请输入学校人员信息:\n"); /*提示信息*/ printf("身份 姓名 编号 性别 职务 班级 是否继续\n"); scanf("%s",&pNew->cStatus); /*输入信息*/ scanf("%s",&pNew->cName); scanf("%d",&pNew->iNumber); scanf("%s",&pNew->cSex); scanf("%d",&pNew->Text.iClass); scanf("%s",&pNew->Text.cStaff); scanf("%d",&pNew->iGo); while(&pNew->iGo!=0); /*判断语句是否进行*/ { iCount++; if(iCount==1) { pNew->pNext=pHead; /*使指向为空*/ pEnd=pNew; /*跟踪新加入的结点*/ pHead=pNew; /*头指针指向首结点*/ } else { pNew->pNext=NULL; /*新结点的指针为空*/ pEnd->pNext=pNew; /*原来的尾结点指向新结点*/ pEnd=pNew; /*pEnd指向新结点*/ } pNew=(union Membership*)malloc(sizeof(union Membership)); /*再次分配节点内存空间*/ scanf("%s",&pNew->cStatus); scanf("%s",&pNew->cName); scanf("%d",&pNew->iNumber); scanf("%s",&pNew->cSex); scanf("%d",&pNew->Text.iClass); scanf("%s",&pNew->Text.cStaff); scanf("%d",&pNew->iGo); } free(pNew); /*释放无用空间*/ return pHead; } void Print(union Membership* pHead) { union Membership *pTemp; /*定义临时指针*/ int iIndex=1; /*定义结点序号*/ printf("数据库中共有%d个人\n",iCount); printf("\n"); pTemp=pHead; /*指针得到首结点地址*/ while(pTemp!=NULL) { printf("第%d个人员信息如下:\n"); printf("身份:%s\n",pTemp->cStatus); printf("姓名:%s\n",pTemp->cName); printf("编号:%d\n",pTemp->iNumber); printf("性别:%s\n",pTemp->cSex); printf("班级:%d",pTemp->Text.iClass); printf("职务:%s\n",pTemp->Text.cStaff); printf("\n"); pTemp=pTemp->pNext; /*移动临时指针到下一个结点*/ iIndex++; } } int main() { union Membership *pHead; /*定义头结点*/ pHead=Create(); /*创建结点*/ Print(pHead); /*输出链表*/ return 0; /*程序结束*/ } ```
C语言 2道关于结构体的题 谢谢!悬赏放一起了
1.Description: 某企业有为员工祝贺生日的传统,但随着企业规模的扩大,员工人数的增多,该企业希望运用信息化技术,保存本企业所有员工的生日信息,查找指定日期过生日的员工,试编写一个程序,输入员工总数,员工的姓名、工号、出生日期以及待查询日期,根据员工的出生月、日,查找过生日的员工。若没找到,输出“Not Found”。 要求: 1、设该企业最多有员工100人,员工的信息包括姓名、工号、出生日期(年、月、日),要求使用结构体嵌套方式定义数据结构。 2、要求使用typedef对结构体进行重命名 3、要求划分合理函数完成。查找函数原型为: void Input(Employee *p,int n); //n为员工总数,p为指向结构体数组的指针。 输出格式: printf("%d月%d日过生日的有:\n",...... ); printf(" 姓名 工号 生日(年 月 日)\n"); printf("%8s%10d%14d%4d%4d\n",.......); 输入可以参考这样的代码。 scanf("%d",&n); for(i=0;i<n;i++) { scanf("%s %d %d %d %d",info[i].name,&info[i].no,&info[i].birthday.y,&info[i].birthday.m,&info[i].birthday.d); } Sample Input: 4 zhang 1001 1987 5 7 wang 1002 1998 5 7 sun 1003 1990 4 5 wanghi 1004 2000 10 10 5 7 Sample Output: 5月7日过生日的有: 姓名 工号 生日(年 月 日) zhang 1001 1987 5 7 wang 1002 1998 5 7 Sample Input: 4 zhang 1001 1987 5 7 wang 1002 1998 5 7 sun 1003 1990 4 5 wanghi 1004 2000 10 10 5 8 Sample Output: Not Found 2.Description: 建立一结构体,其中包括学生的姓名、性别、年龄和一门课程的成绩。建立的结构体数组通过输入存放全班(最多45人)学生信息,输入班级人数,以及每个学生的姓名,性别,年龄,成绩(以回车分隔),输出考分最高的学生的姓名、年龄、性别和课程的成绩。 提示:请使用getchar()读出多余的回车,不要使用fflush函数。fflush并不是C标准支持的函数,在一些编译器上不起作用。 输出格式: printf("\nName\t\tSex\tAge\tScore\n"); printf("%s\t\t%c\t%d\t%5.1f\n",......); Sample Input: 3 zhang san m 18 89.9 li si m 17 90.8 wang wu f 18 99 Sample Output: Name Sex Age Score wang wu f 18 99.0
请问为什么我用C语言写的线性表的链式存储结构的遍历输出值无法输出。而且代码没有警告和错误
测试环境VC6.0 ``` #include<stdlib.h> #include<stdio.h> typedef int Status; #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef struct NODE{ //定义 int a; struct NODE*next; //这里struct也应该添加. }Node; void InitList(Node*la){//头节点创建 la=(Node*)malloc(sizeof(Node)); la->next=NULL; } Status ListInsert(Node*a,int i,int e) {//在i-1,i中插入元素,就是在第I个位置插入。 Node*p,*c; int j=0; p=a; c=NULL; while(j<i) {p=p->next;j++;} //p与p->next都为指针变量,;不能忘记// if(j<0||j>i) return ERROR ; //一次执行完的判断 c=(Node*)malloc(sizeof(Node)); c->a=e; c->next=p->next; //空指针域的继承与修改 p->next=c; return OK; } Status TraverseList(Node a) {//遍历链表并且输出每个节点 Node*p; p=a.next; printf("遍历结果是\n"); while(p!=NULL) { printf("%d",p->a); p=p->next; } return OK; } void main() { Node a; int b,e,j; j=1; InitList(&a); printf("请插入个数"); scanf("%d",&b); printf("请输入"); for(;j<=b;j++) { scanf("%d",&e); ListInsert(&a,j,e); } TraverseList(a); } ```
【C语言】结构体数组作为函数参数的排序问题
题目: 设计一个程序,统计一个班(最多50人)的学生成绩,要求能实现如下3个功能: (1) 由键盘或文件输入每个学生的学号和四门课程的成绩; (2) 计算每个学生的平均成绩和总成绩; (3) 按总成绩从高到低排名,并按名次输出每个学生的情况,包括: 学号,各科成绩,平均成绩,总成绩,排名 我写的代码如下 问题在于,输入、计算部分都没有问题,但是,运行结果显示,**并没有进行排序操作,也就是说**,排序代码并未生效。 麻烦各位大佬帮忙看看哪里出了问题,感激不尽 ``` #include <stdio.h> #include <stdlib.h> struct student{ char id[10]; float sub_1; float sub_2; float sub_3; float sub_4; float sum; float aver; //int order; }; //函数原型 void order_stu(struct student stu[],int sum_stu); void aver_stu(struct student *pt_1); void main() { int sum_stu;//学生的人数 printf("Please input the sum of students in this class:"); scanf("%d",&sum_stu); getchar(); struct student stu[sum_stu]; //从键盘读取学生学号和四门课的成绩 int i; for(i=0;i<sum_stu;i++) { printf("请分别输入第%d名学生的学号、四门课的成绩,以空格隔开:",i); scanf("%s %f %f %f %f",&stu[i].id,&stu[i].sub_1,&stu[i].sub_2,&stu[i].sub_3,&stu[i].sub_4); getchar(); aver_stu(&stu[i]); } order_stu(stu,sum_stu); } //计算总分和平均值 //利用指针,目的在于在本函数内为结构体内的aver和sum赋值,即改变结构体的内容 void aver_stu(struct student *pt_1) { pt_1->sum=pt_1->sub_1+pt_1->sub_2+pt_1->sub_3+pt_1->sub_4; pt_1->aver=(pt_1->sum)/4; } //排名次 void order_stu(struct student stu[],int sum_stu) { float sum_score;//总分 float aver; int i,j; struct student *p[sum_stu];//定义一个指针数组 //使每个指针指向一个结构体数组元素 for(i=0;i<sum_stu;i++) { p[i]=&stu[i]; } struct student *temp; //用冒泡排序法排序(从大到小) for(i=0;i<sum_stu-1;i++) {//遍历sum_stu-1轮 for(j=0;j<sum_stu-i-1;j++) {//每过一轮,遍历的元素数目-1 if((p[j]->sum)<(p[j+1]->sum)) { temp=p[j+1];//交换两结构体在结构体数组中的位置 p[j+1]=p[j]; p[j]=temp; } } } //将结果通过列表的方式打印在屏幕上 printf("id sub_1 sub_2 sub_3 sub_4 average order\n"); for(i=0;i<sum_stu;i++) printf("%s %5f %5f %5f %5f %7f %5d\n",stu[i].id,stu[i].sub_1,stu[i].sub_2,stu[i].sub_3,stu[i].sub_4,stu[i].aver,i+1); } ``` 运行结果如图所示 ![图片说明](https://img-ask.csdn.net/upload/201811/21/1542812166_499136.jpg)
结构体内指针字符数组的释放
问题:结构体成员char* name和结构体struct student* studentIOS同时释放的话回报错,错误见代码中注释。请问这里要怎么释放呢?还是结构体里面不能这样使用指针字符数组? #include <stdio.h> #include <stdlib.h> struct student{ int id; //长度:4 char* name; //8 int score[2]; //8 float avgScore; //4 }; void input(struct student*); void output(struct student*); void input(struct student* stu){ printf("(1)程序最多接受50名学生的信息,多余的无法录入\n"); printf("(2)不足50人,请输入-1结束输入\n"); for (int i=0; i<50; ++i) { (stu+i)->name = (char*)malloc(15 * sizeof(char)); //给结构体中学生的name分配空间 printf("请在下面输入第%d名学生的信息\n",i+1); printf("序号:"); scanf("%d",&(stu+i)->id); if (-1 == (stu+i)->id) { //输入-1的时候,停止输入;退出输入函数 printf("输入结束\n"); return ; } printf("姓名:"); //gets((stu+i)->name); scanf("%s",(stu+i)->name); printf("C语言成绩:"); scanf("%d",&(stu+i)->score[0]); printf("数序成绩:"); scanf("%d",&(stu+i)->score[1]); (stu + i)->avgScore =( (stu + i)->score[0] + (stu + i)->score[1])/2.0; } return; } void output(struct student* stu){ printf("学生信息如下\n"); printf("学号\t\t姓名\t\tC语言\t数学\t\t平均\n"); for (int i=0; i<50; ++i,++stu) { if (stu->id == -1) { break; } printf("%d\t\t%s\t\t%d\t\t%d\t\t%.2f",stu->id,stu->name,stu->score[0],stu->score[1],stu->avgScore); printf("\n"); } return; } int main(int argc, const char * argv[]) { struct student* studentIOS = (struct student*)malloc(50 * sizeof(struct student)); input(studentIOS); //output(studentIOS); // printf("%p\n%p",studentIOS->name,&studentIOS->name); //输出不同 /* 释放每个学生的name空间,或者释放学生结构体的空间, 测试发现二者只能释放一个 */ //释放每个学生中的name空间 #if 0 //加上此循环,程序出问题,提示studentIOS未malloc for (int i=0; i<50; ++i,++studentIOS) { if (NULL != studentIOS->name) { free(studentIOS->name); studentIOS->name = NULL; } } #endif #if 0 //加上下面的两句不会出问题 free((studentIOS+10)->name); (studentIOS+10)->name = NULL; #endif free(studentIOS); studentIOS = NULL; return 0; }
数据结构单链表建表问题
各位大佬,求教。 单链表中值为y的结点前面插入一个值为x的结点,即使值为x的新结点成为值为y的结点的前驱结点。 以下是代码,不知道为什么creatlistr建表函数没有修改head单链表,return head也一样。 ``` #include <stdio.h> #include <stdlib.h> /************************************/ /* 链表实现的头文件,文件名slnklist.h */ /************************************/ typedef int datatype; typedef struct link_node{ datatype info; struct link_node *next; }node; /*****************************************************/ /* 函数功能:建立一个空的单链表 */ /* 函数参数:无 */ /* 函数返回值:指向node类型变量的指针 */ /* 文件名:slnklist.c,函数名:init() */ /******************************************************/ node *init() { return NULL; } /****************************************************/ /* 函数功能:输出单链表中各个结点的值 */ /* 函数参数:指向node类型变量的指针head */ /* 函数返回值:空 */ /* 文件名slnklist.c,函数名display() */ /*****************************************************/ void display(node *head) { node *p; p=head; if(!p) printf("单链表是空的!\n"); else { printf("单链表各个结点的值为:"); while(p) { printf("%5d",p->info);p=p->next;} } } //队列方式建立单链表(尾插法) node *creatlistr(node *head) { node *s,*r=NULL; datatype data; printf("请输入各结点值(以0结束):"); scanf("%d",&data); while (data) { s=(node *)malloc(sizeof(node)); s->info=data; /*产生新结点*/ if (head==NULL) head=s; /*新结点插入空表*/ else r->next=s; r=s; scanf("%d",&data); } /*处理表尾结点指针域*/ if(r!=NULL) r->next=NULL; return head; } //函数功能:在结点值为y的结点前插入一个值为x的结点 node *preinsert(node *head,datatype y,datatype x) { node *p,*q=head; node *pre=NULL; while(q&&q->info!=y) //没有找到并且没有找完 { pre=q; q=q->next; } //pre指向p的前驱结点 if(!q) printf("找不到此结点!"); else { p=(node*)malloc(sizeof(node));/*分配空间*/ p->info=x;/*设置新结点*/ if(!pre) //要插入的是第一个结点 { p->next=head; /*插入(1)*/ head=p; /*插入(2)*/ } else { p->next=pre->next;/*插入(1)*/ pre->next=p;/*插入(2)*/ } } return head; } void main() { node *head=init(); datatype x,y; //插入值 creatlistr(head); display(head); printf("请输入要在值为?的结点前插入结点?: "); scanf("%d%d",&y,&x); display(preinsert(head,y,x)); } ```
C语言指针内存分配相关问题,求大神指导。。。
这里有两段程序,基本上是一样的。都是使用链表来实现队列。这里实现了出队和入队操作。第一段程序能够正确执行,但是第二段程序不可以,原因是rear和front总是相同的,所以输出的都是-1。我检查了一下,发现每一次rear改变会是的front同时改变。这是为什么?第一段程序通过一个结构体传递rear和front确可以,这是为什么?是通过结构体构建了二级指针吗?求大牛。。。我都快绕晕了,好几次遇到这个问题了。。。 能够正确执行的程序: ``` #include<stdio.h> #include<stdlib.h> typedef struct Node { int data; struct Node *next; }Node; typedef struct Q { Node *front; Node *rear; }Q; void push(Q*q, int e) { Node *node = (Node*)malloc(sizeof(Node)); //分配空间 node->data = e; //数据域 node->next = NULL; //指针域 q->rear->next = node; //添加到末尾 q->rear = node; //更新尾指针 } int pop(Q* q) { if (q->front == q->rear) return -1; Node *t = q->front->next; //获取队首元素 int e = t->data; //获取队首数据域 q->front->next = t->next; //更新队首指针 if (t == q->front) //如果队首与队尾相同,则将队尾指针指向队首 q->rear = q->front; free(t); //释放 return e; //返回队首数据域 } int main() { Q queue; queue.rear = (Node*)malloc(sizeof(Node)); queue.front = queue.rear; push(&queue, 1); push(&queue, 2); push(&queue, 3); int k = pop(&queue); printf("%d\n", k); k = pop(&queue); printf("%d\n", k); k = pop(&queue); printf("%d\n", k); return 0; } ``` 不能够正确执行的: ``` #include<stdio.h> #include<stdlib.h> typedef struct Node { int data; struct Node *next; }Node; void push(Node* rear, int e) { Node *node = (Node*)malloc(sizeof(Node)); //分配空间 node->data = e; //数据域 node->next = NULL; //指针域 rear->next = node; //添加到末尾 rear = node; //更新尾指针 } int pop(Node* rear, Node* front) { if (front == rear) return -1; Node *t = front->next; //获取队首元素 int e = t->data; //获取队首数据域 front->next = t->next; //更新队首指针 if (t == front) //如果队首与队尾相同,则将队尾指针指向队首 rear = front; free(t); //释放 return e; //返回队首数据域 } int main() { Node *rear = (Node*)malloc(sizeof(Node)); Node *front = rear; push(rear, 1); push(rear, 2); push(rear, 3); int k = pop(rear,front); printf("%d\n", k); k = pop(rear, front); printf("%d\n", k); k = pop(rear, front); printf("%d\n", k); return 0; } ```
推荐 130 个令你眼前一亮的网站,总有一个用得着
总结了大学生活两年来,发现的 130 余个黑科技网站,总有一个会让你眼前一亮,赶紧收藏!
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
我在支付宝花了1分钟,查到了女朋友的开房记录!
在大数据时代下,不管你做什么都会留下蛛丝马迹,只要学会把各种软件运用到极致,捉奸简直轻而易举。今天就来给大家分享一下,什么叫大数据抓出轨。据史料证明,马爸爸年轻时曾被...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Flutter 会不会被苹果限制其发展?
这个可能性是存在的,而且不止是 flutter、react-native 、weex 、uni-app 、taro 、Hippy等都存在这个风险,虽然有些框架对比起 flutter 其他框架存在时间稍长,但是这不可否认它们一直都存在这个风向。 只要不是平台自己的亲儿子,那么肯定存在被限制发展的风险,所以这件事上是风险和收益之间的博弈,这是一个“后妈和前任之间的太极。” 先说现状 如今各大平台,如:...
没用过这些 IDEA 插件?怪不得写代码头疼
使用插件,可以提高开发效率。对于开发人员很有帮助。这篇博客介绍了IDEA中最常用的一些插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
Linux必懂知识大总结(补)
关机 1. 数据同步写入磁盘 sync 为了加快对磁盘上文件的读写速度,位于内存中的文件数据不会立即同步到磁盘上,因此关机之前需要先进行 sync 同步操作。 2. shutdown # /sbin/shutdown [-krhc] [时间] [警告讯息] -k : 不会关机,只是发送警告讯息,通知所有在线的用户 -r : 将系统的服务停掉后就重新启动 -h : 将系统的服务停掉后就...
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
立即提问