当前位置: 首页 > news >正文

【c语言】指针习题

练习一:使用指针打印数组内容

#include <stdio.h>
void print(int* p, int sz) {
	int i = 0;
	for (i = 0; i < sz; i++) {
		printf("%d ", *p++);
		//printf("%d ", *(p + i));
	}
}
int main() {
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	print(arr, sz);
	return 0;
}

练习二:在小端机器中,下面代码输出的结果是

#include <stdio.h>
int main()
{
    int a = 0x11223344;
    char *pc = (char*)&a;
    *pc = 0;
    printf("%x\n", a);
    return 0;
}
//注意:以%x格式打印的是八进制数,没有0x
//打印0x:
//printf("%#x\n",a);
//printf("0x%x\n",a);

 练习三:下面哪个是指针数组:

注意:

指针数组:

int* arr[10];——>数组arr[10],存储的类型是int*

数组指针:

int (*arr)[10]——>先定义了指针*arr,int和[10]表示指针arr指向含有n个int类型的数组

练习四:写一个函数,可以逆序一个字符串的内容。长度为 1≦len(s)≦10000

注意:逆序字符串的内容,不是逆序打印

#include <stdio.h>
#include <string.h>
int main() {
	char arr[10001] = { 0 };
	gets(arr);
	char* left = arr;
	char* right = arr + strlen(arr) - 1;
	while (left < right) {
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
	printf("%s\n", arr);
	return 0;
}

练习五:用C语言在屏幕上输出以下图案:

(找规律,推而广之)

#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;
}

练习六:打印水仙花数

求出0~100000之间的所有“水仙花数”并输出。

“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。

三位的自幂数称为水仙花数,这里的水仙花数概念更加广泛

#include <stdio.h>
#include <math.h>
//打印水仙花数
int main() {
	for (int i = 0; i <= 100000; i++) {
		//判断自幂数
		//求出i的位数
		int n = 1;
		int tmp = i;
		while (tmp /= 10) {//注意
			n++;
		}
		//求出i的每一位的n次方之和
		tmp = i;
		int sum = 0;
		while (tmp) {//注意循环条件,保证每一位都参与运算
			sum += (int)pow(tmp % 10, n);
			tmp /= 10;
		}
		if (i == sum)
			printf("%d ", i);
	}
	return 0;
}

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

例如:2+22+222+2222+22222

#include <stdio.h>
int main() {
	int a = 0;
	int n = 0;
	scanf("%d %d", &a, &n);
	int i = 0;
	int k = 0;
	int sum = 0;
	for (i = 0; i < n; i++) {
		k = k * 10 + a;
		sum += k;
	}
	printf("%d\n", sum);
	return 0;
}

 

相关文章:

  • 征程 6 VIO Frame 时间戳介绍
  • 【随手笔记】QT避坑一(串口readyRead信号不产生)
  • 测试第二课-------测试分类
  • 安宝特案例 | 某户外机房制造企业应用AR+作业流,规范制造过程,记录施工节点,保障交付质量
  • AI Agent工程师认证-学习笔记(3)——【多Agent】MetaGPT
  • 2025蓝桥杯省赛C++B组解题思路
  • 月之暗面视觉模型(Kimi-VL)论文速读
  • OBS SDK 中 ffmpeg_muxer 与 ffmpeg_output 的区别与使用 QSV 编码器的正确方式
  • 《前端面试题之 CSS篇(第一集)》
  • 一周学会Pandas2 Python数据处理与分析-Pandas2数据导出
  • data_analysis13
  • 神经网络背后的数学原理
  • 探索 Python 的 functools 模块:缓存、属性缓存与 LRU 缓存
  • Day22 -php开发01--留言板+知识点(超全局变量 文件包含 数据库操作 第三方插件)
  • 可配置多功能门芯片的12种用法推导——基于74LVC1G97芯片(附1G98、1G57、1G58、1G99用法)
  • SpringBoot3快速入门笔记
  • 漏洞报告:多短视频平台时间差举报滥用漏洞
  • Python实例题:使用Python生成分形图片
  • java基础 运算符
  • android display 笔记(十三)surfcaeflinger的DEQUEUED、QUEUED
  • 北京网站建设价格便宜/目前最好的营销模式
  • 有没有专门做教程的网站/网络营销毕业论文范文
  • 网页设计ppt演讲/seo黑帽技术工具
  • 陕西建设厅执业注册中心网站/知乎营销平台
  • 郑州网站建设推销/百度seo网站优化
  • 梭子手做鱼网站/网站开发建站