c语言编程

本文深入探讨了编程中的核心技巧,包括数据结构、算法、指针操作等,并通过实例展示了如何实现水仙花数、排序算法及指针参数传递等关键概念。同时,文章还涉及了作用域、内存地址等高级编程主题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.打印水仙花数

打印所有的三位数的水仙花数,例如:153 = 1*1*1+5*5*5+3*3*3

#include   <stdio.h>
int main(void) {
	int i, a, b, c;
	for (i = 100; i < 1000; i++) {
		a = i / 100;
		b = i / 10 % 10;//i / 10 - a * 10
		c = i % 10;
		if (i == a * a * a + b * b * b + c * c * c) {
			printf("%d\n", i);
		}
	}
}

运行结果: 153  307  371  407

2.任意输入10个整数的数列,先将整数按照从大到小的顺序进行排序, 然后输入一个整数插入到数列中,使数列保持从大到小的顺序。

#include<stdio.h>
void mop(int n, int a[]) {
	int i, j, temp;
	for (i = 0; i < n; i++) {
		for (j = 0; j < n - i; j++) {
			if (a[j] < a[j + 1]) {
				temp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = temp;
			}
		}
	}
	
	for (i = 0; i < n + 1; i++) {
		printf("%d\t", a[i]);
	}
}

int main(void) {
	int a[10], i, temp;
	for (i = 0; i < 9; i++) {
		scanf("%d", &a[i]);
	}
	
	mop(8, a);
	
	printf("\n");
	scanf("%d", &temp);
	printf("\n");
	a[9] = temp;
	
	mop(9, a);
}

3.语句的作用域

#include<stdio.h>

int main(void) {
	int a = 6;
	if (a > 5)
	while(a > 3)
	if (a > 6)
	printf("~~~");
	if (a > -1)
	if (a < 7)
	while (a > 4)
	printf("!!!");
}
运行结果为:!!!

因为上面的代码没有加作用域,所以它的作用范围是依次包含执行, 直到执行到printf结束,输出,第一个printf前的a不满足条件,所以不会输出~~~


4.指针的参数传递

#include<stdio.h>
void func(int* p);
void func2(int a[]);

int main() {
	int a[4] = {1, 2, 3, 4};
	printf("%d\t", a);
	printf("%d\t", &a[0]);
	func(a);
	func2(a);
}

void func(int* p) {
	printf("%d\t", p);
}

void func2(int a[]) {
	printf("%d\n", a);
}


运行结果:2293552   2293552   2293552   2293552

因为在数组中数组名代表数组的首地址,a[0]指针偏移量为0,所以a的地址与a[0]的地址为一致的。

在func函数中, 把数组a的地址传给p,打印出来的地址则为a的地址2293552。

在func2函数中,把数组a的地址传给a[], 打印出来的地址也为a的地址2293552


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值