1、1 输入一个三位整数2 利用算术运算符“/”,“%进行分解,分别求出此三位数n的百位n3,十位n2,个位n1。3 反向后的三位整数为:num=n1*100+n2*10+n34 输出此三位数一级算法验证:三位整数783第二步求精:2.1 求出n的百位数:n3=n/1002.2 求出n的十位数:n2=(n-n3*100)/102.3 求出n的个位数:n1=n%101 输入年year,月month2 判断该月有几天3 输出年,月,和该月的天数一级算法第二步求精:2.1 当month的值为1 3 5 7 8 10 12,月:days=31 2.2 当month的值为4 6 9 11月:days=302
2、.3 当month为2:闰年:28天,否则29天2.3求精:判定是否为闰年:能被4整除但不能被100整除的年份,和能被400整除的年份year%4=0&year%100!=0|year%400=0用变量用变量i表示当前项表示当前项1234-50用变量用变量n表示当前项的值表示当前项的值1357-99用变量用变量sum表示前表示前i项之和项之和14916-?1 前i项之和的变量sum初始化为02 当前项i为第一项3 数列中第i项的当前值为n=14 while(i=50)sum=sum+n;i=i+1;n=n+2;5 输出sum的值 while(i=50)sum=sum+2*i-1;i=i+1;为
3、验证循环的正确,可加上printf(i=%d,n=%d,sum=%dn,i,n,sum);分析:用2,3,4-n-1作为除数去除以n,只要其中一个能除尽n,n就不是素数。可以用一个变量来跟踪,假设n是素数,令变量flag的初值为1,然后用2,3,4,-n-1(用变量i作除数)去除n,只要一次能被i除尽,就让flag为0。素数:指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。一级算法1 输入n2 flag=13 i=24 while(in-1)if(n%i=0)flag=0;i=i+1;5 如果flag等于1,那么打印n为素数验证整数 25用变量i表示除数23456-2
4、4用变量flag表示是否为素数,初始为111100-0验证整数 13用变量i表示除数23456-12用变量flag表示是否为素数,初始为111111-1一级算法1 输入n2 flag=13 i=24 while(in-1)if(n%i=0)flag=0;i=i+1;5 如果flag等于1,那么打印n为素数如果用break修改1 输入n3 i=24 while(in-1)if(n%i=0)break;i=i+1;5 i等于n,那么n为素数验证整数 25用变量i表示除数2345验证整数 13用变量i表示除数23456-12如果用break修改1 输入n3 i=24 while(in-1)if(n%
5、i=0)break;i=i+1;5 i等于n,那么n为素数一级算法1 输入n2 flag=13 i=24 while(in-1)if(n%i=0)flag=0;i=i+1;5 如果flag等于1,那么打印n为素数通常只用2,3,4-n的开方作除数就够了n的开方用sqrt(n)表示sqrt()为库函数,属于数学函数,要包文件,即要写上#include 4 while(isqrt(n))if(n%i=0)flag=0;i=i+1;用变量用变量i表示当前项表示当前项1234-9用变量用变量n表示当前项的值表示当前项的值1111111111-?用变量用变量sum表示前表示前i项之和项之和112123-
6、?分析:1 共进行了9次循环,可用for(i=1,i=9,i+)2 每次循环 sum=sum+n n=n*10+1;3 sum初始为0n初始为1 i初始为1sum=0;n=1;for(i=1;i=9;i+)sum=sum+n;n=n*10+1;用变量用变量i表示当前项表示当前项1234-9用变量用变量n表示过度量表示过度量1111111111-?用变量用变量m表示当前项的值表示当前项的值1223334444?用变量用变量sum表示前表示前i项之和项之和123356-?用变量用变量i表示当前项表示当前项1234-9用变量用变量n表示当前项的值表示当前项的值1111111111-?用变量用变量su
7、m表示前表示前i项之和项之和112123-?求数列1、11、111、1111-共9项之和分析:1 共进行了9次循环,可用for(i=1,i=9,i+)2 每次循环 m=n*i;sum=sum+m;n=n*10+1;3 sum初始为0n初始为1 m初值为1i初始为1sum=0;n=1;m=1;for(i=1;i=9;i+)m=n*i;sum=sum+m;n=n*10+1;112123123412345分析:1 可用双重循环实现2 外循环:打印了五行,所以for(i=1;i=5;i+)3 内循环:第i行打印1至i,所以for(j=1;j=i;j+)printf(%d,j);并且打印完一行后换行,printf(n);for(i=1;i=5;i+)for(j=1;j=i;j+)printf(%d,j);printf(n);1 121 12321 1234321123454321分析:1 可用双重循环实现2 外循环:打印了五行,所以for(i=1;i=1;j-)printf(,j);再打印1至i,所以:for(j=1;j=1;j-)printf(%d,j);最后打印完一行后换行,printf(n);1121123211234321123454321