菜鸟C语言练习(一)

原来准备暑假到寒假期间更新一些关于c++还有QT的一些基础使用,以及单片机的基础内容,因为个人原因没有更新,正好这段时间重新温习一下C语言,就把一些基础的题目写完上传,新手可以照着练练手。

题一:

显示出正整数m的所有因子及因子的个数?

#include"math.h"
void main()
{

	int data=0, i,k;
	printf("input number:");
	scanf("%d",&i);
	for (k = 1; k < sqrt(i); k++)
	{
		if (!(i % k))
		{
			printf("%d  %d\n", k, i / k);
			data += 2;
		}
	}
	printf("一共%d公因数",data);
}

题二:

显示出正整数m和n的最大公约数?

#include"math.h"

void main()
{

	int i, j, k,max=NULL;
	printf("input number:");
	scanf("%d%d", &i, &j);
	if (i > j)
	{
		for (k = 1; k <= j; k++)
		{
			if (!(i%k) && !(j%k))
			{
				max = k;
				if (k > max)
				{
					max = k;
				}
			}
		}
	}
	else
	{
		for (k = 1; k <= i; k++)
		{
			if (!(i%k) && !(j%k))
			{
				max = k;
				if (k > max)
				{
					max = k;
				}
			}
		}

	}
	printf("max = %d",max);

}

题三:

打印所有水仙花数?

#include"math.h"

void main()
{

	int ge, shi, bai,i;
	for (i = 100; i < 1000; i++)
	{
		ge = i % 10;
		shi = (i / 10) % 10;
		bai = i / 100;
		if (i == (ge*ge*ge + shi * shi*shi + bai * bai*bai))
		{
			printf("%d\n",i);
		}
	}
}


题四:

百元买百鸡(100元钱买100只鸡),公鸡每只5元,母鸡每只3元,小鸡1元3只,可买公鸡、母鸡、小鸡各几只,有几种买法。

#include "stdio.h"

void main()
{

	int man, she, yong,data=0;
	for (man = 0; man < 20; man++)
	{
		printf("");
		for (she = 0; she < 33; she++)
		{
			
			for (yong = 0; yong < 300; yong += 3)
			{
				
				if (((15*man + 9 * she + yong) == 300)  && ((man + she + yong) == 100))
				{
					printf("公鸡%d 母鸡 %d 小鸡%d\n", man, she, yong);
					data++;
				}
			}
		}
	}
	printf("一共%d种买法",data);
}

题五:

…有一条长阶梯 若每步跨2阶,则最后剩余1阶;。若每步跨3阶,则最后剩2阶;。若每步跨4阶,则最后剩3阶;。若每步跨5阶,则最后剩4阶 若每步跨6阶,则最后剩5阶;若每跨7阶,最后才正好一阶不剩 请问,这条阶梯最少共有多少阶?

#include "stdio.h"

void main()
{
	int i;
	for (i = 1;; i++)
	{
		if ((i % 2 == 1) && (i % 3 == 2) && (i % 4 == 3) && (i % 5 == 4) && (i % 6 == 5) && (i % 7 == 0))
		{
			printf("阶层为 = %d", i);
				break;
		}
	}
}

题六:

找出以下疑案的作案人已知该案涉及6个嫌疑人A、B、C、D、E、F,并且:
(1)A、B至少有一人作案。
(2)A、E、F这3人中至少有2人参与作案。(3)A、D不可能是同案犯。
(4)B、C或同时作案,或与本案无关。(5)C、D中有且仅有一人作案。
(6)如果D没有作案,则E也不可能参与作案。

void main()
{    //作案为1 不做案为0;
	int a, b, c, d, e, f;
	for (a = 0; a <= 1; a++)
	{
		for (b = 0; b <= 1; b++)
		{
			for (c = 0; c <= 1; c++)
			{
				for (d = 0; d <= 1; d++)
				{
					for (e = 0; e <= 1; e++)
					{
						for (f = 0; f <= 1; f++)
						{
							if (6 ==(a || b)+ (!(a && d))+ ((a && e) || (a && f) || (e && f)) + ((b && c) || (!b && !c)) + ((c && !d) || (d && !c)) + (d || (!e)))
							{
						
							}
						}
					}
				}
			}
		}
	}
}

