C语言-编程实例2

1,三角形判断

2,指针计算

3,写一个函数打印arr数组的内容,不使用数组下标,使用指针

4,将一个字符串的内容颠倒过来

5,求Sn=a+aa+aaa+aaaa+aaaaa的前5项和,其中a是一个数字

6,输出0-100000之间的水仙花数

7,打印菱形

8,指针数组与数组指针

9,喝汽水问题,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水

10,进阶测评与*p++1,

11,求输入A和B的最小公倍数

12,将一句话的单词逆置,句号不逆置


1,三角形判断

复制代码
#include<stdio.h>
//三角形判断
int main() {
	int a = 0;
	int b = 0;
	int c = 0;
	while (scanf("%d %d %d",&a,&b,&c)==3) {
		if ((a+b>c)&&(b+c>a)&&(a+c>b))
		{
			if (a == b && b == c) {//等边
				printf("Equilateral triangle!\n");
			}
			else if ((a==b&&b!=c)||(a==c&&c!=b)||(b==c&&b!=a))
			{
				printf("Isosceles triangle!\n");
			}
			else
			{
				printf("Ordinary triangle!\n");
			}
		}
		else
		{
			printf("Not a triangle!\n");

		}
	}
}

2,指针计算

复制代码
#include<stdio.h>
//指针计算
//int main() {
//	int arr[] = { 1,2,3,4,5 };
//	short* p = (short*)arr;//arr地址为int类型,p是short类型,需要强制类型转换
//	int i = 0;
//	for ( i = 0; i < 4; i++)
//	{
//		*(p + i) = 0;//short 类型的指针变量一次移动2个字节
//	}
//	for ( i = 0; i < 5; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}

//指针计算
//int main() {
//	unsigned long pulArray[] = { 6,7,8,9,10 };
//	unsigned long* pulPtr;
//	pulPtr = pulArray;
//	*(pulPtr + 3) += 3;
//	printf("%d %d", *pulPtr, *(pulPtr + 3));
//	return 0;
//}

//指针计算
int main() {
	int a = 0x11223344;      //在低地址存放的是44
	char* pc = (char*)&a;
	*pc = 0;
	printf("%x\n", a);
 	return 0;
}

3,写一个函数打印arr数组的内容,不使用数组下标,使用指针

