C语言中while语句的意义辨疑

while 后的括号内语句含义是进入循环条件吗?
如果是,为什么本程序中的while括号内语句表示终止循环条件。
#include
int main (void)
{
const int secret_code = 13;
int code_entered;

scanf("%d",&code_entered);
while(code_entered !=secret_code)
{
scanf("%d",&code_entered);
}
printf("Congratulations!you are cured!\n");
return 0;
}

c

5个回答

code_entered !=secret_code 注意:这里的判断是“不等于(!=)”,也就是输入的不是回车才继续循环

while(条件语句) 若条件语句的值为真,则继续执行,否则退出该循环

没有啊,当输入不为13时继续输入,直到输入13,我这里运行没什么问题

while 后的括号内语句含义是 while 执行后面语句的条件 ,当code_entered !=secret_code 为真值时 执行while下的scanf("%d",&code_entered);,当 code_entered !=secret_code 不成立时,也即code_entered=13 时 退出while

while 后的括号内语句是执行后面大括号里面语句的条件,满足条件就执行大括号里面的语句,不满足就终止while循环。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言中while循环带上scanf语句
各位老师,本人新手上路,碰到下面的问题困扰: 语句目标为:输入字母,判断是否为A或者B,如果是,跳出循环,如果不是,继续输入 循环相关程序如下: char sp; while (1) { scanf("%c",&sp); if (sp == A || sp == B) break; printf("输入有误,请重输:\n,%c",sp); printf("%c",sp); } 此循环无法生效,然后我改成后面的,发现到scanf处就失效: char sp = ‘c’; while (1) { if (sp == A || sp == B) break; printf("输入有误,请重输:\n,%c",sp); printf("%c",sp); scanf("%c",&sp); } 是否while循环里面是不能使用scanf函数的,我应该怎么改才能正确运行. 后面我发现了加上getchar后就没问题了 scanf("%c",&sp); getchar(); while (1) { if (sp == 'A' || sp == 'B') break; printf("输入有误,请重输:"); scanf("%c",&sp); getchar(); } 希望老师们解释下
关于do-while语句中while()判断条件--c语言初学者求助
求两个正整数的最大公约数与最小公倍数如下程序 #include<stdio.h> void main() { int m,n,a,b,i; scanf("%d%d",&m,&n); if(m>0&&n>0){ b=m*n; if(m<n) {a=m; m=n; n=a; } do{i=m%n; m=n; n=i;}while(n=0); printf("最大公约数为:%d\n",m); b=b/m; printf("最小公倍数为:%d\n",b); } } 其中while判断条件若为while(n=0) 可输出正确值 若为while(n==0) 无法执行 =不是赋值么 ==才是等于 不是应该为while(n==0)么?
C语言中关于输入验证的一段代码判断,scanf函数的getchar函数的混合使用
在对scanf函数和getchar函数混合使用时发现假如把getchar处理的那一段删除的话会出现无限循环的情况? ```c long get_long(void){ //获取输入的值 long input; char ch; while (scanf("%ld",&input) != 1) { //如果去除下面这个while语句的话会发生无限循环,为什么? while ((ch = getchar()) != '\n') { putchar(ch); } printf(" is not an integer.\nPlease enter an integer value:"); } return input; } ```
C语言直接跳过了switch进行了结尾的语句怎么解决?
``` //该程序实现了简单的停车场以及计费功能,若停车场满了还有汽车要进停车场便要在便道等候直到停车场有空位 #include<stdio.h> #include<stdlib.h> int carPark = 0; struct Queue{ int carId; int enterTime; int leftTime; struct Queue *next; }; struct Park{ int carId; int enterTime; int leftTime; }; struct Pointer{ struct Park *base; struct Park *top; struct Queue *front; struct Queue *rear; }; void ParkingLot(struct Pointer *p,int n){ //停车场 p->base = (struct Park *)malloc(n*sizeof(struct Park)); p->top = p->base; } void Convenient(struct Pointer *p){ //便道 p->front = (struct Queue *)malloc(sizeof(struct Queue)); p->rear = p->front; p->front->next = NULL; } void TempPark(struct Pointer *Tp,int n){ //临时停车场 Tp->base = (struct Park*)malloc((n-1)*sizeof(struct Park)); Tp->top = Tp->base; } void CarEnter(struct Pointer *p,int carId,int enterTime,int n){ //汽车停车 if(p->top - p->base == n){ //判断停车场是否满了 printf("停车场已满,请在便道等候!\n"); struct Queue *q = (struct Queue *)malloc(sizeof(struct Queue)); q->carId = carId; q->enterTime = 0; p->rear->next = q; p->rear = q; q->next = NULL; }else{ p->top->carId = carId; p->top->enterTime = enterTime; p->top++; carPark++; printf("停车场里有%d辆车。\n",carPark); } } void CarLeft(struct Pointer *p,struct Pointer *Tp,int carId,int leftTime,int n){//汽车离开停车场 p->top--; while(p->top->carId != carId){ //停车场出临时停车场 Tp->top->carId = p->top->carId; Tp->top->enterTime = p->top->enterTime; Tp->top++; p->top--; } printf("牌照号码:%d 的车已经离开停车场,停车费用为:%d \n",carId,leftTime-p->top->enterTime); carPark--; printf("停车场里有%d辆车。\n",carPark); while(Tp->top!=Tp->base){ //临时停车场返回停车场 Tp->top--; p->top->carId = Tp->top->carId; p->top->enterTime = Tp->top->enterTime; p->top++; } if(p->front!=p->rear&&p->top-p->base <= n){ //便道进入停车场 int enterTime; printf("便道汽车进入停车场,进入的时间(enterTime):"); scanf("%d",&enterTime); struct Queue *q = (struct Queue *)malloc(sizeof(struct Queue)); q = p->front->next; printf("牌照:%d的汽车已进入停车场.\n",q->carId); p->top->carId = q->carId; p->top->enterTime = enterTime; p->top++; p->front->next = q->next; if(p->rear==q) p->front = p->rear; carPark++; printf("停车场里有%d辆车。\n",carPark); } } int main(){ struct Pointer *p; struct Pointer p1; int count = 1; p = &p1; struct Pointer *Tp; struct Pointer p2; Tp = &p2; int n; char C; int carId; int enterTime,leftTime,tempTime; printf("输入要创建的停车场的长度n:"); scanf("%d",&n); ParkingLot(p,n); Convenient(p); TempPark(Tp,n); printf("创建便道......\n"); printf("请选择要进行的操作(到达/离去/结束:A/D/E 牌照:carId 进入/离开时间:time):"); while(scanf("%c%d%d",&C,&carId,&tempTime)!=EOF&&C!='E'){ switch(C){ case 'A': enterTime = tempTime; CarEnter(p,carId,enterTime,n); break; case 'D': leftTime = tempTime; CarLeft(p,Tp,carId,leftTime,n); break; default: break; } if(count%2 == 1){ count++; }else{ printf("请选择要进行的操作(到达/离去/结束:A/D/E 牌照:carId 进入/离开时间:time):"); count++; } } return 0; } ``` ![图片说明](https://img-ask.csdn.net/upload/201910/14/1571066750_441303.jpg) 如果没有主函数最后面的if(count%2==1)语句就会多输出那个黄色的语句,那是多余的.
++i和i++和i=i+1在比较中的区别,代码题
在练习的时候遇到了这样一个问题,求教! 蛇形填数问题, 其中while循环中的最后一条while语句,**while(y+1<n && !a[x][y+1])** 如果改成while(**y++**<n && !a[x][y+1])或者while(**++y**<n && !a[x][y+1]); 就不会得到正确的蛇形填数结果, 错误结果如下 ![图片说明](https://img-ask.csdn.net/upload/202001/17/1579223010_965578.png) 正确结果如下 ![图片说明](https://img-ask.csdn.net/upload/202001/17/1579222928_541568.png) ``` #include <iostream> #include <string.h> int main(int argc, char** argv) { int n;n=7;int a[n][n];memset(a,0,sizeof(a)); int step=1; int x=0;int y=n-1; a[0][y]=1; while(step<n*n){ while(x+1<n && !a[x+1][y]) a[++x][y]=++step; while(y-1>=0 && !a[x][y-1]) a[x][--y]=++step; while(x-1>=0 && !a[x-1][y]) a[--x][y]=++step; while(y+1<n && !a[x][y+1]) a[x][++y]=++step; } for(x=0;x<n;x++){ for(y=0;y<n;y++){ printf("%4d",a[x][y]); } printf("\n"); } return 0; } ``` 求解!
c语言中怎样替换goto语句?
如下代码,在3层for循环里,当条件2满足时,就要跳出这3层循环,重新执行while循环, 这里用的是goto语句来跳出的,条件2不满足就要执行goto过去的代码后再重新while循环, 要怎么改成不用goto语句的呢? ``` while(1){ if(条件1){ //跳出while循环 break; } for(i=0; i<7; i++) { for(j=0; j<7; j++) { for(k=0; k<7; k++) { if(条件2) { goto a; } } } } a: if(i == 7) { ... } else { break; } } ```
如下代码功能7不能正常实现保存功能,想把 case后面只保留简单的函数调用语句,其他的语句放到被调函数里,把功能3,4,5换一下方法
#include"stdio.h" #include"string.h" #include"stdlib.h" #define MAX 30 // 最多30人 typedef struct date // 定义日期类型 { int year; int month; int day; }DATE; typedef struct person // 定义教师类型 { int ID; // 工号 char Name[10]; // 姓名 char Sex; // 性别 DATE birthday; // 出生日期 float salary; // 基本工资 } Teacher; void mima(Teacher num[]);//密码 void displayMenu();//菜单 int Read(Teacher num[],int n);//录入 void Print(Teacher num[],int n);//输出 float SearchByID(Teacher num[],int n,int xID);//按工号查询工资 void Sort(Teacher num[],int n);//工资排序 float avg(Teacher num[],int n,float *max,float *min);//统计工资的最大值、最小值、平均值 void count(Teacher num[],int n,int *nan,int *nu);//按性别统计教师人数 void Save(Teacher num[],int n);//保存 void tuichu();//退出 int main() { Teacher num[MAX]; mima(num); return 0; } void mima(Teacher num[])//密码 { int i,m,t,n,xID,man,women; i=0; float aver,max,min,teachersalary; char mima[10]={0}; printf("请输入密码:\n"); for(i=1;i<2;i++) { scanf("%s",mima); if(strcmp(mima,"*a123a*")==0) { printf("登陆成功!\n"); break; } else { printf("密码输入错误,请重新输入(你还有两次机会):\n"); } } if(i==2) { for(i=2;i<3;i++) { scanf("%s",mima); if(strcmp(mima,"*a123a*")==0) { printf("登陆成功!\n"); break; } else { printf("密码输入错误,请重新输入(你还有一次机会):\n"); scanf("%s",mima); } } } if(i==3) { if(strcmp(mima,"*a123a*")==0) { printf("登陆成功!\n"); } else printf("登陆失败,程序退出。\n"); } int choice, flag = 0; while (flag == 0) { putchar('\n'); displayMenu(); printf("please input a digital(1-9)\n"); scanf("%d", &choice); if (choice >= 1 && choice <= 8) switch (choice) { case 1:printf("录入的老师人数:"); scanf("%d",&n); t=Read(num,n); if(t==1) { t=Read(num,n); } else { printf("输入结束!\n"); } break; case 2:Print(num,n); break; case 3:printf("按工号查询工资!\n"); printf("请输入教师工号:"); scanf("%d",&xID); t=SearchByID(num,n,xID); if(t!=-1) { printf("%10d%8s%6c%6d/%02d/%02d%10.2f\n",num[t].ID , num[t].Name , num[t].Sex , num[t].birthday.year , num[t].birthday.month , num[t].birthday.day , num[t].salary); } else { printf("没有该教师!\n"); } break; case 4:Sort(num,n); break; case 5:aver=avg(num,n,&max,&min); printf("aver=%f\n",aver); printf("max=%f\n",max); printf("min=%f\n",min); break; case 6:count(num,n,&man,&women); printf("男老师有%d人\n",man); printf("女老师有%d人\n",women); break; case 7:Save(num,n); break; case 8:tuichu(); break; default:printf("选项输入错误!\n"); } } } void displayMenu()//菜单 { 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"); } int Read(Teacher num[],int n) // 录入模块:输入教师的基本信息 { int i; for(i=0; i<=n; i++) { printf("输入教师的基本信息:(ID 姓名 性别 (出生日期)年 月 日 基本工资:)"); scanf("%ld", &num[i].ID); if(num[i].ID==-1) { return 0; exit(0); } scanf("%s", num[i].Name);//姓名 scanf(" %c", &num[i].Sex); //性别,注意%c前有空格 scanf("%d", &num[i].birthday.year);//出生年 scanf("%d", &num[i].birthday.month);//月 scanf("%d", &num[i].birthday.day);//日 scanf("%f", &num[i].salary);//基本薪资 } return 1; } void Print(Teacher num[],int n) // 输出模块:输出实际的教师基本信息 { int i; printf("输出教师的基本信息:\n"); for(i=0; i<n; i++) { printf("%10ld%8s%3c %ld/%02d/%02d%10.2f\n",num[i].ID , num[i].Name , num[i].Sex , num[i].birthday.year , num[i].birthday.month , num[i].birthday.day , num[i].salary); } } float SearchByID(Teacher num[],int n,int xID) // 按工号查询工资模块:查询与指定值xID相同的教师工资 { int i; for(i=0; i<n; i++) { if(num[i].ID ==xID) { return i; } } return -1; } void Sort(Teacher *p,int n) // 工资排序:按工资升序序排列 { int i,j; Teacher t; for(i=0; i < n - 1; i++){ for(j=0; j < n - i - 1; j++) { if(p[j].salary>p[j+1].salary) { t=p[j]; p[j]=p[j+1]; p[j+1]=t; } } } for(i=0; i<n; i++) { printf("%10d%8s%6c%6d/%02d/%02d%10.2f\n",p[i].ID ,p[i].Name ,p[i].Sex ,p[i].birthday.year ,p[i].birthday.month ,p[i].birthday.day ,p[i].salary); } } float avg(Teacher num[],int n,float *max,float *min) // 统计工资的最大值、最小值、平均值模块: { int i; float aver,sum=0; for(i=0;i<n;i++) { *max=num[0].salary; *min=num[0].salary; if(num[i].salary>*max) { *max=num[i].salary; } if(num[i].salary<*min) { *min=num[i].salary; } sum+=num[i].salary; } aver=sum/n; return aver; } void count(Teacher num[],int n,int *man,int *women) // 按性别统计教师人数模块:分别统计 { int i; for(i=0;i<n;i++) { if(num[i].Sex=='M') (*man)++; else (*women)++; } } void Save(Teacher num[],int n) // 保存模块:将教师信息写到数据文件中 { FILE *fp; int i,j; if((fp=fopen("teacherjibenxinxi.txt","a")) == NULL) //以添加方式打开文本文件 { printf("Failure to open teacher.txt!\n"); exit(0); } fprintf(fp,"教师工号 教师姓名 教师性别 出生日期 教师工资\n"); for(i=0; i<n; i++) { fprintf(fp,"%10d%8s%6c%6d/%02d/%02d%10.2f\n",num[i].ID , num[i].Name , num[i].Sex , num[i].birthday.year , num[i].birthday.month , num[i].birthday.day , num[i].salary); } fclose(fp); if((fp=fopen("teacherjibenxinxi.txt","r")) == NULL) //以读方式打开文本文件 { printf("Failure to open teacher.txt!\n"); exit(0); } for(i=0; i<n; i++) { fprintf(fp,"%10d%8s%6c%6d/%02d/%02d%10.2f\n",num[i].ID , num[i].Name , num[i].Sex , num[i].birthday.year , num[i].birthday.month , num[i].birthday.day , num[i].salary); } fclose(fp); printf("保存成功!\n"); } void tuichu() { printf("已退出"); exit(0); }
哪位高手指点一下while的语句
main() { char s[81],*t,*f; printf("Enter a string:\n");gets(s); t=f=s; while(*t) t++; t--; while (*t=='*') t--; while (*f=='*') f++; fun(s,f,t); printf("The string after deleted:\n");puts(s); 这 while(*t=='*') t--; while (*f=='*') f++;这两句怎么理解
Python语言可以在判断语句中赋值吗?
以前是做C++和Java的,刚刚接触Python。在Java和C++中,为了减少函数调用次数,在while或者if语句的判断条件那里直接赋值比较方便。但是在Python中下面代码报错了,想请问Python是不允许这种方式的吗? class Fib(object): def __call__(self, num): L = [] while (length = len(L))<num: if length==0: L.append(0) elif length==1: L.append(1) else: L.append(L[-1]+L[-2]) return L f = Fib() print f(10) 上述代码的while语句判断条件那里报错
C语言while和null的用法,大神帮帮忙
在while后面的循环体加上null,是不是表示指向一个空语句,即循环体没有内容呢?
循环语句while与do-while用法
while语句错在哪?运行的时候一直出现这个下面的界面![图片](https://img-ask.csdn.net/upload/201607/02/1467466549_946803.jpg)![图片](https://img-ask.csdn.net/upload/201607/02/1467466647_315941.jpg)
C语言编程中循环语句中的输入输出问题
for (i = 0;i < nu;i++) { printf("\n\t\t请输入商品编号:"); scanf("%d", &no); /*检测作品编号是否重复*/ while (p != NULL) { if (strcmp(p->no, no) == 0) { printf( "已经有相同编号的商品"); return; } else { q = p;p = p->next; } } r = (Opi)malloc(sizeof(Opi)); /*创建一个新的文件存储位置*/ r->next = NULL; if (r == NULL) { printf( "分配空间失败!"); return; } if (q == NULL) { head = r; } else { q->next = r; } strcpy(r->no, no); printf("\n\t\t商品名字:"); scanf("%s", r->name); //getchar(); printf("\n\t\t生产厂家:"); scanf("%s", r->ma); //getchar(); printf("\n\t\t售货价格(元):"); scanf("%d", &r->sp); //getchar(); printf("\n\t\t进货价格(元):"); scanf("%d", &r->bid); printf("\n\t\t录入成功!!!!"); } 这个循环语句执行到第二次循环时前三项为啥会同时输出,也就是没法对商品编号,商品名称进行输入
c语言switch语句的问题
#include <stdio.h> struct vote { char name[20]; int num; }vote[3]; int main() { int i,c; printf("请输入三位候选人的名字\n"); for(i=0;i<3;i++) { scanf("%s",&vote[i].name); printf("%s为%d号\n",vote[i].name,i+1); } while(1) { printf("请输入您支持的候选人号码,输入4则结束投票\n"); scanf("%d,&c"); switch(c) { case 1:vote[0].num+=1;break; case 2:vote[1].num+=1;break; case 3:vote[2].num+=1;break; case 4:break;break; } } for(i=0;i<3;i++) { printf("%s获得%d票\n",vote[i].name,vote[i].num); } getchar(); getchar(); return 0; } 一个投票的,系统报错,不知道为什么,求教大神。![图片说明](https://img-ask.csdn.net/upload/201606/10/1465545800_649599.png)
C语言二维数组问题,请大佬帮忙
实现:对3*3的二维数组,求对角线元素之和,并给出对角线最大值。 ``` #include <stdio.h> #include <stdlib.h> int main() { int a[3][3]; int sum=0,max; int i,j; for(i=0;i<3;i++) { for(j=0;j<3;j++) { scanf("%d",&a[i][j]); } } max=a[0][0]; for(i=0;i<3;i++) { for(j=0;j<3;j++) { if((i==j)||(i+j==2)) sum+=a[i][j]; while((i==j)||(i+j==2)) { if(max<a[i][j]) max=a[i][j]; } } } printf("%d\n",sum); printf("%d",max); return 0; } ``` 去掉while语句时可以实现对角线求和,可是加while时不行,请帮忙看看错哪、怎么修改。
C语言题,希望能给出可靠的理由
C语言:语句while(!E);中的表达式!E等价于: A.E==0 B.E!=0 C.E!=1 D.E==1
C语言项目,怎么都调不出来,求修改,详细说明或者把改好的代码发出来,谢谢!
![图片说明](https://img-ask.csdn.net/upload/201911/24/1574581202_803596.jpg) (为什么打上去是全的,发出去就缺了呢) #include<stdio.h> #include<string.h>//字符串函数 #include<math.h> long Fact(int n); long FactSum(int v); //函数的定义(作用:计算输入阶乘数的阶乘和,并将结果返回主函数 void displaymain()//显示主菜单 { 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("9:退出系统\n"); } void password() { int i=0,temp; char password[10]={0}; //声明一个最多有十个元素的数组,并且初始化值为0; for(i=0;i<3;i++) //循环语句体验证密码 { printf("请输入密码:"); scanf("%s",password);//输入密码(字符串) if(strcmp("19491001",password)==0)//strcmp:比较两个字符串是否一样 { printf("登陆成功\n"); int choice,flag=0; void displaymain(); void plus(); void minus(); void multiply(); void divide(); void complementation(); void accumulation(); int factorial(); int factorialSum(); while(flag==0) { displaymain(); printf("please input a digital(1-7)\n"); scanf("%d",&choice); if(choice>=1&&choice<=7) switch(choice) { case 1:plus();break; case 2:minus();break; case 3:multiply();break; case 4:divide();break; case 5:complementation();break; case 6:accumulation();break; case 7:factorial();break; case 8:factorialSum();break; default:printf("选项输入错误!\n"); } else { printf("your inputs is error!\n");flag=1; } } getch(); //菜单 } else { printf("密码错误\n"); } } void plus() { double a,b,temp; printf("请输入以空格分隔的两个运算数:\n"); scanf("%lf %lf",&a,&b); temp=a+b; } void minus() { double a,b,temp; printf("请输入被减数与减数(并用空格隔开):\n"); scanf("%lf %lf",&a,&b); temp=a-b; } void multiply() { double a,b,temp; printf("请输入以空格分隔的两个运算数:\n"); scanf("%lf %lf",&a,&b); temp=a*b; } void divide() { double a,b,temp; printf("请输入被除数与除数(并用空格隔开):\n"); scanf("%lf %lf",&a,&b); if(b!=0) temp=a/b; else printf("错误!\n"); } void complementation() { int a,b,temp; printf("请输入两个用空格隔开的运算数:\n"); scanf("%d %d",&a,&b); if(b!=0) { temp=a%b; } else printf("错误!\n"); } void accumulation() { int n,temp; int a,sum=1; printf("请输入要求累加的数值:\n"); scanf("%d",&n); for(a=2;a<=n;a++) { sum+=a; } temp=sum; printf("累加和为:%d\n",temp); } int factorial() { int m; long ret,temp; printf("请输入想求的阶乘数:"); scanf("%d",&m); ret = Fact(m);//调用函数Fact(),并将函数的返回值存入ret if(ret==-1) printf("输入错误!\n"); else { temp=ret; } return 0; } long Fact(int n)//函数的定义(作用:计算输入阶乘数的阶乘,并将结果返回主函数,且当n<0时,返回-1) { int i; long result = 1; if(n<0) { return -1; } else { for(i = 2;i<=n;i++) { result*=i; } return result; } } int factorialSum() { int m; long ret,temp; printf("请输入想求的阶乘和数:"); scanf("%d",&m); ret = FactSum(m);//调用函数Fact(),并将函数的返回值存入ret if(ret==-1) printf("输入错误!\n"); else temp=ret; return 0; } long FactSum(int v)//函数的定义(作用:计算输入阶乘数的阶乘和,并将结果返回主函数,且当n<0时,返回-1) { int i; long result=1,j = 1; if(v<0) { return -1; } else { for(i = 2;i<=v;i++) { j*=i; result+=j; } return result; } } void main() { password(); printf("结果是:%lf",temp); }
c语言:这是一个学生信息管理系统,编译过了,但是运行的时候出了问题!
代码如下: #include"stdio.h" # include "stdlib.h" #define M 100 struct student { char name[25]; //姓名 char num[25]; //学号 char gender[20]; //性别 char class[35]; //班别 char tel[25]; //手机号 char sex[25]; //性别 }; void input(struct student stu[M]); //输入函数 void output(struct student stu[M]); //输出函数 void lookfor(struct student stu[M]); //查询函数 void modify(struct student stu[M]); //修改函数 void delete_student(struct student stu[M]); //删除函数 int count = 0; struct student t; int main() { int choice, sum; struct student stu[M]; point1: sum = 0; printf("\t\t\t\t * 欢迎使用学生信息管理系统 *\n"); printf("\t\t\t\t\t 1、添加学生信息\n"); printf("\t\t\t\t\t 2、查询学生信息\n"); printf("\t\t\t\t\t 3、修改学生信息\n"); printf("\t\t\t\t\t 4、删除学生信息\n"); printf("\t\t\t\t\t 5、浏览学生信息\n"); printf("\t\t\t\t\t 6、退出系统\n"); printf(" *********************************************************************************\n"); printf("请输入你的选择\n"); scanf_s("%d", &choice); if (choice > 7 || choice <= 0) { sum++; if (sum >= 5) { printf("输入错误次数过多,程序将重新开始\n"); system("pause"); //程序暂停 system("cls"); //清屏语句 goto point1; } } switch (choice) //根据选择,调用不同的函数来完成不同的任务 { case 1:input(stu); break; case 2:lookfor(stu); break; case 3:modify(stu); break; case 4:delete_student(stu); break; case 5:output(stu); break; case 6:printf("感谢你使用学生信息管理系统,请关掉程序!!!\n"); system("pause"); break; default:printf("无效的选择!!!请重新输入!!!\n"); break; } return 0; } void input(struct student stu[M]) //自定义输入函数 { int len; system("cls"); printf("请添加要输入学生的信息\n"); do { printf("请输入由12位数字组成的学生学号\n"); scanf_s("%s", &stu[count].num); len = strlen(stu[count].num); } while (len != 12); printf("请输入同学的姓名\n"); scanf_s("%s", stu[count].name); printf("请输入学生的性别(1.男 2.女):\n"); scanf_s("%s", &stu[count].sex); printf("请输入对应的学生班级: \n"); scanf_s("%s", &stu[count].class); printf("请输入学生的手机号码\n"); scanf_s("%s", &stu[count].tel); count++; } void output(struct student stu[M]) //自定义输出函数 { int j; system("cls"); if (count == 0) { printf("当前已存学生信息为0个\n"); return; } for (j = 0; j < count; j++) { printf("学号\t\t 姓名\t\t性别\t班别\t手机号\n"); for (j = 0; j < count; j++) { printf("%s\t", stu[j].num); printf("%s\t", stu[j].name); printf("%s\t", stu[j].sex); printf("%s\t", stu[j].class); printf("%s\t", stu[j].tel); } } } void modify(struct student stu[M]) //自定义修改函数 { int j, flag = 0, course; char xh[25]; system("cls"); if (count == 0) { printf("当前已存学生信息为0个,无法修改!!!\n"); return; } else { printf("请输入你想要修改的同学学号\n"); scanf_s("%s", &xh); for (j = 0; j < count; j++){ if (strcmp(stu[j].num, xh) == 0) //同上 { printf("你确定要修改学生的信息吗???如果不确定的话,请关掉本程序吧!!!\n"); printf("选择需要修改的内容: 1、姓名 2、学号 3、班别 4、性别 5、手机号\n"); scanf_s("%d", &course); printf("请输入你想要修改后的学生成绩\n"); switch (course) { case 1:printf("请输入你想要修改后的学生名字\n"); scanf_s("%s", &stu[j].name); break; case 2:printf("请输入你想要修改后的学生学号\n"); scanf_s("%s", &stu[j].num); break; //switch控制语句 case 3:printf("请输入你想要修改后的学生班别\n"); scanf_s("%s", &stu[j].class); break; case 4:printf("请输入你想要修改后的学生性别\n"); scanf_s("%s", &stu[j].sex); break; case 5:printf("请输入你想要修改后的学生手机号\n"); scanf_s("%s", &stu[j].tel); break; default:printf("无效的选择!!!请重新输入!!!\n"); break; } } } } } void lookfor(struct student stu[M]) //自定义查询学生信息函数 { int j, flag = 0; char xh[25]; system("cls"); if (count == 0) { printf("当前已存学生信息为0个,无法查询!!!\n"); return; } else { printf("请输入你想要查看的同学学号\n"); scanf_s("%s", &xh); fflush(stdin); for (j = 0; j < count; j++) { if (strcmp(stu[j].num, xh) == 0) //通过字符函数对已存入的学生信息进行比较,找出要查看的学生 { printf("学号\t\t姓名\t\t班别\t性别\t手机号\n"); printf("%s\t", stu[j].num); printf("%s\t", stu[j].name); printf("%s\t", stu[j].class); printf("%s\t", stu[j].sex); printf("%s\t", stu[j].tel); } } if (j == count) printf("很抱歉,没有你所需要的学生信息\n"); } } void delete_student(struct student stu[M]) //自定义删除函数 { int j, index = 0, k = count; char xh[25]; system("cls"); if (count == 0) { printf("当前已存学生信息为0个,无法删除!!!\n"); return; } else { printf("请输入你想要删除的同学学号\n"); scanf_s("%s", xh); fflush(stdin); for (j = 0; j < count; j++) { if (strcmp(stu[j].num, xh) == 0) { for (j = index; j < count; j++) stu[j] = stu[j + 1]; count--; if (count < k) printf("你已经删除成功\n"); } index++; } if (j == count) printf("抱歉!!!没有你所需要删除的学生信息!*_*!\n"); } }
if语句没有执行 C语言
CreateList(L,N); temp = L; while(temp->next != temp && temp) { for(i=M-1;i>0;i--) { if(temp->next == NULL) temp->next = L->next; else temp = temp->next; } cout<<temp->next->nData<<endl; temp->next = temp->next->next; } 主要代码如上,断点调试的时候发现if else语句都没有执行,改了一下代码也没有什么作用,求教各位了
Kafka实战(三) - Kafka的自我修养与定位
Apache Kafka是消息引擎系统,也是一个分布式流处理平台(Distributed Streaming Platform) Kafka是LinkedIn公司内部孵化的项目。LinkedIn最开始有强烈的数据强实时处理方面的需求,其内部的诸多子系统要执行多种类型的数据处理与分析,主要包括业务系统和应用程序性能监控,以及用户行为数据处理等。 遇到的主要问题: 数据正确性不足 数据的收集主要...
volatile 与 synchronize 详解
Java支持多个线程同时访问一个对象或者对象的成员变量,由于每个线程可以拥有这个变量的拷贝(虽然对象以及成员变量分配的内存是在共享内存中的,但是每个执行的线程还是可以拥有一份拷贝,这样做的目的是加速程序的执行,这是现代多核处理器的一个显著特性),所以程序在执行过程中,一个线程看到的变量并不一定是最新的。 volatile 关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对该变量...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
GitHub开源史上最大规模中文知识图谱
近日,一直致力于知识图谱研究的 OwnThink 平台在 Github 上开源了史上最大规模 1.4 亿中文知识图谱,其中数据是以(实体、属性、值),(实体、关系、实体)混合的形式组织,数据格式采用 csv 格式。 到目前为止,OwnThink 项目开放了对话机器人、知识图谱、语义理解、自然语言处理工具。知识图谱融合了两千五百多万的实体,拥有亿级别的实体属性关系,机器人采用了基于知识图谱的语义感...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
微信支付崩溃了,但是更让马化腾和张小龙崩溃的竟然是……
loonggg读完需要3分钟速读仅需1分钟事件还得还原到昨天晚上,10 月 29 日晚上 20:09-21:14 之间,微信支付发生故障,全国微信支付交易无法正常进行。然...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
相关热词 基于c#波形控件 c# 十进制转十六进制 对文件aes加密vc# c#读取栈中所有的值 c# rsa256加密 好 学c# 还是c++ c# 和java的差距 c# curl网络框架 c# https证书请求 c# 中崎
立即提问