C语言的scanf无法正确读入信息

这是一个读入多项式的函数,没有语法错误。但是在我输入完我需要的数
之后,无法正确响应。不知道自己错在哪了。大哥们,能不能帮我看看。

#include<stdlib.h>

typedef struct polynode * polynomial;
polynomial readpoly();

struct polynode
{
    int expon;
    int coef;
    polynomial next;
};

int main()
{
    /*用p1,p2来定位两个多项式。*/ 
    polynomial p1, p2;

    p1 = readpoly();
    p2 = readpoly();
    while(p1!=NULL)
    printf("%d", p1->expon);

    return 0;
}

polynomial readpoly()
{
    int e, c, N;
    polynomial p, phead;/*p 为工作指针 phead 一直指向头结点*/ 
    p = (polynomial)malloc(sizeof(struct polynode));
    phead = p;//phead指向第一个节点 

    printf("请输入项数");
    scanf("%d", &N); 
    printf("请输入每项的系数与指数");    
    while(N--)
    {
        scanf("%d%d", &c, &e);
        p->coef = c;
        p->expon = e;
        p = p->next;
        p->next = NULL; 
    }
    return phead;   
}
下面是我的输入,在输入完后,是这样:
![图片说明](https://img-ask.csdn.net/upload/201904/28/1556442057_364925.png)

这个问题会在我试图输入多个值的时候出现,那里出了问题?


1个回答

改三处
1.
while(p1!=NULL)
{printf("%d",p1->expon);
p1=p1->next;}//指向下一节点

polynomial readpoly()
{
int e,c,N;
polynomial p,phead;/*p 为工作指针 phead 一直指向头结点*/
p = (polynomial)malloc(sizeof(struct polynode));
phead = p;//phead指向第一个节点

printf("请输入项数");
scanf("%d",&N);
printf("请输入每项的系数与指数");
while(N--)
{
    scanf("%d%d",&c,&e);
    p->coef = c;
    p->expon = e;
    p ->next= (polynomial)malloc(sizeof(struct polynode));/////2为新节点开辟空间
    p = p->next;

}
p->next = NULL;////3尾结点指向为空
return phead;

}
另外两处也已在上边了////2,////3那两处

Weite_Zhang
Weite_Zhang 十分感谢您的指导,剩下两处可以指出一下吗
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c++中使用scanf读入字符串到string产生的问题
在c++中 ``` string str; scanf("%s", str.c_str()); printf("%d", str.length()); ``` 输出结果始终为0,这是什么原因? 应该用什么方法来得到string的长度? 哪个大佬来指点指点我这个弱鸡,感谢!
devcpp在运行c语言快速排序算法时,当读入到第400多个数据之后就无法读入了,为什么?
如题,当读到第四百多个数的时候就无法继续读入了。但是提交到oj上出来的是WA,意思应该是可以运行但结果不对吧。 ``` #include<stdio.h> int num[100000]; int sort(int low, int high); void quick(int start,int end); int main() { int tot; int i; scanf("%d",&tot); for(i=0;i<tot;i++){ scanf("%d",&num[i]); } quick(0,tot-1); printf("%d",num[0]); for(i=1;i<tot;i++){ printf(" %d",num[i]); } printf("\n"); return 0; } int sort(int low, int high){ int temp=num[low]; while(low<high){ while(low<high&&num[high]>=temp) high--; if(low>=high) break; else num[low]=num[high]; while(low<high&&num[low]<=temp) low++; if(low>=high) break; else num[high]=num[low]; num[low]=temp; } return low; } void quick(int start,int end){ int sor=sort(start,end); if(sor>start+1) quick(start,sor-1); if(sor<end-1) quick(sor+1,end); } ``` 如图 ![图片说明](https://img-ask.csdn.net/upload/202003/02/1583142411_14226.png)
以下scanf连续读入为什么不成功?
1[运行情况](https://img-ask.csdn.net/upload/201912/15/1576379920_512485.png) 2[结构体定义](https://img-ask.csdn.net/upload/201912/15/1576379934_600493.png) 3[函数变量定义](https://img-ask.csdn.net/upload/201912/15/1576379948_491397.png) 4[scanf连续读入](https://img-ask.csdn.net/upload/201912/15/1576379959_320400.png)
c++语言该怎么用fopen读入数据?
我知道在c语言中使用fopen可以将scanf改为fscanf, 那c++语言的cin又该改成什么呢?
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。 为啥每次输入类似340,250,630这种数字就只能显示出百位数?求求各位大佬。 #include<stdio.h> #include<string.h> int main() { char num[4]; int i; scanf("%s",num); if(num[2]!='0'){ for (i=2;i>-1;i--){ printf("%c",num[i]); } } else{ if (num[1]='0') printf("%c",num[0]); if (num[1]!='0') printf("%c %c",num[1],num[0]); } return 0; }
c语言中有关scanf的输入问题
代码如下 ``` #include<stdio.h> int main() { int x1,x2; char y1,y2; scanf("%2d%3d%3c%c",&x1,&x2,&y1,&y2); printf("x1=%d,x2=%d,y1=%c,y2=%c\n",x1,x2,y1,y2); return 0; } ``` 结果如下: ![图片说明](https://img-ask.csdn.net/upload/201812/27/1545903742_405417.png) 在dev-C 5.11下运行 gcc版本:64bit4.9.2 问题:为什么x2读入的不是765?
scanf的正则表达式问题
```c void main() { char className[100] = { 0 }; char windowName[100] = { 0 }; printf("请输入窗口的标题名:\n"); int n2 = scanf("%[^\n]", windowName); printf("请输入窗口的类名:\n"); //getchar(); //不加这一句classname为空 int n1 = scanf("%[^\n]", className); windowDoubleCircle(className, windowName); } ``` 为什么scanf使用正则表达式,[^\n],将回车当作结束符后,第二个scanf无法正常工作呢? windowName可以得到正确的结果,遇到回车结束 但是第二个就不行了,一直为空 我自己的猜测是输入第一个字符串时的回车被第二个scanf直接读入了,然后就直接结束。 加入getchar后果然正常了。 但是这里我就很困惑了,不用正则表达式不也是以回车(或者空格)来结束吗,为什么正常的scanf连用能够正常工作(这里指输入一个字符串,然后回车,然后再输入一个字符串)呢?
动态链表统计字符频度(c语言)
用动态链表统计字符频度:(用c语言写,最好是调试成功的完整代码,并详细注释,字符不只是24个英文字符,还有数字,空格等) 创建动态链表、加节点; 已读入的字符数据传递给动态链表处理模块; 使用链表结构,完成字符的频度统计; 把动态链表模块嵌入到之前的工程中。 #include<stdio.h> typedef struct Student{ long num; float score; struct Student *next; } Student; int n; Student * create(){ Student *head,*p1,*p2; n = 0 ; //开辟新结点 同时使p1 p2指向该结点 p1=p2=(Student *)malloc(sizeof(Student)); scanf("%d %f",&p1->num,&p1->score); //此时head的指向为NULL head = NULL; while(p1->num != 0){ //n代表结点数 n=n+1; if(n==1){ //n=1 说明该结点是第一个结点 使head指向该结点 head = p1; }else{ //如果不是头结点 把p1所指向的结点链接在p2所指向结点的后面 p2->next = p1; } //使p2向前移 p2 = p1; //开辟新结点 使p1指向它 p1 = (Student *)malloc(sizeof(Student)); scanf("%d %f",&p1->num,&p1->score); } //循环退出之后 使p2指向NULL 因为链表的尾结点指向NULL p2->next = NULL; return head; } void main(){ Student *pt; pt = create(); printf("\nnum:%d\nscore:%5.1f\n",pt->num,pt->score ); return 0; } https://blog.csdn.net/u010703975/article/details/44975989 https://blog.csdn.net/weixin_42107106/article/details/83105509
PTA:7-39 求迷宫最短通道(部分正确)
递归求解迷宫最短通道的总步长。输入一个迷宫,求从入口通向出口的可行路径中最短的路径长度。为简化问题,迷宫用二维数组 int maze[10][10]来存储障碍物的分布,假设迷宫的横向和纵向尺寸的大小是一样的,并由程序运行读入, 若读入迷宫大小的值是n(3<n<=10),则该迷宫横向或纵向尺寸都是n,规定迷宫最外面的一圈是障碍物,迷宫的入口是maze[1][1],出口是maze[n-2][n-2], 若maze[i][j] = 1代表该位置是障碍物,若maze[i][j] = 0代表该位置是可以行走的空位(0<=i<=n-1, 0<=j<=n-1)。求从入口maze[1][1]到出口maze[n-2][n-2]可以走通的路径上经历的最短的总步长。要求迷宫中只允许在水平或上下四个方向的空位上行走,走过的位置不能重复走。 输入格式: 输入迷宫大小的整数n, 以及n行和n列的二维数组(数组元素1代表障碍物,0代表空位) 输出格式: 若有可行的通道则输出一个整数,代表求出的通道的最短步长;若没有通道则输出"No solution" 输入样例: 10 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1 0 1 1 0 0 1 0 0 0 1 0 1 1 0 0 0 0 1 1 0 0 1 1 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 1 0 1 1 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 上述输入代表的是如下这样一个迷宫: ![图片说明](https://img-ask.csdn.net/upload/202002/02/1580631291_613843.png) 其中红色的小方块是障碍物,蓝色的小方块是空位,白色的小圆连起来是一条从入口到出口的通道,两个圆之间代表一个步长。 输出样例: 14 请教一下哪里错了~:D 程序清单: ``` #include<stdio.h> #include<string.h> int maze[10][10]; int count=0,min; int endx,endy; int flag; int zou(int x,int y) { if(x==endx&&y==endy)//到终点 { flag=1; printf("%d",count); return 0; } maze[x][y]=1; if(flag)return 0; if(maze[x][y-1]==0)//向左 { count++; zou(x,y-1); count--; } if(maze[x+1][y]==0)//向下 { count++; zou(x+1,y); count--; } if(maze[x-1][y]==0)// 向上 { count++; zou(x-1,y); count--; } if(maze[x][y+1]==0)//向右 { count++; zou(x,y+1); count--; } return 0; } int main() { int n; scanf("%d",&n); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { scanf("%d",&maze[i][j]); } } int x=1,y=1; endx=endy=n-2; flag=0; zou(x,y); if(!flag) printf("No solution"); return 0; } ```
关于C语言读入文件后 管理存储字符串的问题(问题未确定)
vs2010报错是“Windows 已在 公交查询系统.exe 中触发一个断点。 其原因可能是堆被损坏,这说明 公交查询系统.exe 中或它所加载的任何 DLL 中有 Bug。 原因也可能是用户在 公交查询系统.exe 具有焦点时按下了 F12。” 代码如下: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<string.h> #include<ctype.h> #include<stdlib.h> #include<iostream> long long a; #define stop system("pause"); #define home(x) printf("%p\n",x); int j;//控制项目数组 struct item { int number; char*Item; }; int main(int argc,char *argv[]) { system("color f9"); system("title 公交查询系统"); FILE *fp; int i;//线路选择 char c; c=(char)malloc(sizeof(char)); printf("字符变量的地址是:"); home(c); int amount=0;//交通线路的数量 fp=fopen("file.txt","rb+"); if(fp==NULL) { printf("获取失败╮(╯▽╰)╭\n"); system("pause"); return 0; } printf("文件指针的地址是:%p\n",fp);//确保文件指针分配到了内存 fseek(fp,0,SEEK_END); int file_size=ftell(fp);//计算文件的大小 fseek(fp,0,SEEK_SET); char *str=NULL;//不知道有没有分配内存 str=(char*)malloc(sizeof(*fp));//分配一个文件大小的内存给指针 printf("指针str的地址是:"); home(str);//用C语言宏 确认str指针分配到了地址 str[file_size]='\0';//用空字符结尾 防止字符串乱码 fread((void*)str,file_size,1,fp);//把文件内容读给str printf("文件大小:%d\n",file_size);//确认文件大小正确 不为零 int seek=0;//设置循环变量 while(seek<file_size) { if(str[seek]=='.')//检索项 用数组运算符 遇到'.'分为一项 { amount++;//amount是项目数 static char*one=NULL;//静态变量 作为str的副本╮(╯▽╰)╭ one=(char*)malloc(sizeof(*fp)); static int one_1=1; static int seek_1=seek; while(one_1<=seek) { sprintf(one,"%c",str[one_1]); } } seek++; } if((c=getc(fp))!=NULL) { printf("读入到文件尾!\n"); } puts(str);//检查文件内容是否不存在 std::cout<<amount<<std::endl; fclose(fp); fp=NULL; struct item ch[5]; {//使自动变量在代码块结尾 退出堆 int i=1; char*ch_1=NULL;//存储项的内容 ch_1=(char*)malloc(sizeof(char*)); printf("临时字符串的地址:%p\n",ch_1);//确保字符串分配到了地址 stop;//C语言宏 system("pause"); while(i<amount) { do{ c=str[a]; sprintf(ch_1,"%c",c,'\0'); }while(a==1); std::cout<<ch_1<<"\n"<<c<<"\n";//确保临时字符串有内容 ch[j].Item=NULL; ch[j].Item=(char*)malloc(sizeof(*fp)); printf("项目的地址:%p\n",ch[j].Item);//确保存储项的结构数组中的指针分配到了内存 std::cout<<j<<"\n";//确保下标未越界 stop; while(ch_1!="。") { ch[j].number=i;//此时 第一项 用number标识这是第几项 strcat(ch[j].Item,ch_1);//把ch_1的内容给连接在指针的末尾 if(c==0) { std::cout<<"读取失败\n"; stop; std::cout<<ch[j].Item<<"\n"; stop; } c=str[a];//继续获取文件内容 sprintf(ch_1,"%c",c); a++; } strcat(ch[j].Item,"。"); j++; i++; } free(ch_1); } printf("1.数据维护(增加项、删除项)\n2.查询\n3.退出\n"); scanf("%d",&i); switch(i) { case 1: int a; printf("你真的做决定了吗?如果你确定的话请选择:\n1.增加项\n2.退出\n"); scanf("%d",&a); if(a==1) { fp=fopen("file.txt","w+");//以读模式来覆盖文本 方便添加项目 char*add_1=(char*)malloc(sizeof(*fp)); sprintf(add_1,"%d.",++amount);//add_1存储文件的序号 如当前有5项 char*add_2=(char*)malloc(sizeof(*fp));//add_2是要添加的文本 printf("在此处添上你要添加的文本\n"); scanf("%s",add_2); strcat(add_1,add_2); strcat(add_1,"。"); strcat(str,add_1);//把文本添加到末尾 puts(str); stop; fprintf(fp,"\n"); fprintf(fp,str);//确认添加成功 fclose(fp); fp=NULL; add_1=add_2=NULL; free(add_1); free(add_2); } else if(a==2) { fp=fopen("file.txt","w+"); int d; printf("请选择你要删除第几项\n"); scanf("%d",&d); ch[d].Item=""; str=""; for(j=1;;j++) { strcat(str,ch[j].Item); } fprintf(fp,str); fclose(fp); fp=NULL; for(seek=0;seek<amount;seek++) { free(ch[seek].Item); } } break; case 2: puts(str); break; case 3: system("pause"); return 0; break; default: break; } str=NULL; free(str); system("pause"); return 0; } ![图片说明](https://img-ask.csdn.net/upload/201510/01/1443664194_232169.jpg) ![图片说明](https://img-ask.csdn.net/upload/201510/01/1443664424_429320.jpg) 运行结果在附属的图片中 还请帮忙看看是什么地方出了错误..
小白提问-关于单链表的插入-C语言
关于单链表的插入问题,尝试了很多次,不清楚问题出在哪,希望大牛能够帮助我指出代码中存在的问题,感激万分。 ``` #include<stdio.h> #include<stdlib.h> struct Link { int num; struct Link *next; }; void getInput(struct Link *num)//函数1 读入数据 { printf("input a number: "); scanf("%d", &num->num); } void rank_num(struct Link **link, struct Link *num)//函数2 排序插入 { struct Link *temp; struct Link *current; current = *link; while(num >= current->num || current->next != NULL) { if(current->next != NULL) { temp = current; current = current->next; } } if(current->next == NULL) { current->next = num; num->next = NULL; } else { temp->next = num; num->next = current; } } void printLink(struct Link *link)//函数3 打印结果 { while(link->next != NULL) { printf("%d ", link->num); link = link->next; } return; } void releaseLink(struct Link **link)//函数4 释放存储空间 { struct Link *temp; while(*link != NULL) { temp = *link; *link = (*link)->next; free(temp); } } int main()//主函数 main { struct Link *link = NULL; struct Link *num; num = (struct Link*)malloc(sizeof(struct Link)); for(int i=0; i<3; i++) { printf("请输入数据\n"); getInput(num); if(link != NULL) { rank_num(&link, num); } else { link = num; num->next = NULL; } } printLink(link); releaseLink(&link); return 0; } ```
C语言寻找三维数组正切面最大和的值,上交Wrong Answer, 有题目和代码, 望大神指点
切面 Description 给出一个长方体,求该长方体每个正切面上的元素之和的最大值。 正切面的意思就是与长方体某一面平行的切面。如果把长方体看作是一个三维数组,那么每个切面就是一个二维数组。 Input 第一行是3个正整数a、b、c,分别表示长方体的长、宽、高。0 < a, b, c ≤ 60 接下来是 c 块数据,每一块数据有a行、每行b个整数。 Output 输出切面元素和的最大值。 Sample Input 3 3 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 Sample Output 27 我的代码 ``` #include <stdio.h> #include <stdlib.h> int main (){ //长a,宽b,高c int a, b, c; scanf("%d %d %d", &a, &b, &c); //定义动态内存 int ***p = (int ***) malloc(sizeof(int **) * a); for (int i = 0; i < a; i++){ p[i] = (int **) malloc(sizeof(int *) * b); for (int j = 0; j < b; j++) p[i][j] = (int *) malloc(sizeof(int) * c); } //读入数据 for (int i = 0; i < a; i++) for (int j = 0; j < b; j++) for (int k = 0; k < c; k++) scanf("%d", &p[i][j][k]); int max; //找最大切面 for (int i = 0; i < a; i++){ int sum = 0; for (int j = 0; j < b; j++) for (int k = 0; k < c; k++) sum += p[i][j][k]; if (i == 0)//当第一个切面时最大切面为第一个切面 max = sum; else if (sum > max) max = sum; } for (int j = 0; j < b; j++){ int sum = 0; for (int i = 0; i < a; i++) for (int k = 0; k < c; k++) sum += p[i][j][k]; if (sum > max) max = sum; } for (int k = 0; k < c; k++){ int sum = 0; for (int i = 0; i < a; i++) for (int j = 0; j < b; j++) sum += p[i][j][k]; if (sum > max) max = sum; } printf("%d", max); //释放p for (int i = 0; i < a; i++){ for (int j = 0; j < b; j++) free(p[i][j]); free(p[i]); } free(p); return 0; } ``` 测试用例 ![图片说明](https://img-ask.csdn.net/upload/201912/04/1575423291_936517.png) 但是上交的是返回 ![图片说明](https://img-ask.csdn.net/upload/201912/04/1575423415_271316.png)
c语言题目二进制加法求指教
由键盘输入两个二进制正整数(均不超过2的31次方),计算输出它们的和(结果同样以二进制表示)。注:本题以字符串方式读取数据时, 务必使用scanf("%s", ....)的方式 输入格式 共两行,一行一个二进制正整数(务必使用scanf("%s", ....)的方式,以确保读入的串末尾不会含有空格及其它特殊字符) 输出格式 二进制形式的和 输入样例 1101 10 输出样例 1111
关于C语言的文件读写的问题
写了个简单的成绩管理系统,非常简单,但是用到了文件操作,下面贴出两个函数,求大神解释一下,问什么在对文件进行写入时会出现问题。 #include <stdio.h> #include <string.h> #include <stdlib.h> #define N 20 #define MAX 30 //每班最多30个学生 typedef struct gra { int C; //C语言与程序设计 int ENG; //英语 int FM; //高数 int UP; //大物 int PAS; //概率论与数理统计 } GRA; typedef struct student { //unsigned int studentClass; unsigned int studentID; char studentName[10]; //unsigned int studentTerm; GRA studentGrade; } STU; void Function0() { int i, k, classnum, studentnum; //unsigned int temp, temp1; char fileCode[N]; FILE *fp; printf("多少个班级?\n"); scanf("%d", &classnum); for (i = 0; i < classnum; i++) { /*printf("请输入班级编号:\n"); scanf("%u", &temp); printf("请输入学期编号:\n"); scanf("%u", &temp1);*/ printf("请输入第%d个班级的学生数:\n", i+1); scanf("%d", &studentnum); STU *pt = (STU*) calloc(studentnum, sizeof(STU)); STU *ppt = pt; //保存pt的值 printf("请依次输入各个同学的学号、姓名和各科成绩\n"); for (k = 0; k < studentnum; k++, pt++) { printf("第%d个学生\n", k+1); //printf("请依次输入各个同学的学号、姓名和各科成绩\n"); //printf("学号\t姓名\tC语言与程序设计\t大学英语\t高等数学\t大学物理\t概率论与数理统计\n"); //pt->studentClass = temp; printf("学号:"); scanf("%u", &pt->studentID); printf("%u\n", pt->studentID); printf("姓名:"); scanf("%s", pt->studentName); printf("%s\n", pt->studentName); //scanf("%u", &(pt->studentTerm)); printf("C语言与程序设计:"); scanf("%d", &pt->studentGrade.C); printf("%d\n", pt->studentGrade.C); printf("大学英语:"); scanf("%d", &pt->studentGrade.ENG); printf("%d\n", pt->studentGrade.ENG); printf("高等数学:"); scanf("%d", &pt->studentGrade.FM); printf("%d\n", pt->studentGrade.FM); printf("大学物理:"); scanf("%d", &pt->studentGrade.UP); printf("%d\n", pt->studentGrade.UP); printf("概率论与数理统计:"); scanf("%d", &pt->studentGrade.PAS); printf("%d\n", pt->studentGrade.PAS); } printf("请按格式输入文件名,文件名格式为:班级编号_学期编号,例如:04121517_201601\n"); getchar(); gets(fileCode); //将.bin连接在fileCode后面,组成文件名 strcat(fileCode, ".bin"); fp = NULL; if ((fp = fopen(fileCode, "wb")) == NULL) { printf("文件初始化错误!\n"); exit(1); } fwrite(pt, sizeof(STU), k, fp); fclose(fp); pt = ppt; free(pt); } } void Function1() { //char fileCode[N]; int flag = 0; int count = 0, i; unsigned int temp = 0; FILE *fp = NULL; printf("请输入希望修改信息的学生的班级编号_学期编号:\n"); fp = OpenProject(); //将文件内所有数据读入新开的结构体中进行数据修改,再放回原文件中 STU *pt = (STU *)calloc(MAX, sizeof(STU)); STU *ppt = pt; fread(pt, sizeof(STU), MAX, fp); //printf("%u\n", pt->studentID); //printf("%s\n", pt->studentName); printf("请输入希望修改信息的学生的学号:\n"); in3: scanf("%u", &temp); for (i = 0; i <= count-1; i++, pt++) { if (temp == pt->studentID) { flag = 1; break; } fseek(fp, sizeof(STU), SEEK_SET); } if (flag == 1) { printf("请重新输入该学生的各科成绩:\n"); scanf("%d", &pt->studentGrade.C); scanf("%d", &pt->studentGrade.ENG); scanf("%d", &pt->studentGrade.FM); scanf("%d", &pt->studentGrade.UP); scanf("%d", &pt->studentGrade.PAS); } else { printf("不存在此学号,请重新输入!"); goto in3; } fwrite(pt, sizeof(STU), count, fp); rewind(fp); pt = ppt; free(pt); fclose(fp); } 对文件进行读写用的函数是fread和fwrite。 在Function0中,我在把pt内的数据写到文件中前,特意把数据全部输出看数据是不是正确的,pt内的数据没有问题。然而数据写到文件中去就出问题了,写进去之后的数据是错误的,Funtion1()中读取的文件数据也就错了,求大神解答。
c语言 输入n个整数(n<50) 存入一维数组,统计其中的 正数,负数和零的个数,输出统计结果。
编写程序, 输入n个整数(n<50) 存入一维数组,统计其中的 正数,负数和零的个数,输出统计结果。 要求: 用自定义函数count完成按要求统计, 在主函数里完成输入n个数和输出统计结果。 自定义函数原型: void count(int a[], int n, int *pz, int *pf, int *pl); 主函数: int main() { int a[50], n, positive, negative , zero ; scanf(“%d”, &n); //读入n个数 //调用函数,统计其中的 正数,负数和零的个数 //输出统计结果 return 0; }
我在Dev-C++写完代码,试图运行时,弹出程序框提示“exe已停止运行”,当我试图调试代码时,无法进入下一步,一直停滞在断点处,且所添加查看的变量均无值。我想知道原因。
代码想实现的功能为“相邻数字的基数等比确定进制”: 描述6*9 = 42 对于十进制来说是错误的,但是对于13进制来说是正确的。即, 6(13) * 9(13) = 42(13), 而 42(13) = 4 * 131 + 2 * 130 = 54(10)。 你的任务是写一段程序读入三个整数p、q和 r,然后确定一个进制 B(2<=B<=16) 使得 p * q = r. 如果 B有很多选择, 输出最小的一个。例如: p = 11, q = 11, r = 121. 则有 11(3) * 11(3) = 121(3) 因为 11(3) = 1 * 31 + 1 * 30 = 4(10) 和 121(3) = 1 * 32 + 2 * 31 + 1 * 30 = 16(10)。 对于进制 10,有 11(10) * 11(10) = 121(10)。这种情况下,应该输出 3。如果没有合适的进制,则输出 0。 输入: 输入有 T组测试样例。 T在第一行给出。每一组测试样例占一行,包含三个整数p、q、r。 p、q、r的所有位都是数字,并且1 <= p、q、r <= 1,000,000。 输出: 对于每个测试样例输出一行。该行包含一个整数:即使得p * q = r成立的最小的B。如果没有合适的B,则输出 0。 我的代码如下: ``` #include <stdio.h> int main (void) { int N,i,B,k; long p,q,r; int a[3][7],b[3];/*a[3]用于存储p、q、r的各位数;b[3]用于存储p、q、r的位数*/ scanf ("%d",&N); for (i=0;i<N;i++) { do { scanf ("%ld %ld %ld",&p,&q,&r); }while (p<1||q<1||r>1000000); for (k=0;p&&k<7;k++) { a[0][k]=p%10; p=p/10; } b[0]=k;/*计算p的各位数以及p的位数*/ for (k=0;q&&k<7;k++) { a[1][k]=q%10; q=q/10; } b[1]=k;/*计算q的各位数以及q的位数*/ for (k=0;r&&k<7;k++) { a[2][k]=r%10; r=r/10; } b[2]=k;/*计算r的各位数以及r的位数*/ for (B=2;B&&(B<=16);B++) { for (k=b[0]-1;k>=0;k++) p=p*B+a[0][k];/*计算p的B进制*/ for (k=b[1]-1;k>=0;k++) q=q*B+a[1][k];/*计算q的B进制*/ for (k=b[2]-1;k>=0;k++) r=r*B+a[2][k];/*计算r的B进制*/ if (p*q==r) break; else if (B==16) B=-1; } printf ("%d\n",B); } return 0; } ``` 调试过程如图 ![图片说明](https://img-ask.csdn.net/upload/201912/18/1576674123_459579.png)
想在这里面添加一个增加学生信息的功能
#include <stdio.h> #include <string.h> #include <stdlib.h> //宿舍管理软件 //结构体,主题是学生,包括 struct students{ char name[10]; int id; int dorm_id; int building_id; }student[5]={ {"张三",2019,01,0003}, {"李四",2020,02,0002}, {"王五",2001,03,0001}, {"马六",2003,04,0002}, {"赵七",2018,05,0001} }; void sort_id(); void sort_name(); void sort_drom_id(); typedef struct students stuinfo; //函数体模块 //操作功能页面 void display(){ printf("---------------------------------------\n"); printf("----------请输入要选择的值-------------\n"); printf("----------1:存储学生信息---------------\n"); printf("----------2:排序学生信息---------------\n"); printf("----------3:查找学生信息---------------\n"); printf("----------4:显示学生信息---------------\n"); } //排序 //按照姓名 //按照学号 //按照宿舍号 void display_sort(){ printf("1:按照学号"); printf("2:按照姓名"); printf("3:按照宿舍号"); } void sort(){ char str[5]; int i,j,m; stuinfo temp; //进行排序 printf("1:按照学号"); printf("2:按照姓名"); printf("3:按照宿舍号"); scanf("%d",&m); switch(m){ case 1:{ sort_id(); break; } case 2:{ sort_name(); break; } case 3:{ sort_drom_id(); break; } default :printf("请输入1,2,3中的数字"); } printf("\n 排序已经完成,请按任意键继续\n"); } void sort_id(){ int i,j,m; stuinfo temp; //进行排序 for(i=0;i<5-1;i++) for(j=0;j<5-1-i;j++) if(student[j].id>student[j+1].id) { temp=student[j]; student[j]=student[j+1]; student[j+1]=temp; } printf("按照学号排序完成"); } void sort_name(){ int i,j,m; stuinfo temp; //进行排序 for(i=0;i<5-1;i++) for(j=0;j<5-1-i;j++) if(strcmp(student[j].name,student[j+1].name)>0) { temp=student[j]; student[j]=student[j+1]; student[j+1]=temp; } printf("按照姓名排序完成"); } void sort_drom_id(){ int i,j,m; stuinfo temp; //进行排序 for(i=0;i<5-1;i++) for(j=0;j<5-1-i;j++) if(student[j].dorm_id>student[j+1].dorm_id) { temp=student[j]; student[j]=student[j+1]; student[j+1]=temp; } printf("按照宿舍号排序完成"); } //查找学生信息 int found(){ int low,high,mid,m; low=0; high=5-1; printf("1:按照学号查找"); printf("2: 按照姓名查找"); printf("3: 按照宿舍号查找"); scanf("%d",&m); switch(m){ case 1: { sort_id(); int key; int flag=0; printf("请输入要查找的学号"); scanf("%d",&key); while(low<=high) { mid=(low+high)/2; //计算中间元素序号 if(student[mid].id==key) //中间元素与关键字相等 {return mid; flag=1; } else if(student[mid].id>key) //中间元素大于关键字 high=mid-1; else low=mid+1; } if(flag==0){ return 100; } break; } case 2:{ sort_name(); char key[10]; printf("请输入要查找的姓名");int flag=0; gets(key); while(low<=high) { mid=(low+high)/2; //计算中间元素序号 if(strcmp(student[mid].name,key)==0) //中间元素与关键字相等 {return mid; flag=1; } else if(strcmp(student[mid].name,key)>0) //中间元素大于关键字 high=mid-1; else low=mid+1; } if(flag==0){ return 100; } break; } case 3:{ sort_drom_id(); int key; printf("请输入要查找的宿舍号"); scanf("%d",&key);int flag=0; while(low<=high) { mid=(low+high)/2; //计算中间元素序号 if(student[mid].dorm_id==key) //中间元素与关键字相等 {return mid; flag=1; } else if(student[mid].dorm_id>key) //中间元素大于关键字 high=mid-1; else low=mid+1; } if(flag==0){ return 100; } break; } } } int savetofile() { FILE *fp; if((fp=fopen("stu_info.txt","wb+"))==NULL) //打开文件失败 { printf("无法打开文件!\n"); printf("请按任意键继续\n"); getchar(); return 0; } printf("\n 存文件...\n"); fwrite(student,sizeof(stuinfo)*5,1,fp); //写入文件 fclose(fp); printf("5条记录已经存入文件,请按任意键继续。\n"); //savedflag=0;//更新是否已保存的标记 getchar(); return 1; } int loadfromfile(void) { FILE *fp; int i; if((fp=fopen("stu_info.txt","rb"))==NULL) //打开文件失败 { printf("无法打开文件!\n"); printf("请按任意键继续\n"); getchar(); return 0; } printf("\n 读取文件...\n"); int applicantnum=0; //重新计算员工数 while(!feof(fp)) //读取文件内容 { fread(&student[applicantnum],sizeof(stuinfo),1,fp); applicantnum++; } applicantnum--; fclose(fp); printf("共从文件中读入%d 条记录\n",applicantnum); //p=records; printf("读出的文件内容为:\n"); //showtitle(); //先显示原信息 for(i=0;i<=applicantnum;i++) { printf("姓名:%s 学号:%d 宿舍号:%d 楼号:%d\n",student[i].name,student[i].id,student[i].dorm_id,student[i].building_id); } printf("请按任意键继续!\n"); getchar(); return 1; } //排序 //按照姓名 //按照学号 //按照宿舍号 //打印学生信息 //建立数据文件 //数据文件按照关键字(姓名,学号,宿舍号) //按姓名查询 //按学号查询 //按宿舍号查询 void main(){ int m,n; m=1; int w; while(m){ display(); scanf("%d",&n); switch(n){ case 1:{ printf("存储c语言的文件"); int s=savetofile(); if(s=1){ printf("存储完成"); } break; } case 2:{ sort(); break; } case 3:{ w=found(); if(w==100){ printf("没有查找到"); }else{ printf("查找出来的学生为/n"); printf("姓名:%s 学号:%d 宿舍号:%d 楼号:%d",student[w].name,student[w].id,student[w].dorm_id,student[w].building_id); } break; } case 4:{ loadfromfile(); int i; for(i=0;i<5;i++){ // printf("姓名:%s 学号:%d 宿舍号:%d 楼号:%d",student[i].name,student[i].id,student[i].dorm_id,student[i].building_id); } break; } default:printf("请输入正确的值"); } } } 帮忙可有偿
C语言初学者提问,不会修改程序
可以运行,但是达不到目的,不会修改 程序代码: typedef struct /* 学生结构 */ { short status; /* 数据状态,0:正常 1:删除 */ char number[10]; /* 学号 */ char name[20]; /* 姓名 */ char sex[3]; /* 性别 */ int age; /* 年龄 */ char place; /* 籍贯 */ char department; /* 系别 */ char major; /* 专业 */ int classnumber; /* 班级 */ }StudentType; void AddData(void); /* 增加数据 */ void ChangeData(void); /* 修改数据 */ void SearchData(void); /* 查找数据 */ void ListData(void); /* 显示数据 */ void PackData(void); /* 删除数据 */ #include<stdio.h> /* 标准输入输出文件包含预处理命令 */ #include<string.h> /* 字符串文件含预处理命令 */ #include<ctype.h> /* 包含tolower()的原型 */ #include<stdlib.h> /* 标准库文件包含预处理命令 */ FILE*fp; /* 声明文件指针 */ void AddData(void) /* 增加文件数据 */ { StudentType student; /* 学生 */ char tag; /* 设置标志是否继续增加 */ student.status=0; /* 数据状态,0:正常 1:删除 */ do { printf("学生学号:"); scanf("%s,student.number"); /* 输入学号 */ printf("学生姓名:"); scanf("%s,student.name"); /* 输入姓名 */ printf("学生性别:"); scanf("%s,student.sex"); /* 输入性别 */ printf("学生年龄:"); scanf("%d,student.age"); /* 输入年龄 */ printf("学生籍贯:"); scanf("%s,student.place"); /* 输入籍贯 */ printf("学生系别"); scanf("%s,student.department"); /* 输入系别 */ printf("学生专业:"); scanf("%s,student.major"); /*输入专业 */ printf("学生班级:"); scanf("%d,student.classnumber"); /* 输入班级 */ fseek(fp,0, SEEK_END); /* 移动文件内部指针 */ fwrite(&student,sizeof(StudentType),1,fp); /* 将图书信息存入文件中 */ printf("继续添加吗(y/n):"); while (getchar() !='\n'); /* 跳过当前行 */ tag=getchar(); /* y,Y表示继续,N,n表示结束 */ tag=tolower(tag); /* 大写字母转化为小写字母 */ while (tag !='y' && tag !='n') { /* 非法输入时重新输入 */ printf("输入非法,重新输入(y/n):"); while (getchar() !='\n'); /* 跳过当前行 */ tag=getchar(); /* y,Y表示继续,N,n表示结束 */ tag=tolower(tag); /* 大写字母转化为小写字母 */ } }while (tag=='y'); /* 肯定回答时循环 */ } void ChangeData(void) /* 更新数据 */ { StudentType student; /* 学生 */ char number[20]; /* 学生学号 */ printf("输入要更改的学生学号:"); scanf("%s",number); /* 输入学生学号 */ rewind(fp); /* 使位置指针返回到文件开头 */ fread(&student,sizeof(StudentType),1,fp); /* 读入学生信息 */ while(!feof(fp)) { /* 文件未结束 */ if(strcmp(student.number,number)==0 /* 学生学号相同 */ && student.status==0 /* 数据状态正常,未作删除标志 */ )break; /* 查询成功 */ fread(&student,sizeof(StudentType),1,fp); /* 读入学生信息 */ } if (!feof(fp)) { /* 查询成功 */ printf("%-20s%-10s%-5s%-4d%-20s%-20s%-20s%-15d%\n","学生学号","学生姓名","学生性别","学生年龄","学生籍贯","学生系别","学生专业","学生班级"); printf("%-20s%-10s%-5s%-4d%-20s%-20s%-20s%-15d%\n", /* 输出信息 */ student.number,student.name,student.sex,student.age,student.place,student.department,student.major,student.classnumber); printf("输入更改后的数据:\n"); printf("学生学号:"); scanf("%s,student.number"); /* 输入学号 */ printf("学生姓名:"); scanf("%s,student.name"); /* 输入姓名 */ printf("学生性别:"); scanf("%s,student.sex"); /* 输入性别 */ printf("学生年龄:"); scanf("%d,student.age"); /* 输入年龄 */ printf("学生籍贯:"); scanf("%s,student.place"); /* 输入籍贯 */ printf("学生系别"); scanf("%s,student.department"); /* 输入系别 */ printf("学生专业:"); scanf("%s,student.major"); /*输入专业 */ printf("学生班级:"); scanf("%d,student.classnumber"); /* 输入班级 fseek(fp,-sizeof(StudentType), SEEK_CUR); /* 移动文件内部指针 */ fwrite(&student, sizeof(StudentType),1,fp); /* 写入数据 */ } else { /* 查询失败 */ printf("无此编号的学生!\n"); clearerr(fp); /* 清除文件结束标志 */ } } void SearchData(void) { StudentType student; /* 查询数据 */ int select; /* 工作变量 */ char number[20]; /* 学号 */ char major[20]; /* 专业 */ printf("请选择:\n"); printf("1.按学号查询 2.按专业查询\n"); scanf("%d",&select); /* 输入选择 */ while (select<1||select>2) { printf("请输入1~2的数:"); /* 输入提示 */ scanf("%d,&select"); /* 输入选择 */ } switch (select) { case 1: /* 按学生学号查询 */ printf("请输入要查询的学生学号:"); scanf("%s",number); /* 输入学生的学号 */ rewind(fp); /* 使指针位置返回到文件的开头 */ fread(&student,sizeof(StudentType),1,fp); /* 读入学生信息 */ while (!feof(fp)) { /* 文件未结束 */ if(strcmp(student.number,number)==0 /* 学生学号相同 */ && student.status==0 /* 数据状态正常,没有删除标志 */ )break; /* 查询成功 */ fread(&student,sizeof(StudentType),1,fp); /* 读入学生信息 */ } break; case 2: printf("输入要查询的学生的专业:"); /* 按专业查询 */ scanf("%s",major); /* 输入学生专业 */ rewind(fp); /* 使指针返回文件的开头 */ fread(&student,sizeof(StudentType),1,fp); /* 读入学生的信息 */ while(!feof(fp)) { /* 文件未结束 */ if (strcmp(student.major,major)==0 /* 学生专业相同 */ && student.status==0 /* 数据状态正常,没有删除标志 */ ) break; /* 查询成功 */ fread(&student,sizeof(StudentType),1,fp); /* 读入学生信息 */ } break; } if (!feof(fp)) { /* 查询成功 */ printf("%-20s%-10s%-5s%-4d%-20s%-20s%-20s%-15d%\n","学生学号","学生姓名","学生性别","学生年龄","学生籍贯","学生系别","学生专业","学生班级"); printf("%-20s%-10s%-5s%-4d%-20s%-20s%-20s%-15d%\n", /* 输出信息 */ student.number,student.name,student.sex,student.age,student.place,student.department,student.major,student.classnumber); } else { /* 查询失败 */ printf("无此专业的学生!\n"); clearerr(fp); /* 清除文件结束标志 */ } } void DeleteData(void) /* 删除数据,只作删除标志 */ { StudentType student; /* 学生 */ char number[20]; /* 学生学号 */ printf("输入要更新的学生的学号:"); scanf("%s", number); /* 输入学生的学号 */ rewind(fp); /* 使位置指针返回文件的开头 */ fread(&student, sizeof(StudentType),1,fp); /* 读入学生的信息 */ while(!feof(fp)) { /* 文件未结束 */ if (strcmp(student.number, number)==0 /* 学生的学号相同 */ && student.status==0 /* 数据状态正常,未作删除标志 */ )break; /* 查询成功 */ fread(&student,sizeof(StudentType),1,fp); /* 读入学生信息 */ } if(!feof(fp)) { /* 查询成功 */ printf("被删除记录为:、n"); printf("%-20s%-10s%-5s%-4d%-20s%-20s%-20s%-15d%\n","学生学号","学生姓名","学生性别","学生年龄","学生籍贯","学生系别","学生专业","学生班级"); printf("%-20s%-10s%-5s%-4d%-20s%-20s%-20s%-15d%\n", /* 输出信息 */ student.number,student.name,student.sex,student.age,student.place,student.department,student.major,student.classnumber); student.status=1; fseek(fp,-sizeof(StudentType), SEEK_CUR); /* 移动文件内部指针 */ fwrite(&student, sizeof(StudentType),1,fp); /* 写入数据 */ } else { /* 查询失败 */ printf("无此编号的学生!\n"); clearerr(fp); /* 清除文件结束标志 */ } } void pack(void) /* 在物理上删除作有删除标记的记录 */ { StudentType student; /* 学生 */ FILE*fpTmp; /* 临时文件指针 */ if ((fpTmp=fopen("book_tmp.dat","wb"))==NULL) { /* 打开文件失败 */ printf("打开文件student_tmp.dat 失败!\n"); /* 错误信息 */ system("PAUSE"); /* 调用库函数system(),输出系统提示信息 */ exit(2); /* 退出程序 */ } rewind(fp); /* 使位置指针返回文件开头 */ fread(&student,sizeof(StudentType),1,fp); /* 读入学生信息 */ while (!feof(fp)) { /* 文件未结束 */ if(student.status==0) /*数据状态正常,未作删除标志 */ fwrite(&student,sizeof(StudentType),1,fpTmp); /* 写入数据 */ fread(&student,sizeof(StudentType),1,fp); /* 继续读入图书信息 */ } fclose(fp); fclose(fpTmp); /* 关闭文件 */ remove("student.dat"); /* 删除文件 */ rename("&student_tmp.dat","student.dat"); /* 更改文件名 */ if ((fp=fopen("student.dat","rb+"))==NULL) { /* 打开 employee.dat失败 */ printf("打开文件student.dat 失败!\n"); /* 错误信息 */ system("PAUSE"); /* 调用库函数system(),输出系统提示信息 */ exit(3); /* 退出程序 */ } } #include<stdio.h> /* 标准输入输出文件包含预处理命令 */ #include<stdlib.h> /* 标准库文件包含预处理命令 */ FILE*fp; /* 定义文件指针 */ int main(void) /* 主函数main() */ { int select; /* 工作变量 */ if ((fp=fopen("student.dat","rb+"))==NULL) { /* student.dat 文件不存在 */ if ((fp=fopen("student.dat","wb+"))==NULL) { /* 打开文件失败 */ printf("打开文件student.dat失败!\n"); /* 错误信息 */ system("PAUSE"); /* 调用库函数system(),输出系统提示信息 */ exit(1); /* 退出程序 */ } } do { printf("\n请选择:\n"); printf("1.增加数据 2.修改数据 3.查找数据 4.删除数据 5.重组数据 6.退出\n"); scanf("%d",&select); /* 输入选择 */ while (select<1||select>6) { printf("请输入1~6的数:"); /* 输入提示 */ scanf("%d",&select); /* 输入选择 */ } switch(select) { case 1: AddData(); /* 增加数据 */ break; case 2: ChangeData(); /* 修改数据 */ break; case 3: SearchData(); /* 查询数据 */ break; case 4: DeleteData(); /* 删除数据,只作删除标志 */ break; case 5: pack(); /* 物理上删除作有标记的记录 */ break; } }while (select!=6); /* 选择6退出循环 */ fclose(fp); /* 关闭文件 */ system("PAUSE"); /* 调用库函数system(),输出系统提示信息 */ return 0; /* 返回值0,返回操作系统 */ }
C语言中数组开辟空间及使用的问题
本人刚刚入门C语言,在学习数组的时候发现一个问题,代码如下,实际功能是将字符串中的大写字母转换成小写,并输出大写字母个数 #include "stdio.h" int main() { int i=0,j=0; char str[i]; scanf("%s",&str[i]); for(i=0;str[i]!='\0';i++) if(str[i]>65&&str[i]<97) { str[i]+=32; j++; } printf("%s\n",str); printf("原字符串中大写字母有%d个\n",j); return 0; } 编译环境是Linux zephyrus 4.10.0-28-generic #32~16.04.2-Ubuntu SMP Thu Jul 20 10:19:13 UTC 2017 i686 i686 i686 GNU/Linux 问题在char str[i]上,我并没有开辟数组的空间大小,而且sizeof(str[i])显示大小为0,但是打印地址时却可以成功打印出str [i]的地址。 我很迷的一点是,我并没有开辟出这个空间,但是这个空间却有地址,既然有地址,就可以按照地址顺序读入数据,那不就相当于我开辟了一个大小可以随意变化的空间?
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
【资源】一个C/C++开发工程师的学习路线(已经无路可退,唯有逆风飞翔)【内附资源页】
声明: 1)该文章整理自网上的大牛和专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。大家都共享一点点,一起为祖国科研的推进...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐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)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
神级宝库!GitHub 标星 1.2w+,Chrome 最天秀的插件都在这里啦!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个沉迷 Chrome 不能自拔的蒟蒻… 作为一个在远古时代用过什么 IE、360、猎豹等浏览器的资深器哥,当我第一次了解 Chrome 的时候,就被它的美貌给吸引住了… 就在我用了一段时间之后,我坚决的卸载了电脑上其它碍眼的浏览器,并觉得在之前的搬砖生涯中,我不配当哥,我只配是个沙雕… ...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
张朝阳回应迟到 1 分钟罚 500:资本家就得剥削员工
loonggg读完需要2分钟速读仅需 1 分钟大家我,我是你们的校长。前几天,搜狐的董事局主席兼 CEO 张朝阳和搜狐都上热搜了。原因很简单,就是搜狐出了“考勤新规”。一封搜狐对员工发布...
立即提问