输入多组数据(不确定个数),要求输出每行后面都有换行符,但最后一行后面没有 怎么实现 5C

输入多组数据,每组格式如下

m n

A

B
其中m,n 分别表示顺序表A和B的元素个数,A、B为顺序表元素
输出
顺序表C的从小到大的输出。(请注意输出,行末无空格)最后一行无换行符
我最初的想法是
while(cin>>m)
{
cin>>n;
do something;
if(cin.eof())//检验是否到达文档末尾
;
else
cout<<endl;//如果没有到达末尾,添加换行符
}
结果发现还是不能通过,请问这是为什么?

4个回答

第一步,先写一个判断函数,判断输入多少个数据len_many,以及输入的每个数据的长度length;
第二步:既然是顺序表按照顺序表的顺序输出,到最后一个顺序表的时候,只输出‘\0’前的元素就可以

不要直接用eof判定,试试捕捉最后一行之后的元素,判断是否到了最后一行

centor
centor 不适用于你的demo
大约 2 年之前 回复
centor
centor 是用来判断文件末尾的
大约 2 年之前 回复
centor
centor eof值为-1
大约 2 年之前 回复
Qbop981001
Qbop981001 eof不就是用来捕捉最后一行之后的元素(EOF)的吗?
大约 2 年之前 回复

没太明白你的表述,输出可以控制每行的输出个数 例如:每行输出5个数且最后一行不换行 if(count%5==0&&count!=m+n)printf(“\n”);

这样就行了,把上一个数据输出的换行放在下一个输入测试案例之后就行了

 cin>>m;
    cin>>n;
    do something;
    while(cin>>m){
        cin>>n;
        cout<<endl;
        do something;
    }
qq_36949416
JW12138 你把题目想的太复杂了。。。。
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
matlab feedforwardnet创建的bp网络 输入输出层神经元个数确定

我已经用feedforwardnet训练好了bp神经网络,得到了权值阙值,我保存到到了TXT文本中,后面我打算load上这个数据,再构建基本的网络结构(各层神经元个数),将权值阙值赋给每层,我不想用configure这个函数来确定输入输出层的神经元个数,因为它需要要训练时的参数 input和ouput来确定,请问有没有其他方法直接定义输入输出层神经原个数

C#,定义一个数组,在数组中插入一个数,输出插入后的数组结果,数组长度不变。

C# 定义一个数组[2,4,6,8,9,15],从键盘输入两个数字,第一个为位置,第二个为插值,要求在数组中找到对应的位置插入这个数字,所插入数字后面的数字分别往后移动,最后一个丢掉。输出插入后的数组结果。

给定的一个字符串,统计其中数字字符出现的次数,怎么采用C语言来回答这个问题的

Problem Description 对于给定的一个字符串,统计其中数字字符出现的次数。 Input 输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。 Output 对于每个测试实例,输出该串中数值的个数,每个输出占一行。 Sample Input 2 asdfasdf123123asdfasdf asdf111111111asdfasdfasdf Sample Output 6 9

数据结构C语言链表输入排序问题

题目: 持续输入 学号,姓名,地址 -1终止输入 _再按照学号从小到大顺序输出_ 个人感觉问题可能出在31行到38行 插入在链表最前面的时候会出现问题,其他情况没有问题 _测试 输入会错误的情况(插在开头):_ 3,sfdfs,sdfsfd 2,sdf,sdf,sfd -1 测试 输入会正确的情况: 3,sdf,sd,sfd 5,fsd,sdf 4,dsf,sdf -1 /////姓名和地址就乱打几个字符了。。。 下面是关于链的的数据的调试截图(输出_会错误的情况_,数据见上文 ) ![图片说明](https://img-ask.csdn.net/upload/201804/02/1522667445_697244.png) 直到输入 —1终止前 ,都是正确的(↑↑↑第一张调试图,排序也是对的) 但是终止后,就会无限输出开头的(↓↓↓最后输入的插到开头的那个数) 主链变成next永远指向自己的。 ![图片说明](https://img-ask.csdn.net/upload/201804/02/1522667643_272901.png) 虽然是用双链表写的,但是没什么关系。 个人感觉问题在出在指针返还值或者函数返还值上面,_步骤应该都是没有问题的_,调试了很多遍 ``` #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct node { char name[20]; char add[20]; int nu; struct node *pre; struct node *next; }Newnode; Newnode sort( node *q, Newnode *inser ) /* sort+insert 找到位置插入 */ { Newnode *temp = q; while ( 1 ) { if ( temp->next == NULL && temp->nu < inser->nu ) /* 插在尾的情况,插入数大于所有temp + 第一个数时插在后面 */ { temp->next = inser; inser->pre = temp; return(*q); } if ( temp->pre == NULL && temp->nu > inser->nu ) /* 第一个数时插在前面 */ { /* printf("okOK"); */ /* temp->pre=inser; */ inser->next = temp; return(*inser); } } inser->next = temp; inser->pre = temp->pre; temp->pre->next = inser; temp->pre = inser; return(*q); } Newnode add( Newnode *q ) //q就是主链的地址 { int count = 0; while ( 1 ) { Newnode *newnode; newnode = (Newnode * ) malloc( sizeof(Newnode) ); scanf( "%d,", &newnode->nu ); if ( newnode->nu == -1 ) { return(*q); } newnode->next = NULL; newnode->pre = NULL; scanf( "%[^,]%[^\n]", newnode->name, newnode->add ); if ( q->pre == NULL && q->next == NULL && count == 0 ) { q = newnode; count++; /* 第一个数的输入,只输入一次 */ continue; }else *q = sort( q, newnode ); /* 从第二个数开始就插入,这里的指针传递对吗。。。 */ } return(*q); } void printall( Newnode *q ) { Newnode *temp = q; /* temp当前指针 */ printf( "%d %s %s\n", q->nu, q->name, q->add ); temp = temp->next; /* printf("%d %s %s\n",temp->nu,temp->name,temp->add); */ while ( temp != NULL ) { printf( "%d %s %s\n", temp->nu, temp->name, temp->add ); temp = temp->next; } /* printf("%d %s %s\n",temp->nu,temp->name,temp->add); */ } /* ////////////////////// */ int main( void ) { char inpu; int inpu2; Newnode p; p.pre = NULL; p.next = NULL; p = add( &p ); printall( &p ); } ``` 第一个特别输入 其他 找到位置,然后插入,排序一个插入一个。 调试调试吧。 再次说一下,步骤应该是没有问题的。(除了插在开头的情况会出现错误)调试了很多数据了。感觉问题应该出在指针返还上面。

BP神经网络模型,如果要预测数据,是每一个数据都迭代N次吗?

比如,以下例子: 某地区20年公路运量数据 年份 人口数量 机动车数量 公路面积 公路客运量 公路货运量 1990 20.55 0.6 0.09 5126 1237 1991 22.44 0.75 0.11 6217 1379 1992 25.37 0.85 0.11 7730 1385 1993 27.13 0.90 0.14 9145 1399 1994 29.45 1.05 0.20 10460 1663 1995 30.1 1.35 0.23 11387 1714 1996 30.96 1.45 0.23 12353 1834 1997 34.06 1.60 0.32 15750 4322 1998 36.42 1.70 0.32 18304 8132 1999 38.09 1.85 0.34 19836 8936 2000 39.13 2.15 0.36 21024 11099 2001 39.99 2.20 0.36 19490 11203 2002 41.93 2.25 0.38 20433 10524 2003 44.59 2.35 0.49 22598 11115 2004 47.30 2.50 0.56 ? ? 2005 52.89 2.60 0.59 ? ? 题目的要求要我们预测2004和2005两年的公路客运量与公路货运量。 首先,我现在已经清楚了BP神经网络的原理,包括正向传播反向传播激励函数等等,我自己也编写了一套BP神经网络的运算程序。现在我只想搞清楚一个简单的问题,对于这个实例,具体的运算步骤,是否是将人口数量、机动车数量以及公路面积作为3个输入层节点,隐藏层节点数就自己定了,输出层节点是公路客运量和公路货运量2个节点。那么我如果设置学习迭代次数为1000次。步骤是否是:对1990年的数据进行迭代1000次的学习,然后再对1991年的数据进行迭代1000次学习,对1991年初始权重值和偏值为1990年迭代1000次后最终更新的各节点的权重值和偏值,然后依次往下,即每年都会迭代1000次学习。 各位一定看懂我的问题,不要答非所问

