c[day4]
打印九九口诀表
下面是一个完整的下三角九九囗诀表·
1* 1=1
1* 2=2 2* 2=4
1* 3=3 2* 3=6 3* 3=9
1* 4=4 2* 4=8 3* 4=12 4* 4=16
1* 5=5 2* 5=10 3* 5=15 4* 5=20 5* 5=25
1* 6=6 2* 6=12 3* 6=18 4* 6=24 5* 6=30 6* 6=36
1* 7=7 2* 7=14 3* 7=21 4* 7=28 5* 7=35 6* 7=42 7* 7=49
1* 8=8 2* 8=16 3* 8=24 4* 8=32 5* 8=40 6* 8=48 7* 8=56 8* 8=64
1* 9=9 2* 9=18 3* 9=27 4* 9=36 5* 9=45 6* 9=54 7* 9=63 8* 9=72 9* 9=81
本题要求对任意给定的1位正整数N ,输出从1 * 1 到N * N 的部分口诀表。
输入格式:
输入在一行中给出一个正整数N ( 1 < = N < = 9 ) ·
输出格式:
输出下三角N * N 部分口诀表,其中等号右边数字占4 位、左对齐。
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int i,j;
i=1;
while(i<=n)
{
j=1;
while(j<=i)
{
printf("%d*%d=%d",j,i,j*i);
if(j*i<10)
printf(" ");
else printf(" ");
j++;
}
printf("\n");
i++;
}
return 0;
}
统计素数并求和
本题要求统计给定整数M 和N 区间内素数的个数并对它们求和。
输入格式
输入在一行中给出2 个正整数M 和N ( 1 < = M < = N< = 500 ) ·
输出格式:
在一行中顺序输出M 和N 区间内素数的个数以及它们的和, 数字间以空格分隔·
输入样例
10 31
输出样例·
7 143
#include<stdio.h>
int main()
{
int m,n;
scanf("%d %d",&m,&n);
int cnt=0,sum=0;
if(m==1) m=2;//判断赋值注意= ==
for(int i=m;i<=n;i++)
{
int isprime=1;//注意位置要放在循环里,每次循环值都可能发生改变
for(int k=2;k<i;k++){
if(i%k==0){
isprime=0;
break;}
}
if(isprime){
cnt++;
sum+=i;}
}
printf("%d %d",cnt,sum);
return 0;
}
猜数字游戏
猜数字游戏是令系统随机产生一个100以内的正整数, 用户输入一个数对其进行猜测, 需要你编写程序自动对其与随机产生的被猜数进行猜测,需要编写程序自动对其与随机产生的被猜数进行较, 并提示大了( " Too big" ) , 还是小了( ” Too small" ) , 相等表示猜到了。如果猜到, 则结束程序。程序还要求统计猜的次数,如果1次猜出该数, 提示"Bingo!" ; 如果3 次以内猜到该数, 则提示’Lucky You!" ; 如果超过3 次但是在N ( > 3 ) 次内( 包括第N 次) 猜到该数, 则提示"Good Guess!" ; 如果超过N 次都没有猜到, 则提示’Game Over" , 并结束程序。如果在到达N 次之前,用户输入了一个负数, 也输出"Game Over" 并结束程序。
输入格式·
输入第一行中给出2个不超过100 的正整数, 分别是系统产生的随机数、以及猜测的最大次数N 。随后每行给出一个用户的输入, 直到出现负数为止。
输出格式·
在一行中输出每次猜测相应的结果, 直到输出猜对的结果或“Game Over ”则结束。
输入样例
58 4
70
50
56
58
60
-2
输出样例
Too big
Too small
Too small
Good Guess !
#include<stdio.h>
int main()
{
int number,n;
scanf("%d %d",&number,&n);
int inp;
int cnt=0;
int finished=0;//需在循环外定义,循坏依赖其执行
do{
scanf("%d",&inp);
cnt++;
if(inp<0){
printf("Game Over\n");//输出换行
finished=1;
}else if(inp>number){
printf("Too big\n");
}else if(inp<number){
printf("Too small\n");
}else
{
if(cnt==1){
printf("Bingo!\n");
}else if(cnt<=3){
printf("Lucky You!\n");
}else if(cnt<=n){
printf("Good Guess!\n");
}else {
printf("Game Over\n");
}
finished=1; //猜对按照次数else再分可以只写一个finished=1;
}
}while(!finished);//默认是0,当为1时结束
return 0;
}
求序列前N 项和
本题要求编写程序,计算序列2 / 1 + 3 / 2 + 5 / 3 + 8 / 5 + …的前N 项之和。注意该序列从第2项起, 每一项的分子是前一项分子与分母的和,分母是前一项的分子。
输入格式:
输入在一行中给出一个正整数N 。
输出格式:
在一行中输出部分和的值,精确到小数点后2位,题目保证计算结果不超双精度范围。
输入样例:
20
输出样例:
32.66
#include<stdio.h>
int main()
{
int n;
double divisor=1,dividend=2;//除数,被除数
//double为了能储存更多的数
scanf("%d",&n);
double sum=0.0;
double t;
for(int i=1;i<=n;i++){
sum+=dividend/divisor;
t=dividend;
dividend+=divisor;
divisor=t;
}
printf("%.2f\n",sum);
return 0;
}
约分最简分式
分数可以表示为" 分子/ 分母“ 的形式。编写一个程序, 要求用户输入一个分数, 然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6 / 12 可以被约分为1 / 2 。当分子大于分母时, 不需要表达为整数又分数的形式, 即11 / 8 还是11 / 8 ; 而当分子分母相等时, 仍然表达为1 / 1 的分数形式。
输入格式
输入在一行中给出一个分数, 分子和分母中间以斜杠“/ “ 分隔,如: 12 / 34 表示34 分之12 。分子和分母都是正整数( 不包含0 , 如果不清楚正整数的定义的话) 。
提示: 在scanf的格式字符串中加入“/” ,让scanf来处理这个斜杠。
输出格式·
在一行中输出这个分数对应的最简分式, 格式与输入的相同, 即采用" 分子/ 分母“的形式表示分数。如5 / 6 表示6分之5 。
输入样例
60/ 120
输出样例
1/2
#include<stdio.h>
int main()
{
int divisor=1,dividend=2;//除数,被除数
scanf("%d/%d",÷nd,&divisor);
int a=dividend;
int b=divisor;
int t;
while(b>0){
t=a%b;
a=b;
b=t;
}
printf("%d/%d",dividend/a,divisor/a);
return 0;
}
念数字
输入一个整数, 输出每个数字对应的拼音。当整数为负数时, 先输出"fu" 字。十个数字对应的拼音如下:
0: ling
1: yi
2:er
3:san
4: si
5 :wu
6: liu
7: qi
8: ba
9 : jiu
输入格式:
输入在一行中给出一个整数, 如 1234 。
提示:整数包括负数、零和正数。
输出格式
在一行中输出这个整数对应的拼音, 每个字的拼音之间用空格分开,行末没有最后的空格. 如yi er san si。
输入样例:
-600
输出样例
fu liu ling ling
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
if(n<0){
printf("fu");
n=-n;
}
int mask=1;
int t=n;
while(t>9){
mask*=10;
t/=10;
}
do{
int d=n/mask;
switch(d){
case 0:printf("ling");break;
case 1:printf("yi");break;
case 2:printf("er");break;
case 3:printf("san");break;
case 4:printf("si");break;
case 5:printf("wu");break;
case 6:printf("liu");break;
case 7:printf("qi");break;
case 8:printf("ba");break;
case 9:printf("jiu");break;
}
if(mask>9) printf(" ");//只要不是最后一个读音就要输出一个空格
n%=mask;
mask/=10;
}while(mask>0);
return 0;
求a 的连续和
输入两个整数a 和n ,a 的范围是[ 0,9 ] , n 的范围是[ 1,8 ] 求数列之和S =a+aa+aaa+…+aaa…a(n个a)。如a为2、n为8时输出的是2 + 22 + 222 + … +22222222 的和。
输入格式·
输入在一行中给出两个整数, 先后表示a和n 。 输出格式·
在一行中输出要求的数列之和。
输入样例·
2 4
输出样例
2468
#include<stdio.h>
int main()
{
int a,n;
scanf("%d %d",&a,&n);
int t=0;
int sum=0;
for(int i=1;i<=n;i++)
{
t=t*10+a;
sum+=t;
}
printf("%d",sum);
return 0;
}