从1开始,有序写下字符串:“123456789101112131415…”。您的任务是打印该字符串的第n位数字(数字从1开始编号)。C语言
时间: 2024-10-19 08:09:03 浏览: 9
读写多字符串值.rar
在C语言中,你可以通过动态内存分配和循环结构来实现这个功能。下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
char getNthDigit(int n) {
char *str = malloc(sizeof(char) * 100); // 初始假设最多需要99位数字
int len = 0, i;
for (i = 1; ; i++) {
str[len++] = '1' + i % 10; // 生成每一位数字,'1' 加上当前位数
if (len >= n) { // 找到第n位
break;
}
if ((i % 10 == 0 && i != 0) || i == 100) { // 每10位加一位空格,防止字符溢出
str[len++] = ' ';
if (i == 100) { // 如果超过100位,则添加更多空间和结束符
str[len++] = '\0';
break;
}
}
}
// 返回第n位数字
char result = str[n - 1];
free(str); // 释放内存
return result;
}
int main() {
int n;
printf("请输入你要找的第n位数字:");
scanf("%d", &n);
printf("第%d位数字是:%c\n", n, getNthDigit(n));
return 0;
}
```
这个程序会打印输入位置的数字,注意如果n超过了实际产生的数字串长度(比如n=101),则会返回最后一位数字。
阅读全文