c语言开关量通讯解析

c语言关灯问题 怎样表示灯的开关呢 最好写出代码~

#includestdio.h

void main()

{ int n,b,s; //n总灯数,b开始数的灯号,s间隔

int a[256],i,k,m,p; //a存放灯号,k当前数到位置,m当前数到亮灯计数,p熄灭灯数

scanf(“%d%d%d”,n,b,s); if ( n256 ) n=256; //约数最多256盏灯

for ( i=0;in;i++ ) a[i]=i; //灯号赋值

k=b; m=s; p=0;

while ( pn ) //当还有灯没有熄灭时循环

{ if ( m==s ) { printf(“%d “,a[k]); a[k]=(-1); p++; m=0; } //数到了,输出位置,标记熄灭

else { do { k++; k%=n; } while ( a[k]0 ); m++; } //向后数并折返,只有亮的灯m才计数

}

printf(“\n”);

}

c语言开关量通讯解析

c语言 switch的用法

执行过程:

先计算并获得switch后面小括号里的表达式或变量值,然后将计算结果顺序与每个case后的常量比较。

当二者相等时,执行个case块中的代码,当遇到break时,就跳出switch选择结构,执行switch选择结构之后的代码。

如果任何一个case之后的常量与switch后的小括号中的值相等,则执行switch尾部的default块中代码。

C语言中的开关语句是什么?

你说的开关语句,应该是一种分支语句

格式如下:

switch( 条件 )

{

case 值:

break;

default:

}

C语言程序设计:通讯录程序设计

#include “stdlib.h”

#include “string.h”

#include “conio.h”

#include “stdio.h”

#include “dos.h”

FILE *fp;

int i; //i是全局变量 可代替length

struct address

{ char postnum[10];

char a[40]; //家庭地址

};

struct birthday

{ int year;

int month;

int day;

};

struct ffriend

{ int num; //序号

char name[20];

char sex;

char telephone[13];

struct birthday birthday;

struct address address;

}

friends[50];

void Load()

{

int j;

long k;

fp=fopen(“friend.txt”,”a+”); //打开文件friend.txt

if(fp!=NULL)

{

for(i=1;i50;i++)

{

j=fgetc(fp);

if(j==EOF) //判断是否到了文件尾

return;

k=i-1;

fseek(fp,k*sizeof(struct ffriend),SEEK_SET);

fread(friends[i],sizeof(struct ffriend),1,fp); //从文件中读取一条记录

}

}

else

{

fp=fopen(“friend.txt”,”w”);

i=1;

}

}

void Show(int j)

{

// friends[j].num=i;

printf(“\n\n\t编号-Nnumber: %3d”,friends[j].num);

printf(“\n\t姓名-Name:%-20s”,friends[j].name);

printf(“\n\t性别-Sex:%c”,friends[j].sex);

printf(“\n\t联系电话-Telephone:%-13s”,friends[j].telephone);

printf(“\n\t出生日期-Birthday:%4d-%2d-%3d”,friends[j].birthday.year,friends[j].birthday.month,friends[j].birthday.day);

printf(“\n\t邮编-Postnum:%-10s”,friends[j].address.postnum);

printf(“\n\t通信地址-address:%-40s”,friends[j].address.a);

}

void Append(int j)

{

fflush(stdin); //区内清除文件缓冲区,文件以写方式打开时将缓冲容写入文件

//stdin是一个标准FILE*(文件型指针)指向通常是用键盘的输入的输入流

friends[j].num=j;

printf(“\n\t\t\t序号-Number:%d”,j);

printf(“\n\t\t\t姓名-Name:”);

scanf(“%s”,friends[j].name);

fflush(stdin); //为什么没有fflush(stdin); 的效果会自动跳过呢?

printf(“\t\t\t性别-Sex(m/w):”); //为什么输入汉字男女也会自动跳过联系电话呢

scanf(“%c”,friends[j].sex);

printf(“\t\t\t联系电话-telephone:”);

scanf(“%s”,friends[j].telephone);

printf(“\t出生日期-birthday”);

printf(“\n\t\t\t年份-year:”);

scanf(“%d”,friends[j].birthday.year);

printf(“\t\t\t月份-month:”);

scanf(“%d”,friends[j].birthday.month);

printf(“\t\t\t日-day:”);

scanf(“%d”,friends[j].birthday.day);

printf(“\t\t\t邮编-Postnumber:”);

scanf(“%s”,friends[j].address.postnum);

printf(“\t\t\t通信地址-Address:”);

scanf(“%s”,friends[j].address.a);

getchar();

}

void Delete()