c# 在命令行中输入任意10个字符串,根据字符串类型将输入的数据放入到不同数组中,最后将数组进行排序

1、输入的字符串,可以是手机、邮箱、身份证等 2、只将手机、邮箱的字符串筛选出来放到两个数组中,其余的放入yi'ge'shu'zu'zhon 3、数组按照升序排序,比如数组[6,3,8,2,4],按照升序排序后结果为[2,3,4,6,8]

单击提交按钮后,将第一个文本框的内容传到第二个文本框,代码运行错误?

``` <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf8"/> <title>第九周作业</title> <script type="text/jscript"> function x() { var MyContent=document.getElementById("t1").value; document.getElementById("t2").InnerHTML=MyConten; } </script> </head> <body> <input type="text" id="t1"/><br><br> <input type="text" id="t2"/><br><br> <button onclick="x()">提交</button><br><br> </body> </html> ``` 求求好心人,救救孩子吧,

化学方程式

Problem Description 还记得高中的化学方程式吗?当时化学课是我的最爱,老师常常需要我们用化学方程式来反应一种化学变化。但是粗心的我,常常在写化学方程式的时候,在一些细节上出问题。现在我们有很多的化学方程式,但是不知道其是否正确,需要你用编程来判断。 首先我们以例子来说明下化学方程式的格式: 2H2+O2==2H2O 3Fe + 2O2==Fe3O4 CaO + H2O == Ca(OH)2 1) 左边有N种化学品,右边有M种化学品,其中N>=1且M>=1,在每种化学品中,用一个大写字母或者一个大写字母加一个小写字母表示一种化学元素,每种化学元素在表示化学变化的符号“==”前后都出现。多于N>1和M>1的情况,相邻的两种化学品之间用一个“+”来连接。 2) 在每种元素(或者每种根,后面说明)后面出现的系数,是角标,表示这个元素或者根在这个化学品中出现的比例(主要和元素的最外层和次外层电子分布有关系,在这里不考虑具体的含义,只考虑格式),同时最先在这个化学品最前面的系数,表示这个化学方程式中,这种化学品参与化学反应的比例。根据守恒定理,前后出现的化学元素的个数必须相等。一般对于数字1都不用显式写出来(数据中也同样不会出现系数1),系数同样不为0(数据中也不出现)。 3) 对于一些由多个元素组成的串,表示一个“根”,如上面例子中的OH是一个氢氧根,也叫羟基。常常一个根必须由多个元素组成(单个元素不成为根),而在表示它们在化学品中出现的比例时,为了体现它们是一个小的部分,用括号包括起来(括号不能嵌套),再在其后加上系数,所以对于Ca(OH)2中,氧元素(O)与氢元素(H)同时出现两次,但是如果根只出现一次,可以加括号也可以不加,如NaOH。 4) 在一个化学方程式中,空格的出现一般是不受限制的,但是不能将同一个化学品内的元素以及所有与它们相关的系数分开,产生符号也不能分开。 5) 对于其他的一些特殊情况,如可逆化学方程式(事实上大部分的化学变化是可逆过程)用双向箭头表示,有些产生气体的分子后面需要用向上的箭头表示,在产生过程上还有可以加一些外界物理条件,产生沉淀需要说明等,我们不予考虑。 Input 输入有多个case,每个case占一行,每行表示一个化学方程式 Output 对于每个化学方程式,判断其格式上是否正确(这里不考虑意义上的正确性问题)。如果正确输出YES,否则NO。所以输入字符都是英文状态的。每个串长不超过100个字符,每种化学品的长度不超过20个字符。 Sample Input 2H2+O2==2H2O

fprintf输出到文本之后会有一串代码结束。

