C语言学习实例

1、时间差

void question1()
{
	int hours1, minute1;
	int hours2, minute2;
	scanf_s("%d %d", &hours1, &minute1);
	scanf_s("%d %d", &hours2, &minute2);
	int time1, time2;
	time1 = hours1 * 60 + minute1;
	time2 = hours2 * 60 + minute2;
	int value = time1 - time2;
	printf("%d小时%d分钟", value / 60, value % 60);
}

2、求平均

void question2()
{
	int a, b;
	scanf_s("%d %d", &a, &b);
	double c = (a + b) / 2.0;
	printf("%lf", c);
}

3、整数除以整数等于整数

void question()
{

	int a = 123;
	int b = 10;
	int c = a / b;
	printf("%d", c);
}

4、求和1+1/2+1/3+…1/n

void question4()
{
	int n;
	int i;
	scanf_s("%d", &n);
	double sum = 0.0;
	for (i = 1; i <= n; i++)
	{
		sum = sum + 1.0 / i;
	}
	printf_s("%f", sum);
}

5、非负整数,正序输出每一位数字,例如12345,输出 1 2 3 4 5 先逆序在逆序的方案不适用于700

void question5()
{
	int n;
	scanf_s("%d", &n);
	int i;
	int t = 0;
	do
	{
		i = n % 10;
		n = n / 10;
		t = t * 10 + i;
	} while (n > 0);
	printf("%d\n", t);
	do
	{
		i = t % 10;
		printf("%d", i);
		if (t > 9)
			printf(" ");
		t = t / 10;
	} while (t > 0);
}

6、非负整数,正序输出每一位数字,例如12345,输出 1 2 3 4 5

void question6()
{
	int n;
	scanf_s("%d", &n);
	int t = n;
	int i = 0;
	do {
		n = n / 10;
		i++;
	} while (n > 0);
	printf("%d\n", i);
	n = t;
	printf("%d/n", n);

	do {
		int d = pow(10, i - 1);
		int j = n / d;
		printf("%d", j);
		n = n % d;
		i--;
	} while (i >= 1);
}

7、求最大公约数辗转相除法

void question7()
{
	int a, b, t;
	scanf_s("%d %d", &a, &b);
	while (b > 0)
	{
		t = a % b;
		a = b;
		b = t;
	}
	printf("%d", a);
}

8、不超过6连续四位整数组成的三位数,从小到大排列

void question8()
{
	int a;
	scanf_s("%d", &a);
	int i, j, k;
	int t = 0;
	for (i = 0; i <= 3; i++)
	{
		for (j = 0; j <= 3; j++)
		{
			for (k = 0; k <= 3; k++)
			{
				if ((j != k) & (i != j) & (i != k))
				{
					if (t <= 4)
						printf("%d%d%d---", a + i, a + j, a + k);
					else
						printf("%d%d%d", a + i, a + j, a + k);
					t++;
				}

			}
		}
		t = 0;
		printf("\n");
	}
}

9、水仙花数

void question9()
{
	int N;
	scanf_s("%d", &N);
	int a, b;
	int c = N - 1;
	a = pow(10, c);
	printf("%d\n", a);
	b = pow(10, N) - 1;
	printf("%d\n", b);
	int sum = 0;
	int t, k;
	for (int i = a; i <= b; i++)
	{
		t = i;
		for (int j = 1; j <= N; j++)
		{
			k = t % 10;
			sum = sum + pow(k, N);
			t = t / 10;
		}
		if (sum == i)
			printf("%d\n", sum);
		sum = 0;
	}
}

10、九九乘法表,输出结果四位数,左对齐 解决思路一位数小于9三个空格,大于9两个

void question10()
{
	int n;
	scanf_s("%d", &n);
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= i; j++)
		{
			int t = j * i;
			printf("%d*%d=%d", j, i, t);
			int cnt = 0;
			while (t > 0)
			{
				t = t / 10;
				cnt++;
			}
			int a = 4 - cnt;
			while (a > 0)
			{
				printf(" ");
				a--;
			}
		}
		printf("\n");
	}
}

11、统计给定整数M和N区间内素数的个数,并求和

void question11()
{
	int m, n;
	int cnt = 0, sum = 0;
	scanf_s("%d %d", &m, &n);
	for (int i = m; i <= n; i++)
	{
		int j;
		for (j = 2; j < i; j++)
		{
			if (i % j == 0)
			{
				break;
			}
		}
		if (j == i)
		{
			cnt++;
			sum += i;
		}
	}
	printf("%d %d", cnt, sum);
}

12、输入数量不确定的0-9范围内的整数,统计每一种数字出现的次数,输入-1表示结束

void question12()
{
	int x;
	scanf_s("%d", &x);
	int count[10] = { 0,0,0,0,0,0,0,0,0,0 };
	while (x != -1)
	{
		count[x] = count[x] + 1;
		scanf_s("%d", &x);
	}
	for (int i = 0; i <= 9; i++)
	{
		printf("数字%d的个数为%d\n", i, count[i]);
	}
}

13、等差数列,前四个和26,乘积880,求前n项和

void question13()
{
	int n;
	scanf_s("%d", &n);
	int i, j;
	for (i = 0; i < 6; i++)
	{
		for (j = 0; j < 4; j++)
		{
			if (4 * i + 6 * j == 26 && (i * (i + j) * (i + 2 * j) * (i + 3 * j) == 880))
			{
				printf("%d %d\n", i, j);
				int t, num = 0;
				for (t = 0; t < n; t++)
				{
					num = i + j * t;
					printf("%6d", num);
					num = 0;
				}
			}
		}
	}
}

14、小球自由落体,原来100米,每次反弹一半

void question14()
{
	double b[11], sum;
	int i;
	b[0] = 100;
	sum = 100;
	for (i = 1; i <= 10; i++)
	{
		b[i] = b[i - 1] * 0.5;
		sum = sum + b[i] * 2;
	}
	printf("%f %f", b[10], sum);
}

15、删除输入字符串的空格

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
	char* str = (char*)malloc(128);
	int i = 0;
	char ch;
	//scanf_s("%[^\n]", str,128);
	while ((ch = getchar()) != '\n')
	{
		*(str + i++) = ch;
	}
	*(str + i) = '\0';
	printf("%s", str);
	char* start = str;
	while (*str != '\0')
	{
		if (*str == ' ')
		{
			space(str);
		}
		else
		{
			str++;
		}

	}
	printf("%s", start);

}

16、判断每个月的天数

#include<stdio.h>
int main(void)
{
	int year, month;
	int a = 0;
	scanf_s("%d%d", &year, &month);
	if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
	{
		a = 1;
	}
	switch (a)
	{
	case 1:
	{
		printf("瑞年");
		switch (month)
		{
		case 4:
		case 6:
		case 9:
		case 11:
			printf("30天");
			break;
		case 2:
			printf("29天");
			break;
		default:
			printf("31天");
		}
		break;
	}
	case 0:
	{
		printf("不是瑞年");
		switch (month)
		{
		case 4:
		case 6:
		case 9:
		case 11:
			printf("30天");
			break;
		case 2:
			printf("28天");
			break;
		default:
			printf("31天");
		}

	}
	}
}

17、goto-if 语句求1-100的和

int main(void)
{
	int i=0, sum=0;
LOOP:
	sum = sum + i;
	i++;
	if (i > 100)goto EXT;
	goto LOOP;
EXT:
	printf("%d", sum);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值