复制代码
#include<stdio.h>
//写一个函数打印arr数组的内容,不使用数组下标,使用指针
void print(int* p, int sz) {
	int i = 0;
	for ( i = 0; i < sz; i++)
	{
		printf("%d ", *(p + i));
	}
	printf("\n");
}
int main() {
	int arr[] = { 1,2,3,4,5,6,7,8,9 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	print(arr, sz);
	return 0;
}

4,将一个字符串的内容颠倒过来

复制代码
#include<stdio.h>
//将一个字符串的内容颠倒过来
#include<string.h>
int main() {
	char arr[10001] = { 0 };
	gets(arr);
	//逆序
	int left = 0;
	int right = strlen(arr) - 1;
	while (left<right) {
		char tmp = arr[left];
		arr[left] = arr[right];
		arr[right] = tmp;

		left++;
		right--;

	}
	printf("%s\n", arr);
	return 0;
}

5,求Sn=a+aa+aaa+aaaa+aaaaa的前5项和,其中a是一个数字

复制代码
#include<stdio.h>
//求Sn=a+aa+aaa+aaaa+aaaaa的前5项和,其中a是一个数字
//例如:2+22+222+2222+22222
int main() {
	int a = 0;
	int n = 0;
	scanf("%d %d", &a, &n);
	int i = 0;
	int sum = 0;
	int k = 0;
	for ( i = 0; i < n; i++)
	{
		k = k * 10 + a;
		sum += k;
	}
	printf("%d\n", sum);
	return 0;
}

6,输出0-100000之间的水仙花数

复制代码
#include<stdio.h>
//输出0-100000之间的水仙花数
#include<math.h>
int main() {
	int i = 0;
	for ( i = 0; i <=100000; i++)
	{
		//1.计算i是几位数
		int n = 1;//任何一个数至少是一位数
		int tmp = i;
		int sum = 0;
		while (tmp/10) {
			n++;
			tmp /= 10;
		}
		//.得到i的每一位,计算他的n次方之和
		tmp = i;
		while (tmp) {
			sum += pow(tmp % 10, n);
			tmp /= 10;
		}
		if (sum == i)
		{
			printf("%d ", i);
		}
	}
	return 0;
}

7,打印菱形

复制代码
#include<stdio.h>
//打印菱形
int main() {
	//上边三角形
	int line = 0;
	scanf("%d", &line);
	int i = 0;
	for ( i = 0; i < line; i++)
	{
		//打印一行
		//空格
		int j = 0;
		for ( j = 0; j < line-1-i; j++)
		{
			printf(" ");
		}
		//*
		for (j = 0; j < 2*i+1; j++)
		{
			printf("*");
		}
		printf("\n");
	}

	//下三角形
	for (i = 0; i < line-1; i++)
	{
		//打印一行
		//空格
		int j = 0;
		for (j = 0; j <=i; j++)
		{
			printf(" ");
		}
		//*
		for (j = 0; j < 2 *(line-1-i)-1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

8,指针数组与数组指针

复制代码
#include<stdio.h>
int main() {
  int *arr[10];//是指针数组
 //int (*arr)[10];//是一个数组指针--指向数组的指针
	return 0;
}

9,喝汽水问题,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水

复制代码
#include<stdio.h>
//喝汽水问题,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水
int main() {
	int money = 0;
	scanf("%d", &money);
	int total = money;
	int empty = money;

	//置换
	while (empty >= 2) {
		total += empty / 2;
		empty = empty / 2 + empty % 2;
	}
	printf("%d\n", total);
	return 0;
}

10,进阶测评与*p++

复制代码
#include<stdio.h>
//初阶测评
//int a = 1;
//void test() {
//	int a = 2;
//	a += 1;
//}
//int main() {
//	test();
//	printf("%d\n", a);//1
//	return 0;
//}

int main() {
 *p++;//++是作用于p,不是*p
// 等价于:  *p; p=p+1
	return 0;
}

11,求输入A和B的最小公倍数

复制代码
#include<stdio.h>
//求输入A和B的最小公倍数
//方法一
//int main() {
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	//计算a和b的最小公倍数
//	int m = (a > b ? a : b);
//	while (1) {
//		if (m%a==0&&m%b==0)
//		{
//			break;
//		}
//		m++;
//	}
//	printf("%d\n", m);
//	return 0;
//}
//方法二
int main() {
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int i = 1;
	//计算a和b的最小公倍数
	while (a*i%b) {
		i++;
	}
	printf("%d\n", i*a);
	return 0;
}

12,将一句话的单词逆置,句号不逆置

复制代码
#include<stdio.h>
//将一句话的单词逆置,句号不逆置
// 例如:  I like beijing.   ==>   beijing. like I
//方法有许多
//巧妙的方法:先整体把每个字符逆置 ,在把每个单词逆置
#include<assert.h>
void reverse(char* left, char* right) {
	assert(left);
	assert(right);
	while (left<right) {
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}

}
int main() {
	char arr[101] = { 0 };
	//输入
	gets(arr);
	//逆置整个字符串
	int len = strlen(arr);
	reverse(arr, arr + len - 1);
	//逆置每个单词
	char* start = arr;
	while (*start) {
		char* end = start;
		while (*end!=' '&&*end!='\0') {
			end++;
		}
		reverse(start,end - 1);
		if (*end!='\0')
		end++;
		start = end;
	}
	//输出
	printf("%s\n", arr);

	return 0;
}
相关推荐
tedcloud1239 分钟前
OpenLogi 怎么搭建?用 Rust 打造一个轻量的 Logitech 外设管理工具
linux·运维·服务器·开发语言·后端·rust·开源
AAA代码批发商14 分钟前
Days 39 Linux C 开发之 SQLite 数据库完整学习笔记
linux·c语言·数据库
Tanjia_kiki27 分钟前
谷歌浏览器中F12编辑并重发请求
开发语言·前端·javascript
程序猿编码29 分钟前
基于GGML的C++17轻量化语音推理引擎:说话人识别与语音分析技术全解析
开发语言·c++·pytorch·深度学习·神经网络·大模型
传奇开心果编程1 小时前
【Rust入门知识点学与练】第5课:函数
开发语言·学习·rust
秋田君1 小时前
Qt_QMediaPlayer类与QMediaPlaylist类
开发语言·qt
统计学小王子1 小时前
数学建模国赛倒计时6天——《软件工具(R语言精讲)》
开发语言·数学建模·r语言
C++ 老炮儿的技术栈1 小时前
Qt5 使用 QPainter 绘制阿基米德螺线
开发语言·c++·windows·qt·代码化
EasyGBS2 小时前
从接入到稳定播放:无插件直播H5视频流媒体播放器EasyPlayer.js如何撑起Web端流媒体
开发语言·前端·javascript
FfHUCisI2 小时前
GMP 调度器:Go 并发的心脏是如何跳动的
开发语言·golang·php