上周做了几道例题,题很容易做出来,但是可以用技巧,将时间复杂度降低。上周时间紧,忘了分享出来,趁现在有时间,写下来备份。
如题:
设计一个c语言程序代码,用于允许用户选择通过for、while或do-while语句来计算阶乘。
#include<stdio.h>
#define N 5
void main ()
{
int T;
char choice;
begin:
printf("请选择要执行的功能\n\n");
printf("F 通过for循环计算阶乘\n");
printf("W 通过while循环计算阶乘\n");
printf("D 通过do - while循环计算阶乘\n");
printf("X 结束程序运行\n ");
int sum,sum1=1;
int i=1;
choice = getchar();
switch (choice)
{
/*为何要这个语句?*/
case 'F':
printf("请输入所求阶乘的数值\n");
scanf("%d",&T);
for (i=1;i<T;i++)
{
sum=i+1;
sum1=sum1*sum;
}
break;
case 'f':
printf("请输入所求阶乘的数值\n");
scanf("%d",&T);
for (i=1;i<T;i++)
{
sum=i+1;
sum1=sum1*sum;
}
break;
case 'W':
printf("请输入所求阶乘的数值\n");
scanf("%d",&T);
while(i<=T)
{
sum1=sum1*i;
i++;
}
break;
case 'w':
printf("请输入所求阶乘的数值\n");
scanf("%d",&T);
while(i<=T)
{
sum1=sum1*i;
i++;
}
break;
case 'D':
printf("请输入所求阶乘的数值\n");
scanf("%d",&T);
do
{
sum1=sum1*i;
i++;
}
while(i<=T);
break;
case 'd':
printf("请输入所求阶乘的数值\n");
scanf("%d",&T);
do
{
sum1=sum1*i;
i++;
}
while(i<=T);
break;
case 'X':
printf ("谢谢使用!\n ");
goto exit;
case 'x':
printf ("谢谢使用!\n ");
goto exit;
default:
printf("请重新选择!\n");
goto begin;
}
printf("%d != %d",T,sum1);
choice = getchar();
goto begin;
exit:
system("pause");
return 0;
}
该程序可以自由选择计算的方式,适合新手用于熟悉各种循环语段。