C语言初级demo

导语

一些小demo,适合新手学习。
测试平台:Visual Studio 2017

最大公约数与最小公倍数

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int gcd(int a, int b)//最大公约数
{
	int x = 0, t = 0;
	if (a < b)
	{
		x = b;
		b = a;
		a = x;
	}
	while (a % b != 0)
	{
		t = a % b;
		a = b;
		b = t;
	}
	return b;
}
int lcm(int a, int b)//最小公倍数
{
	int c = 0;
	c = a * b / gcd(a, b);
	return c;
}
int main()
{
	int a, b;
	printf("输入两个数:");
	scanf("%d%d", &a, &b);
	printf("它们的最小公倍数数:%d\n", lcm(a, b));
	printf("它们的最大公约数:%d", gcd(a, b));
	getchar();
	getchar();
	return 0;
}

运行结果:
最大公约数与最小公倍数运行结果

字符串连接

#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <stdio.h>
int main()
{
	char s1[100], s2[100];
	int i = 0, x, j = 0;
	printf("字符串拼接\n");
	printf("请输入第一个字符串:");
	gets_s(s1);
	printf("请输入第二个字符串:");
	gets_s(s2);
	while (1)
	{
		if (s1[i] == '\0')
		{
			x = i;
			break;
		}
		i++;
	}
	i = 0;

	while (s2[i] != '\0')
	{
		s1[x] = s2[i];
		x++;
		i++;
	}
	s1[x] = '\0';

	puts(s1);
	system("pause");
}

运行结果:
字符串拼接运行结果

找素数

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
	int a[1000], count = 0, num;
	float b;
	for (int i = 101; i < 1000; i++)
	{
		b = sqrt(i);
		for (int j = 2; j < b; j++)
		{
			num = 0;
			if (i %j == 0)//能被整除就执行
			{
				break;//是
			}
			else num = 1;//否
		}//数组计数器
		if (num) //否则
		{
			a[count] = i;
			count++;
		}

	}
	for (int f = 0; f < count; f++)
	{
		printf("%4d", a[f]);
		if ((f + 1) % 5 == 0) printf("\n");
	}
	system("pause");
	return 0;
}

运行结果(部分):
素数运行部分结果

#简单约瑟夫环

#include <stdio.h>
#include<stdlib.h>
int main()
{
	int i = 0, j = 0, n = 0, a[100] = { 0 };//约瑟夫问题
	printf("请输入玩游戏的人数:");
	scanf("%d", &n);
	while (i < n)
	{

		if (a[i] == 1)
		{
			i++;
			if (i == n)  i = 0;
			continue;
		}
		else
		{
			j++;
			if (j == 3)
			{
				printf("第%d个人被杀死!\n", i + 1);
				a[i] = 1;
				j = 0;
			}
		}
		i++;
		if (i == n)  i = 0;

	}
	system("pause");
	return 0;
}

运行结果:
约瑟夫问题

判断一个数是否是水仙花数

#include <math.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int zs(int n)
{
	int a, b, c, x;
	a = n / 100;
	b = n % 100 / 10;
	c = n % 10;
	x = a * a*a + b * b*b + c * c*c;
	if (x == n) return 1;
	else return 0;
}
int main()
{
	int n, x = 1;
	printf("请输入一个整数:");
	scanf("%d", &n);
	x = zs(n);
	printf("%d\n", x);
	system("pause");
	return 0;
}

运行结果:
判断水仙花数

银行排队

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define N 10
struct cust
{
	char id[N + 1];
	struct cust *next;
};
int main()
{
	int num = 0,i=0;
	char c,b[3];
	struct cust customer;
	cust *p = NULL, *tmp = NULL, *head = NULL;
	printf("请输入排队的人数:");
	scanf("%d", &num);
	while(i<num)
	{
		printf("请输入客户ID:");
		tmp = (cust*)malloc(sizeof(struct cust));
		tmp->next = NULL;
		scanf("%s", tmp->id);
		if (p == NULL)
		{
			p = tmp;
			head = p;
		}
		else
		{
			p->next = tmp;
			p = tmp;
		}
		i++;
	} 
	p = head;
	do
	{
		printf("%s\n", p->id);
		p = p->next;
	} while (p != NULL);
	system("pause");
	return 0;
}

运行结果:
银行排队运行结果

斐波拉契数列

