c语言指针题(2)
来源:互联网 发布:淘宝卖家怎么投诉评价 编辑:程序博客网 时间:2024/05/16 17:24
有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下来的是第几号。
每一个人对应两类数据:一个是存在或淘汰的状态,另一个是报数的值。但是利用数组只能表达一个对应的值,幸运的是可以将报数的值与人的报数顺序(通过%)一起循环,间接实现一一对应。
#include <stdio.h>#define N 5 //人数void main(){ int a[N] = {0}, i = 0, out_n = 0, call_n = 0, *p; p = a; while (1) { //循环报数 if(*p == 0) { //如果健在 if (out_n == (N - 1)) break; //如果仅剩一人 call_n++; //报数 call_n %= 3; //最大为3,到了3就从0开始 if(call_n == 0) {*p = 1; out_n++;} //为0(即3)出局 } p++; if (p == a + N) p = a; //循环转向下一人 } printf("最后剩余者的编号是:%d\n", p + 1 - a);}//------------------完
输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个整数依次存放到一数组中,统计共有多少个整数,并输出这些数。
本题的难点在于1.将字符串转化为整数2.定位数字
#include<stdio.h>int main(){ char c[20],*p=c; int a[10],*q=a,num=0,i; gets(c); for(;*p!='\0';p++) if(*p>='0'&&*p<='9') { *q=(*p)-'0'; p++; while(*p>='0'&&*p<='9') *q=(*q)*10+(*(p++)-'0'); num+=1; q+=1; } for(i=0,q=a;i<num;i++,q++) printf("%d\n",*q); printf("\n"); printf("%d",num); return 0;}
解决方法:1.字符串类型-‘0’ 即得到对应的整数类型
2.当遇到首个数字字符进入循环,将连续的数字字符转化为整数
阅读全文
0 0
- c语言指针题(2)
- C语言 指针2
- C语言 指针2
- C语言--指针2
- C语言指针(2)
- C语言指针2
- C语言指针2-指针的加减
- C语言指针题集
- c语言:指针错题
- C语言指针题集
- c语言指针题(1)
- C语言指针练习2
- C语言-指针(2)
- C语言-指针(2)
- C语言指针基础(2)
- C语言之指针(2)
- C语言基础:C语言指针(2) - 注意事项
- 一道C语言的指针笔试题
- iconfont在ionic中的使用(阿里图标库)
- 大规模分布式应用之海量数据和高并发解决方案总结一二
- C语言的冒泡排序算法
- Mac下intellij配置maven
- 表单提交后下拉框默认选中
- c语言指针题(2)
- WiFi的一些连接信息
- 你必须要知道CNN模型:ResNet
- Linux 常用命令
- C++ primer学习 12.19
- Mysql优化综合方案
- 周明:中国NLP如何跻身世界顶尖水平?
- 算法与数据结构——算法题 154:全民飞机大战游戏的红包功能(腾讯2017校招笔试题) ? 待解决
- sizeof和strlen()区别