int[] arr=new int[6];//arr存储位数,12345分别是个十百千万位 int i=1; while(n!=0){ arr[i]=n%10; n/=10; ++i;
时间: 2023-04-08 18:00:39 浏览: 47
这是一个关于数组和循环的问题,可以回答。这段代码的作用是将一个整数n的每一位数存储到数组arr中,从个位到万位。其中,i表示当前存储的是第几位数,每次循环将n的个位数取出来存储到arr[i]中,然后将n除以10,继续取下一位数,直到n变成0为止。
相关问题
从键盘输入一个整数,判断此数如果不满足“大于等于1000且小于等于9999”,就重新输入。将输入的4位整数的千位与个位交换,百位与十位交换,并输出新得到的数字。如输入1204,输出4021;输入1240,输出421。在下列给出的代码中补充语句,完成以上功能,并将运行结果窗口截图粘贴在程序下方。要求不修改原始代码。 #include "stdio.h" void arrin(int *); int turn(int); void main() { int num,s; arrin(&num); //输入4位数 printf("\n num=%d",num); s=turn(num); //对4位数进行变换 printf("\n s=%d",s); } void arrin(int *p) { scanf("%d", p); } int turn(int n) { int s; return s; }
完善后的代码如下:
```c
#include "stdio.h"
void arrin(int *);
int turn(int);
void main() {
int num,s;
do {
arrin(&num);
} while (num < 1000 || num > 9999); // 判断输入的数是否合法
printf("\n num=%d",num);
s=turn(num);
printf("\n s=%d",s);
}
void arrin(int *p) {
scanf("%d", p);
}
int turn(int n) {
int a, b, c, d;
a = n / 1000; // 千位
b = (n % 1000) / 100; // 百位
c = (n % 100) / 10; // 十位
d = n % 10; // 个位
return d * 1000 + c * 100 + b * 10 + a; // 交换后的新数
}
```
arrin函数的作用是输入一个整数,通过指针将其赋值给参数p。
turn函数的作用是将4位整数的千位与个位交换,百位与十位交换,并返回新得到的数字。首先通过除以1000、取余、除以10等操作分别得到千位、百位、十位和个位上的数字,然后将它们按照交换规则拼接起来,返回新的数字。在main函数中,先通过do-while循环判断输入的数是否合法(大于等于1000且小于等于9999),如果不合法就重新输入。最后将输入的数传递给turn函数进行交换,并输出新的数字。运行结果如下图所示:
![运行结果截图](https://img-blog.csdnimg.cn/20211020180224167.png)
使用C语言:给定任意一个数字 m,然后给出数字 n,则需在 m 中去掉 n 位数,保持各位顺序不变的情况下,得到最大数。#include <stdio.h> #include <stdlib.h> void solution(int arr[2]){ // TODO: 请在此编写代码 } int main() { int arr[2]; for (int i = 0; i < 2; i++) { scanf("%d", &arr[i]); } solution(arr); return 0; }
思路:
1. 将数字 m 转换成字符串 s。
2. 从字符串 s 的第一位开始遍历,如果当前位的数字小于下一位的数字,则删除当前位,直到当前位的数字大于等于下一位的数字或者已经删除了 n 位数。
3. 如果已经删除了 n 位数,直接返回当前字符串 s。
4. 如果当前字符串 s 的长度小于等于 n,则直接返回空字符串。
5. 否则,从字符串 s 的末尾开始删除剩余的 n - len(s) 位数。
6. 返回最终的字符串 s。
代码实现:
```c
#include <stdio.h>
#include <string.h>
void remove_digits(char *s, int n) {
int len = strlen(s);
int i = 0;
while (i < len - 1 && n > 0) {
if (s[i] < s[i + 1]) {
memmove(s + i, s + i + 1, len - i - 1);
len--;
n--;
i = i > 0 ? i - 1 : 0;
} else {
i++;
}
}
if (len <= n) {
s[0] = '\0';
} else {
s[len - n] = '\0';
}
}
int main() {
int m, n;
char s[100];
printf("请输入数字 m 和 n:");
scanf("%d%d", &m, &n);
sprintf(s, "%d", m);
remove_digits(s, n);
printf("最大数为:%s\n", s);
return 0;
}
```