#include <stdio.h>
04-0. 求符合给定条件的整数集(15)
给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成
的无重复数字的3位数。
输入格式:输入在一行中给出A。
输出格式:输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以
空格分隔,但行末不能有多余空格。
输入样例:2
输出样例:
234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543
main()
{
int n,i,j,k,x=0;
printf("input>>> ");
scanf("%d",&n);
for(i=n; i<n+4; ++i)
for(j=n; j<n+4; ++j)
for(k=n; k<n+4; ++k){
if(i!=j && j!=k &&i!=k){
x++;
if(x % 6 == 0){
printf("%d%d%d\n",i,j,k);
}else{
printf("%d%d%d ",i,j,k);
}
}
}
return 0;
}
04-1. 水仙花数(20)
水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它
本身。例如:153 = 1^3 + 5^3+ 3^3。本题要求编写程序,计算所有N位水仙花数。
输入格式:输入在一行中给出一个正整数N(3<=N<=7)。
输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:3
输出样例:
153
370
371
407
int main()
{
int n;
printf("input>>>");
scanf("%d", n);
int i;
int first = 1;
for(i=1; i<n; i++){
first *= 10;
}
// printf("first:%d",first);
for(i=first; i<first*10; i++){
int tmp = i;
int res = 0;
int j;
for(j=0; j<n; j++){
int r = tmp % 10;
tmp /= 10;
res += r*r*r;
}
if(res == i){
printf("%d\n", i);
}
}
return 0;
}
04-2. 打印九九口诀表(15)
本题要求对任意给定的1位正整数N,输出从1
1到N
N的部分口诀表。
输入格式:输入在一行中给出一个正整数N(1<=N<=9)。
输出格式:输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。
输入样例:4
输出样例:
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
main()
{
int i,j,n;
printf("input>>> ");
scanf("%d",&n);
for(i=1; i<=n; i++)
for(j=1; j<=i; j++){
printf("%d * %d = %d", j, i, j*i);
if(i == j){
printf("\n");
}else{
if(i*j<10)
printf(" ");
else
printf(" ");
}
}
return 0;
}
04-3. 统计素数并求和(20)
本题要求统计给定整数M和N区间内素数的个数并对它们求和。
输入格式:输入在一行中给出2个正整数M和N(1<=M<=N<=500)。
输出格式:在一行中顺序输出M和N区间内素数的个数以及它们的和,以空格分隔。
输入样例:10 31
输出样例:7 143
int main()
{
int a,b,i,n;
int num=0,total=0;
printf("input>>> ");
scanf("%d %d",&a,&b);
if(a == 1){
a = 2; // 1为非负数
}
for(n=a; n<=b; n++){
int tag = 0;
for(i=2; i<n; i++){
if(n % i == 0){
tag = 1;
continue;
}
}
if(tag == 0){
num++;
total += n;
printf("素数:%d ",n);
}
}
printf("\n%d %d", num, total);
return 0;
}
04-4. 猜数字游戏(15)
猜数字游戏是令系统随机产生一个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!
int main()
{
int init, n;
printf("input>>> ");
scanf("%d %d", &init, &n);
printf("\n**** 游戏开始 ****\n");
int r,m=1;
while(r>=0 && m<=n){
scanf("%d", &r);
if(r > init)
printf("Too big\n");
else if(r < init && r >= 0)
printf("Too small\n");
else if(r == init && m == 1){
printf("Bingo!\n");
break;
}
else if(r == init && m<=3){
printf("Lucky you!\n");
break;
}
else if(r == init && m > 3){
printf("Good Guess!\n");
break;
}
m++;
}
if(m > n || r < 0)
printf("Game over");
return 0;
}