**论坛也发了贴,根据他的回答我改了我的程序,然而运行完一遍之后还是一样有一串不明代码,codeblocks也不报警告了。我把我完整的程序放上来,大概有500行,每个功能用完之后都会出现这个问题,我必须吧乱码删了才能继续下一个功能。网友告诉我函数后面要加return ;但是我试了下发现程序直接结束了,不会再跳到主函数,所以我只能用main()来进行返回主菜单的功能** ![图片说明](https://img-ask.csdn.net/upload/201912/12/1576131963_428559.png) ``` #include<stdio.h> #include<stdlib.h> #include<string.h> struct course { int num; /*课程编号*/ char name[30]; /*课程名称*/ char kind[20]; /*课程性质*/ int time; /*课时*/ int mark; /*学分*/ int term; /*1为考试2为考察*/ int opterm; /*开课学期*/ }; typedef struct Node /*创建头结点*/ { struct course d; struct Node *next; }Node; /*课程插入*/ void insert() { FILE *fp1; int g=1,key=0,key1=0,f=0; int a=0,b=0; if((fp1=fopen("course.txt","r"))==NULL) { printf("can't open file\n"); exit(0); } Node *first=(Node *)malloc(sizeof(Node)); /*头指针初始化*/ first->next=0; for(;!feof(fp1);) { Node *s=(Node*)malloc(sizeof(Node)); fscanf(fp1,"%d%s%s%d%d%d%d",&s->d.num,s->d.name,s->d.kind,&s->d.time,&s->d.mark,&s->d.term,&s->d.opterm); s->next=first->next; first->next=s; } for(;g==1;) { printf("请输入需要插入的课程信息:\n课程编号,课程名称,课程性质,课时,学分,1为考试2为考察,开课学期\n"); Node *e=(Node*)malloc(sizeof(Node)); scanf("%d%s%s%d%d%d%d",&e->d.num,e->d.name,e->d.kind,&e->d.time,&e->d.mark,&e->d.term,&e->d.opterm); e->next=first->next; first->next=e; printf("是否继续输入?1为是,2为否\n"); key=0; while(key==0){ scanf("%d",&g); if(g==1||g==2) key=1; else {printf("\n输入错误,请重新输入!!!\n"); printf("是否继续输入?1为是,2为否\n");} } } fclose(fp1); printf("是否存盘??1为是2为否\n"); while(key1==0){ scanf("%d",&f); if(f==1||f==2) key1=1; else printf("\n输入错误,请重新输入!!!\n"); } if(f==1) { if((fp1=fopen("course.txt","w"))==NULL) { printf("can't open file\n"); exit(0); } Node *p=first->next; while(p!=0){ fprintf(fp1,"%5d%12s%9s%9d%9d%11d%11d\n",p->d.num,p->d.name,p->d.kind,p->d.time,p->d.mark,p->d.term,p->d.opterm); p=p->next; } } printf("录入完毕\n"); Node *k=first; while(first!=0){ first=first->next; free(k); k=first; } fclose(fp1); while(b==0){ printf("\n1-返回主菜单;2-退出系统\n"); scanf("%d",&a); if(a==1||a==2) b=1; else printf("\n输入错误,请重新输入!!!\n"); } if(a==1) return main(); else exit(0); } /*课程浏览ok的,从文本文件中输入数据浏览*/ void browser() { FILE *fp2; struct course c; int a=0,b=0; if((fp2=fopen("course.txt","r"))==NULL) { printf("\ncan't open course!\n"); exit(0); } printf("课程编号 课程名称 课程性质 总学时 学分 考试课1或考察课2 开课学期:\n"); while(!feof(fp2)) { fscanf(fp2,"%d%s%s%d%d%d%d",&c.num,c.name,c.kind,&c.time,&c.mark,&c.term,&c.opterm); printf("%5d%12s%9s%9d%9d%11d%11d\n",c.num,c.name,c.kind,c.time,c.mark,c.term,c.opterm); } fclose(fp2); printf("\n结果已全部显示!!!!\n"); while(b==0){ printf("\n1-返回主菜单;2-退出系统\n"); scanf("%d",&a); if(a==1||a==2) b=1; else printf("\n输入错误,请重新输入!!!\n"); } if(a==1) return main(); else exit(0); } /*课程查询ok的,从文本文件中输入数据判断查询*/ void search() { FILE *fp3; struct course c; int score; char kind[10]; int b=0,e=0,a=0,d=0; while(e==0){ printf("1.按课程编号查询,2.按课程名称查询.\n"); printf("请选择查询方式并输入选项数字:"); scanf("%d",&b); if(b==1||b==2) e=1; else printf("\n输入错误,请重新输入!!!\n"); } if(b==1) { printf("\n请输入您要查询的课程编号:\n"); scanf("%d",&score); if((fp3=fopen("course.txt","r"))==NULL) { printf("\nCannot open course!\n"); exit(0); } printf("课程编号 课程名称 课程性质 总学时 学分 考试课1或考察课2 开课学期:\n"); for(;!feof(fp3);) { fscanf(fp3,"%d%s%s%d%d%d%d\n",&c.num,c.name,c.kind,&c.time,&c.mark,&c.term,&c.opterm); if(c.mark==score) printf("%5d%12s%9s%9d%9d%11d%11d\n",c.num,c.name,c.kind,c.time,c.mark,c.term,c.opterm); } } else {printf("\n请输入您要查询的课程名称:\n"); scanf("%s",kind); if((fp3=fopen("course.txt","r"))==NULL) { printf("\nCannot open course!\n"); exit(0); } printf("课程编号 课程名称 课程性质 总学时 学分 考试课1或考察课2 开课学期:\n"); for(;!feof(fp3);) { fscanf(fp3,"%d%s%s%d%d%d%d\n",&c.num,c.name,c.kind,&c.time,&c.mark,&c.term,&c.opterm); if(strcmp(c.kind,kind)==0) printf("%5d%12s%9s%9d%9d%11d%11d\n",c.num,c.name,c.kind,c.time,c.mark,c.term,c.opterm); } } fclose(fp3); printf("\n结果已全部显示!!!!\n"); while(d==0){ printf("\n1-返回主菜单;2-退出系统\n"); scanf("%d",&a); if(a==1||a==2) d=1; else printf("\n输入错误,请重新输入!!!\n"); } if(a==1) return main(); else exit(0); } /*课程修改*/ void revise()/*修改函数的名字*/ { int a=0,b=0; int h,f; int key1=0; FILE *fp4; if((fp4=fopen("course.txt","r"))==NULL) { printf("\nCannot open course!\n"); exit(0); } Node *first=(Node *)malloc(sizeof(Node)); /*头指针初始化*/ first->next=0; /*工作指针*/ for(;!feof(fp4);) { Node *s=(Node*)malloc(sizeof(Node)); fscanf(fp4,"%d%s%s%d%d%d%d",&s->d.num,s->d.name,s->d.kind,&s->d.time,&s->d.mark,&s->d.term,&s->d.opterm); s->next=first->next; first->next=s; } printf("请输入需要修改的课程编号\n"); scanf("%d",&h); Node *p=first->next; while(p!=0){ if(h==p->d.num) { printf("课程编号 课程名称 课程性质 总学时 学分 考试课1或考察课2 开课学期:\n"); printf("%5d%12s%9s%9d%9d%11d%11d\n",p->d.num,p->d.name,p->d.kind,p->d.time,p->d.mark,p->d.term,p->d.opterm); printf("请输入替换的正确的课程信息\n"); scanf("%d%s%s%d%d%d%d",&p->d.num,p->d.name,p->d.kind,&p->d.time,&p->d.mark,&p->d.term,&p->d.opterm); } else ; p=p->next; } printf("是否存盘??1为是2为否\n"); while(key1==0){ scanf("%d",&f); if(f==1||f==2) key1=1; else printf("\n输入错误,请重新输入!!!\n"); } if(f==1) { fclose(fp4); if((fp4=fopen("course.txt","w"))==NULL) { printf("can't open file\n"); exit(0); } Node *p1=first->next; while(p1!=0){ fprintf(fp4,"%5d%12s%9s%9d%9d%11d%11d\n",p1->d.num,p1->d.name,p1->d.kind,p1->d.time,p1->d.mark,p1->d.term,p1->d.opterm); p1=p1->next; } } printf("修改完毕\n"); Node *k=first; while(first!=0){ first=first->next; free(k); k=first; } fclose(fp4); while(b==0){ printf("\n1-返回主菜单;2-退出系统\n"); scanf("%d",&a); if(a==1||a==2) b=1; else printf("\n输入错误,请重新输入!!!\n"); } if(a==1) return main(); else exit(0); } /*课程删除*/ void delet() { int a=0,b=0; int h; FILE *fp; printf("请输入需要删除的课程编号\n"); scanf("%d",&h); if((fp=fopen("course.txt","r"))==NULL) { printf("\nCannot open course!\n"); exit(0); } Node *first=(Node *)malloc(sizeof(Node)); /*头指针初始化*/ first->next=0; /*工作指针指向头结点*/ for(;!feof(fp);) { Node *s=(Node*)malloc(sizeof(Node)); fscanf(fp,"%d%s%s%d%d%d%d",&s->d.num,s->d.name,s->d.kind,&s->d.time,&s->d.mark,&s->d.term,&s->d.opterm); s->next=first->next; first->next=s; } Node *p1=first;Node *p2=first;Node *p3=first; int count=0,dele=0,obey=0; printf("请输入需要删除的课程编号\n"); scanf("%d",&dele); for(;p1->next==0;) { if(p1->d.num==dele) { count++; printf("课程编号 课程名称 课程性质 总学时 学分 考试课1或考察课2 开课学期:\n"); printf("%5d%12s%9s%9d%9d%11d%11d\n",p1->d.num,p1->d.name,p1->d.kind,p1->d.time,p1->d.mark,p1->d.term,p1->d.opterm); printf("请确认是否删除???1-是,2-否\n"); scanf("%d",&obey); if(obey==1) { p2->next=p1->next; free(p1); printf("删除成功!!!!\n"); } else; } else; p2=p1; p1=p1->next; } while(p1!=0){ fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d\n",p3->d.num,p3->d.name,p3->d.kind,p3->d.time,p3->d.mark,p3->d.term,p3->d.opterm); p3=p3->next; } while(b==0){ printf("\n1-返回主菜单;2-退出系统\n"); scanf("%d",&a); if(a==1||a==2) b=1; else printf("\n输入错误,请重新输入!!!\n"); } if(a==1) return main(); else exit(0); } /*统计选课情况*/ void statistics() { int a; FILE *fp; if((fp=fopen("course.txt","r"))==NULL) { printf("\nCannot open course!\n"); exit(0); } Node *first=(Node *)malloc(sizeof(Node)); /*头指针初始化*/ first->next=0; for(;!feof(fp);) { Node *s=(Node*)malloc(sizeof(Node)); fscanf(fp,"%d%s%s%d%d%d%d",&s->d.num,s->d.name,s->d.kind,&s->d.time,&s->d.mark,&s->d.term,&s->d.opterm); s->next=first->next; first->next=s; } Node *e=first->next; int count1,count2,count3,count4; for(;e==0;) { if(e->d.opterm==1) count1++; else if(e->d.opterm==2) count2++; else if(e->d.opterm==3) count3++; else if(e->d.opterm==4) count4++; else printf("课程编号 课程名称 课程性质 总学时 学分 考试课1或考察课2 开课学期:\n"); printf("%5d%12s%9s%9d%9d%11d%11d\n",e->d.num,e->d.name,e->d.kind,e->d.time,e->d.mark,e->d.term,e->d.opterm); e=e->next; } printf("开课学期为1的有%d门,开课学期为2的有%d门,开课学期为3的有%d门,开课学期为4的有%d门\n",count1,count2,count3,count4); Node *k=first; while(first!=0){ first=first->next; free(k); k=first; } fclose(fp); printf("\n1-返回主菜单;2-退出选课系统\n"); scanf("%d",&a); if(a==1) return main(); else exit(0); } /*主菜单*/ void main() { int n,w; printf("*********************************************************************************\n"); printf(" 学生选课系统菜单\n"); printf("*********************************************************************************\n"); printf(" 1-录入\n"); printf(" 2-浏览\n"); printf(" 3-查询\n"); printf(" 4-修改\n"); printf(" 5-删除\n"); printf(" 6-统计\n"); printf(" 0-退出\n"); printf("*********************************************************************************\n"); printf(" 请输入选项前的数字\n"); scanf("%d",&n); do { if(n>5||n<0) { printf("\n输入错误\n"); scanf("%d",&n); } else w=1; }while(w==0); switch(n) { case 1:insert();break; case 2:browser();break; case 3:search();break; case 4:revise();break; case 5:statistics();break; case 6:delet();break; case 0:exit(0); } } ```

c# 后面的textbox 根据前面一个textbox 值的变化 而变化

就是当叶长、叶宽输入值后,叶片面积会自动显示出来结果,但是还要叶片大小根据叶长、叶宽、叶片面积也同样自动显示出来结果的,那个事件是什么啊?

js中window.prompt的问题

现在是这个地方需要弹框![第一个文本框是选择的,第二个是把弹框里输入的值放进去,点击拆分单体弹框](https://img-ask.csdn.net/upload/201605/12/1463022855_249194.png) ![图片说明](https://img-ask.csdn.net/upload/201605/12/1463022908_816520.png) 弹框没问题,保存到第二个文本框也没问题,但是弹框提交之后页面会刷新,然后这两个文半框里的值就没了。怎么防止值没有?或者能禁止刷新?

servlet里面进行if语句的判断,由一个jsp页面显示不同结果

将注册信息提交到treatUser.java里面后要进行处理,其中包括姓名或密码为空,密码和确认密码不一致,注册成功。然后要在treatResult.jsp里面显示处理结果。要怎么做? 这是treatUser.java部分代码: response.setContentType("text/html;charset=GBK"); ServletContext application = getServletContext(); String name=request.getParameter("name"); String passw=request.getParameter("passw"); String repassw=request.getParameter("repassw"); String sex=request.getParameter("sex"); String hobby=request.getParameter("hobby"); String intro=request.getParameter("introduction"); if((name!=null&&passw!=null)&&(passw.equals(repassw))){ application.setAttribute("userName",name); application.setAttribute("userPassword",passw); application.setAttribute("userPassword1",repassw); application.setAttribute("sex",sex); application.setAttribute("hobby",hobby); application.setAttribute("introduction",intro); } String url = "/zhuceResult.jsp"; ServletContext sc = getServletContext();//sc即application RequestDispatcher rd = sc.getRequestDispatcher(url); rd.forward(request, response); }

vc++6.0中代码问题:显示完整的现存学员信息后,还要显示主菜单

#include <stdio.h> #include <string.h> int menu(); void init(); void listStu(); int insertNewStu(int row); int getStuRowByNo(char no[]); int deleteByNo(); void analyse(char c[]); /***************************************************** students保存学生信息,最多50名 一行代表一个学员信息,每列通过-$-字符串将各项信息分开 stu_num表示已存在的学生数目,假设初始存在2名学员 ******************************************************/ char students[5][200]; int stu_num=2; void main() { int opt; int result=1; init(); while(result){ opt=menu(); if(result==0) { break; } switch(opt) { case 1: //printf("\t执行输入学员信息\n"); result=insertNewStu(stu_num); stu_num=stu_num+1; break; case 2: //printf("\t执行删除学员信息\n"); result=deleteByNo(); stu_num=stu_num-1; break; case 3: printf("\t执行查找学员信息\n"); break; case 4: printf("\t执行修改学员信息\n"); break; case 5: //printf("\t执行输出学员信息数据\n"); listStu(); break; case 0: printf("\t谢谢使用!\n"); result=0; break; default: printf("\t您的输入有误。"); } } } /*打印系统菜单*/ int menu() { int option; printf("\n\t--------------------------------------\n"); printf("\t\t学员信息管理系统\n"); printf("\t--------------------------------------\n"); printf("\t1.输入学员资料\n"); printf("\t2.删除学员资料\n"); printf("\t3.查找学员资料\n"); printf("\t4.修改学员资料\n"); printf("\t5.输出学员信息数据\n"); printf("\t0.退出\n\n"); printf("\t请选择您要进行的操作:"); scanf("%d",&option); return option; } /*初始化2名学员信息*/ void init() { strcpy(students[0],"2010-$-张学友-$-男-$-香港-$-13601234567-$-80-$-60-$-"); strcpy(students[1],"2011-$-王菲-$-女-$-北京-$-13678904567-$-60-$-100-$-"); } /*输出学员所有信息*/ void listStu() { //printf("%s\n",students[0]); //printf("%s\n",students[1]); //printf("%s\n",students[2]); int i; char temp[200]=""; printf("\n\t******现存的学员信息******\n"); printf("学号\t"); printf("姓名\t"); printf("性别\t"); printf("地址\t"); printf("手机\t\t"); printf("Java\t"); printf(".Net\n"); //针对每一行学生信息进行处理 for(i=0;i<stu_num;i++) { strcpy(temp,students[i]); while(strlen(temp)!=0) { analyse(temp); } printf("\n"); } } /*输入学员信息*/ int insertNewStu(int row) { char stu_temp[1][200];//暂存该学员的信息 char n_temp[20]; char a_temp[30]; char c_temp[20]; int i_temp; int flag=0;//用来标识前一项信息是否输入完成 int i; //输入学号 while(flag==0) { printf("\n\t请输入学号:"); scanf("%d",&i_temp); if(i_temp<1000 || i_temp>9999) { printf("\t学号非法,必须4位数字!"); continue; }else { sprintf(c_temp,"%d",i_temp); strcpy(stu_temp[0],c_temp); strcat(stu_temp[0],"-$-"); flag=1; } } //输入姓名 while(flag==1) { printf("\n\t请输入姓名:"); scanf("%s",&n_temp); if(strlen(n_temp)>20) { printf("\t姓名长度过大!"); continue; }else { strcat(stu_temp[0],n_temp); strcat(stu_temp[0],"-$-"); flag=2; } } //输入性别 while(flag==2) { printf("\n\t请输入性别(1男 2女):"); scanf("%d",&i_temp); if(i_temp!=1 && i_temp!=2) { printf("\t性别选择错误!"); continue; }else { if(i_temp==1) { strcat(stu_temp[0],"男"); }else { strcat(stu_temp[0],"女"); } strcat(stu_temp[0],"-$-"); flag=3; } } //输入地址 while(flag==3) { printf("\n\t请输入地址:"); scanf("%s",&a_temp); if(strlen(a_temp)>30) { printf("\t地址长度过大!"); continue; }else { strcat(stu_temp[0],a_temp); strcat(stu_temp[0],"-$-"); flag=4; } } //输入手机号码 while(flag==4) { printf("\n\t请输入手机号码:"); scanf("%s",&c_temp); //判断是否存在非数字等非法字符 for(i=0;i<strlen(c_temp);i++) { if(c_temp[i]<'0' || c_temp[i]>'9') { printf("\t手机号码中包括非数字字符。"); break; } } if(strlen(c_temp)!=11) { printf("\n\t手机号码位数不正确。"); continue; }else { strcat(stu_temp[0],c_temp); strcat(stu_temp[0],"-$-"); flag=5; } } //输入Java的成绩 while(flag==5) { printf("\n\t请输入Java的成绩:"); scanf("%d",&i_temp); if(i_temp<0 || i_temp>100) { printf("\t成绩必须在0-100之间。"); continue; }else { sprintf(c_temp,"%d",i_temp); strcat(stu_temp[0],c_temp); strcat(stu_temp[0],"-$-"); flag=6; } } //输入.Net的成绩 while(flag==6) { printf("\n\t请输入.Net的成绩:"); scanf("%d",&i_temp); if(i_temp<0 || i_temp>100) { printf("\t成绩必须在0-100之间。"); continue; }else { sprintf(c_temp,"%d",i_temp); strcat(stu_temp[0],c_temp); strcat(stu_temp[0],"-$-"); flag=7; } } //确认信息 printf("\n\t*********确认学员信息如下*********\n"); printf("%s",stu_temp); printf("\n\t确认学员信息么(y|n)?"); scanf("%s",&c_temp); if(strcmp(c_temp,"y")==0 || strcmp(c_temp,"Y")==0) { strcpy(students[row],stu_temp[0]); }else { insertNewStu(row); } return flag; } /*指定学员的存储位置,即所在的行位置*/ int getStuRowByNo(char no[]) { int i,j; int pos=-1; char temp[5]=""; for(i=0;i<stu_num;i++) { for(j=0;j<strcspn(students[i],"-$-");j++) { temp[j]=students[i][j]; } if(strcmp(no,temp)==0) { pos=i; break; } } return pos; } /*删除指定学号的学员信息*/ int deleteByNo() { char no[5]; int row; int i,j; printf("\n\t请输入要删除的学员学号:"); scanf("%s",&no); row=getStuRowByNo(no); if(row==-1) { printf("\n\t**********没有该学号的学员信息,请核实**********\n"); return -1; }else { for(i=row;i<50;i++) { for(j=0;j<200;j++) { students[i][j]=students[i+1][j]; } } printf("\n\t********删除成功!********\n"); return 1; } } /*解析学员的信息行*/ void analyse(char c[]) { int i,j; int token; char p_temp[100]=""; token=strcspn(c,"-$-"); //该行第一个分隔符之前的信息项进行解析 for(i=0;i<token;i++) { p_temp[i]=c[i]; } printf("%s\t",p_temp); //去掉已经解析出的信息项,即将后面的信息项依次前移 for(j=0;j<strlen(c)-token;j++) { c[j]=c[token+3+j]; } } 运行后显示主菜单,输入5,显示现存的学员信息,但是成绩显示不出来,成绩如果能显示,还需要显示主菜单。求解决。

ssh 实体对象转jason 前台无法显示

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ include file="/public/head.jspf" %> <style type="text/css"> body { margin: 1px; } .searchbox { margin: -3; } </style> <script type="text/javascript"> $(function(){ $('#dg').datagrid({ //url地址改为请求categoryAction url:'forder_queryJoinUser.action', loadMsg:'Loading......', queryParams:{username:''}, fitColumns:true,//水平自动展开,如果设置此属性,则不会有水平滚动条,演示冻结列时,该参数不要设置 striped:true, //当数据多的时候不换行 nowrap:true, singleSelect:false, //如果为真,只允许单行显示,全显功能失效 //设置分页 pagination:true, //设置每页显示的记录数 pageSize:10, //设置可选的每页记录数,供用户选择,默认是10,20,30,40... pageList:[5,10,15,20], idField:'id',//指定id为标识字段,在删除,更新的时候有用,如果配置此字段,在翻页时,换页不会影响选中的项 toolbar: [{ iconCls: 'icon-edit', text:'更新订单', handler: function(){ //判断是否有选中行记录,使用getSelections获取选中的所有行 var rows = $("#dg").datagrid("getSelections"); if(rows.length == 0) { //弹出提示信息 $.messager.show({ //语法类似于java中的静态方法,直接对象调用 title:'错误提示', msg:'至少要选择一条记录', timeout:2000, showType:'slide', }); }else if(rows.length != 1) { //弹出提示信息 $.messager.show({ //语法类似于java中的静态方法,直接对象调用 title:'错误提示', msg:'每次只能更新一条记录', timeout:2000, showType:'slide', }); } else{ //弹出更新的页面 parent.$("#win").window({ title:"更新订单", width:350, height:250, content:'<iframe src="send_order_update.action" frameborder="0" width="100%" height="100%"/>' }); } } },'-',{ iconCls: 'icon-remove', text:'删除订单', handler: function(){ //判断是否有选中行记录,使用getSelections获取选中的所有行 var rows = $("#dg").datagrid("getSelections"); //返回被选中的行,如果没有任何行被选中,则返回空数组 if(rows.length == 0) { //弹出提示信息 $.messager.show({ title:'错误提示', msg:'至少要选择一条记录', timeout:2000, showType:'slide', }); } else { //提示是否确认删除,如果确认则执行删除的逻辑 $.messager.confirm('删除的确认对话框', '您确定要删除此项吗?', function(r){ if (r){ //1. 从获取的记录中获取相应的的id,拼接id的值,然后发送后台1,2,3,4 var ids = ""; for(var i = 0; i < rows.length; i ++) { ids += rows[i].id + ","; } ids = ids.substr(0, ids.lastIndexOf(",")); //2. 发送ajax请求 $.post("forder_deleteByIds.action",{ids:ids},function(result){ if(result == "true") { //将刚刚选中的记录删除,要不然会影响后面更新的操作 $("#dg").datagrid("uncheckAll"); //刷新当前页,查询的时候我们用的是load,刷新第一页,reload是刷新当前页 $("#dg").datagrid("reload");//不带参数默认为上面的queryParams } else { $.messager.show({ title:'删除异常', msg:'删除失败,请检查操作', timeout:2000, showType:'slide', }); } },"text"); } }); } } },'-',{ //查询按钮不是LinkButton,它有语法,但是也支持解析HTML标签 text:"<input id='ss' name='serach' />" }], rowStyler: function(index,row){ console.info("index" + index + "," + row) if(index % 2 == 0) { return 'background-color:#fff;'; } else { return 'background-color:#c4e1e1;'; } }, //同列属性,但是这些列将会冻结在左侧,大小不会改变,当宽度大于250时,会显示滚动条,但是冻结的列不在滚动条内 frozenColumns:[[ {field:'checkbox',checkbox:true}, {field:'id',title:'编号',width:60} ]], columns:[[ {field:'name',title:'收货人姓名',width:80}, {field:'phone',title:'收货人电话',width:100}, {field:'remark',title:'买家留言',width:100}, {field:'date',title:'创建日期',width:100}, {field:'total',title:'订单总价',width:100}, {field:'address',title:'收货地址',width:150}, {field:'user.id',title:'买家id',width:60}, {field:'user.login',title:'买家登录名',width:80}, {field:'status.status',title:'订单状态',width:100} ]] }); //把普通的文本框转化为查询搜索文本框 $('#ss').searchbox({ //触发查询事件 searcher:function(value,username){ //value表示输入的值 //获取当前查询的关键字,通过DataGrid加载相应的信息,使用load加载和显示第一页的所有行。 //如果指定了参数,它将取代'queryParams'属性。通常可以通过传递一些参数执行一次查询,通过调用这个方法会向上面url指定的action去发送请求,从服务器加载新数据。 $('#dg').datagrid('load',{ username: value }); }, prompt:'请输入搜索关键字' }); }); </script> </head> <body> <table id="dg"></table> </body> </html> `jsp代码 下面action: public String queryJoinUser() { // 用来存储分页的数据 pageMap = new HashMap<String, Object>(); System.out.println(username); // 根据关键字和分页的参数查询相应的数据 List<Forder> forderList = forderService.queryJoinUser(username, page, rows); pageMap.put("\"rows\"", forderList); pageMap.put("\"total\"", forderService.getCount(username)); System.out.println(pageMap); return "jsonMap"; } struts.xml <action name="forder_*" class="forderAction" method="{1}"> <result name="jsonMap" type="json"> <param name="root">pageMap</param> <param name="excludeProperties"> rows\[\d+\]\.post, rows\[\d+\]\.user\.pass, rows\[\d+\]\.user\.sex, rows\[\d+\]\.user\.phone, rows\[\d+\]\.user\.email, rows\[\d+\]\.status\.id </param> </result> <result name="bank"> /user/bank.jsp </result> </action> 执行后pageMap的输出: {"total"=1, "rows"=[Forder [id=1, name=张小, phone=1851663595, remark=是否被, date=null, total=14.00, post=4325232, addressrk=, date=null, total=100.00, post=dcvdf, address=市场v吃饭的]]} `` 没有报任何错误就是不显示![图片说明](https://img-ask.csdn.net/upload/201706/07/1496767475_187876.png) ``` ``` ```

程序运行后txt文本出现乱

程序运行后文本文件出现乱码,四个warning是相同的问题, 看了很多帖子但都没有相关的详细回答 请问这种情况该如何解决 ![图片说明](https://img-ask.csdn.net/upload/201912/12/1576134842_865518.png) ![图片说明](https://img-ask.csdn.net/upload/201912/12/1576134945_774123.png) ![图片说明](https://img-ask.csdn.net/upload/201912/12/1576135365_278865.png) ``` #include<iostream> #include<string.h> #include<iomanip> #include<fstream> #include<stdio.h> #include <stdlib.h> using namespace std; int count=0; class CData //定义数据基类 { public: CData(){}; virtual int Compare(CData &)=0; virtual void Show()=0; virtual ~CData(){}; }; class CNode //定义结点基类 { private: CData *pData; //用于指向数据类的指针 CNode *pNext; //用于指向链表的后向指针 public: void InputData(CData *pdata){pData=pdata;} //输入数据 void ShowNode(){pData->Show();} //打印一个节点的数据 CData *GetData(){return pData;} friend class CList; //定义链表类为基类 }; class CList { CNode *pHead; //链表头结点指针 public: CList(){pHead=0;}; ~CList(){DeleteList();} void AddNode(CNode *pnode); //在首部添加结点 CNode *DeleteNode(CNode *); //删除一个指定的结点,返回该结点的指针 CNode *Search(CData &); //查找一个指定的数据,返回该数据所在的结点在链表的指针,未找到返回0 bool IsExist(CData &); void ShowList(); //打印整个链表 void DeleteList(); //删除整个链表 CNode *GetListHead(){return pHead;} //返回链表首结点 CNode *GetListNextNode(CNode *pnode); //返回链表指定结点的下一个结点 }; CNode *CList::GetListNextNode(CNode *pnode) //返回链表指定结点的下一个结点 { CNode *p1=pnode; return p1->pNext; }; void CList::AddNode(CNode *pnode) //在首部添加结点 { if (pHead==0) //如果是空链表,插入的结点是唯一的结点 { pHead=pnode; pnode->pNext=0; return; } else //否则,插入到链表首部 { pnode->pNext=pHead; pHead=pnode; } }; CNode *CList::DeleteNode(CNode *pnode) //删除一个指定的结点,返回该结点的指针 { CNode *p1,*p2; p1=pHead; //指向首结点 while(p1!=pnode&&p1->pNext!=0) //寻找要删除的结点 { p2=p1; p1=p1->pNext; //结点p2始终在p1的后面 } if (p1==pHead) //如果要删除的是首结点 { pHead=pHead->pNext; //将首结点后移 return pnode; } p2->pNext=p1->pNext; //p1指向被删除的结点,将p2结点与p1后面的结点连接起来 return pnode; } CNode *CList::Search(CData &data) //查找一个指定的数据,返回指针,若未找到返回0 { CNode *p1=pHead; while(p1) //从头结点开始查找 { if (p1->pData->Compare(data)==0) return p1; //找到后返回结点指针 p1=p1->pNext; } return 0; //搜索完找不到,返回空指针0 } void CList::ShowList() //打印整个链表 { CNode *p1=pHead; while(p1) { p1->pData->Show(); p1=p1->pNext; } } void CList::DeleteList() //删除整个链表结点 { CNode *p1,*p2; p1=pHead; while(p1) { delete p1->pData; p2=p1; p1=p1->pNext; delete p2; } } class Repository:public CData //库存为记录,为数据基类的公有派生类 { private : char szName[20]; //库存中数据:商品名、商品数量和入库价格 unsigned int szNumber; char szPrice[20]; char szN; CList ShList; public: Repository(); //构造函数 Repository(char *name,int number,char *price); void SetRecord(char *name, int number,char *price); //输入数据函数 int Compare(CData &); //比较函数,比较商品名 void Show(); void AddRecord(); void Display(); void LookUpRecord(); void DeleteRecord(); void ModifyRecord(); void SaveToFile(); void Operate(string &strChoice); void ReadFromFile(); void Output(); }; Repository::Repository() { strcpy(szName,"\0"); szNumber=0; strcpy(szPrice,"\0"); } Repository::Repository(char *name,int number,char *price) { strcpy(szName,name); szNumber=number; strcpy(szPrice,price); szN=name[0]; } void Repository::SetRecord(char *name, int number,char *price) //输入数据函数 { strcpy(szName,name); szNumber=number; strcpy(szPrice,price); szN=name[0]; } int Repository::Compare(CData &data) //比较商品名 { Repository &temp=(Repository &)data; return strcmp(szName,temp.szName); } void Repository::Show() //打印一个结点的数据 { cout<<setw(15)<<szName<<setw(15)<<szNumber<<setw(15)<<szPrice<<endl; } void Repository::AddRecord() //将记录添加到链表中 { CNode *pNode; Repository *pSh; char szName[20],szPrice[20]; unsigned int szNumber; cout<<"请输入新商品名(输入0退出,并进入系统菜单):"; cin>>szName; while(strcmp(szName,"0")) { cout<<"请输入新商品入库价格: "; cin>>szPrice; cout<<"请输入新商品数量: "; cin>>szNumber; pSh=new Repository; //生成新的数据累对象 pSh->SetRecord(szName,szNumber,szPrice); //数据类对象赋值 pNode=new CNode; //生成新的结点 pNode->InputData(pSh); //结点插入链表 ShList.AddNode(pNode); count++; cout<<"请输入新商品名(输入0退出,并进入系统菜单) "; cin>>szName; } cout<<endl<<endl; } void Repository::Display() //显示全部链表数据 { cout<<"当前操作共有"<<count<<"条新商品的添加纪录。\n\n"; cout<<"目前库存共有商品信息记录是:\n\n"; cout<<setiosflags(ios_base::left)<<setw(15)<<"商品名"<<setw(15)<<"商品数量"<<setw(15)<<"入库价格"<<endl<<endl; ShList.ShowList(); cout<<endl<<endl; system("pause"); system("cls"); } void Repository::LookUpRecord() // 按照商品名查找 { CNode *pLook; char szName[20]; cout<<"请输入您需要查找的商品名(输入0退出,并进入系统菜单):"; cin>>szName; while (strcmp(szName,"0")) { Repository sh(szName,0,"0"); //生成结点 pLook=ShList.Search(sh); //查找指定结点的数据 if (pLook) { cout<<"在库存商品信息记录中找到商品:"<<szName<<",内容是:"<<endl; cout<<setw(15)<<"商品名"<<setw(15)<<"商品数量"<<setw(15)<<"入库价格"<<endl; pLook->ShowNode(); } else cout<<"在库存商品信息记录中找不到商品:"<<szName<<"。"<<endl; cout<<"请输入您需要查找的商品名(输入0退出,并进入系统菜单):"; cin>>szName; } cout<<endl<<endl; } void Repository::DeleteRecord() //在链表中删除指定的结点的数据 { CNode *pLook; char szName[20]; cout<<"请输入您需要删除的商品名(输入0退出,并进入系统菜单):"; cin>>szName; while(strcmp(szName,"0")) { Repository sh(szName,0,"0"); pLook=ShList.Search(sh); if (pLook) //删除时应先查找出结点 { cout<<"在库存商品信息记录中找到商品:"<<szName<<",内容是:"<<endl; cout<<setw(15)<<"商品名"<<setw(15)<<"商品数量"<<setw(15)<<"入库价格"<<endl; pLook->ShowNode(); cout<<"请确定是否删除此商品信息记录(Y/N)【确定删除请输入Y或y,取消删除请输入N或n】:"; char ok; cin>>ok; if (ok=='Y'||ok=='y') { ShList.DeleteNode(pLook); cout<<szName<<"的信息记录删除成功!"<<endl; delete pLook; count--; } else if(ok=='N'||ok=='n') cout<<szName<<"的信息记录删除失败!"<<endl; } else cout<<"在库存商品信息记录中找不到商品:"<<szName<<"。"<<endl; cout<<"请输入您需要删除的商品名(输入0退出,并进入系统菜单):"; cin>>szName; } cout<<endl<<endl; } void Repository::ModifyRecord() //修改商品记录 { CNode *pLook; Repository *pSh; char szName[20],szPrice[20]; unsigned int szNumber; cout<<"请输入您需要修改的商品名(输入0退出,并进入系统菜单):"; cin>>szName; while(strcmp(szName,"0")) { Repository sh(szName,0,"0"); pLook=ShList.Search(sh); if (pLook) //修改时应先查找出结点 { cout<<"在库存商品信息记录中找到商品:"<<szName<<",内容是:"<<endl; cout<<setw(15)<<"商品名"<<setw(15)<<"商品数量"<<setw(15)<<"入库价格"<<endl; pLook->ShowNode(); cout<<"-----下面开始修改-----"<<endl<<"请输入修改后的商品名: "; cin>>szName; cout<<"请输入修改后的商品数量:"; cin>>szNumber; cout<<"请输入修改后的商品入库价格: "; cin>>szPrice; cout<<"请确定是否修改此记录(Yes (Y) or No(N)):"; char ok; cin>>ok; if (ok=='Y'||ok=='y') { pSh=new Repository; pSh->SetRecord(szName,szNumber,szPrice); pLook->InputData(pSh); cout<<szName<<"的信息记录修改成功!"<<endl; } else if(ok=='N'||ok=='n') cout<<szName<<"的信息记录修改失败!"<<endl; } else cout<<" 在库存商品信息记录中找不到"<<szName<<","<<endl; cout<<" 请输入您需要修改的商品名(输入0退出,并进入系统菜单):"; cin>>szName; } } void Repository::Output() { CNode *pLook; Repository *pSh; char szName[20]; unsigned int szNumber; cout<<"请输入您需要出库的商品名(输入0退出,并进入系统菜单):"; cin>>szName; while(strcmp(szName,"0")) { Repository sh(szName,0,"0"); pLook=ShList.Search(sh); if (pLook) //修改时应先查找出结点 { pSh=(Repository *)pLook->GetData(); cout<<"在库存商品信息记录中找到商品:"<<szName<<",内容是:"<<endl; cout<<setw(15)<<"商品名"<<setw(15)<<"商品数量"<<setw(15)<<"入库价格"<<endl; pLook->ShowNode(); if (0==pSh->szNumber) { cout<<"该商品缺货,请及时补充!"<<endl; } else { cout<<"请输入您要取出的商品数量:"; cin>>szNumber; cout<<"请确定是否取出该商品( Yes (Y) or No(N) ):"; char ok; cin>>ok; if(ok=='Y'||ok=='y') { if(pSh->szNumber<=szNumber) { cout<<szName<<"您要求的商品数量大于仓库中的数量,故全部输出"<<pSh->szNumber<<" 个商品"<<endl; pSh->szNumber=0; } else { pSh->szNumber-=szNumber; cout<<szName<<"您已取出 "<<szNumber<<" 个商品"<<endl; } cout<<szName<<"成功取出!"<<endl; } else if(ok=='N'||ok=='n') cout<<szName<<"您取消了该操作"<<endl; } } else cout<<" 在库存商品信息记录中找不到"<<szName<<","<<endl; cout<<" 请输入您需要出库的商品名(输入0退出,并进入系统菜单):"; cin>>szName; } } void Repository::SaveToFile() //将链表中的数据保存在文件中 { ofstream outfile("repository.txt",ios::binary); if(! outfile) { cout<<"数据文件打开错误,没有将数据存入文件!\n"; return; } CNode *pnode; Repository *pSh; string strName,strNumber; pnode=ShList.GetListHead(); //取出链表首结点指针 while(pnode) { pSh=(Repository *)pnode->GetData(); //返回结点指向的数据域指针 outfile.write((char *)pSh,sizeof(Repository)); //将数据域写入文件 pnode=ShList.GetListNextNode(pnode); // 取下一结点的指针 } outfile.close(); } void Repository::ReadFromFile() //在程序开始先查找有无数据文件,找到后读取文件数据 { ifstream infile("repository.txt",ios::binary); if(! infile) { cout<<"没有数据文件,请您先添加!\n\n"; return; } CNode *pNode; Repository *pSh; while(! infile.eof()) { pSh=new Repository; //定义数据域对象 infile.read((char *)pSh,sizeof(Repository)); pNode=new CNode; pNode->InputData(pSh); //数据域对象内容生成结点 ShList.AddNode(pNode); //将结点加入链表 } ShList.DeleteNode(pNode); //由于文件多读一次,所以将首结点删除 infile.close(); } void Repository::Operate(string &strChoice) //根据主菜单选项进行操作 { if (strChoice=="1") AddRecord(); else if (strChoice=="2") Display(); else if (strChoice=="3") LookUpRecord(); else if (strChoice=="4") DeleteRecord(); else if(strChoice=="5") ModifyRecord(); else if(strChoice=="6") Output(); else if (strChoice=="0") SaveToFile(); else cout<<"对不起,您的输入有误,请重新输入您的选择: "; } int main() { Repository repository; cout<<"*******************************************************************\n\n"; cout<<" 欢迎进入库存管理系统 \n\n"; cout<<"*******************************************************************\n\n"; repository.ReadFromFile(); //从文件中输入数据 string strChoice; //接受主菜单选项 do { cout<<"【欢迎进入系统菜单】:\n\n\n"; cout<<" <1>.添加新商品信息记录\n\n"; cout<<" <2>.显示库存中商品信息记录内容\n\n"; cout<<" <3>.根据商品名查询库存中商品信息记录\n\n"; cout<<" <4>.根据商品名删除库存中商品信息记录\n\n"; cout<<" <5>.根据商品名修改库存中商品信息记录\n\n"; cout<<" <6>.商品出库\n\n"; cout<<" <0>.退出系统\n\n\n"; cout<<"【请输入您的选择】:"; cin>>strChoice; system("cls"); repository.Operate(strChoice); }while(strChoice!="0"); cout<<"***********************************************************************\n\n"; cout<<" ------------******欢迎再次使用库存管理系统******---------- \n\n"; cout<<"***********************************************************************\n\n"; system("pause"); } ```

c 用链表对文件读写错误

#include<stdio.h> #include<string.h> #include<stdlib.h> struct data { int year; int month; int day; }; struct cost{ int yuan; int jiao; int fen; }; struct treatment{ char pname[20]; char pid[19] ; int age; char dname[20]; int did; int office; float money; struct data day0; struct treatment *next; }; //病人名字 int addpname( char y0[]){ int k0=1; int i0; while(k0){ k0=0; printf("请输入病人名字(小写字母)\n"); scanf("%s",y0); for(i0=0;i0<strlen(y0);i0++){ if(y0[i0]<97||y0[i0]>122){ k0=1; printf("输入有误,请重新输入\n"); break; //注意break是否跳出for 对的 } } } return 0; } //病人id void addpid( char y1[20]){ int k1=1; int i1; while(k1){ k1=0; printf("请输入病人身份证号\n"); scanf("%s",y1); for(i1=0;i1<18;i1++){ if(y1[i1]<48||y1[i1]>57&&y1[18]!=120) { k1=1; printf("输入有误,请重新输入\n"); break; } } } } //医生名字 int adddname( char y2[20] ){ int k2=1; int i2; while(k2){ k2=0; printf("请输入医生名字(小写字母)\n"); scanf("%s",y2); for(i2=0;i2<strlen(y2);i2++){ if(y2[i2]<97||y2[i2]>122){ k2=1; printf("输入有误,请重新输入\n"); break; } } } return 0 ; } //医生工作号 int adddid(){ int i3; int k3=1; while(k3){ k3=0; int y3; fflush(stdin); printf("请输入医生工作号\n"); y3=scanf("%d",&i3); if(y3==EOF||0>i3||200<i3){ k3=1; printf("输入有误,请重新输入\n"); // break; //Break使用有误导致缓冲区里有错误数据且给了下一个输入 } } return i3; } //判断日期 int adddata( int ydata[3]){ //存储日期 int i4; //i4表示年 int k4=1; while(k4){ k4=0; printf("请输入年份\n"); scanf("%d",&i4); if(i4>2020||i4<2017){ k4=1; printf("输入有误!请重新输入\n"); } } int k5=1; int i5; //判断月 while(k5){ k5=0; printf("请输入月份(1-12)\n"); scanf("%d",&i5); if(i5>12||i5<1){ printf("输入有误!请重新输入\n"); k5=1; } } int y5; //月份天数上限 switch(i5){ case 1: case 3: case 5:case 7: case 8 : case 10: case 12 :y5=31;break; case 4: case 6: case 9:case 11:y5=30;break; case 2:if(i4%4==0&&i4%100!=0||i4%400==0) y5=29; else y5=28; break; } int k6=1; //判断日期 int i6; while(k6){ k6=0; printf("请输入日期(1-%d)\n",y5);//上限 scanf("%d",&i6); if(i6<1||i6>y5){ k6=1; printf("输入有误!请重新输入\n"); } } ydata[0]=i4; ydata[1]=i5; ydata[2]=i6; return 0; } /*科室处理*/ int addoffice(){ int y7; int k7=1; while(k7){ k7=0; printf("请选择科室\n"); printf("1-神精科 2-精神科\n"); printf("3-内 科 4-外 科\n"); printf("5-小儿科\n"); fflush(stdin); if(scanf("%d",&y7)==EOF||y7>5||y7<1){ printf("输入有误!请重新输入\n"); k7=1; } } return k7; } //钱的处 int addqian(){ //元 int k8=1; int i8; while(k8){ k8=0; fflush(stdin); if( scanf("%d",&i8)==EOF||i8<0||i8>10000000){ k8=1; printf("输入有误,请重新输入\n"); } } return i8; } int addqian2(){ //分 不能大于10 int k10=1; int i10; while(k10){ k10=0; fflush(stdin); if( scanf("%d",&i10)==EOF||i10<0||i10>10){ k10=1; printf("输入有误,请重新输入\n"); } } return i10; } //病人的年龄 int addage(){ int k9=1; int i9; int y9; while(k9){ k9=0; printf("请输入整数\n"); fflush(stdin); //清除缓冲区内容 y9=scanf("%d",&i9); //getchar();只能清除一个字符 if(y9==EOF){ //判断scanf录入的是不是字母 printf("输入有误!请重新输入\n"); k9=1; } if(i9<0||i9>300){ printf("输入有误!请重新输入\n"); k9=1; } } return i9; } //增加函数 int realadd(struct treatment *bus0){ struct cost s; addpname(bus0->pname); addpid(bus0->pid); printf("请输入病人的年龄") ; bus0->age=addage(); adddname(bus0->dname); bus0->did=adddid(); bus0->office=addoffice(); int yy[3]; //年月日 adddata(yy); bus0->day0.year=yy[0]; bus0->day0.month= yy[1]; bus0->day0.day=yy[2]; printf("请输入病人消费情况\n"); printf("请输入元\n"); s.yuan=addqian(); printf("请输入角\n"); s.jiao=addqian2(); printf("请输入分\n"); s.fen=addqian2(); bus0->money=(float)s.yuan+0.1*(float(s.jiao ))+0.01*(float(s.fen )); return 0; } //删除函数 int delete0(struct treatment * top){ ///用delete的话和编译器里的东西重名 char key[6]; addpid(key); //输入关键字 struct treatment *Sqian,*Shou; Shou=top; while(Shou!=NULL){ if(strcmp(key,Shou->pid)==0){ if(Shou==top){ //头 Sqian=Shou; Shou=Shou->next; free(Sqian); } else if(Shou->next==NULL){ //尾 Sqian=Shou; Shou=top; free(Sqian); } else { //中间 Shou=Shou->next; free(Sqian->next); Sqian->next=Shou; } }//第一个if else { //向后走 Sqian=Shou; Shou=Shou->next; } return 0; } } // 打印输出函数 void output0(struct treatment *bus1){ do{ printf("病人的名字%s\n",bus1->pname); printf("病人的身份证%s\n",bus1->pid); printf("病人的年龄%d\n",bus1->age); printf("医生的名字%s\n",bus1->dname); printf("医生的工作号%d\n",bus1->did); printf("科室d%\n",bus1->office); printf("开销总计%f\n",bus1->money); printf("日期:%d 年%d 月%d 日\n",bus1->day0.year,bus1->day0.month,bus1->day0.day ); bus1=bus1->next; }while(bus1!=NULL) ; } //加载文件到链表 -------------------------------------------------------------------------------------------------------------- int wenjian(struct treatment *top0 ,struct treatment *rear){ FILE *fp0; struct treatment *sp11; fp0=fopen("D://source.txt","a+"); if(fp0==NULL){ //判断文件打开是否成功; printf("打开文件错误"); return 0; } else{ if(!feof(fp0)) { //头上加载 fread(top0,sizeof(struct treatment),1,fp0); top0->next=NULL; sp11=top0; while(!feof(fp0)){ //后面加 sp11->next=(struct treatment *)malloc(sizeof(struct treatment )); fread(sp11->next,sizeof(treatment),1,fp0); sp11=sp11->next; sp11->next=NULL; } rear=sp11; } else printf( "文件为空"); fclose(fp0); printf("加载文件成功"); return 1; } } //将链表写入文件-------------------------------------------------------------------------- int addw(struct treatment *head){ //加入尾 FILE *fp1; struct treatment *sp22,*sbing; sp22=head; fp1=fopen("D://source.txt","a"); printf("DFJKL;") ; if(fp1==NULL){ //判断打开是否成功 printf("打开文件有误"); return 0; } else if(strlen(head->pname)!=0){ //加入一个判断来确定链表是否为空 do{ printf("kaishi"); //写入 fwrite(sp22,sizeof( struct treatment),1,fp1); sbing=sp22; sp22=sp22->next; }while(sbing!=NULL);//注意条件是否错误 } else printf("sssssssssssssssssssssssssssssssssssssssss"); fclose(fp1); return 1; } //增加信息到链表-------------------------------------------------------------------------------------- int addolian(struct treatment *head3,struct treatment *rear3){ printf("开始加载信息"); printf( " %d dsfsdgsag ",strlen(head3->pname)) ; if(strlen(head3->pname)==0){ //为什么等于3 realadd(head3); head3->next=NULL; } else{ rear3->next=(struct treatment *)malloc(sizeof(struct treatment)); rear3=rear3->next; realadd(rear3); rear3->next=NULL; } } int main(){ struct treatment *head0,*rear0,*sbing0,*bianli0; head0=(struct treatment *)malloc(sizeof(treatment)); rear0=head0; wenjian(head0,rear0); int i; while(1){ printf("选择相应功能前的数字\n") ; printf("1-增加病人信息 2-输出所有病人信息\n"); printf("3-添加到文件 4-删除某病人的信息 \n"); i=addage(); switch(i){ case 1:addolian(head0,rear0);break; case 2:output0(head0);break; case 3:addw(head0);break; case 4:delete(head0);break; } } return 0; //后面对文件操作的几个函数有问题 ------------------------ // }

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

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

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

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

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

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

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

Linux面试题(2020最新版)

文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的进程间通信方式?Linux 有哪些系统日志文件?Linux系统安装多个桌面环境有帮助吗?什么是交换空间?什么是root帐户什么是LILO?什...

将一个接口响应时间从2s优化到 200ms以内的一个案例

一、背景 在开发联调阶段发现一个接口的响应时间特别长,经常超时,囧… 本文讲讲是如何定位到性能瓶颈以及修改的思路,将该接口从 2 s 左右优化到 200ms 以内 。 二、步骤 2.1 定位 定位性能瓶颈有两个思路,一个是通过工具去监控,一个是通过经验去猜想。 2.1.1 工具监控 就工具而言,推荐使用 arthas ,用到的是 trace 命令 具体安装步骤很简单,大家自行研究。 我的使用步骤是...

学历低,无法胜任工作,大佬告诉你应该怎么做

微信上收到一位读者小涛的留言,大致的意思是自己只有高中学历,经过培训后找到了一份工作,但很难胜任,考虑要不要辞职找一份他能力可以胜任的实习工作。下面是他留言的一部分内容: 二哥,我是 2016 年高中毕业的,考上了大学但没去成,主要是因为当时家里经济条件不太允许。 打工了三年后想学一门技术,就去培训了。培训的学校比较垃圾,现在非常后悔没去正规一点的机构培训。 去年 11 月份来北京找到了一份工...

JVM内存结构和Java内存模型别再傻傻分不清了

JVM内存结构和Java内存模型都是面试的热点问题,名字看感觉都差不多,网上有些博客也都把这两个概念混着用,实际上他们之间差别还是挺大的。 通俗点说,JVM内存结构是与JVM的内部存储结构相关,而Java内存模型是与多线程编程相关,本文针对这两个总是被混用的概念展开讲解。 JVM内存结构 JVM构成 说到JVM内存结构,就不会只是说内存结构的5个分区,而是会延展到整个JVM相关的问题,所以先了解下

和黑客斗争的 6 天!

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

Google 与微软的浏览器之争

浏览器再现“神仙打架”。整理 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews)从 IE 到 Chrome,再从 Chrome 到 Edge,微软与...

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

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

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

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

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

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

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

85后蒋凡:28岁实现财务自由、34岁成为阿里万亿电商帝国双掌门,他的人生底层逻辑是什么?...

蒋凡是何许人也? 2017年12月27日,在入职4年时间里,蒋凡开挂般坐上了淘宝总裁位置。 为此,时任阿里CEO张勇在任命书中力赞: 蒋凡加入阿里,始终保持创业者的冲劲,有敏锐的...

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

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

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

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

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

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

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

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

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

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

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

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

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

什么时候跳槽,为什么离职,你想好了么?

都是出来打工的,多为自己着想

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

立即提问
相关内容推荐