C语言程序设计习题集(中国大学MOOC翁凯)04

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

#include <stdio.h>
int main()
{
	int a;
	scanf("%d",&a);
	int i,j,k;
	int cnt = 0;
	for(i=a ; i<=a+3 ; i++){
		for(j=a ; j<=a+3 ; j++){
			for(k=a ; k<=a+3 ; k++){
				if(i!=j && i!=k && j!=k){
					printf("%d%d%d",i,j,k);
					cnt++;
					if(cnt == 6){
						printf("\n");
						cnt = 0;
					}
					else{
						printf(" ");
					}
				}
			}
		}
	}
	return 0;
}

04-1. 水仙花数(20)

水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例 如:153 = 1 3 1^313+5 3 5^353+3 3 3^333。 本题要求编写程序,计算所有N位水仙花数。

输入格式:

输入在一行中给出一个正整数N(3<=N<=7)。

输出格式:

按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:
3
输出样例:
153
370
371
407

#include <stdio.h>
      
int main()      
{
	int n;
	scanf("%d",&n);
	int first = 1;
	int i = 1;
	while(i <n){
		first *= 10;
		i++;
	}
	i = first;
	while(i<first*10){
		int t = i;
		int sum = 0;
		do{
			int d = t%10;
			t/=10;
			int p = d;
			int j = 1;
			while(j<n){
				p *=d;
				j++;
			}
			sum += p;
		}while(t>0);
		if(sum == i){
			printf("%d\n",i);
		}
		i++;
	}	
	return 0;
}

04-2. 打印九九口诀表(15)

下面是一个完整的下三角九九口诀表:

11=1
1
2=2 22=4
1
3=3 23=6 33=9
14=4 24=8 34=12 44=16
15=5 25=10 35=15 45=20 55=25
1
6=6 26=12 36=18 46=24 56=30 66=36
1
7=7 27=14 37=21 47=28 57=35 67=42 77=49
18=8 28=16 38=24 48=32 58=40 68=48 78=56 88=64
19=9 29=18 39=27 49=36 59=45 69=54 79=63 89=72 99=81
本题要求对任意给定的1位正整数N,输出从1
1到N*N的部分口诀表。

输入格式:

输入在一行中给出一个正整数N(1<=N<=9)。

输出格式:

输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。

输入样例:
4
输出样例:
11=1
1
2=2 22=4
1
3=3 23=6 33=9
14=4 24=8 34=12 44=16

#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,i*j);
			printf("   ");
			j++;
		}
		printf("\n");
		i++;
	}	
	return 0;
}

04-3. 统计素数并求和(20)

本题要求统计给定整数M和N区间内素数的个数并对它们求和。

输入格式:

输入在一行中给出2个正整数M和N(1<=M<=N<=500)。

输出格式:

在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。

输入样例:
10 31
输出样例:
7 143

#include <stdio.h>
int main()
{
	int a,b;
	scanf("%d%d", &a, &b);
	int i, j, flag;
	int sum = 0;
	int count = 0;
	
	for (i = a; i <= b; i++)
	{
		flag = 0;
		for (j = 2; j < i; j++)
		{
			if (i%j == 0)
			{
				flag = 1;
				break;
			}			
		}
		if (flag == 0 && i != 1)
		{
			count++;
			sum = sum + i;
		}
	}
	printf("%d %d",count, sum);
	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!

#include <stdio.h>
int main()
{
	int number = rand()%100+1;
	int count = 1;
	int a,n;

	scanf("%d %d",&a,&n);
	if(a==number){
		printf("Bingo!\n");
		return 0;
	}
	do{		
	   	if(a<0){
			printf("Game Over\n");
			break;
	    } 	
		else{	   
			if ( a > number ) {
				printf("TOO big\n");
			}
			else if ( a < number ) {
				printf("TOO small\n");
		    }
		}
		scanf("%d",&a);
		count++;
		if(count>n){
			printf("Game Over\n");
			break;
		}
    }while(a!=number);
	if(a==number){
		if(count==2 || count==3){
			printf("Lucky You!\n");
		}
		else if(count>3 && count<=n){
			printf("Good Guess!\n");
		}		
	}    
	return 0;
}

版权声明:本文为weixin_50036127原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。