结构体里面包含结构体变量,用scanf赋值 5C

int main()
{

typedef struct datetime
{
char year[10];
char month[10];
char day[10];
char hours[10];
char minutes[10];
}datetime;

typedef struct Student
{
    char Stu_Id[20];
    char Stu_Name[10];
    char Stu_Sex[10];
    char Dor_Id[10];
    datetime Stu_Enr[10];
    datetime Stu_Birth[10];
    char Stu_Study[10];
    char Stu_Class[10];
    char Stu_Polit[10];
    char Stu_Add[50];
    char Stu_Tel[10];
    char Stu_Sta[10];
    char Stu_Des[50];
}Student;


Student *p;
scanf("%s",p->Stu_Enr->year);
printf("%s",p->Stu_Enr->year);

}


这样的话输入字符,按回车后程序会崩溃

c

13个回答

Student* p 未分配内存

不知道你用的什么编译器,这个错误应该编译不过去,是指针没有初始化,有两种改法:
Student *p =new Student;

Student p = (Student)malloc(sizeof(Student));
第一种不行的话 可以用第二种

问题不在结构体吧,Student* p 未初始化呀,应该 Student * p = new Student;

Student* p 未初始化

没有给p指针分配相应的内存

Student* p是空指针。初始化该指针,通过new或malloc

结构体是空指针,要创建(new或malloc)一个新指针

首先你得明白malloc函数的作用;malloc函数是在内存中找到一个合适大小的内存空间来存储数据,并让指针指向这个空间的首地址。它的意义是在创建数组时,可以创建动态数组。
比如 int a[n],*p;p=a;是不合法的。而int *p;p=(int *)malloc(n*sizeof(int))却可以实现创建这样一个长度为n的数组

p是一个空指针,没有办法赋值的,直接Student p

student *p没有分配内存

