我想编写一个java程序来获取,一个工作的C代码作为输入,并清理它。 (我们知道在输入中,每行不会超过一个命令(语句)。)
#include <stdio.h>
int main(){
int i,n;
float arr[100 ];
printf("Enter numbers:");
scanf("%d",&n);
printf("\n");
for(i=0;i<n;++i)
{
printf("%d",i+1);
scanf("%f",&arr[i]);
}
for(i=1;i<n;++i){
if(arr[0]<arr[i])
arr[0]=arr[i];
}
printf("largest is %.2f",arr[0]);
return 0;
}
这就是我清理的意思。标签就位,没有冗余空间等,IDE通常会做这件事。但是我想写一个代码来自己做。
#include <stdio.h>
int main(){
int i, n;
float arr[100];
printf("Enter numbers:");
scanf("%d", &n);
printf("\n");
for(i = 0; i < n; ++i){
printf("%d", i + 1);
scanf("%f", &arr[i]);
}
for(i = 1; i < n; ++i){
if(arr[0] < arr[i])
arr[0] = arr[i];
}
printf("largest is %.2f", arr[0]);
return 0;
}
我不知道从哪里开始。但我认为我应该使用split和regex的东西,首先将输入分成几部分,然后以某种方式解析它。例如对于凹痕(每个“{”)有多少个标签我们应该计算“{”在彼此内部的数量,以及类似的东西。 1)每个块一个凹痕。 2)else在if的“}”之后直接出现,或者如果没有“}”则出现在下一行。 3)“;”之前的字符应该直接在它后面(没有分隔空间),也在一个for中,在“;”之后有一个空格 - &gt; for(i = 0; i ++){.. 4)没有多余的空间。 5)没有空行