#include <stdio.h>
#include<stdlib.h>
int mm(int n)//斐波拉契数列
{
	if (n == 1 || n == 2)
		return 1;
	return mm(n - 1) + mm(n - 2);
}
int main()
{
	int n = 0;
	printf("输入斐波拉契数的那一项:");
	scanf("%d", &n);
	printf("%d\n", mm(n));
	system("pause");
	return 0;
}

运行结果:
斐波拉契数列运行结果

一个简单的菜单

#include <stdio.h>
#include <stdio.h>
#include <time.h>
#include <malloc.h>
int main()
{
	char key;
	printf("********************************\n");
	printf("*A.查看9*9乘法表               *\n");
	printf("*B.请输入10个数,我帮你找大小  *\n");
	printf("*C.十进制转换为二进制          *\n");
	printf("*D.请输入10个数,我帮你大小顺序*\n");
	printf("*O.退出程序                    *\n");
	printf("********************************\n");
	printf("请输入你的选择:");
	while (1)
	{
		key = getchar();
		switch (key)
		{
		case 'A'://查看9*9乘法表
		{
			int i = 0, a = 1, b, c = 2;//case 1
			printf("\n");

			for (i = 1; i < 10; i++)
			{
				for (b = 1; b < c; b++)
				{
					printf("%d*%d=%d", a, b, a*b);
					if (a*b >= 10) printf("  ");
					else printf("   ");
				}
				printf("\n");
				a++;
				c++;
			}
			printf("\n*******************************************************");
			printf("\n\n请再次输入你的选择:");
			break;//具体操作
		}
		case 'B'://请输入10个数,我帮你找大小
		{
			float eq;
			int num[10];// = { 1,2,3,88,5,6,7,8,9,10 };
			int max, min, total = 0, i;//case 2
			printf("请输入10个数:");
			for (i = 0; i < 10; i++)
				scanf_s("%d", &num[i]);
			max = min = num[0];
			for (i = 1; i < 10; i++)
			{
				if (max < num[i]) max = num[i];
				if (min > num[i]) min = num[i];
				total += num[i];
			}
			eq = total / 10;
			printf("最大:%d  最小:%d  平均:%.2f", max, min, eq);//具体功能
			printf("\n*******************************************************");
			printf("\n\n请再次输入你的选择:");
			break;
		}
		case 'C'://十进制转换为二进制
		{
			int num = 0, tran[20], i = 0, mid;//case 3
			printf("请输入一个十进制数:");
			scanf_s("%d", &num);
			while (i < 20)
			{
				tran[i] = num % 2;
				mid = num / 2;
				num = mid;
				if (num == 0) break;
				i++;
			}
			printf("它的二进制数是:");
			while (i >= 0)
			{
				printf("%d", tran[i]);
				i--;
			}//具体功能
			printf("\n*******************************************************");
			printf("\n\n请再次输入你的选择:");
			break;
		}
		case 'D'://冒泡排序
		{
			int i, j = 9, n = 0, mid = 0;
			int num[10];
			printf("请输入10个数:");
			for (int k = 0; k < 10; k++)
				scanf_s("%d", &num[k]);
			for (j; j >= 0; j--)//第二轮 j=3
			{
				for (int i = 0; i < j; i++)
				{
					if (num[i] < num[i + 1])
					{
						mid = num[i + 1];
						num[i + 1] = num[i];
						num[i] = mid;
					}
				}
			}
			for (int k = 0; k < 10; k++)
				printf("%4d", num[k]);
			printf("\n*******************************************************");
			printf("\n\n请再次输入你的选择:");
			//具体功能
			break;
		}
		case 'O'://结束
			goto bj;
		}
	}
bj:return 0;
}

运行结果:
简单菜单运行结果

简单的结构体运用

#include <stdio.h>
#include<stdlib.h>
int main()
{
	int n;
	struct student
	{
		int num;
		char name[10];
		char sex[10];
		int age;
		char major[10];
	}stu[20];
	printf("请输入学生个数:");
	scanf("%d", &n);
	printf("请输入学生信息:\n");
	printf("学号      名字      性别       年龄      专业 \n");
	for (int i = 0; i < n; i++)
		scanf("%d%s%s%d%s", &stu[i].num, &stu[i].name, &stu[i].sex, &stu[i].age, &stu[i].major);
	printf("学号      名字      性别       年龄      专业 \n");
	for (int i = 0; i < n; i++)
		printf("%-8d%8s%8s%10d%14s\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].major);
	system("pause");
	return 0;
}

运行结果:
简单的结构题运用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值