#include
#include
char a(char b[10])
{char c;
int i;
for(i=0;i<10;i++)
{
if(b[i]>='a' && b[i]'a' <'A'
c=b[i]+32; //怎么都是加32,没有减的?
if(b[i]>='A' && b[i]<='Z') //即使上面都对了,把小写转换成大写了,在这句又会把大写转换成小写,应该用else if
c=b[i]+32; //怎么都是加32,没有减的?
return c;
}
}
main() //习惯不好,最好用int main(void) 原因以后学到再说
{char s[10]; //定义最大字符串长度,但get(s)输入的字符串长度不一定为10啊,所以你循环一直用10是不正确的
char c;
int i;
char a(char b[10]); //从这里看出你的子函数处理的是一个字符串,但下面你对这个字符串处理10次想干嘛?
gets(s); //想一个字符一个字符的处理就应该定义为char a(char b);
for(i=0;i<10;i++)
{
c=a(s); //c一个字符,a(s)处理的是一个字符串,处理一个字符串返回一个字符
printf("%c",c);
}
}
修改版:
#include
#include
char a(char b)
{
if(b>='a' && b<='z')
{
b=b-32;
}
else if(b>='A' && b<='Z')
{
b=b+32;
}
return b;
}
int main(void)
{
char a(char b);
char s[10];
char c;
int i;
gets(s);
for(i=0;i<strlen(s);i++)
{
c=a(s[i]);
printf("%c",c);
}
return 0;
}
回答:就是任意输入一个数,这个数交给变量max来保存。
原因如下:
注意看,在整个流程图中,「输入max」只执行了一次,是在数的个数n为1的时候。
换句话说,因为10个数是一个一个逐次输入进去的交给程序识别、处理的,所以,很明显,只输入第一个数的时候,这仅有的一个数必然是最大的数嘛!因为,没有其它的数跟它比较啊,那它当然就是最大的数喽!
所以,把这输入的第一个数交给变量max来保存,就是理所当然的了。
用语句来表示的话就是,「scanf("%d",&max);」,这里假设输入的数的类型是int型。
而后面的流程里,输入的那些数就不能理所当然地交给变量max了,因为从输入的第二个数开始,就需要比较才能知道究竟谁大谁小,大的那个才能交给变量max。每输入一个新的数,就比较一次,最后10个数都输入完毕了,最大的数也找出来了,并且就是变量max存储的值。
最后,输入变量max存储的值,就是这10个数中的最大的数。
以上,如有帮助,烦请点采纳,谢谢!
设一个标志位flag, 以标志位的5种状态对应发光二极管的5种工作状态,如当flag=1;发光二极管工作在1,当flag=2;发光二极管工作在2,!然后根据定时器定时功能,5秒到,刷新flag的值,程序如下;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;/程序功能:定时5S到切换LED显示状态
;作者:w4187818402008529 /
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
FLAG BIT 30H ;定义标志位
ORG 0
LJMP MAIN
ORG 0BH
LJMP AGA
;;;;;;主程序;;;;;;;;;;;;
ORG 0030H
MAIN: MOV FLAG,#01H ;标志位清0
MOV TMOD,#01H ;赋值50MS
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R0,#100 ;中断10050=5S
SETB EA
SETB ET0
SETB TR0
SJMP $
;;;;;;;;;中断服务程序;;;;;;;;;;;;;;
AGA: MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R0,LOOP ;5S到否否,返回
INC FLAG ;到,标志加1
MOV A,FLAG
CJNE A,#05,L1 ;扫描5种状态了否
MOV FLAG,#01H ;是,归0,重新开始
;;;;;;;;;切换程序;;;;;;;;;;;;
L1: CJNE A,#01H,L2 ;判断是否是状态1否,转判断2
LCALL LED1 ;是,调有状态1
SJMP LOOP ;返回
L2: CJNE A,#02H,L3 ; 以下跟上面判断相同
LCALL LED2
SJMP LOOP
L3: CJNE A,#03H,L4
LCALL LED3
SJMP LOOP
L4: CJNE A,#04H,L5
LCALL LED4
SJMP LOOP
L5: CJNE A,#05H,LOOP
LCALL LED5
LOOP: RETI
;;;;;;LED子程序区;;;;;;;;;;
LED1: RET
LED2: RET
LED3: RET
LED4: RET
LED5: RET
/////////////////
///////////////////////////////
/程序功能:定时5S到切换LED显示状态
作者:w4187818402008529 /
//========声明区===========
#include <reg51h>
unsigned char count=0;
unsigned char flag=1;
void led1(void);
void led2(void);
void led3(void);
void led4(void);
void led5(void);
//=========函数=========
main()
{ TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{ switch(flag)
{ case 1:led1();break;
case 2:led1();break;
case 3:led1();break;
case 4:led1();break;
case 5:led1();break;
}
}
}
//==========中断服务============
void timer0(void) interrupt 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(++count==100)
{ count=0;
flag++;
if(flag==5)
flag=1;
}
}
//========5种状态函数区=========
一、先判断能不能被3整除,就是用n除以3取余数,余数为0就能被整除,进入第二步;否则不能被3整除,结束;
二、用n除以5取余数,余数为0就能被整除,进入第三步;否则不能被5整除,结束;
三、输出,数n能同时被3和5整除。
程序框图你可以根据这个算法步骤很容易画出。
流程图是对程序步骤的概述,不需要详细到实现,例如你给的例子
流程图应该是 程序开始->获得一个三位数->求百位数、十位数、个位数(可以并行求也可以依次求)->将结果打印到屏幕上->结束程序
C语言在程序设计中需要使用流程图是一种程序简化的方法,属于结构化程序设计环节。
早期的非结构化语言中都有go to语句,它允许程序从一个地方直接跳转到另一个地方去。
执行这样做的好处是程序设计十分方便灵活,减少了人工复杂度,但其缺点也是十分突出的,一大堆跳转语句使得程序的流程十分复杂紊乱,难以看懂也难以验证程序的正确性,如果有错,排起错来更是十分困难。这种转来转去的流程图所表达的混乱与复杂,正是软件危机中程序人员处境的一个生动写照。而结构化程序设计,就是要把这团乱麻理清。
经过研究,人们发现,任何复杂的算法,都可以由顺序结构、选择(分支)结构和循环结构这三种基本结构组成,因此,我们构造一个算法的时候,也仅以这三种基本结构作为“建筑单元”,遵守三种基本结构的规范,基本结构之间可以并列、可以相互包含,但不允许交叉,不允许从一个结构直接转到另一个结构的内部去。正因为整个算法都是由三种基本结构组成的,就像用模块构建的一样,所以结构清晰,易于正确性验证,易于纠错,这种方法,就是结构化方法。遵循这种方法的程序设计,就是结构化程序设计。
画法如下:
第一步:以特定的图形符号加上说明,表示算法的图,称为流程图或框图
打开流程编辑工具。
第二步:选择对应的图形
开始结束用椭圆形
过程用长方形
第三步::绘制整个流程的过程
第四步:将各个流程节点用线连接起来
第五步:添加备注
以上就是关于C语言大小写字母转换流程图,全部的内容,包括:C语言大小写字母转换流程图,、关于c语言传统流程图问题、用C语言编写一个花样流水灯的程序及此程序的流程图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)