求教大神scanf 语句 输入控制符之间可以加逗号吗?

include

include

int main(void)
{
int i, j;
scanf_s("%d,%d", &i, &j);
if (i>j)
printf("i 大于 j");
else
printf("i 小于 j");
system("pause");
return 0;
}

无论我输入3,4 还是 4,3 输出结果都是 i 大于 j
当我把 scanf_s("%d,%d", &i, &j);>>scanf("%d %d",&i, &j);
输入3 4 或者 4 3 输出结果都正确
请问大神scanf 语句中输入控制符之间不可以加逗号吗? 只可以用空格吗?

2个回答

可以是逗号,但是你输入的时候要分清楚是输入半角的逗号,而不是中文全角的,否则不认

weixin_45631165
weixin_45631165 谢谢!
5 个月之前 回复
scanf_s("%d,%d", &i, 1,&j,1);
在**调用scanf_s()**时,必须提供一个数字以表明最多读取多少位字符。

https://baike.baidu.com/item/scanf_s

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
使用scanf语句输入时,加逗号和不加逗号为何出现不同
# 这个是没有在scanf中使用逗号 ``` #include<stdio.h> #include<stdlib.h> #include<math.h> int main() { double x, y,p,q,h,j; printf("请输入坐标:"); scanf_s("%lf%lf",&x, &y); p = pow((x - 2), 2); q = pow((y - 2), 2); h = pow((x + 2), 2); j = pow((y + 2), 2); if ((p + q <=1) || (p + j <= 1) || (h + q <= 1) || (h + j <= 1)) printf("建筑物高为:10m\n"); else printf("建筑物高为:0m\n"); system("pause"); return 0; } ``` ![图片说明](https://img-ask.csdn.net/upload/201904/25/1556160087_962764.png) ![图片说明](https://img-ask.csdn.net/upload/201904/25/1556160097_708631.png) ##这个是在scanf中使用逗号 ``` #include<stdio.h> #include<stdlib.h> #include<math.h> int main() { double x, y,p,q,h,j; printf("请输入坐标:"); scanf_s("%lf,%lf",&x, &y); p = pow((x - 2), 2); q = pow((y - 2), 2); h = pow((x + 2), 2); j = pow((y + 2), 2); if ((p + q <=1) || (p + j <= 1) || (h + q <= 1) || (h + j <= 1)) printf("建筑物高为:10m\n"); else printf("建筑物高为:0m\n"); system("pause"); return 0; } ``` ![图片说明](https://img-ask.csdn.net/upload/201904/25/1556160109_264480.png) ![图片说明](https://img-ask.csdn.net/upload/201904/25/1556160116_367754.png)
求助大神,scanf语句的问题
scanf语句放在循环语句中的开头和结尾有什么区别?谢谢大神![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/1.gif)
这是一个关于C语言scanf语句的吃字符问题
``` #include<stdio.h> #include<stdlib.h> int main() { int month=0; int day=0; int result=0; int days[]={31,28,31,30,31,30,31,31,30,31,30,31}; printf("请输入您选择的月日"); scanf("%d,%d",&month,&day); for(int num=0;num<12;num++) { if(num<month) result+=days[num]; else result+=day; } printf("%d",result); system("pause"); return 0;} ``` 以上是我的全部代码,执行scanf语句的时候,在输入第一个整数后,输入逗号,在输入第二个整数,会吃掉第一个数字,这是为什么呢
Python语言当中,有没有类似Java的scanf一样的语句,可以方便输入的
Python语言当中,有没有类似Java的scanf一样的语句,可以方便输入的 写一个程序给我看看,谢谢
这是一个关于C语言的scanf语句的问题
``` int a scanf("%d",&a); ``` 这是一个很简单的输入语句,我想问的是,a前面为什么要加&呢。 %d格式符表示的是整数类型,但是后面的a前面加上&的话就是整数指针类型了。 因为有取地址符号嘛。二者类型没有统一。求大佬们解答
scanf_s输入多个变量后,变量值发生变化
如题,b,c的值并不是我输入的值 ``` #include<stdio.h> #include<string.h> main() { int a, b, c; scanf_s("%d,%d,%d", &a, &b, & c); printf("%d\n", a); printf("%d\n", b); printf("%d\n", c); } ``` ``` 1,2,3 1 -858993460 -858993460 C:\Users\jyz_1\source\repos\Project2\Debug\Project2.exe (进程 11596)已退出,代码为 0。 ``` 初学C,不明白为什么,请指教
大佬们 秋梨膏这个是什么原因导致输入无法成功保存输入内容的?
``` # include <stdio.h> # include <malloc.h> struct student{ char name[100]; int score; }; void inputstudent(struct student *, int); void outputstudent(struct student *, int); void sort(struct student *,int); int main() { struct student * st; int len,i; printf("请输入有几个学生"); scanf("%d",&len); st = (struct student *)malloc(sizeof(struct student)*len); for (i=0; i<len; i++) inputstudent(st+i,i); sort(st,len); for (i=0; i<len; i++) { outputstudent(st+i,i); } return 0; } void inputstudent(struct student * qst, int n) { printf("请输入学生名字 "); scanf("%s",&qst[n].name); printf("请输入该学生的成绩 "); scanf("%d",&qst[n].score); } void outputstudent(struct student * pst, int n) { printf("名字:%s 成绩:%d\n",pst[n].name,pst[n].score); } void sort(struct student * p, int n) { int i,j; struct student t; for (j=1; j<n; j++) { for (i=0; i<n; i++) { if (p[i].score<p[i+1].score) { t = p[i]; p[i] = p[i+1]; p[i+1] = t; } } } } ```
求教大神 为什么调试之后j 和 k都是 -858993460
# include <stdio.h> # include <stdlib.h> int main(void) { int i, j, k; printf("请输入三个值,中间以逗号分割:\n"); scanf_s("%d, %d, %d", &i, &j, &k); printf("i = %d , j = %d , k = %d", i, j, k); system ("pause"); return 0; } 求教大神 为什么调试之后j 和 k都是 -858993460
不知道为什么程序没有响应
问题:猴子第一天摘了若干个桃子,吃了一半,不过瘾,又多吃了1个。第二天早上将剩余的桃子又吃掉一半,并且又多吃了1个。此后每天都是吃掉前一天剩下的一半零一个。到第n天再想吃时,发现只剩下1个桃子,问第一天它摘了多少桃子?为了加强交互性,由用户输入不同的天数n进行递推,即假设第n天的桃子数为1。同时还要增加对用户输入数据的合法性验证(如:不允许输入的天数是0和负数) ![图片说明](https://img-ask.csdn.net/upload/202002/10/1581301740_536112.jpg) 我的代码是这样的: #include <stdio.h> #include <math.h> #include <stdlib.h> int main() { int ret,day,i=1,sum=1; printf("Input days:\n"); scanf("%d",&day); do { ret=scanf("%d",&day); while((ret!=1)||(day<=0)) { printf("Input days:\n"); while(getchar()!='\n'); fflush(stdin); ret=scanf("%d",&day); } sum=(sum+1)*2; i++; }while(i<day); printf("sum=%d\n",sum); return 0; } 运行代码后,输入3敲下回车键后程序没有任何响应,但是去除第一个“ret=scanf("%d",&day);”后就有响应了,但是输入3敲回车键后依然会重复多一次“Input days”并输入3后才会出现sum=10,可以麻烦各位大神看看到底哪里出问题了吗?谢谢各位da'shen!!
我写了一个题,但答案不对,求助各位热心大神,谢谢
![图片说明](https://img-ask.csdn.net/upload/202002/09/1581249597_308460.jpg) 以下是我写的,但是不对 #include<stdio.h> #include<math.h> int main(){ double sum=0; int m,n,i,count=0; scanf("%d%d",&n,&m); while(scanf("%d%d",&n,&m)==2&&n!=m) { for(i=n;i<=m;i++){ sum+=1.0/pow(i,2); } printf("case %d: %.5f",++count,sum); scanf("%d%d",&n,&m); } }
c语言10位数排序问题,过程无误却无法输出正确结果?
#include<stdio.h> int main() { int a[10]; int i,j,t; printf("请输入10个数:\n"); for(i=0;i<=9;i++) scanf("%d",&a[i]); for(i=0;i<=8;i++) for(j=i+1;j<=9;j++) if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } printf("输出的顺序为:\n"); for(i=0;i<=9;i++) printf("%d\t",&a[i]); printf("\n"); return 0; } 以上为所写代码,实在是没找出错误,但是输出结果如下图: ![图片说明](https://img-ask.csdn.net/upload/202002/14/1581681911_110894.png) 求指点555,太纳闷了! 非常感谢
关于01背包代码的一些问题
1.main函数使用了堆栈的“41216”个字节: 超过了 /analyze:stacksize '16384'。 请考虑将某些数据移到堆中。这个应该怎么解决? 2.以下见代码:(报错信息在注释中) ``` #include<stdio.h> int max(int a, int b) { if (a >= b)return a; else return b; } main() { int n, c; int w[100], v[100]; int i, j; int m[100][100];//已有价值和剩余容量 int put[100];//是否放置 scanf_s("%d %d", &n, &c); for (i = 0;i < n;i++) { scanf_s("%d", &w[i]); } for (i = 0;i < n;i++) { scanf_s("%d", &v[i]); } for (i = 0;i < n;i++) { for (j = c;j >= 0;j--){ if (w[i] <= j) {//如果装得下 m[i][j]= max(m[i - 1][j - w[i]] + v[i], m[i - 1][j]); } else { m[i][j] = m[i - 1][j]; } } } printf("%d\n", m[n - 1][c]);//可读大小为40000个字节,但可能读取了-400个字节 for (i = 0;i < n;i++) { for (j = c;j >= 0;j--) { if (m[i][j] == m[i - 1][j])put[i] = 0; else put[i] = 1; } } for (i = 0;i < n;i++) { printf("%d", put[i]); printf(" "); } } ``` 又:报错行的c是否该改为0?因为如果按照j表示剩余容量的设定,应该输出剩余容量为0时的最大价值 请各位大佬指教
PTA帅到没朋友中间两个测试点是什么,求教
###帅到没朋友 ##题目如下 ![](https://img-ask.csdn.net/upload/202002/05/1580913778_960291.png) ![图片说明](https://img-ask.csdn.net/upload/202002/05/1580913829_940322.png) ![图片说明](https://img-ask.csdn.net/upload/202002/05/1580913854_423152.png) ![图片说明](https://img-ask.csdn.net/upload/202002/05/1580913899_356926.png) ##代码如下 ``` #include"stdio.h" int main() { int x,a[1000000],y,shuzi;//利用数组编号来储存ID scanf("%d",&x); for(;x>0;x--) { scanf("%d",&y); for(;y>0;y--) { scanf("%d",&shuzi); a[shuzi]++;//输入的对应数组元素不为零 } } int X,Y,flag=0; scanf("%d",&X); for(;X>0;X--) { scanf("%d",&Y); if(!a[Y]) { if(flag) printf(" "); printf("%05d",Y); a[Y]=1;//防止多次输出 flag++; } } if(!flag) printf("No one is handsome"); return 0; } ``` 救救孩子,改了整整两天,也看了网上很多份答案,始终找不出我错在哪里 感觉学下去的动力都没有啦,谢谢各位大佬!!!
C语言 VS2019 我自己写的代码无法通过PTA题目5-6 但博主答案编译有明显错误但是为什么通过了
先贴出题目 ![图片说明](https://img-ask.csdn.net/upload/202002/15/1581741201_439491.png) 计算水仙花数 ``` int narcissistic( int number ); void PrintN( int m, int n ); #include <stdio.h> int narcissistic( int number ); void PrintN( int m, int n ); int main() { int m, n; scanf("%d %d", &m, &n); if ( narcissistic(m) ) printf("%d is a narcissistic number\n", m); PrintN(m, n); if ( narcissistic(n) ) printf("%d is a narcissistic number\n", n); return 0; } /* 你的代码将被嵌在这里 */ ``` 下面是我的答案 由于题目里面没有包含MATH.H函数 所以我自己写了一个输出指数的函数;我的代码在VS2019上面调试模式找了很久都不知道为什么不能通过测试 ``` int narcissistic(int number) { int a = number; int b = number; int leng = 0; int sum = 0; for (; a > 0; a /= 10)leng++;//整数的位数 a = number; for (int c = 0; c < leng; c++) //判断水仙花数 { b = a % zhishu(10, c); sum = sum + zhishu(b, leng); a /= 10; } if (sum == number)return 1; return 0; } void PrintN(int m, int n) { for (int a = m + 1; a < n; a++) { if (narcissistic(a))printf("%d\n", a); } } int zhishu(int num, int times)///输出指数 { int a = 0; int b = num; for (; a < times - 1; a++) { b = b * num; } return b; } ``` 但是我找到的网上的答案却可以通过测试 下面是网上的代码 他使用了POW函数 但是返回了一个不正确的的值 却通过了测试 ``` int narcissistic(int number) { int i, n = 0, sum = 0, cnt = 0; n = number; while (n) { cnt++; n /= 10; } n = number; while (n) { i = n % 10; sum += (int)pow(i, cnt); n /= 10; } if (sum == number) return 1; else return 0; } void PrintN(int m, int n) { int i; for (i = m + 1; i < n; i++) if (narcissistic(i)) printf("%d\n", i); } ``` ![图片说明](https://img-ask.csdn.net/upload/202002/15/1581741919_663400.png) 可以看到他的SUM函数明显数值不对 但是为什么能通过测试呢
用VC++2010运行时,输入10个数后,窗口退出,怎么解决?
``` #include <stdio.h> int main() { int a[10]; int i,j,t; printf("请输入十个面积:\n"); for(i=0;i<=9;i++) scanf("%d",&a[i]); for(i=0;i<=8;i++) for(j=i+1;j<=9;j++) if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } printf("排序后的面积依次是:\n"); for(i=0;i<=9;i++) printf("%d\t",a[i]); printf("\n"); return 0; } ```
请问要怎么释放哈夫曼编码里面w.Weight与w.ch的动态分配的空间(后面的代码里面标记的地方系统说操作数类型不兼容(int 和int *,int和char*)想问下该怎么修改?)
#include<cstring> #include "malloc.h" #include<iostream> #include<stdio.h> #define MAX 65535 typedef struct{ unsigned int Weight; unsigned int Parent, LChild, RChild; }HuffmanTreeNode, *HuffmanTree; typedef struct{ char *ch; //动态分配空间,用来储存待编码的字符 int *Weight; //动态分配空间,用来储存待编码的字符的相应权重 int Count; //动态分配空间,用来储存待编码的字符 }WeightAndInfo; //待编码字符的个数 typedef char ** HuffmanCode; void CreateHuffmanTree_Code(HuffmanTree *HT, HuffmanCode *HC, int *w, int n); void Select(HuffmanTree HT, int i, int *s1, int *s2); //在HT中选择Parent为0且Weight最小的两个结点,其序号分别为s1和s2 int main() { HuffmanCode chCode; int i; HuffmanTree HufTree = NULL; WeightAndInfo w; printf("请分别输入待编码字符的个数和待编码字符及权重:\n"); scanf_s("%d\n", &w.Count); //输入待编码字符的个数 //为指向哈夫曼编码的空间的头指针分配空间 chCode = (HuffmanCode)malloc((w.Count + 1)*sizeof(char *)); //为待编码的字符的权重分配空间 w.Weight = (int *)malloc(w.Count*sizeof(int)); w.ch = (char *)malloc(w.Count*sizeof(char)); //为待编码字符分配空间 for (i = 0; i < w.Count; i++) { scanf_s("%d,%c", &(w.Weight[i]), &(w.ch[i])); } //输入待编码的字符及相应权重 //创建哈夫曼树及哈夫曼编码 CreateHuffmanTree_Code(&HufTree, &chCode, w.Weight, w.Count); for (i = 1; i < w.Count; i++) printf("待编码的字符 ch 是 %c,对应的权重Weight为 %d,相应的哈夫曼编码 code为 %s\n", w.ch[i - 1], w.Weight[i - 1], chCode[i]); int getch(void); //? for (i = 1; i <= w.Count; i++) //释放动态分配的内存 if (chCode[i]) free(chCode[i]); free(chCode);//一些动态分配的空间没有被释放如w.Weight、w.ch等,请补充完整…… //从这里开始是我按照上面的弄的 for (i = 1; i <= w.Weight; i++) //释放动态分配的内存 if (chCode[i]) free(chCode[i]); free(chCode); for (i = 1; i <= w.ch; i++) //释放动态分配的内存 if (chCode[i]) free(chCode[i]); free(chCode); //到这里麻烦大佬们帮我看看 } void CreateHuffmanTree_Code(HuffmanTree *HT, HuffmanCode *HC, int *w, int n) { //创建哈夫曼树及求哈夫曼编码 int m, s1, s2, i, c, start, f; char *cd; HuffmanTree p; if (n < 1) return; m = 2 * n - 1; (*HT) = (HuffmanTree)malloc((m + 1)*sizeof(HuffmanTreeNode)); for (p = *HT, i = 1; i <= n; i++) { p[i].Weight = w[i - 1]; p[i].Parent = 0; p[i].LChild = 0; p[i].RChild = 0; } for (; i <= m; i++) { p[i].Weight = 0; p[i].Parent = 0; p[i].LChild = 0; p[i].RChild = 0; } for (i = n + 1; i <= m; i++) { Select(*HT, i - 1, &s1, &s2); (*HT)[s1].Parent = i; (*HT)[s2].Parent = i; (*HT)[i].LChild = s1; (*HT)[i].RChild = s2; (*HT)[i].Weight = (*HT)[s1].Weight + (*HT)[s2].Weight; } cd = (char *)malloc(n*sizeof(char)); cd[n - 1] = '\0'; for (i = 1; i <= n; i++) { start = n - 1; for (c = i, f = (*HT)[i].Parent; f != 0; c = f, f = (*HT)[f].Parent) if ((*HT)[f].LChild == c) cd[--start] = '0'; else cd[--start] = '1'; (*HC)[i] = (char *)malloc((n - start)*sizeof(char)); strcpy_s((*HC)[i], 99, &cd[start]); } free(cd); } void Select(HuffmanTree HT, int i, int *s1, int *s2) { //在HT中选择Parent为0且Weight最小的两个结点,其序号分别为s1和s2 int j; int min; min = MAX; for (j = 1; j <= i; j++) { if (HT[j].Parent == 0 && HT[j].Weight <= min) { *s1 = j; min = HT[j].Weight; } } HT[*s1].Parent = *s1; min = MAX; for (j = 1; j <= i; j++) { if (HT[j].Parent == 0 && HT[j].Weight <= min) { *s2 = j; min = HT[j].Weight; } } HT[*s2].Parent = *s2; system("pause"); }//CreateHuffmanTree_Code
关于scanf输入字符串是换行符的问题,请教
``` #include<stdio.h> int main(){ char str[100]; while(scanf("%[^\n]s",str)!=EOF){ getchar(); printf("%s",str);}} ``` 上面代码为什么每次循环输入后用getchar吸收换行符而下面代码不用呢 ``` #include<stdio.h> #include<string.h> char ch[100]= {0}; int main() { int n, i = 0; scanf("%d", &n); while(n) { scanf("%s", ch); n--; printf("%s\n ", ch); } } ```
这是一个关于C语言的输入语句scanf的问题
``` /* zheng int is divided yinshu*/ #include "stdio.h" #include "conio.h" int main() { int year,month,day; int sum=0; int leap=0; printf("请输入年月日"); scanf("年:%d月:%d日:%d",year,month,day); int jan=31,feb=28+jan,may=31+feb,apr=30+may,mar=31+apr,june=30+mar,july=31+june,aug=31+july, sept=30+aug,oct=31+sept,nov=30+oct; if((year%400==0)||((year%4)&&(year%100!=0))) leap++; switch(month) { case 1:printf("天数:%d",day);break; case 2:printf("天数:%d",jan+day);break; case 3:printf("天数:%d",feb+day+leap);break; } getch(); return 0; } ``` 这是我写的一个判断日子数的小程序。代码是没有问题的,我有个地方不太明白,scanf输入这块执行的时候,值不能都输进去。好奇怪。编译器也没有报错滴啊
广度优先搜索树 非连通图的遍历
在数据结构教程里,有一章是实现广度优先遍历非联通图,然后把遍历的图的节点 存在树的结构里,树的储存方式是孩子兄弟表示法。当我运行代码后,输入 了图的节点和节点之间的关系: 13,13 1 2 3 4 5 6 7 8 9 10 11 12 13 1,2 1,3 1,6 1,12 2,13 4,5 7,8 7,10 7,9 8,10 11,12 11,13 12,13 该有的结果应该是: 1 2 13 3 6 12 11 4 5 7 8 9 10 可我运行的结果是123 \n 456,也就是说function BFSForest根本没有被执行。 哪位大神可以帮我看看问题出在哪,谢谢! 以下是我的代码。 ``` #include <stdio.h> #include <stdlib.h> #define MAX_VER_NUM 20 //图的最大节点数 #define VRTYPE int //弧的类型 #define VertexType int //节点类型 typedef enum {false,true} bool; bool visited[MAX_VER_NUM]; typedef struct { VRTYPE adj; }adjMatrix[MAX_VER_NUM][MAX_VER_NUM];//图的邻接矩阵 typedef struct { VertexType ver[MAX_VER_NUM]; adjMatrix arcs; int num_vex,num_arcs; }MGraph;//图的结构体 typedef struct { VertexType data; struct gNode* lchild; struct gNode* nextsibling; }gNode;//生成树的节点,用孩子兄弟表示法 typedef struct { struct QueueCell *next; gNode *node; }QueueCell;//队列的节点 typedef struct { QueueCell *top; QueueCell *tail; }Queue;//定义队列的结构体 void initQueue(Queue **q) { if(!*q) { *q=(Queue*)malloc(sizeof(Queue)); (*q)->top=(QueueCell*)malloc(sizeof(QueueCell)); (*q)->top->next=NULL; (*q)->top->node=NULL; (*q)->tail=(*q)->top;//空队列头和尾巴在一起 } } int isEmpty(Queue *q) { if(q->tail==q->top)//空队列头和尾巴在一起 { return 1; } return 0;//如果判定结果为错,必须返回0,而不能是-1 } void EnQueue(Queue **q,gNode *g) { if(isEmpty(*q))//当队列为空时,头指针的next指针指向进队的节点 { QueueCell *c=(*q)->top->next; c->node=g; (*q)->tail=c; } else//如果队列不为空,头指针不变,更新尾巴 { QueueCell *c=(*q)->tail->next; c->node=g; (*q)->tail=c; } } gNode* DeQueue(Queue **q) { QueueCell *c=(*q)->top->next; (*q)->top->next= c->next; if(!(c->next))//出队后,队列为空时,尾巴重新指向头结点 { (*q)->tail=(*q)->top; } return c->node; } int locateVex(MGraph *G,VertexType v) { for(int i=0;i<G->num_vex;i++) { if(G->ver[i]==v) { return i; } } return -1; } void createGraph(MGraph *G) { scanf("%d,%d",&(G->num_vex),&(G->num_arcs));//输入图的节点数和弧的数量 for(int i=0;i<G->num_vex;i++) { scanf("%d",&(G->ver[i]));//输入图每个节点的值 } for(int i=0;i<G->num_vex;i++)//初始化邻接矩阵 { for(int j=0;j<G->num_vex;j++) { G->arcs[i][j].adj=0; } } for(int i=0;i<G->num_arcs;i++)//更新邻接矩阵 { VertexType v1,v2; scanf("%d,%d",&v1,&v2); int n1=locateVex(G,v1); int n2=locateVex(G,v2); if(n1==-1||n2==-1) { printf("no such vertex"); exit(-1); } G->arcs[n1][n2].adj=1; G->arcs[n2][n1].adj=1; } } int firstAdjVex(MGraph *G,int v)//找到指定节点第一个相邻节点 { for(int i=0;i<G->num_vex;i++) { if(G->arcs[v][i].adj) { return i; } } return -1; } int nextAdjVex(MGraph *G, int v,int w)//找到指定节点下一个相邻节点 { for(int i=w+1;i<G->num_vex;i++) { if(G->arcs[v][i].adj) { return i; }dang } return -1; } void visit(gNode *g) { printf("%d ",g->data); } void BFSTree(MGraph *G,gNode **g) { printf("BFSTree"); gNode *node=NULL; Queue *q=NULL; initQueue(&q); EnQueue(&q,*g); int p=locateVex(G,(*g)->data); visited[p]=true; while(!isEmpty(q)) { bool first =true; gNode* n=DeQueue(&q); node=n; int v=locateVex(G,node->data); for(int i=firstAdjVex(G,v);i>=0;i=nextAdjVex(G,v,i)) { if(!visited[i]) { gNode *gnode=(gNode*)malloc(sizeof(gNode)); gnode->data=G->ver[i]; gnode->lchild=NULL; gnode->nextsibling=NULL; visited[i]=true; EnQueue(&q,gnode); if(first) { node->lchild=gnode; first=false; } else { node->nextsibling=gnode; } node=gnode; } } } } void BFSForest(MGraph *G,gNode **g) { (*g)=NULL; for(int i=0;i<G->num_vex;i++) { visited[i]=false; }dang gNode *node=NULL; int v = locateVex(G,(*g)->data); visited[v]=true; for(int i=0;i<G->num_vex;i++) { if(!visited[i]) { gNode *n=(gNode*)malloc(sizeof(gNode)); n->data=G->ver[i]; n->lchild=NULL; n->nextsibling=NULL; if(!(*g)) { *g=n; } else { node->nextsibling=n;dang } node=n; BFSTree(G,&n); } } } void preOrderTraverse(gNode *g) { visit(g); preOrderTraverse(g->lchild); preOrderTraverse(g->nextsibling); } int main(void) { MGraph G; createGraph(&G); printf("123\n"); gNode *g; printf("456\n"); BFSForest(&G,&g); printf("789\n"); preOrderTraverse(g); return 0; } ```
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
MyBatis研习录(01)——MyBatis概述与入门
C语言自学完备手册(33篇) Android多分辨率适配框架 JavaWeb核心技术系列教程 HTML5前端开发实战系列教程 MySQL数据库实操教程(35篇图文版) 推翻自己和过往——自定义View系列教程(10篇) 走出思维困境,踏上精进之路——Android开发进阶精华录 讲给Android程序员看的前端系列教程(40集免费视频教程+源码) 版权声明 本文原创作者:谷哥的小弟 作者博客
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
Python爬虫精简步骤1 获取数据
爬虫的工作分为四步: 1.获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。 2.解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。 3.提取数据。爬虫程序再从中提取出我们需要的数据。 4.储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。 这一篇的内容就是:获取数据。 首先,我们将会利用一个强大的库——requests来获取数据。 在电脑上安装
Python绘图,圣诞树,花,爱心 | Turtle篇
1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle() circle.shape('circle') circle.color('red') circle.speed('fastest') circle.up() square = turtle.Turtle()
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 更多有趣分析教程,扫描下方二维码关注vx公号「裸睡的猪」 即可查看! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布
web前端javascript+jquery知识点总结
Javascript javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ,语法同java类似,是一种解释性语言,边执行边解释。 JavaScript的组成: ECMAScipt 用于描述: 语法,变量和数据类型,运算符,逻辑控制语句,关键字保留字,对象。 浏览器对象模型(Br
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
文章目录1. 前言2. 数据下载3. 数据处理4. 数据可视化 1. 前言 今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。 2月6日追记:本文发布后,腾讯的数据源多次变更u
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
渗透测试-灰鸽子远控木马
木马概述 灰鸽子( Huigezi),原本该软件适用于公司和家庭管理,其功能十分强大,不但能监视摄像头、键盘记录、监控桌面、文件操作等。还提供了黑客专用功能,如:伪装系统图标、随意更换启动项名称和表述、随意更换端口、运行后自删除、毫无提示安装等,并采用反弹链接这种缺陷设计,使得使用者拥有最高权限,一经破解即无法控制。最终导致被黑客恶意使用。原作者的灰鸽子被定义为是一款集多种控制方式于一体的木马程序
Python:爬取疫情每日数据
前言 有部分同学留言说为什么412,这是因为我代码里全国的cookies需要你自己打开浏览器更新好后替换,而且这个cookies大概只能持续20秒左右! 另外全国卫健委的数据格式一直在变,也有可能会导致爬取失败! 我现在已根据2月14日最新通报稿的格式修正了! 目前每天各大平台,如腾讯、今日头条都会更新疫情每日数据,他们的数据源都是一样的,主要都是通过各地的卫健委官网通报。 为什么已经有大量平台做
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告(本文) 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧...... 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升
粒子群算法求解物流配送路线问题(python)
粒子群算法求解物流配送路线问题(python) 1.查找论文文献 找一篇物流配送路径优化+粒子群算法求解的论文 参考文献:基于混沌粒子群算法的物流配送路径优化 2.了解粒子群算法的原理 讲解通俗易懂,有数学实例的博文:https://blog.csdn.net/daaikuaichuan/article/details/81382794 3.确定编码方式和解码策略 3.1编码方式 物流配送路线的
教你如何编写第一个简单的爬虫
很多人知道爬虫,也很想利用爬虫去爬取自己想要的数据,那么爬虫到底怎么用呢?今天就教大家编写一个简单的爬虫。 下面以爬取笔者的个人博客网站为例获取第一篇文章的标题名称,教大家学会一个简单的爬虫。 第一步:获取页面 #!/usr/bin/python # coding: utf-8 import requests #引入包requests link = "http://www.santostang.
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
相关热词 c# 时间比天数 c# oracle查询 c# 主动推送 事件 c# java 属性 c# 控制台 窗体 c# 静态类存值 c#矢量作图 c#窗体调用外部程式 c# enum是否合法 c# 如何卸载引用
立即提问