task:【利用循环求和】求1000以内所有偶数的和
要求:请编出3个程序来,分别用三种循环语句完成,注意体会各种循环语句的执行过程及语法特点。
代码
/*
*Copyright @2017,CSDN学院
*All rights reserved.
*文件名称:main.c
*作 者:袁生
*完成日期:2017年10月27日
*版 本 号:v1.0
*问题描述:输出1000以内所有偶数的和
*要求:请编出3个程序来,分别用三种循环语句完成,注意体会各种循环语句的执行过程及语法特点。
*/
#include <stdio.h>
int main( )
{
int i=0,total=0;
/*方法一
for (i=0;i<=1000;i+=2)
total+=i;
*方法二 */
do
{
total+=i;
i+=2;
}while (i<=1000);
//方法三
/*
while (i<=1000)
{
total+=i;
i+=2;
}*/
printf("1000内所有偶数和为:%d\n",total);
return 0;
}
输出结果
task2:【求阶乘】输入n,求 n! 并输出
代码
/*
*Copyright @2017,CSDN学院
*All rights reserved.
*文件名称:main.c
*作 者:袁生
*完成日期:2017年10月27日
*版 本 号:v1.0
*问题描述:输入n,求n!并输出
*/
#include <stdio.h>
int main( )
{
int n,i=1,total=1;
printf("请输入n:");
scanf("%d",&n);
while(i<=n)
{
total*=i;
i++;
}
printf("n!为:%d\n",total);
return 0;
}
运行结果
task3:【求x^n】输入x,n,求x的n次方(x^n)并输出(比较n!看有什么区别)
代码
/*
*Copyright @2017,CSDN学院
*All rights reserved.
*文件名称:main.c
*作 者:袁生
*完成日期:2017年10月27日
*版 本 号:v1.0
*问题描述:输入x,n,求x^n并输出
*/
#include <stdio.h>
int main( )
{
int x,n,i=1,total=1;
printf("请输入x,n:");
scanf("%d %d",&x,&n);
while(i<=n)
{
total*=x; //此处若是换为total*=i就变成了求n!
i++;
}
printf("x^n为:%d\n",total);
return 0;
}
输出结果
心得
若为total*=i,则求的是n!,若为total*=x,则求的是x的n次方即x^n
task:4:【输出这样的整数】输出1000以内能被3整除且个位数为6的所有整数。
代码
/*
*Copyright @2017,CSDN学院
*All rights reserved.
*文件名称:main.c
*作 者:袁生
*完成日期:2017年10月27日
*版 本 号:v2.0
*问题描述:输出1000以内能被3整除且个位数为6的所有整数。
*/
#include <stdio.h>
int main( )
{
int i,j;
//方法一:
/*
for (i=0; j<=1000; i++) // (1)
{
j=i*10+6;
if (j%3==0)
printf ("%d ",j); // (2)
}
*/
//方法二:
for (i=0;i<=1000;i++)
{
if (i%3==0) //如果能被3整除,继续看个位是否是6
if (i%10==6) //如果个位是6,则打印该数,不是则加3继续循环
printf ("%d ",i);
else
{
i+=2; //个位不是6则加2循环,加上for的表达式3,所以是加3判断再循环
continue;
}
else
continue; //不能整除3则加1继续循环
}
//方法三:
/*
for (i=0;i<=1000;i++)
{
if (i%10==6) //个位是6再判断能否被3整除,个位不是6则加一循环
{
if(i%3==0)
{
printf("%d ",i);
i+=9; //能被3整除就打印该数,i加9再转for循环表达式3,形成加10循环
}
else
i+=9; //不能被3整除就找下一个个位是6的数(在该数基础上加10)
}
}*/
printf("\n");
return 0;
}
运行结果
心得
方法二是先找能被3整除的数再找个位是6的数,相较于方法一先找个位是6的数再找个位是3的数来说,效率要低上许多。以后尽量使用高效的方法。
方法二优化:
//方法二:
for (i=0;i<=1000;i++)
{
if (i%3==0) //如果能被3整除,继续看个位是否是6
{
if (i%10==6) //如果个位是6,则打印该数,不是则加3继续循环
{
printf ("%d ",i);
i+=2;
}
else
i+=2; //个位不是6则加2循环,加上for的表达式3,所以是加3判断再循环
}
//不能整除3则加1继续循环
}
task5:【多数中的最大】编程序,输入10个整数,找出最大数。
代码
/*
*Copyright @2017,CSDN学院
*All rights reserved.
*文件名称:main.c
*作 者:袁生
*完成日期:2017年10月27日
*版 本 号:v1.0
*问题描述:编程序,输入10个整数,找出最大数。
*/
#include <stdio.h>
int main( )
{
int x,i,max;
scanf("%d",&x);
max=x;
for (i=2;i<=10;i++)
{
scanf("%d",&x);
max=(max>x)?max:x;
}
printf("max=%d\n",max);
return 0;
}
运行结果
心得
输入n个数据巧妙使用循环,简单 粗暴,而不是这样
scanf("%d %d %d %d %d",&a,&b...)
涉及n个变量。