VS2017在编写C语言的时候 出现 意外的类型:int。

我用VS2017在编写C语言的时候,出现意外的类型:int 怎么解决

c

1个回答

首先我得知道你的代码。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言 编写inputdate函数,接收一个date类型数组和数组大小,输入数组。 输入格式如2017 12 27
Void inputDate(structure Date d[],int n)花括号
用C语言编写简单学生学籍管理系统。有一段已经定义好的函数,求大佬帮忙编写完整。在线急等。求各位大佬帮帮忙,重谢!!
``` #include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> typedef struct { int Id; //学号 char name[10]; //姓名 char sex[2]; //性别 int room; //宿舍号 int tel; //电话号码 } StudentInfo; //定义学生信息的结构体类型 typedef struct { int Id; char courseNo[10]; //课程编号 char courseName[20];//课程名 double a; // 课程学分 double b; // 平时成绩 double c; // 实验成绩 double d; // 卷面成绩 double e; // 综合成绩 double f; // 实际学分 } MarkInfo; //定义课程信息的结构体类型 void ReadFile(); //读取文件 void DisplayMainMenu(); //显示主菜单 void DataInput(); //数据录入 void DataQuery(); //数据查询 void DataDelete(); //数据删除 void DataSort(); //数据排序 void QueryById(int ); //按学号查询 void QueryByRoom(int ); //按宿舍查询 void QueryMark(int ); //按成绩查询 void sort1(); //按综合成绩排序 void sort2(); //按实得学分排序 void markput(); //成绩输出 StudentInfo si[30]; // 学生信息结构数组 MarkInfo mi[150]; // 学生成绩结构数组 int sp=0; // 学生信息结构数组中学生数 int mp=0; // 学生成绩结构数组中成绩数 void ReadFile( )//读取文件 { FILE *fp; if((fp = fopen("A.txt","r"))==NULL) printf("cant open the file\n"); while (!feof(fp)) { fscanf(fp,"%d%s%s%d%d",&si[sp].Id,si[sp].name,&si[sp].sex,&si[sp].room,&si[sp].tel); sp++; } fclose (fp); fp = fopen("B.txt","r"); while (!feof(fp)) { fscanf(fp,"%d%s%s%d%d%d%d",&mi[mp].Id,mi[mp].courseNo,mi[mp].courseName,&mi[mp].a,&mi[mp].b,&mi[mp].c, &mi[mp].d); if (mi[mp].c == -1) mi[mp].e = 0.3*(mi[mp].b/1.0)+0.7*(mi[mp].d/1.0); else mi[mp].e = 0.15*(mi[mp].b/1.0)+0.15*(mi[mp].c/1.0)+0.7*(mi[mp].d/1.0); if(mi[mp].e >= 90. ) mi[mp].f = mi[mp].a; else if ( mi [mp].e >= 80. ) mi[mp].f = mi[mp].a *0.8; else if ( mi[mp].e >= 70. ) mi[mp].f = mi[mp].a *0.75; else if ( mi[mp].e >= 60. ) mi[mp].f = mi[mp].a *0.6; else mi[mp].f = 0; mp++; } fclose(fp); } void DisplayMainMenu() //显示主菜单 { printf ("\n 1) 数据录入 \n 2) 数据查询 \n 3) 数据删除 \n 4) 数据排序 \n 5) 程序结束\n "); } void DataInput()//数据查询 { FILE *fp; int i; printf ("学生的学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩\n"); while(1) { scanf("%d%s%s%d%d%d%d",&mi[mp].Id,mi[mp].courseNo,mi[mp].courseName,&mi[mp].a,&mi[mp].b,&mi[mp].c, &mi[mp].d); if(mi[mp].Id==-1) break; if (mi[mp].c == -1) mi[mp].e = 0.3*mi[mp].b+0.7*mi[mp].d; else mi[mp].e = 0.15*mi[mp].b+0.15*mi[mp].c+0.7*mi[mp].d; if ( mi[mp].e >= 90. ) mi[mp].f = mi[mp].a; else if ( mi [mp].e >= 80. ) mi[mp].f = mi[mp].a *0.8; else if ( mi[mp].e >= 70. ) mi[mp].f = mi[mp].a *0.75; else if ( mi[mp].e >= 60. ) mi[mp].f = mi[mp].a *0.6; else mi[mp].f = 0; mp++; } fp = fopen("B.txt","r+"); for(i=0;i<mp;i++) { fprintf(fp,"%d%s%s%d%d%d%d",&mi[i].Id,mi[i].courseNo,mi[i].courseName,&mi[i].a,&mi[mp].b,&mi[i].c, &mi[i].d); fclose(fp); } } void DataQuery()//数据查询 { int x,y,z; printf("\n 1) 学生基本情况查询\n 2) 成绩查询\n");//--------------------------选择查询内容 scanf("%d",&x); if (x == 1) // 查询学生信息 { printf ("1) 按学号查询 2) 按宿舍查询\n");//-------------------------------选择查询方式 scanf("%d",&y); if (y == 1 ) { printf ("输入学号\n");//-----------------------------------------------按学生学号查询 scanf ("%d",&z); QueryById(z); } if (y == 2) { } if ( x ==2) // 查询成绩信息---------------------------------------查询学生成绩(输入学号) { printf ("输入学号\n"); scanf ("%d",&y); QueryMark(y); } } } void DataDelete()//数据删除 { FILE *fp; int x; int i=0; int k,d; printf( "输入学号\n"); scanf( "%d",&x); while( si[i].Id != x) i++; if (i<sp-1) { for ( k=i; k<sp-1; k++) { si[k] = si[k+1]; } } if ( i<sp) sp--; d = 0; for (k=0;k<mp;k++) { if ( mi[k].Id == x ) d++; else mi[k-d] = mi[k]; } mp = mp - d; fp = fopen("D:B.txt","r+"); for(i=0;i<mp;i++) fprintf(fp,"%d%s%s%d%d%d%d",&mi[i].Id,mi[i].courseNo,mi[i].courseName,&mi[i].a,&mi[i].b,&mi[i].c, &mi[i].d); } void sort1() { int i,j; MarkInfo t; for (i=mp-1;i>=1;i--) { for (j=0;j<i;j++) { if (mi[j].e>mi[j+1].e) { t=mi[j]; mi[j] = mi[j+1]; mi[j+1] = t; } } } markput(); } ``` 这段函数是定义好的,求大佬帮帮忙编写完! 要求:使用下面的数据,用C语言设计一个简单的学籍管理系统,实现出最基本的功能。 学生基本信息文件(A.TXT)及其内容:A.TXT文件不需要编程录入数据,可用文本编辑工具直接生成: 学号 姓名 性别 宿舍号码 电话号码 01 张成成 男 501 87732111 02 李成华 女 101 87723112 03 王成凤 女 101 87723112 04 张明明 男 502 87734333 05 陈东 男 501 87732111 06 李果 男 502 87734333 07 张园园 女 102 87756122 … …. .. … ……….. 学生成绩基本信息文件(B.TXT)及其内容: 学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 实得学分 01 A01 大学物理 3 66 78 82 02 B03 高等数学 4 78 -1 90 01 B03 高等数学 4 45 -1 88 02 C01 VF 3 65 76 66 … …. ………. .. .. … (一) 功能要求及说明: (1) 数据录入功能: 对B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据. 综合成绩、学分由程序根据条件自动运算。 综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%; 如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*.15%+卷面成绩*70% . 实得学分的计算: 采用等级学分制. 综合成绩在90-100之间 ,应得学分=学分*100% 综合成绩在80-90之间 ,应得学分=学分*80% 综合成绩在70-80之间 ,应得学分=学分*75% 综合成绩在60-70之间 ,应得学分=学分*60% 综合成绩在60以下 ,应得学分=学分*0% (2)查询功能:分为学生基本情况查询和成绩查询两种 A:学生基本情况查询: A1----输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。 A2---输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。 B:成绩查询: B1:输入一个学号时,查询出此生的所有课程情况,格式如下: 学 号:xx 姓 名:xxxxx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx … … … … ……… … … 共修:xx科,实得总学分为: xxx (3)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。 (4 ) 排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
c语言位运算,大佬们救救萌新吧
![图片说明](https://img-ask.csdn.net/upload/201911/26/1574739046_205820.png) 定义函数unsigned mod(unsigned a, unsigned b, unsigned c); 功能是计算并返回a*b%c的结果。要求考试a, b, c的范围是大于0且小于 231,程序不能使用64位整型(如:long long类型或__int64)求解。 问题:a*b可能溢出(超出32位unsigned int型的表示范围)。为解决此问题,可用如下算法。 设unsigned型变量b的每个二进制位为xi (i=0,1, …, 31),i=0为最低位,i=31为最高位,则 , 所以 上式中,a*xi的结果或者为a或者为0; *2运算可用左移1位操作实现(小于231的整数*2结果一定小于232, 不会发生溢出); %c的结果是小于c的,而c小于231,它与a求和也不会发生溢出。 编写完整程序,用迭代法实现上述算法。 要求测试b的每个二进制xi位为1或0的操作必须采用位运算实现。 输入提示:"Input unsigned integer numbers a, b, c:\n" 输入格式:"%u%u%u" 输出格式:"%u*%u%%%u=%u\n" 源程序代码:
这是一个关于C语言数据类型的问题
我想编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n, 然后我写了一个代码 ``` #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { float *num; float num1; float sum=0; printf("请输入整数!"); scanf("%f",&num1); num=&num1; if(*num%2==0) {for(float index=1;index<=*num;index++) {if(index%2==0||index==1) sum+=1/(index); } } printf("%f",sum); system("pause"); return 0;} ``` 发现一个很严重的问题。我想用整数型做这个题目,但是这么做,不能存小数点后的数,我想用浮点数做这个题目,但是又不能求余数,进行正常if判断操作,(我的代码就是这个问题)我想用字符来做这个题,但是字符又不好求余数,进行判断,然后进行接下来的操作。。。。 做这种题,有没有万能药匙啊,我思维混乱。。。
询问一个关于C语言输入的问题?
在学C语言版的数据结构时为了方便经常使用ElemType类型,用typedef ElemType+int或其他类型,那么在编写函数时scanf()中的输入数据类型该怎么定义啊?
单片机编写EEPROM时,该程序中为什么只能用<reg52.h>作头文件,而换成<regx52.h>就是错误的呢?
只有用<reg52.h>作头文件时调试正确,而换成<regx52.h>就报错很多。我知道两个头文件中位定义的格式不一样,但把^改成_之后依旧报错。 ``` #include <reg52.h> //此文件中定义了单片机的一些特殊功能寄存器 #include "i2c.h" #include "nixie.h" #include "Delay.h" #include "at24c02.h" typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; sbit k1=P3^1; sbit k2=P3^0; sbit k3=P3^2; sbit k4=P3^3; //定义按键端口 char num=0; u8 disp[4]; /******************************************************************************* * 函数名 :Keypros() * 函数功能 :按键处理函数 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void Keypros() { if(k1==0) { Delay(10); //消抖处理 if(k1==0) { At24c02Write(1,num); //在地址1内写入数据num } while(!k1); } if(k2==0) { Delay(10); //消抖处理 if(k2==0) { num=At24c02Read(1); //读取EEPROM地址1内的数据保存在num中 } while(!k2); } if(k3==0) { Delay(1); //消抖处理 if(k3==0) { num++; //数据加1 if(num>255)num=0; } while(!k3); } if(k4==0) { Delay(10); //消抖处理 if(k4==0) { num=0; //数据清零 } while(!k4); } } /******************************************************************************* * 函数名 :datapros() * 函数功能 :数据处理函数 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void datapros() { disp[0]=num/1000;//千位 disp[1]=num%1000/100;//百位 disp[2]=num%1000%100/10;//十位 disp[3]=num%1000%100%10; //个位 } /******************************************************************************* * 函数名 :DigDisplay() * 函数功能 :数码管显示函数 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void DigDisplay() { u8 i; for(i=0;i<4;i++) { Nixie(i,disp[3-i]); } } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { while(1) { Keypros(); //按键处理函数 datapros(); //数据处理函数 DigDisplay();//数码管显示函数 } } ``` 报错如下: F:\单片机\Keil 4\C51\Inc\reg52.h(13): error C231: 'P0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(14): error C231: 'P1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(15): error C231: 'P2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(16): error C231: 'P3': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(17): error C231: 'PSW': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(18): error C231: 'ACC': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(19): error C231: 'B': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(20): error C231: 'SP': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(21): error C231: 'DPL': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(22): error C231: 'DPH': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(23): error C231: 'PCON': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(24): error C231: 'TCON': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(25): error C231: 'TMOD': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(26): error C231: 'TL0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(27): error C231: 'TL1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(28): error C231: 'TH0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(29): error C231: 'TH1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(30): error C231: 'IE': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(31): error C231: 'IP': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(32): error C231: 'SCON': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(33): error C231: 'SBUF': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(36): error C231: 'T2CON': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(37): error C231: 'RCAP2L': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(38): error C231: 'RCAP2H': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(39): error C231: 'TL2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(40): error C231: 'TH2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(45): error C231: 'CY': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(46): error C231: 'AC': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(47): error C231: 'F0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(48): error C231: 'RS1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(49): error C231: 'RS0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(50): error C231: 'OV': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(51): error C231: 'P': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(54): error C231: 'TF1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(55): error C231: 'TR1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(56): error C231: 'TF0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(57): error C231: 'TR0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(58): error C231: 'IE1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(59): error C231: 'IT1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(60): error C231: 'IE0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(61): error C231: 'IT0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(64): error C231: 'EA': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(65): error C231: 'ET2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(66): error C231: 'ES': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(67): error C231: 'ET1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(68): error C231: 'EX1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(69): error C231: 'ET0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(70): error C231: 'EX0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(73): error C231: 'PT2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(74): error C231: 'PS': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(75): error C231: 'PT1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(76): error C231: 'PX1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(77): error C231: 'PT0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(78): error C231: 'PX0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(81): error C231: 'RD': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(82): error C231: 'WR': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(83): error C231: 'T1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(84): error C231: 'T0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(85): error C231: 'INT1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(86): error C231: 'INT0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(87): error C231: 'TXD': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(88): error C231: 'RXD': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(91): error C231: 'SM0': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(92): error C231: 'SM1': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(93): error C231: 'SM2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(94): error C231: 'REN': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(95): error C231: 'TB8': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(96): error C231: 'RB8': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(97): error C231: 'TI': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(98): error C231: 'RI': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(101): error C231: 'T2EX': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(102): error C231: 'T2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(105): error C231: 'TF2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(106): error C231: 'EXF2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(107): error C231: 'RCLK': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(108): error C231: 'TCLK': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(109): error C231: 'EXEN2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(110): error C231: 'TR2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(111): error C231: 'C_T2': redefinition F:\单片机\Keil 4\C51\Inc\reg52.h(112): error C231: 'CP_RL2': redefinition compiling i2c.c... compiling Delay10us.c... compiling Nixie.c... compiling Delay.c... compiling At24c02.c... Target not created
用c语言编写一个数组排序函数 要求如下
1.既能从小到大也能从大到小 2.对int,unsigned int,const int,double 等类型数组都适用 3.尽量简洁
关于c语言指针变量做函数参数中题目的一些疑问
题目如下:我的问题都在代码的备注里了,求解答!!谢谢!!! 验证卡布列克运算。即:任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律: (1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数; (2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数字中含有0,则得到的数不足四位); (3)求两个数的差,得到一个新的四位数(高位零保留)。 重复以上过程,最后得到的结果总是6174。这个数被称为卡布列克常数。请编写一个递归函数,完成以上的卡布列克运算。 **输入格式要求:"%d" 提示信息:"Enter number:" **输出格式要求:" [%d]:%d-%d=%d\n" 程序运行示例如下: Enter number: 1234 [1]:4321-1234=3087 [2]:8730-378=8352 [3]:8532-2358=6174 ``` #include <stdio.h> int count=0; main() { int n; printf("Enter number:"); scanf("%d",&n); vr6174(n); } vr6174(int num) //为什么函数前面没有类型?这样也可以吗? { int each[4],max,min; if(num!=6174&&num) //这里的第二个num是什么意思? { parse_sort(num,each); max_min(each,&max,&min); num=max-min; printf(" [%d]:%d-%d=%d\n",++count,max,min,num); vr6174(num); } } parse_sort(int num,int *each) { int i,*j,*k,temp; for(i=0;i<=4;i++) { j=each+3-i;//each是什么?j又是什么? *j=num%10; num/=10; } for(i=0;i<3;i++) for(j=each,k=each+1;j<each+3-i;j++,k++) if(*j>*k) { temp=*j; *j=*k; *k=temp;} return; //return什么??? } max_min(int *each,int *max,int *min) { int *i; *min=0; for(i=each;i<each+4;i++)//这里的each是什么 *min=*min*10+*i; *max=0; for(i=each+3;i>=each;i--) *max=*max*10+*i; return; } ```
有一个关于用C语言编写流量控制的问题,请大神帮忙~
#include<stdio.h> #include<string.h> int main() { char str[31],temp[31]; //定义IP地址为32位的字符类型 int a,b,c,d; //定义IP地址的四个字节为a,b,c,d,并且均为整型的 printf("请输入IP地址"); while(gets(str) != NULL); { if(scanf(str,"%d.%d.%d.%d",&a,&b,&c,&d)==4 && a>=0 && a<=255 && b>=0 && b<=255 && c>=0 && c<=255 && d>=0 && d<=255) //IP地址每个字节的范围限制 { printf(temp,"%d.%d.%d.%d",a,b,c,d); if(strcmp(temp,str)==0) { printf("IP地址合法\n"); } else { printf("IP地址不合法\n"); } } else { printf("IP地址不合法\n"); } } return 0; } 在上面的基础上,我想加入一个流量控制的功能,请问怎么编写,请告知,谢谢!
C语言_declspec(dllexport)问题
_declspec(dllexport) void go() { void (**p) ()=003cfd74; *p =00101145; } 我用vs2012编写的时候,()后面我写的003cfd74明明是内存地址啊,为什么都提示“int”类型不能用于初始化“void(**p)()类型的实体啊。小弟新人,求大神帮助啊。
C语言新手求助各位大佬
求组合数(15 分) 本题要求编写程序,根据公式C ​n ​m ​​ = ​m!(n−m)! ​ ​n! ​​ 算出从n个不同元素中取出m个元素(m≤n)的组合数。 建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。 输入格式: 输入在一行中给出两个正整数m和n(m≤n),以空格分隔。 输出格式: 按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。 题目如上 我的代码是 #include "stdio.h" double fact(int n); main() { int m,n; double result; scanf("%d %d",&m,&n); if(m>n) printf("error!!"); else { result=fact(n)/(fact(m)*fact(n-m)); printf("result=%lf",result); } } double fact(int n) { int i,s=1; if(n>1) { for(i=1;i<=n;i++) { s*=i; } return double(s); } if(n=1) s=1; } 找不到问题出在哪里可就是得不到正确的结果 求助555555555QAQ
python题目:英文字符规律统计 答案里map()的功能不明白
题目:英文字符规律统计。编写一个程序,对给定字符串中出现的a-z字母频率进行分析,忽略大小写,采用降序方式输出。 下面是一个网友给的答案,但我有一些又不懂的地方: ``` # 第6章 组合数据类型 # 全国计算机等级考试二级教程 ---Python语言程序设计(2018年版) # caozhilin@mail.dlut.edu.cn s=input('请输入一段英文字符串:') s=s.lower() counts={} for c in s: if 'a'<=i<='z': counts[c]=counts.get(c,0)+1 else: pass items=list(counts.items()) items.sort(key=lambda x:x[1],reverse=True) #获得值信息,字符型 s=list(counts.values()) #获得值信息求和,数字 sumc= sum(map(int,s)) #输出英文频率,不区分大小写 for i in range(len(items)): c,count=items[i] print('{0:<3}{1:>6.2f}%'.format(c,count/sumc*100)) ``` 不是很明白map()函数的用法,这里是是怎么算求和的? 还有话说编程前会不会写一个流程图之类的来理清思路?
C语言 用指针类型编写插入排序疑问???
直接上相关代码: ``` struct process { int id; int arrive_t;//到达时间 int servre_t;//服务时间 int start_t;//服务开始时间 }; struct team { process *pc; team *next; team *pre; }; void sortp() { team *p,*px; int a[20]; int i=0; //plink为链表头结点 for(p=plink->next->next;p;p=p->next)//按照到达时间排序(插入排序) { int key = p->pc->arrive_t; team *py=p->next; a[i]=p->pc->id; //a[i]数组用来查看链表执行序列 //砍掉要比较的那个节点 if(!p->next)//避免最后一个节点指针出错 { p->pre->next=NULL; p->pre=NULL; } else { p->next->pre=p->pre; p->pre->next=p->next; px=p->pre; py=p; p->pre=NULL; p->next=NULL; } for(px;px->pre;px=px->pre)//插入排序 { if(px->pc->arrive_t<key) break; } p->pre=px; px->next->pre=p; p->next=px->next; px->next=p; p=py; py=NULL; //if(!p->next) break; i++; } } ``` 当有两个p->pc->arrive-t 相等并且相邻输入时,链表会在两者之间无限循环
c语言,迷宫问题,救救孩子
该计划以此为基础它基于以下修改。 (1)指定任意位置(row,col)作为目的地而不是出口(EXIT)寻找路径。 (2)不要使用make[] []数组。 (3)当您第一次到达某个位置时,当在8个方向的相邻位置中存在目的地时,路径搜索结束。 (4)每次都随机确定寻找路径的方向。 校正方法的概要如下。 (1)指定DST_ROW和DST_COL的值而不是EXIT_ROW和EXIT_COL (2)当转到位置(i,j)时,将迷宫[i] [j]的值从0修改为-1 (3)如果它到达位置(i,j),它检查是否有8个方向相邻位置(DST_ROW,DST_COL) (4)在回溯中,让我们说(i,j,dV)从堆栈顶部弹出的内容。 dV是表示关于移动方向的信息的方向矢量,并且数据类型是整数。例如,如果dV是41,则它是8位二进制数00101001。每个位可以被称为0位,1位,......,7位来自最低有效位,位0的位0是方向N,位1是方向NE,....位7是方向它对应于西北。比特1表示方向是阻止或已经消失,值0表示尚未尝试方向。在用位置(i,j)回溯之后,从方向矢量的8位的0位指示的方向之一中随机选择尝试的方向。例如,假设dV = 41 = 00101001具有5位0,并且如果选择对应于NW的7位,如果判断移动到NW是合法移动,则移动到该位置,并且在堆栈上移动的值是(i,j,169)。因为8位二进制数10101001是十进制数169。 (A)在所示程序中,编写C代码以填充path()函数中的空白'a'和'b'。 (b)为什么C代码用'a'和'b'写,为什么没有不必要的操作 解释你需要知道和解释的内容。 (c)呈现执行(a)中完成的程序的屏幕,使用的10×10迷宫数据和目的地坐标。 解释你需要解释的内容。 #include "stdafx.h" #include <stdlib.h> #include <math.h> #define TRUE 1 #define FALSE 0 #define numRow 10 #define numCol 10 #define DST_ROW 5 // Destination coordinates row #define DST_COL 6 // Destination coordinates col #define stack_size 100 typedef struct { int row; int col; int dir_vector; // See below for a description of the direction vector. } element; typedef struct { short int vert; short int horiz; } offsets; void setup_maze(); void set_move(); void path(); int init_dir_vector(int row, int col); // Description in function definition int get_next_dir(int dir_vector); // Description in function definition void push(element position); element pop(); int top = -1; offsets move[8]; short int maze[numRow + 2][numCol + 2]; element stack[stack_size]; void main() { setup_maze(); set_move(); path(); } void setup_maze() { int i, j; short int maze0[numRow][numCol] = { { 0,0,1,0,1,1,1,0,1,0 }, { 1,0,0,1,1,1,0,1,0,1 }, { 1,1,0,1,1,0,1,0,1,1 }, { 0,0,1,0,1,1,1,0,0,0 }, { 0,1,1,0,1,0,1,0,1,0 }, { 1,0,1,1,1,1,0,0,1,0 }, { 1,1,0,1,0,1,0,0,1,0 }, { 1,0,0,0,1,0,1,0,0,0 }, { 0,1,0,1,1,1,0,1,1,0 }, { 1,0,0,1,1,1,0,0,0,0 } }; // Inbound coordinates (1,1) are not allowed if (DST_ROW == 1 && DST_COL == 1) { printf("\nThe coordinate of destination should be different from that of entrance (1,1)."); exit(0); } // Destination is not blocked. if (maze0[DST_ROW - 1][DST_COL - 1] == 1) { printf("\nmaze[DST_ROW][DST_COL] should be 0."); exit(0); } for (i = 0; i < numCol + 2; i++) maze[0][i] = 1; for (i = 0; i < numCol + 2; i++) maze[numRow + 1][i] = 1; for (i = 0; i < numRow + 2; i++) maze[i][0] = 1; for (i = 0; i < numRow + 2; i++) maze[i][numCol + 1] = 1; for (i = 1; i <= numRow; i++) for (j = 1; j <= numCol; j++) maze[i][j] = maze0[i - 1][j - 1]; } void set_move() { move[0].vert = -1; move[0].horiz = 0; move[1].vert = -1; move[1].horiz = 1; move[2].vert = 0; move[2].horiz = 1; move[3].vert = 1; move[3].horiz = 1; move[4].vert = 1; move[4].horiz = 0; move[5].vert = 1; move[5].horiz = -1; move[6].vert = 0; move[6].horiz = -1; move[7].vert = -1; move[7].horiz = -1; } void push(element position) { stack[++top] = position; } element pop() { element position; position = stack[top--]; return position; } void path() { int i, row, col, nextRow, nextCol, dir, dir_vector, found = FALSE; element position; row = 1; col = 1; maze[1][1] = -1; dir_vector = init_dir_vector(1, 1); if (dir_vector == -1) found = TRUE; //(1,1)의 바로 이웃에 목적지가 있음 else { top = 0; stack[0].row = 1; stack[0].col = 1; stack[0].dir_vector = dir_vector; } while (top > -1 && !found) { position = pop(); 'A' while (dir < 8 && !found) { nextRow = row + move[dir].vert; nextCol = col + move[dir].horiz; 'B' } } if (found) { printf("The path is:\n"); printf("row col\n"); for (i = 0; i <= top; i++) printf("%2d%5d\n", stack[i].row, stack[i].col); printf("%2d%5d\n", row, col); printf("%2d%5d\n", DST_ROW, DST_COL); } else printf("The maze does not have a path\n"); } int init_dir_vector(int row, int col) { // input: Position coordinates // output: -1 or an integer value in the range 0 to 255 (= 2 ^ 8-1) // // If there is a destination among eight directional neighbors of a location (row, col), return -1 to terminate the route search, // If it does not exist, it initializes a direction vector represented by an integer value ranging from 0 to 255 (= 2 ^ 8-1) // // direction vector: An 8-bit string expressed as an integer value corresponding to its size // call bits 0, 1, ..., 7 from the least significant bit // bit i corresponds to direction i (i = 0, ..., 7). Example: bit 0 is north, bit 1 is north-east, ... // i bit = 1: direction i indicates that you have already tried in the path finding // i bit = 0: Indicate that i has not yet visited direction i // Initialize direction vector of position (row, col): For each of 8 directions of position (row, col), it can not be blocked // Set the corresponding bit of the direction vector to 1 if it has already gone, otherwise set it to 0. // How to perform initialization (below code): If all 8 bits are set to 1 and check each direction, reset the corresponding bit to 0 int dir, nextRow, nextCol, dir_vector; dir_vector = ((int)pow(2.0, 8.0)) - 1; // dir_vector = 255 in decimal, 11111111 in binary (8 bits in all) for (dir = 0; dir < 8; dir++) { nextRow = row + move[dir].vert; nextCol = col + move[dir].horiz; if (nextRow == DST_ROW && nextCol == DST_COL) return -1; // to report that a path is found if (!maze[nextRow][nextCol]) dir_vector -= (int)pow(2.0, (double)dir); } return dir_vector; } int get_next_dir(int dir_vector) { // input: direction vector (an integer value in the range 0-255 (= 2 ^ 8-1)) // output: direction value 0..7 or 8 // // Take the integer value representing the direction vector and set the 1 or 0 value of each 8 bits // Move to an array of size 8 (array d [8] in the code below) // Randomly selects one of the 0 bits and returns the direction value (0..7) corresponding to that bit // If there are no 0 bits, return 8 to do backtrack int dir, d[8], count, k; for (dir = 0; dir < 8; dir++) { d[dir] = dir_vector % 2; dir_vector /= 2; } // count = number of 0 bits in direction vector count = 0; for (dir = 0; dir < 8; dir++) if (d[dir] == 0) count++; if (count == 0) return 8; // Randomly select one of the count 0 bits and return the corresponding direction value (0..7) k = rand() % count + 1; for (dir = 0; dir < 8; dir++) { if (d[dir] == 0) k--; if (k == 0) return dir; } }
C语言链表插入操作,一个函数
Description 已知线性表中元素为整数,且按照升序排列。编写算法实现在线性表中查找值为x的元素,如果查找成功,返回1;否则,返回0,并且把x插入到正确的位置,使线性表仍按升序排列。 依次输出调用查找插入算法后的线性表中的元素。 提示:存储结构采用代表头结点的循环单链表,结点结构如下: typedef struct Node { int data; struct Node *next; }LNode,*LinkList; 要求: (1)编写函数建立循环单链表CreateLinkList(int n),函数返回值类型为LinkList。 LinkList CreateLinkList(int n) { /*按照升序输入n个整数,建立带表头结点的循环单链表*/ } (2) 编写查找函数QueryLinkList(LinkList *L,int x)实现查找并插入功能,函数返回值类型int。 int QueryLinkList(LinkList *L,int x) { /*查找值为x的元素,若查找成功返回1,否则返回0,并把x插入到相应的位置。*/ } (3)编写函数Display(LinkList L),输出线性表中的元素。 (4)main函数调用QueryLinkList()函数,输出查找结果,然后调用Display函数依次输出线性表中的元素。 Input 输入元素个数n 依次输入n个升序排列的整数 输入带查找的元素值x Output 输出查找结果1或者0 依次输出线性表中的元素值 Sample Input sample 1: 6 2 5 8 10 12 16 10 sample2: 6 2 5 8 10 12 16 9 Sample Output sample 1: 1 2 5 8 10 12 16 sample2: 0 2 5 8 9 10 12 16
c语言课程设计:统计工资
2.1 设计题目 本课程设计要求设计一个公司职员的数据结构,并使用结构指针数组存储职员信息,统计公司员工工资总额和平均工资。 2.2 设计要求 设计要求实现如下功能: (1)使用结构指针数组设计一个公司职员的数据结构,使用下述的结构定义: typedef struct employee{ int age; char *name; double salary; }*PEMP; (2)在主函数里构造一个指针数组company,用来存放职工信息。 (3)设计一个update函数,用来给company赋值。 函数update(company, id, age, name, salary)的四个参数为: company: 结构指针数组 id: company的下标 age: 年龄,整数类型 salary: 薪水,实数 (4)设计一个readin函数,直接采用调用update函数的方式进行赋值。例如:update(company, 2, 30, “LI MING”, 3000.0); (5)编写total函数对工资求和。 这个函数应该能对全体职工和某一年龄段的职工的工资求和。 (6)编写mean函数求平均工资。 这个函数应该能对全体职工和大于某一年龄段的职工的工资求和并计算相应的平均值。 2.3 算法分析 为了简单起见,假设在主函数main中定义结构数组指针如下: PEMP company[num]; 下面说明几个函数的设计问题: (1)readin函数 数组company属于main函数,它是不可见的,所以必须作为readin函数的参数。因为参数传递是传地址的方式,所以不需要返回值。以数据为例,这个函数的定义和使用方法如下: void reading(company) PEMP company[]; { update(company, 2, 23, “张文”,3000.0); update(company, 1, 33, “王微”,2400.0); update(company, 2, 23, “李小”,3055.0); } (2)total函数 它也必须以数组company作为参数,而且要返回工资总额。可将它的原型设计为: double total (PEMP *); total函数应该允许输入年龄范围,如果年龄不合理,应该允许重新输入。对输入数据进行判别,确保无误再进行计算。 for( ; ; ) { printf(“输入年龄范围”); scanf(“%d%d”,&age1, &age2) if(age1>age2) { i=age1; age1=age2; age2=i; } if((age1>=0)&&(age2<=100)&&(age2>=0)&&(age2<=100)&&(age2>age1)) break; } (3)mean函数 mean函数也必须以数组company作为参数,而且要返回平均工资。将它的函数原型设计为: double mean (PEMP *); mean函数应该允许输入年龄范围。对输入字符进行判别,确保无误再进行计算,注意允许大小写。 printf(“求某一年龄段以上的职工的平均工资\n”); printf(“默认是全体职工的平均工资,要改变计算方式请输入Y/y\n”); getchar(); ch=getchar(); if(ch==’Y’||ch=’y’) { printf(“age:”); scanf(“%d”,&age); } (4)申请内存 在update函数中,需要申请内存空间。 PEMP emp If((emp=(PEMP) malloc (sizeof(struct employee)))==NULL)return; 注意emp是指针,所以要使用sizeof(struct employee)。
用C语言编写学生信息录入系统,没有输入完毕直接跳出是什么原因
#include <stdio.h> /*标准输入/输出函数库*/ #include <stdlib.h> /*标准函数库*/ #include <string.h> /*字符串函数库*/ //学生信息数据类型定义 typedef struct student { char name[20]; /*姓名*/ int num[10]; /*学号*/ char sex[10]; /*性别*/ float chinese[10]; /*语文成绩*/ float math[10]; /*数学成绩*/ float english[10]; /*英语成绩*/ float computer[10]; /*计算机成绩*/ struct student *next; }stu; //主要处理函数定义; stu *head=NULL; stu *plaststu=NULL; void print_menu_main(); void input_record() /*成绩录入子函数*/ {char a; do { stu *pnewstu=(stu*)malloc(sizeof(stu)); system("cls"); printf(">请输入学生姓名(注:最大长度为十个字符):\n"); printf("姓名:"); scanf("%s",pnewstu->name); printf("学号:"); scanf("%d",pnewstu->num); printf("性别:"); scanf("%s",pnewstu->sex); printf("语文成绩:"); scanf("%3.0f",pnewstu->chinese); printf("数学成绩:"); scanf("%3.0f",pnewstu->math); printf("英语成绩:"); scanf("%3.0f",pnewstu->english); printf("计算机成绩:"); scanf("%3.0f",pnewstu->computer); if(head==NULL) { plaststu=pnewstu; head=pnewstu; } else { pnewstu->next=pnewstu; plaststu=pnewstu; } printf("继续输入吗?"); scanf("%c",&a); } while(a=='Y'); print_menu_main(); } void show_record() { int key_b_in; printf("欢迎进入成绩显示功能:"); scanf("%d",&key_b_in); if(key_b_in==2) {system("cls"); print_menu_main(); } } /*成绩显示子函数*/ void search_record() { int key_b_in; printf("请问你要查询哪些信息呢:"); scanf("%d",&key_b_in); if(key_b_in==3) {system("cls"); print_menu_main(); } } /*成绩查询子函数*/ void update_record() { int key_b_in; printf("请问你要更新哪些信息呢:"); scanf("%d",&key_b_in); if(key_b_in==4) {system("cls"); print_menu_main(); } } /*成绩更新子函数*/ void delete_record() { int key_b_in; printf("请问你要删除哪些信息呢:"); scanf("%d",&key_b_in); if(key_b_in==5) {system("cls"); print_menu_main(); } } /*成绩删除子函数*/ void calculate_record() { int key_b_in; printf("请问你要如何计算成绩呢:"); scanf("%d",&key_b_in); if(key_b_in==6) {system("cls"); print_menu_main(); } } /*成绩计算子函数*/ void save_record() { int key_b_in; printf("请问你要保存哪些信息呢:"); scanf("%d",&key_b_in); if(key_b_in==7) {system("cls"); print_menu_main(); } } /*成绩保存子函数*/ void exit_system () { exit(0);} /*退出系统子函数*/ //显示主菜单界面函数定义 void print_menu_main() { int key_b_in; printf("======================================================================\n"); 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("| 7 保存文件\n"); printf("| 8 退出系统\n"); printf("|\n"); printf("======================================================================\n"); printf(">请选择:"); scanf("%d",&key_b_in); switch(key_b_in) { case 1:input_record();break; case 2:show_record();break; case 3:search_record();break; case 4:update_record();break; case 5:delete_record();break; case 6:calculate_record();break; case 7:save_record();break; case 8:exit_system();break; default:printf("输入错误,请重输入!(注意:输入有效范围为1-8)\n"); } } //主函数 main() { print_menu_main(); }
一道C语言用结构体排序的题目 大神快来帮我理解下人家的代码~~~
描述 小王是公司的仓库管理员,一天,他接到了这样一个任务:从仓库中找出一根钢管。这听起来不算什么,但是这根钢管的要求可真是让他犯难了,要求如下: 1、 这根钢管一定要是仓库中最长的; 2、 这根钢管一定要是最长的钢管中最细的; 3、 这根钢管一定要是符合前两条的钢管中编码最大的(每根钢管都有一个互不相同的编码,越大表示生产日期越近)。 相关的资料到是有,可是,手工从几百份钢管材料中选出符合要求的那根…… 要不,还是请你编写个程序来帮他解决这个问题吧。 输入 第一行是一个整数N(N<=10)表示测试数据的组数) 每组测试数据的第一行 有一个整数m(m<=1000),表示仓库中所有钢管的数量, 之后m行,每行三个整数,分别表示一根钢管的长度(以毫米为单位)、直径(以毫米为单位)和编码(一个9位整数)。 输出 对应每组测试数据的输出只有一个9位整数,表示选出的那根钢管的编码, 每个输出占一行 样例输入 2 2 2000 30 123456789 2000 20 987654321 4 3000 50 872198442 3000 45 752498124 2000 60 765128742 3000 45 652278122 样例输出 987654321 752498124 看到一个代码是这样子的: #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; struct m { int a;//长度 int b;//直径 int c;//编号 } s[1001]; bool cmp1(m x,m y) { //长度大到小排序 return x.a>y.a; } bool cmp2(m x,m y) { //半径小到大排序 return x.b<y.b; } bool cmp3(m x,m y) { //编码从大到小排序 return x.c>y.c; } int main() { int N; scanf("%d",&N); while(N--) { int n;//钢管数量 scanf("%d",&n); int i,j=0,k=0; for(i=0; i<n; i++) scanf("%d%d%d",&s[i].a,&s[i].b,&s[i].c); sort(s,s+n,cmp1); for(i=0; i<n; i++) if(s[i].a==s[0].a) j++; sort(s,s+j,cmp2); for(i=0; i<j; i++) if(s[i].b==s[0].b) k++; sort(s,s+k,cmp3); printf("%d\n",s[0].c); memset(s,0,sizeof(s)); } return 0; } 然后就是不太理解那个cmp函数那块 bool类型的函数在括号里的m是什么意思呢 不定义bool类型的话,定义成int那结构体还能实现排序吗?
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体
小白如何学习java?
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
羞,Java 字符串拼接竟然有这么多姿势
二哥,我今年大二,看你分享的《阿里巴巴 Java 开发手册》上有一段内容说:“循环体内,拼接字符串最好使用 StringBuilder 的 append 方法,而不是 + 号操作符。”到底为什么啊,我平常一直就用的‘+’号操作符啊!二哥有空的时候能否写一篇文章分析一下呢? 就在昨天,一位叫小菜的读者微信我说了上面这段话。 我当时看到这条微信的第一感觉是:小菜你也太菜了吧,这都不知道为啥啊!我估
"狗屁不通文章生成器"登顶GitHub热榜,分分钟写出万字形式主义大作
前言 GitHub 被誉为全球最大的同性交友网站,……,陪伴我们已经走过 10+ 年时间,它托管了大量的软件代码,同时也承载了程序员无尽的欢乐。 上周给大家分享了一篇10个让你笑的合不拢嘴的Github项目,而且还拿了7万+个Star哦,有兴趣的朋友,可以看看, 印象最深刻的是 “ 呼吸不止,码字不停 ”: 老实交代,你是不是经常准备写个技术博客,打开word后瞬间灵感便秘,码不出字? 有什么
推荐几款比较实用的工具,网站
1.盘百度PanDownload   这个云盘工具是免费的,可以进行资源搜索,提速(偶尔会抽风......) 不要去某站买付费的......   PanDownload下载地址   2.BeJSON 这是一款拥有各种在线工具的网站,推荐它的主要原因是网站简洁,功能齐全,广告相比其他广告好太多了     bejson网站   3.二维码美化 这个网站的二维码美化很好看,网站界面
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
碎片化的时代,如何学习
今天周末,和大家聊聊学习这件事情。 在如今这个社会,我们的时间被各类 APP 撕的粉碎。 刷知乎、刷微博、刷朋友圈; 看论坛、看博客、看公号; 等等形形色色的信息和知识获取方式一个都不错过。 貌似学了很多,但是却感觉没什么用。 要解决上面这些问题,首先要分清楚一点,什么是信息,什么是知识。 那什么是信息呢? 你一切听到的、看到的,都是信息,比如微博上的明星出轨、微信中的表情大战、抖音上的段子
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。 背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法 不过,当我看了源代码之后 这程序不到50行 尽管我有多年的Python经验,但我竟然一时也没有看懂 当然啦,原作者也说了,这个代码也是在无聊中诞生的,平时撸码是不写中文变量名的, 中文...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
基础拾遗:除了&和&&的区别,你还要知道位运算的这5个运算符
&和&&都可作逻辑与的运算符,表示逻辑与(and),&是位运算符,你还需要知道这5个位运算符,基础很重要,云运算其实很骚!
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问