{

int k;

printf(“\n\tDelete 序号-Number:”);

scanf(“%d”,k);

if(k=i)

{

for(int j=k;ji+1;j++) /*插入位置后的元素顺序后移*/

{

strcpy(friends[j].name,friends[j+1].name); /*交换元素内容*/

friends[j].sex=friends[j+1].sex;

strcpy(friends[j].telephone,friends[j+1].telephone);

friends[j].birthday.year=friends[j+1].birthday.year;

friends[j].birthday.month=friends[j+1].birthday.month;

friends[j].birthday.day=friends[j+1].birthday.day;

strcpy(friends[j].address.postnum,friends[j+1].address.postnum);

strcpy(friends[j].address.a,friends[j+1].address.a);

}

i–;

}

else

{

printf(“输入的序号太大!”);

}

}

void Modify(int j)

{

Append(j);

}

void Save()

{

int j;

fp=fopen(“friend.txt”,”w”);

for(j=1;j=i;j++)

{

fwrite(friends[j],sizeof(struct ffriend),1,fp);

}

fclose(fp);

}

void main()

{

int j;

char grade;

char searchname[10];

Load();

i–;

do

{

printf(“\t\t\t\t简易通讯录\n\n”);

printf(“功能选择(Function choose)\n”);

printf(“\1A.读取(Read)\n”);

printf(“\2B.增添(Append)\n”);

printf(“\6C.插入(Insert)\n”);

printf(“\5D.删除(Delete)\n”);

printf(“\5E.查询(Search)\n”);

printf(“\6F.修改(Modify)\n”);

printf(“\2G.保存(Save)\n”);

printf(“\1H.退出(Quit)\n”);

printf(“请选择(Choice)\n注:输入A~H的大写字母\n”);

scanf(“%c”,grade);

switch(grade)

//加个大写和小写 都可以啊

{

case ‘A’: j=1; //显示功能

while(getchar()!=0x1bj=i) //增添按Esc键退出

{

Show(j++);

printf(“\n请按回车键继续!”);

}

if(j-11)

{

printf(“\n\t空文档,无任何记录-Empty Note\n”);

printf(“\n请按回车键继续!”);

getchar();

}

printf(“\n\t\t\t\t\t\t\t此次操作结束”);

printf(“\n\t————————————————————\t\t\n”);

break;

case ‘B’: //增加功能

while(i=50) //增加按ESC键退出的功能

{

i++;

Append(i);

printf(“\t是否继续增加?y/n”);

//修改 加上else if 其他就跳出或强制打印出出错

char a=getchar();

if(a==’n’||a==’N’)

break;

}

if(i==51)

printf(“\n\t文档已满,无法增加记录-note full”);

printf(“\n\t\t\t\t\t\t\t此次操作结束”);

printf(“\n\t————————————————————\t\t\n”);

getchar();

break;

case ‘C’:

int k;

printf(“\n\t输入要插入的位置:”);

scanf(“%d”,k);

j=i+1;

friends[j].num=j;

for(j;jk;j–) //插入功能

{

strcpy(friends[j].name,friends[j-1].name); //数据后移

friends[j].sex=friends[j-1].sex;

strcpy(friends[j].telephone,friends[j-1].telephone);

friends[j].birthday.year=friends[j-1].birthday.year;

friends[j].birthday.month=friends[j-1].birthday.month;

friends[j].birthday.day=friends[j-1].birthday.day;

strcpy(friends[j].address.postnum,friends[j-1].address.postnum);

strcpy(friends[j].address.a,friends[j-1].address.a);

}

Append(k);

i++;

printf(“\n\t\t\t\t\t\t\t此次操作结束”);

printf(“\n\t————————————————————\t\t\n”);

break;

case ‘D’: //删除功能 //增添随意删除多条记录的功能

Delete();

if(i1)

printf(“\n没有记录-No records\n”);

printf(“\n请按回车键继续!”);

getchar();

getchar();

printf(“\n\t\t\t\t\t\t\t此次操作结束”);

printf(“\n\t————————————————————\t\t\n”);

break;

case ‘E’: //查询功能

printf(“\n\t请输入要查询记录的相关姓名:”); //增添查询按列号的

scanf(“%s”,searchname);

for(j=1;j=i;j++)

{

if(strcmp(searchname,friends[j].name)==0) //比较字符串

{

Show(j);

break;

}

}

if(i1)

{

printf(“\n 没有您所查询的记录-No records”);

printf(“\n 请按回车键继续!”);

getchar();

}

printf(“\n\t\t\t\t\t\t\t此次操作结束”);

printf(“\n\t————————————————————\t\t\n”);

getchar();

break;

case ‘F’: //修改功能 / /增添按序列号查询

printf(“\n\t请输入要修改记录的相关姓名:”);

gets(searchname);

scanf(“%s”,searchname);

for(j=1;j=i;j++)

{

if(strcmp(searchname,friends[j].name)==0) //比较字符串

{

Modify(j);

// getchar(); //加个输出确定修改吗

}

}

if(i1) //修改功能

{ printf(“\n 没有您所要修改的记录-No records”);

printf(“\n 请按回车键继续!”);

getchar();

getchar();

}

printf(“\n\t\t\t\t\t\t\t此次操作结束”);

printf(“\n\t————————————————————\t\t\n”);

break;

case ‘G’:

Save(); //存盘功能

getchar();

printf(“\n\t\t\t\t\t\t\t此次操作结束”);

printf(“\n\t————————————————————\t\t\n”);

break;

case ‘H’: //退出功能

char x;

printf(“是否保存?yes/no\n”);

scanf(“%s”,x);

//getchar();

// getchar();

if(x==’y’)

{

Save();

exit(0);

}

else

exit(0);

default:

printf(“\n\t输入有误,请输入正确的序列号!”);

printf(“\n请按回车键继续!”);

getchar();

printf(“\n\t\t\t\t\t\t\t此次操作结束”);

printf(“\n\t————————————————————\t\t\n”);

}

}while(1);

}

