VC++不支持定义变量大小的数组,这是GCC特有的。
你可以定义一个更大的常数的数组,或者用malloc/new动态分配代替
【输入格式】
输入的第一行包含一个整数 n。
【输出格式】
输出一行包含一个整数,表示答案。
【样例输入】
30
【样例输出】
18
【评测用例规模与约定】
对于 40% 的评测用例,1 <= n <= 10000。
对于 80% 的评测用例,1 <= n <= 100000。
对于所有评测用例,1 <= n <= 1000000。
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
//判断是否符合要求
if(n<1||n>1000000){
return;
}
//存储总的纯净数
int sum=0;
//把输入的数字转换为String 类型的值
for (int i = 1; i <=n; i++) {
String str=String.valueOf(i);
for (int j = 0; j <str.length(); j++) {
int number=Integer.valueOf(String.valueOf(str.charAt(j)));
if(number==2){
break;
}
if(j==str.length()-1){
sum++;
}
}
}
System.out.println(sum);
}
}
针对该问题,可以使用动态分配数组的方式来解决。以下是具体步骤:
int* arr = (int*)malloc(ne * sizeof(int));
这行代码创建了一个大小为ne的整型数组,其指针被存储在arr变量中。 3. 对于无法创建大小为0的数组的情况,可以在读取ne之前增加一个判断语句,比如:
if(ne <= 0){
printf("Invalid size.\n");
return 0;
}
这个语句在当前ne小于等于0时会直接输出错误信息并结束程序。 4. 对于第ne个元素赋值,可以直接使用数组下标的方式,例如:
arr[ne-1] = 10;
这行代码将数组的第ne个元素赋值为10。
综上所述,完整代码如下:
#include <stdio.h>
#include <stdlib.h>
int main(){
int ne;
printf("Enter the size of the array: ");
scanf_s("%d", &ne);
if(ne <= 0){
printf("Invalid size.\n");
return 0;
}
int* arr = (int*)malloc(ne * sizeof(int));
arr[ne-1] = 10;
printf("The array's %dth element is now %d.\n", ne, arr[ne-1]);
free(arr); //释放内存
return 0;
}