共13条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
scanf函数给结构体中指针变量赋值出现段错误
#include<stdio.h> #include<stdlib.h> struct book{ char *name; int num; }; int main() { struct book *bk; bk = (struct book*)malloc(sizeof(struct book)); if(!bk) { printf("no space for malloc\n"); return 0; } scanf("%s",bk->name); /*此处显示:段错误*/ printf("%s\n",bk->name); free(bk); return 0; }
设计一个函数,能够对输入的两个学生结构体信息中的成绩按照大小顺序输出。要求使用指针类型的变量进行结构体变量的定义?
设计一个函数,能够对输入的两个学生结构体信息中的成绩按照大小顺序输出。要求使用指针类型的变量进行结构体变量的定义。 解题思路:采用 malloc 函数进行结构体指针变量的定义,并使用 --> 访问成员变量的方式进行结构体变量赋值;比较两个结构体信息中学生的成绩成员变量的大小,按照大小顺序输出。 参考代码: #include "stdio.h" #include "malloc.h" #include "string.h" #define NUM 1 struct STUDENT { char STU_ID[8]; char STU_NAME[10]; int STU_AGE; int STU_SCORE; }; int main(int argc, char* argv[]) { struct STUDENT *stu1 = (struct STUDENT *)malloc(sizeof(struct STUDENT)); stu1->STU_AGE=12; strcpy(stu1->STU_ID,"04120084"); strcpy(stu1->STU_NAME," 张三 "); struct STUDENT *stu2=(struct STUDENT *)malloc(sizeof(struct STUDENT)); stu2->STU_AGE=12; strcpy(stu2->STU_ID,"04120085"); strcpy(stu2->STU_NAME," 李四 "); printf(" 输入学生成绩 \n"); scanf("%d,%d",&(stu1->STU_SCORE),&(stu2->STU_SCORE)); // 学生补充代码 { }//end of 补充代码 printf("%s,%d\n",stu1->STU_NAME,stu1->STU_SCORE); printf("%s,%d\n",stu2->STU_NAME,stu2->STU_SCORE); return 1; }
定义一个整型的一维数组,并定义一个一维的学生信息结构体数组?
定义一个整型的一维数组,并定义一个一维的学生信息结构体数组,设计一个函数,按照数组下标的顺序,将整型数组中的变量信息赋值给学生结构体数组中的成绩成员变量。要求使用结构体指针类型的变量,进行结构体变量的赋值操作。 解题思路:采用 malloc 函数进行学生结构体指针变量的定义,将结构体指针变量指向学生结构体数组变量的首地址,并使用 --> 访问成员变量的方式进行结构体变量赋值。提示:指针变量指向结构体变量的首地址后,可以使用 ++ 运算符进行指针的移动操作。 参考代码: #include "stdio.h" #include "malloc.h" #include "string.h" #define NUM 1 struct STUDENT { char STU_ID[8]; char STU_NAME[10]; int STU_AGE; int STU_SCORE; }; int main(int argc, char* argv[]) { int i; int Age[5];// 待输入的 5 个年龄 printf(" 请输入五个年龄,以逗号隔开 \n"); // 依次输入 5 个年龄 scanf("%d,%d,%d,%d,%d",&Age[0],&Age[1],&Age[2],&Age[3],&Age[4]); // 定义由 5 个结构体指针构成的数组(相当于 5 个指针) struct STUDENT (*p_stu)[5] = (struct STUDENT (*)[5])malloc(5*sizeof(struct STUDENT)); // 学生补充代码,将数组 Age 中的值依次赋给结构体 { }//end of 学生补充代码 // 打印赋值后的结果 for(i=0; i<5; i++) { printf("%d\n", p_stu[i]->STU_AGE); } return 1; }
更改主调函数中的变量,使用scanf给变量赋值怎么正确使用?
如下代码,请帮忙解答,谢谢。 在main()函数中调用时 为什么用scanf的时候,输入double类型的值时得出的值是: 1,2 x is -92559604281615349000000000000000000000000000000000000000000000.000000,y is -92559604377396321000000000000000000000000000000000000000000000.000000 x value is -92559604281615349000000000000000000000000000000000000000000000.000000,y value is -92559604377396321000000000000000000000000000000000000000000000.000000 min is -92559604377396321000000000000000000000000000000000000000000000.000000,max is -92559604281615349000000000000000000000000000000000000000000000.000000 直接给a,b赋值是正确的。 x value is 1.000000,y value is 2.000000 min is 1.000000,max is 2.000000 #include<stdio.h> #include<stdlib.h> void change(double* x, double* y); int main(void) { double a,b; scanf("%f,%f",&a,&b); printf("x is %f,y is %f\n",a,b); change(&a, &b); a = 1.0; b = 2.0; change(&a, &b); system("pause"); } void change(double* x, double* y) { double min,max; min = *x; max = *y; if(*x > *y) { min = *y; max = *x; } printf("x value is %f,y value is %f\nmin is %f,max is %f\n",*x,*y,min,max); }
设计一个函数,能够对输入的两个学生结构体信息中的成绩按照大小顺序输出?
设计一个函数,能够对输入的两个学生结构体信息中的成绩按照大小顺序输出。要求使用指针类型的变量进行结构体变量的定义。 解题思路:采用 malloc 函数进行结构体指针变量的定义,并使用 --> 访问成员变量的方式进行结构体变量赋值;比较两个结构体信息中学生的成绩成员变量的大小,按照大小顺序输出。 程序框架: #include "stdio.h" #include "malloc.h" #include "string.h" #define NUM 1 #define STUDENT_NUM 3 struct STUDENT { char STU_ID[8]; char STU_NAME[10]; int STU_AGE; int STU_SCORE; }; int main(int argc, char* argv[]) { // 建立一个学生的结构体 : 年龄,学号,名字和分数 int i,j; struct STUDENT stu[STUDENT_NUM]; stu[0].STU_AGE=12; strcpy(stu[0].STU_ID,"04120084"); strcpy(stu[0].STU_NAME," 张三 "); stu[1].STU_AGE=12; strcpy(stu[1].STU_ID,"04120085"); strcpy(stu[1].STU_NAME," 李四 "); stu[2].STU_AGE=13; strcpy(stu[2].STU_ID,"04120086"); strcpy(stu[2].STU_NAME," 赵五 "); // 选择排序法 // 输入学生的成绩信息 printf("按顺序输入%d个学生的成绩信息,中间用“,”隔开\n",STUDENT_NUM); scanf("%d,%d,%d",&stu[0].STU_SCORE,&stu[1].STU_SCORE,&stu[2].STU_SCORE); // 学生添加选择排序法程序 { }//end of 学生添加选择排序法程序 printf("%s,%d\n",stu[0].STU_NAME,stu[0].STU_SCORE); printf("%s,%d\n",stu[1].STU_NAME,stu[1].STU_SCORE); printf("%s,%d\n",stu[2].STU_NAME,stu[2].STU_SCORE); } return 1; }
C语言中的链表赋值问题
我写了一个存储电影名字以及评级的链表,不理解其中以下三点 1.prev->next=current, 2.prev=current, 3.current=current->next 我目前的理解是:1.把current这个结构体指针变量的地址赋值给prev中的结构体指针变量next;2.把current这个结构体指针变量的地址赋值给结构体指针变量prev;3.令结构体指针变量current的值等于结构体指针变量next的值 不知道对吗? 以下是我的源代码: #include<stdio.h> #include<stdlib.h> //malloc();原型 #include<string.h> //strcpy();原型 #define SIZE 20 //最大字数 typedef struct film { char title[SIZE]; int rating; struct film * next; }Film; int main() { Film *head=NULL; Film *prev,*current; char title2[SIZE]; //写入 puts("Scan first title(0-20 charecter)"); while(gets(title2)!=EOF&&title2[0]!='\0') { current = (Film *)malloc(sizeof(Film)); //存第一个指针head if(head==NULL) { head=current; } //current's address 赋给next else prev->next=current; strcpy(current->title,title2); puts("Rating is...(0-10)"); scanf("%d",&current->rating); getchar(); //节点更换 puts("Enter next movie title"); prev=current; } //显示 if(head) { current=head; while(current!=NULL) { printf("the title is %s,the rating is %d\n",current->title,current->rating); current=current->next; //把下一个结构体指针的地址给current } } else puts("Not find any dota..."); //清内存 current=head; while(current) { free(current); current=current->next; } puts("OK!"); return 0; } 十分感谢
此函数的形参是个结构变量,而不是指针,所以给形参赋值可以修改实参的值吗?
根据KNking现代方法一书中所述,int big,small; max_min(&big,&small)以指向实参的指针作为参数才能改变实参的值(找最大最小数) 而以下程序片段以结构变量而非指针作为参数,调用后可以改变相应实参的值吗? void update(struct part inv[], int np) { int i, number, change; printf("Enter part number: ");    scanf("%d", &number); i = find_part(number, inv, np);    if (i >= 0) { printf("Enter change in quantity on hand: ");     scanf("%d", &change); inv[i].on_hand+=change;//给形参(一个结构变量的元素)赋值可以修改实参对应元素的值??? } else printf("Part not found.");
c语言,每次执行到给结构体内的二维数组成员变量赋值时程序就崩溃了,有大佬知道原因吗
结构体的声明 ``` struct IMPERIAL{ int **my_map; int numVar; void(*initialMap)(int **, int ); void(*clearMap)(int **, int ); }; void myInitialMap(int **my_map, int n) { my_map = (int **)malloc(sizeof(int*) * n); for(int i=0;i<n;++i){ my_map[i] = (int*)malloc(sizeof(int) * n); } int count=0; } void myClearMap(int **my_map, int n) { for(int i=0;i<=n;i++) free(*(my_map + i)); free(my_map); } ``` 初始化 ``` int node; char myInput[10]; for(int j=2;j<=item.numVar;j++) for(int i=1;i<j;i++){ scanf("%s",myInput); int b; if(myInput[0]!='x') { sscanf(myInput,"%d",&node); item.my_map[j][i]=node; item.my_map[i][j]=item.my_map[j][i]; } } ``` 每次一到 item.my_map[j][i]=node; 程序就崩溃了,不知道什么原因啊 编译过了,没有报错,执行到这一步程序就会直接卡住
Windows系统下,c语言、c++语言中的给变量赋值,也是最终通过API实现的吗?
①例如程序中有一个赋值语句 a=100; 程序执行时,也是转化为调用系统API来将变量a所代表的存储区域赋值100吗? ②对于程序,即是在程序中没有直接使用Windows API ,例如,main函数只包括printf,即只是使用 printf 输出一个内容时,那么程序执行时,也是最终调用系统API来完成输出的吗? ③Windows API是不是可以这样理解:像scanf printf等是建立在API函数的基础上的,是封装了API函数的集合,换句话说,是别人为了方便而写的一些常用的功能,但是如果有自己的特定需求,就需要自己在代码中直接调用API函数?即printf是别人从Windows几万个API函数中找了一些函数,组装成了 printf,而我在程序中调用API是我自己直接使用API函数,组装printf使用的API函数与我可以直接调用的API函数没有什么特别之处,都是这几万个API函数 ——这样理解API对吗
被注释的地方如果给定义任何一个无关变量并赋值,程序的运算结果就不一样了,这是为什么?求赐教
被注释的地方如果给定义任何一个无关变量并赋值,程序的运算结果就不一样了,这是为什么? #include<stdio.h> main()//冒泡排序 { int a[5],i,t; printf("请输入五个数:\n"); for(i=0;i<5;i++) scanf("%d",&a[i]); for(int j=5;j>1;j--) { // int m=1; for(i=0;i<j;i++) { if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } } } for(i=0;i<5;i++) printf(" %d",a[i]); } ![图片说明](https://img-ask.csdn.net/upload/201912/26/1577343525_128514.jpg)![图片说明](https://img-ask.csdn.net/upload/201912/26/1577343541_254902.jpg)
这个字符指针变量赋值时为什么会烫烫烫烫烫烫?
``` #include <iostream> void IntToStr(int m,char *s); int main() { int m, n; char s1[100], s2[100]; printf("输入两个位数相同的正整数:\n"); scanf_s("%d%d", &m, &n); IntToStr(m,s1); IntToStr(n,s2); puts(s1); } void IntToStr(int m,char *s) { int i, mi, x; for (i = 1;; i++) { x = m * (pow(0.1, i)); if (x < 1) { mi = i; break; } } i = 1; x = m / pow(10,--mi); *(s + mi - 1) = '\0'; *(s++) = x; for (; mi; mi--) *(s++) = (m - *(s-1) * pow(10, mi)) / pow(10, mi - 1); } ```
C语言scanf附加格式*的含义?
scanf("%d*%d",&iNumber1,&iNumber2); /*输入整型数据*/这句是什么意思?怎么执行的? 完整程序如下: #include<stdio.h> int main() { long iLong; /*长整型变量*/ short iShort; /*短整型变量*/ int iNumber1=1; /*整型变量,为其赋值为1*/ int iNumber2=2; /*整型变量,为其赋值为2*/ char cChar[10]; /*定义字符数组变量*/ printf("请输入一个长整型变量数值\n"); /*输出信息提示*/ scanf("%ld",&iLong); /*输入长整型数据*/ printf("请输入一个短整型数值\n"); /*输出信息提示*/ scanf("%hd",&iShort); /*输入短整型数据*/ printf("请输入一个整数:\n"); /*输出信息提示*/ scanf("%d*%d",&iNumber1,&iNumber2); /*输入整型数据*/ printf("请输入一个字符串,但是输出时只能显示前三个字符\n"); /*输出信息提示*/ scanf("%3s",cChar); /*输入字符串*/ printf("长整型的数值为: %ld\n",iLong); /*显示长整型值*/ printf("短整型的数值为: %hd\n",iShort); /*显示短整型值*/ printf("整型数值1为: %d\n",iNumber1); /*显示整型iNumber1的值*/ printf("整型数值2为: %d\n",iNumber2); /*显示整型iNumber2的值*/ printf("输出字符串的前三位: %s\n",cChar); /*显示字符串*/ }
程序中定义的全局变量,list 在input中已经赋值,为什么print函数中List=null?
#include<stdio.h> #include<stdlib.h> #define N 4 struct node{ int score; struct node*link; }; struct node node; struct node*list,*p,*r,*q; void input(struct node*list) { int i; int ch; for(i=0;i<N;i++) { printf("please input the score of %d\t",i+1); p=(struct node*)malloc(sizeof(struct node*)); scanf("%d",&p->score); p->link=NULL; if(list==NULL) list=p; else r->link=p; r=p; printf("数据为%d",p->score); } } void average(struct node*list) { int s=0,i; double average2; if(list==NULL) printf("链表为空"); for(i=0;i<N;i++) { s+=list->score; list=list->link; } average2=(double)s/N; printf("%f",average2); } void print(struct node*list) { int i; printf("顺利进入"); if(list==NULL) printf("这是空链表"); else { q=list; while(q->link!=NULL) { printf("%d",q->score); q=q->link; } }} int main() { void input(struct node*list); void average(struct node*list); void print(struct node*list); int ah; system("cls"); while(1){ printf("链表操作系统:"); printf("\n1.建立链表\n2.输出数据\n3.求平均数\n"); scanf("%d",&ah); switch(ah){ case 1:input(list);break; case 2:print(list);break; case 3:average(list);break; default:printf("wrong!");break; }}}
用C语言编写二元一次方程
如何编写程序,使得当我输入10x+4y=100(整组同时输入,即只输入一次回车),能给变量赋予系数的值? 1、当系数为1的情况呢?例:3x+y=10(我使用scanf()语句无法解决,现在的思路是用getchar()赋值给数组,但无法区分系数的位数以及系数属于哪个未知数) 2、当方程中有减号时,如何与数字一起赋给变量?例:x-y=10
编写一个解二元一次方程的程序。
如何编写程序,使得当我输入10x+4y=100(整组同时输入,即只输入一次回车),能给变量赋予系数的值? 1、当系数为1的情况呢?例:3x+y=10(我使用scanf()语句无法解决,现在的思路是用getchar()赋值给数组,但无法区分系数的位数以及系数属于哪个未知数) 2、当方程中有减号时,如何与数字一起赋给变量?例:x-y=10
如何做到只有两个变量在while里循环输入
说不大清楚看一下代码吧 写的有点乱 我对这个问题的理解是 通过scanf函数给一个变量A “赋值”后这个值能不能在后面被替换掉 第一个函数是我想自己创一个函数用来输入 但是发现本质是一样的 while 里的第一次循环是对的 但是第二次输入数据到两个变量时就输出不了了 求大神解答 我知道其他的解决办法 比如跳到外面输入或者goto语句 #include "stdio.h" #include "stdlib.h" float scan(void); float scan(void) { float a; scanf("%f",&a); return a; } void cls(); void cls() { getchar(); getchar(); system("cls"); } float jiafa(float a,float b); float jiafa(float a,float b) { return a+b; } int main() { int i,a,b; char jiafachoose; float a,b,c; while(1) { printf("\t1.+fa\n\t2.-fa\n\t3.*fa\n\t4./fa\n"); scanf("%d",&i); switch (i) { case 1 : printf("please input tuo number\n"); a=scan(),b=scan(); printf("%f",jiafa(a,b)); while (1) { printf("continue? y or n\n"); while((jiafachoose=getchar())!='\n'){ continue; } if((jiafachoose=getchar())=='y') { printf("please input two number\n"); a=scan(); b=scan(); printf("%f",jiafa(a,b)); } else if((jiafachoose=getchar())=='n') { break; } cls(); } break; } } return 0; }
代码是否会导致死机,卡屏
#include "stdio.h" struct employee { int member; char name[20]; char department[30]; int salary; }emp[100],t; void income(int n) { if(n==0) return; else { scanf("%d",&emp[n-1].member); scanf("%s",&emp[n-1].name); scanf("%s",&emp[n-1].department); scanf("%d",&emp[n-1].salary); income(n-1); } } void pay(int n) { if(n==0) return; else { printf("%-6d",emp[n-1].member); printf("%-8s",emp[n-1].name); printf("%-12s",emp[n-1].department); printf("%-4d\n",emp[n-1].salary); pay(n-1); } } void sort_sa(int n) { int i,j,k; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if(emp[k].salary>emp[j].salary) k=j; if(k!=i) { t=emp[i].salary; emp[i].salary=emp[j].salary; emp[j].salary=t; } } } } int main(int argc, char* argv[]) { int n; printf("请输入有多少员工\n"); scanf("%d",&n); printf("请输入员工信息\n"); printf("工号 名字 部门 工资\n"); income(n); printf("工号 名字 部门 工资\n"); pay(n); int i,j,k; sort_sa(n); printf("\n"); pay(n); } 代码在这,其实是有错误的,其中sort_sa函数那转换时,把结构体内类型赋值给了整个结构体变量,但这个代码在visual C++中只是提示错误,在dev C++中,不仅提示错误,每次编译后我拉动旁边的滑条后就突然屏幕停止工作,整个屏幕就死机住了,在vC中没事,我现在已经改过了代码的错误,死机的情况不会出现了,我想知道为什么会这样,是什么导致了屏幕死机,死循环?感觉就算赋值错误也不至于死机吧
求各位大神帮忙做程序结构图(也就是模块间的关系)
求各位大神帮忙做程序结构图(也就是模块间的关系) #include <stdio.h> #include <conio.h> #include <windows.h> #include <stdlib.h> #include <string.h> FILE *fp=NULL;//文件指针 float LJE;//历史金额 int i=0;//变量 分级 int flag; //定义时间结构体,包括时分秒和10毫秒 struct tm //结构体 { int hours,minutes,seconds; //定义时,分,秒 int hscd; //毫秒 }time,tmp,total; //time用以计时显示,tmp用以存储上一阶段时间,total记总时间 int cnt; FILE* fout; //文件指针 //每次调用update函数,相当于时间过了10ms int Rigester();//登陆函数 void Login();//注册函数 void update(struct tm *t,int i) { (*t).hscd++; //10ms单位时间加1 cnt++; if ((*t).hscd==100) //计时满1s,进位 { (*t).hscd=0; (*t).seconds++; } if ((*t).seconds==60) //计时满一分,进位 { (*t).seconds=0; (*t).minutes++; } if ((*t).minutes==60) //计时满一小时,进位 { (*t).minutes=0; (*t).hours++; } if((*t).hours==24) //满24小时 复位 (*t).hours=0; Sleep(10); } void display(struct tm *t,int i) { //此处输出计时结果,\r为回车不换行,既一直在同一行更新时间 printf("%2d:",(*t).hours); //小时 printf("%2d:",(*t).minutes); //分钟 printf("%2d:",(*t).seconds); //秒 printf("%2d",(*t).hscd); //毫秒 printf("\t当前金额%0.1f元\r",(*t).minutes*0.1*i+i); //金额 } void time_init() //初始化时间 { time.hours=time.minutes=time.seconds=time.hscd=0; } void get_total() //时间换算 { total.hscd = cnt % 100; cnt /= 100; total.seconds = cnt % 60; cnt /= 60; total.minutes = cnt % 60; cnt /= 60; total.hours = cnt; } int main() { int a; char m; cnt = 0; time_init(); //初始化时间 fout = fopen("timeout.txt","r+"); system("color 4F"); if(fout==NULL) { fout=fopen("timeout.txt","w+"); } printf("欢迎使用停车计费系统\n"); printf("停车场采用不同车型不同单价计费\n"); printf("大车每分钟3元\n"); printf("中车每分钟2元\n"); printf("小车每分钟1元\n"); { int select; printf("1.登录 2.注册 0.退出 \n请选择"); scanf("%d",&select); switch (select) { case 0:printf("退出程序!");return 0; case 1: Rigester (); break; case 2: Login ();break; default: printf("输入错误,退出程序!\n");return 0; } } system("cls");//清屏 fp=fopen("users.txt","r+"); //打开文件 if(fp==NULL) { fp=fopen("users.txt","w+"); } fscanf(fp,"%f",&LJE); //将文件数据(剩余金额)赋予 LJE fclose(fp);//关闭文件 printf("剩余金额%0.1f元\n",LJE); printf("请选择车型\n"); printf("大车请按1\n"); printf("中车请按2\n"); printf("小车请按3\n"); scanf("%d",&a); //接收数据 switch(a)//进行判断 { case 1: i=3;break; case 2: i=2;break; case 3: i=1;break; } printf("按回车开始计时"); while(1) { m = getch(); if(m != '\r') //读入一个输入,如果是回车,那么跳出次循环 printf("输入错误,仅能输入回车键!\n"); else break; } //跳出循环 进行计时 printf("已经开始计时 \n"); while(1) { //此处检查是否有键盘输入 if(kbhit()/*监控键盘*/) { m=getch();//赋值 //如果等于回车,那么计时结束,跳出循环 if(m == '\r') break; //输入错误 else { printf("输入错误,仅支持输入回车键!\n"); } } update(&time,i); //更新计时器 函数 display(&time,i); //显示计时器时间 函数 } tmp = time; //输出最后一次即使结果,写入文件 fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd); get_total(); //计算总的时间,显示,并写入文件 LJE=LJE-(total.minutes*0.1*i+i);//当前剩余金额 printf("\n总时间:%2d:%2d:%2d:%2d::总金额%0.1f元 剩余金额%0.1f\n",total.hours,total.minutes,total.seconds,total.hscd,total.minutes*0.1*i+i,LJE); fprintf(fout,"统计时间:%2d:%2d:%2d:%2d::总金额%0.1f元::\n",total.hours,total.minutes,total.seconds,total.hscd,total.minutes*0.1*i+i); fp=fopen("users.txt","r+");//打开文件 fprintf(fp,"%0.1f",LJE);//记录数据(剩余金额) fclose(fp);//关闭文件 fclose(fout);//关闭文件 printf("已经保存到当前目录下的timeout.txt文件中按任意键结束!"); getch(); return 0; } int Rigester()//登陆 { FILE *fp=NULL; //文件指针 char str1[10],str2[20]; //字符串 用户名 密码 char name[10],password[10]; // 字符串 用户名 密码 int count=0,flag=0; //初始化 fp=fopen("table.txt","r");//打开文件 while(flag==0&&count<3) //判断 密码是否正确 且 输入次数是否大于3次 { printf("请输入用户名:"); scanf("%s",name); printf("请输入密码:"); scanf("%s",password); count++; //每输入一次密码和用户名 +1 rewind(fp);//文件指针指向文件头 while(!feof(fp))//判断 { fscanf(fp,"%s%s",str1,str2);//已注册的用户名和密码 if((strcmp(str1,name)==0)&&(strcmp(str2,password)==0))//与输入的用户名和密码进行比较 { flag=1;break;//相同 } } if(flag==0) printf("用户名或密码错误,请重新输入!\n"); } if (flag==1) printf("登录成功!\n"); else printf("输入超过3次,退出程序!\n"); fclose(fp); return flag;//返回flag值 进行判断 } void Login()//注册 { FILE *fp =NULL;//文件指针 char name [10],password[10]; fp=fopen("table.txt","a"); printf("请输入用户名:"); scanf("%s",name); printf("请输入密码"); scanf("%s",password); fprintf(fp,"%10s%10s",name,password); printf("注册成功\n"); fclose(fp); return; }
学到函数了。遇到两个问题。为什么实参必须初始化?为什么变量m进过函数后,没有被赋新值
#include<stdio.h> int gcd(int n,int m,int y) { for(;n!=0;m=n,n=y) y=m%n; return m; } int gcd(int n,int m,int y); int main(void) { int a,b,c=0; printf("输入两个数:"); scanf("%d %d",&a,&b); gcd(a,b,c); printf("最大公约数是:%d\n",gcd(a,b,c)); return 0; } 此程序我变量C没有初始化,就报警告。赋值0,就没事了 #include<stdio.h> int num_digits(int n) { int i=0; while(n>0){ n=n/10; i++; } return i; } int num_digits(int n); int main(void) { int m,j; printf("enter a number:"); scanf("%d",&m); j=num_digits(m); if(j==1) printf("thera is %d digit in %d\n",j,m); else printf("thera are %d digits in %d\n",j,m); return 0; } 为什么变量m经过函数num_digits(m)后,其值没有改变?体现在输出printf()函数上,显示在屏幕上是原值
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近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。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
C语言荣获2019年度最佳编程语言
关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang近日,TIOBE官方发布了2020年1月编程语言排行榜单。我在前面给过一篇文章《2019年11月C语言接近Ja...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
应届生/社招面试最爱问的几道Java基础问题
本文已经收录自笔者开源的 JavaGuide: https://github.com/Snailclimb (【Java学习 面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识)如果觉得不错的还,不妨去点个Star,鼓励一下! 一 为什么 Java 中只有值传递? 首先回顾一下在程序设计语言中有关将参数传递给方法(或函数)的一些专业术语。按值调用(call by value)表...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Idea 中最常用的10款插件(提高开发效率),一定要学会使用!
学习使用一些插件,可以提高开发效率。对于我们开发人员很有帮助。这篇博客介绍了开发中使用的插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
一份王者荣耀的英雄数据报告
咪哥杂谈本篇阅读时间约为 6 分钟。1前言前一阵写了关于王者的一些系列文章,从数据的获取到数据清洗,数据落地,都是为了本篇的铺垫。今天来实现一下,看看不同维度得到的结论。2环境准备本次实...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
立即提问