求大神解释c语言通讯录管每理系统中我下面写的每一步函数的意思

void WritetoText(Person per[],int n) //保存函数

{

int i=0; //定义变量i

FILE *fp; //定义文件指针

char filename[20]; //定义字符数组用于接收文件名

printf(“\t保存到文件\n”); //输出 保存到文件

printf(“\t请输入所保存的文件名:”)//

scanf(“\t%s”,filename); //输入文件名

if((fp=fopen(filename,”w”))==NULL) // 判断文件是否为空

{

printf(“\t无法打开文件\n”); //文件为空输出无法打开文件

system(“pause”); //系统函数,按下任意键继续

return; //返回空,程序正常结束

是否明白了,可以追问。

c语言开关语句是什么?

break在for循环来实现开关语句、while循环等循环流程控制中起的作用是停止执行break后面的语句,跳出本次循环,并跳出该循环控制体。

C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况。例如,输入一个整数,输出该整数对应的星期几的英文表示:

运行结果:

Input integer number:3

Wednesday

C语言还提供了另外一种多分支选择的语句——switch 语句,它的基本语法格式如下:

switch(表达式){

case 常量表达式1: 语句 1;

case 常量表达式2: 语句 2;

……

case 常量表达式n: 语句 n;

default: 语句 n+1;

}

它的执行过程是:首先计算“表达式”的值,然后从第一个 case 开始,与“常量表达式x”进行比较,如果与当前常量表达式的值不相等,那么就不执行冒号后边的语句 x,一旦发现和某个常量表达式的值相等了,那么它会执行之后所有的语句,如果直到最后一个“常量表达式 n”都没有找到相等的值,那么就执行 default 后的“语句 n+1”。

需要注意的是,当找到一个相等的 case 分支后,会执行该分支以及之后所有分支的语句。例如:

运行结果:

Input integer number:4

Thursday

Friday

Saturday

Sunday

error

输入4,发现和第四个分支匹配,于是就执行第四个分支以及后面的所有分支。这显然不是我们想要的结果,我们希望只执行第四个分支,跳过后面的所有分支。

为了避免这种情况,C语言还提供了一个关键字 break,专门用于跳出switch语句。

switch 的分支语句一共有 n+1 种,而我们通常希望的都是选择其中的一个分支来执行,执行完后就结束整个 switch 语句,而继续执行 switch后面的语句,此时就可以通过在每个分支后加上 break 语句来实现了。如下:

switch (表达式){

case 常量表达式1: 语句1; break;

case 常量表达式2: 语句2; break;

……

case 常量表达式n: 语句n; break;

default: 语句n+1; break;

}

加了这个 break 语句后,一旦“常量表达式 x”与“表达式”的值相等了,那么就执行“语句 x”,执行完毕后,由于有了 break 则直接跳出 switch 语句,继续执行 switch 语句后面的程序了,这样就可以避免执行不必要的语句。

使用switch语句修改上面的代码:

运行结果:

Input integer number:4

Thursday

值得一提的是,由于default是最后一个分支,匹配后不会再执行其他分支,所以也可以不用break;语句。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月25日 22:38:13
下一篇 2024年3月25日 22:44:20

相关推荐

  • c语言改写模式,c语言实现修改功能

    c语言程序修改? 1、这个程序有4个错误,我都加粗了,第一个是m没有赋初值,第二个是while表达式中的ch=getchar()需要括号括起来,第三个是m=m*10+ch-0中的0也需要用单引号括起来,第四个是第2个while中为m!=0。 2、define容易造成误会,因为不符合一般的编程习惯,false 0, true 1;scanf放在你的那个地方是达…

    2024年5月23日
    3900
  • c语言控制代码的换码序列,c语言交换代码

    求C语言编程大神解答一下下面这个编程代码? k==5,用5去除125余0,所以r=125%5中r为0。由于!0为1,所以执行while循环体:先打印出5(k的值),再n=n/k==125/5=25;由于251则再打印出*号。这一循环结果输出是5*。 下面是我的代码,三个函数分别对应三个问题。 在实现基本要求的前提下,拓展了可以从键盘输入的功能,以下为各题代码…

    2024年5月23日
    5600
  • c语言扫描io脚状态,c语言端口扫描

    求51单片机的上升沿和下降沿C语言检测程序列子,端口就是普通IO口。 上升沿触发是当信号有上升沿时的开关动作,当电位由低变高而触发输出变化的就叫上升沿触发。也就是当测到的信号电位是从低到高也就是上升时就触发,叫做上升沿触发。 单片机怎么计算1s内下降沿的个数的C语言程序或者计算两个下降沿的时间(检测脉冲频率)计算1s内下降沿的个数方法是,一个定时器设置定时1…

    2024年5月23日
    4400
  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    4400
  • c语言三位小数,C语言三位小数

    怎样用C++语言输出精确到小数点后三位的数? 1、用C++语言输出精确到小数点后三位的数,可以参考下面给出的代码:coutsetiosflags(ios:fixed)setprecision(3)。其中 setiosflags中set是设置的意思。ios是iostream的缩写,即输入输出流。flags是标志的意思。 2、要精确到小数点后若干位,则数据类型为…

    2024年5月23日
    7300
  • c语言21点游戏,二十一点游戏代码c语言

    如何使用C语言编写简单小游戏? 1、数学知识:长方形的面积S=a*b 长方形周长L=2*(a+b)其中a b分别为长方形的宽和高。算法分析:长方形面积及周长均依赖于宽和高,所以先要输入宽高值,然后根据公式计算,输出结果即可。 2、/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++0、turbo…

    2024年5月23日
    6400
  • c语言当中的null,C语言当中的符号

    C/C++中,NULL和null的区别是什么? nul 和 null要看编译器,不同的编译器有所区别。 所以C或者C++中都使用一个特殊定义NULL表示无效值,其本质就是未定义具体数据类型的0值。 null是是什么都没有的意思。在java中表示空对象。 本意是“空的;元素只有零的”意思。计算机中通常表示空值,无结果,或是空集合。\x0d\x0a在ASCII码…

    2024年5月23日
    4500
  • 包含c语言对txt文件命名的词条

    如何在C语言编程里面修改源文件名字 如果你是在WINDOWS的话,简单了,随便用个编辑器,比如记事本,然后写c源程序,保存到你想要保存的位置。如果你在DOS下,可以用edit,写好以后,按alt键,选择文件菜单,然后保存。 用open打开文件,注意操作模式使用“修改”或者“添加” 用write或者fprintf向文件中写入你的内容。 用close关闭文件。 …

    2024年5月23日
    4900
  • 学c语言编程,学c语言编程用什么软件

    编程开发必须要学C语言吗? 1、要学习。编程开发的学习内容主要包括c语言、python和c+语言。C语言作为一种简单灵活的高级编程语言,它是一个面向过程的语言,一般是作为计算机专业的基础入门语言课程。 2、C语言。对于刚接触编程的人来说,先学习C语言是非常重要的。C语言可以说是是计算机编程语言的鼻祖,其他的编程语言几乎全是由C语言变化衍生出来的。 3、不需要…

    2024年5月23日
    3500
  • c语言用string定义字符串,c语言中用string类型来处理字符串类型

    C++怎样定义定义字符串 1、第一是字符数组来表示字符串。用下面的语句声明:char a[10];C语言中字符数组与字符串的唯一区别是字符串末尾有一个结束符\0,而字符数组不需要。 2、在C中定义字符串有下列几种形式:字符串常量,char数组,char指针 字符串常量 即:位于一对双括号中的任何字符。双引号里的字符加上编译器自动提供的结束标志\0字符,作为 …

    2024年5月23日
    4300

发表回复

登录后才能评论



关注微信