C语言题目练习--第二部分11-20题

odin_zou 2023-02-13 23:59:11

题目11:给定不超过6的正整数A,考虑从A开始的连续4个数字,输出所有由他们组成的无重复数字的3位数

#include <stdio.h>

int main(){
	
	int A;
	printf("请输入数字:");
	scanf("%d", &A);
	int i, j, k;
	int cnt = 0;
	i = A;
	while (i <= A + 3)
	{
		j = A;
		while (j <= A + 3)
		{
			k = A;
			while (k <= A + 3)
			{
				if (i != j && i != k && j != k)
				{
					cnt++;
					printf("%d%d%d", i, j, k);
					if (cnt == 6)
					{
						printf("\n");
						cnt = 0;
					}
					else
					{
						printf(" ");
					}
				}
				k++;
			}
			j++;
		}
		i++;
	}
	return 0;
}

结果:

题目12:猜数字游戏:令系统随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到 ,则提示“Game Over”,并结束程序。(此处假设N=5)

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int number, N;
	int cnt = 0;
	int finished = 0;
	int guess;
	number = rand()%100; 
	N = 5;
	do
	{
		scanf("%d", &guess);
		cnt++;
		if (guess < 0) { printf("Game Over\n"); finished = 1; }//负数是错误的
		else if (guess > number) { printf("Too big\n"); }//大了
		else if (guess < number) { printf("Too small\n"); }//小了
		else//猜的数等于生成数
		{
			if (cnt == 1) { printf("Bingo!\n"); }
			else if( cnt <= 3 && cnt > 1){ printf("Lucky You!\n"); }
			else { printf("Good Guess!\n"); }
			finished = 1;
		}
		if (cnt == N)
		{
			if (!finished)
			{
				printf("Game Over\n");
				finished = 1;
			}
		}
	} while (!finished);
	return 0;
}

结果:

题目13: 计算序列2/1+3/2+5/3+8/5+...的前n项之和。(注意该序列从第2项起,每一项的分子是前一项分子和分母的和,分母是前一项的分子)

#include <stdio.h>

int main()
{
	int n;
	scanf("%d", &n);
	double FengZi=2, FengMu=1;
	double sum=0.0;
	int i;
	int t;//用来储存分子分母变化后的数据
	for (i = 1; i <= n; i++)
	{
		sum += (FengZi / FengMu);
		t = FengZi;
		FengZi = FengZi + FengMu;
		FengMu = t;
	}
	printf("%.2f\n", sum);
	return 0;
}

结果:

题目14:输入分子分母,程序自动化简为最简分式。

#include <stdio.h>

int main()
{
	int FengZi, FengMu;
	scanf("%d/%d", &FengZi, &FengMu);
	int n;
	int a=FengZi,b=FengMu,c=0;
	while (b > 0)//辗转相除法
	{
		n = a % b;
		a = b;
		b = n;
	}
	printf("%d/%d\n", FengZi / a, FengMu / a);
	return 0;
}

结果:

题目15:念数字:输入一个整数,输出每个数字对应的拼音,当整数为负数时,先输出“fu”字。

#include <stdio.h>

int main()
{
	int n;
	scanf("%d", &n);
	if (n < 0)
	{
		printf("fu ");
		n = -n;
	}
	int t = n;
	int mask = 1;
	while (t > 9)
	{
		t /= 10;
		mask *= 10;
	}
	do
	{
		int a = n / mask;
		switch ( a )
		{
		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);
	printf("\n");
	return 0;
}

结果:

 

 题目16:求a的连续和:输入两个整数a和n,a的范围是【0,9】,n的范围是【1,8】,求数列之和S=a+aa+aaa+aaaa+...+aa...a(n个a)

#include <stdio.h>

int main()
{
	int a, n;
	scanf_s("%d %d", &a, &n);
	int S = 0;
	int change = 0;
	while (n > 0)
	{
		change += a;
		S += change;
		a *= 10;
		n--;
	}
	/*
	另一种写法:
	int i;
	for ( i = 0; i < n; i++)
	{
		change = change * 10 + a;
		S += change;
	}
	*/
	printf("%d", S);
	return 0;
}

结果:

 题目17:

 

结果:

 

 

...全文
150 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

175

社区成员

发帖
与我相关
我的任务
社区管理员
  • c_university_2801
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