{
t=t*i;
sum=sum+t;
}
printf("1!+2!+...+l0!=%ld",n,sum);
}
程序运行结果:1!+2!+...+10!=4037913
小结:
1. 由于求阶乘的整数值比较大,所以数据类型常用长整型。
2. 采用递推算法时,一定有注意初始值的给定。
【4.5】编程实现,从键盘输入任意一串字符,以回车键结束。该字符串中的字符若是小写字母转换为大写字母,若是大写字母转换为小写字母,其它字符原样输出。程序文件名ex4_5.c。
分析:本题的关键问题之一,如何判断一个字符是小写字母还是大写字母,或者是数值字符等。
关键问题之二,如何实现大小写字母的转换。
关键问题之三,如何用getchar() 实现从键盘输入任意一串字符。
前两个问题在实验三中已谈过,本次实验解决问题三。字符输入函数getchar()每次只能输入一个字符,换句话,每次只能从键盘接收一个字符,若要接收一串字符,需采用循环语句。
如何来确定循环条件表达式呢?
当题中没有明确给定时,以字符输入函数getchar()接收回车符('\n')作为循环结束条件。 #include "stdio.h"
void main()
{ char c;
while((c=getchar())!='\n' )
{ if(c>='a'&&c<='z')
c=c-32;
else
if(c>='A'&&c<='Z')
c=c+32;
putchar (c);
}
}
输入测试数据:ABCd#$GTabc23
程序运行结果:abcD#$gtABC23
小结:
1. 循环条件表达式 (c=getchar())!='\n',依据运算符的优先级,圆括号最优先,先运算c=getchar() ,从键盘上接收一个字符,赋予变量 c,然后再判断变量 c的值是否不等于'\n',若是条件为真,执行循环体,否则退出循环。
2. 循环条件表达式若修改为:c=getchar()!='\n',关系运算符优先赋值运算符,首先计算getchar()!='\n',即当从键盘接收的一个字符不等于回车符,返回值1,然后将1赋给字符