题七:

找出 1-1024之间全部素数

#include"math.h"
void main()
{
	int i, j;
	for (i = 1; i <= 1024; i++)
	{
		for (j = 2; j <= sqrt(i); j++)
		{
			if(i%j == 0)
			{
				break;
			}
			else {
			
			}
		}
		if (j > sqrt(i))
		{
			printf("%d是素数\n",i);
		}
		else 
		{
			//printf("%d不是素数\n", i);
		}
	}
}

产生一定范围随机数的通用表示公式
要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;
要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;
要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;
通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。
要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。
要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。

题八:

使用冒泡排序法选择任意十个数由小到大排序。

#include"stdio.h"
#include"time.h"
#include"stdlib.h"
void Bubble_Sorting(int data[], int len);
void random_data(int data[], int len);

void random_data(int data[], int len)
{
	int i;
	for (i = 0; i < len; i++)
	{
		data[i] = rand() % (100 - 0 + 1) + 0;
	}
}
void Bubble_Sorting(int data[], int len)
{
	int i,k,data_;
	for (i = 0; i < len; i++)
	{
		for (k = 0; k < len - i-1; k++)
		{
			if (data[k] > data[k + 1])
			{
				data_ = data[k + 1];
				data[k + 1] = data[k];
				data[k] = data_;
			}
		}
	}
}
void show_data(int data[], int len)
{
	int i;
	printf("输出数据:");
	for (i = 0; i < len; i++)
	{
		printf("%3d",data[i]);
	}
	printf("\n");
}

void main()
{
	int data[10];
	srand((unsigned int)(time(NULL)));
	random_data(data,10);
	show_data(data,10);
	Bubble_Sorting(data, 10);
	show_data(data, 10);
}

题九:

使用选择排序法选择任意十个数由小到大排序。

void Select_sort(int data[], int len) 
{
	int i,j,data_;
	for (i = 0; i < len - 1; i++)
	{
		for (j = i + 1;j < len; j++)
		{
			if (data[i] > data[j])
			{
				data_ = data[i];
				data[i] = data[j];
				data[j] = data_;
			}
		}
	}
}

题十:

利用随机函数给出10*10字符赋值为大写字母并输出,统计各字母出现次数

#include"stdio.h"
#include"time.h"
#include"stdlib.h"
void random_data(char data[10][10], int len_x, int len_y);
void show_data(char data[10][10], int len_x, int len_y);
void Statistics_data(char data[10][10], int len_x, int len_y);


void random_data(char data[10][10],int len_x,int len_y)
{
	int i, j;
	for (i = 0; i < len_x; i++)
	{
		for (j = 0; j < len_y; j++)
		{
			data[i][j] = rand() % 26+65;
		}
	}
	
}
void show_data(char data[10][10], int len_x, int len_y)
{
	int i, j;
	printf("输出数据:");
	printf("\n");
	for (i = 0; i < len_x; i++)
	{
		for (j = 0; j < len_y; j++)
		{
			printf("%-3c", data[i][j]);
		}
		printf("\n");
	}
	printf("\n");
}
void Statistics_data(char data[10][10], int len_x, int len_y)
{
	int i,j,k,flag=0,sum=0;
	for(k = 65;k<=90;k++)
	{ 
		for (i = 0; i < len_x; i++)
		{
			for (j = 0; j < len_y; j++)
			{
				if (k == data[i][j])
				{
					flag++;
				}
			}
			
		}
		if (flag == 0)
		{
		}
		else
		{
			printf("%c出现的次数为%d\n",k,flag);
			flag = 0;
		}
	}
}

void main()
{
	srand(time(NULL));
	char data[10][10];
	random_data(data,10,10);
	show_data(data, 10, 10);
	Statistics_data(data, 10, 10);

}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值