当我尝试运行此命令时,它要求我输入11个数字而不是10个,这确实很奇怪,然后输出结果像一个更奇怪的结果,请帮忙。
void function(int array[],int length,int start)
{
if (length<start)
{
return;
}
int temp=array[start];
array[start]=array[length];
array[length]=temp;
function(array,length-1,start+1);
}
int main()
{
int array[10],num=0,num2=10;
printf("enter the array:\n");
for (int i =0; i<num2; i++)
{
scanf("%d\n",&array[i]);
}
function(array,num2,num);
for (int t = 0; t<num2; t++)
{
printf("%d\n",array[t]);
}
}
然后这是数组1,2 ... 10,11的输出
enter the array:
1
2
3
4
5
6
7
8
9
10
11
return
214696143
10
9
8
7
6
5
4
3
2
(lldb)
请帮助
答案 0 :(得分:0)
尝试一下:
#include <stdio.h>
void function(int array[],int start, int end)
{
if (start < end)
{
int temp;
temp = array[start];
array[start] = array[end];
array[end] = temp;
function(array, start+1, end-1);
}
}
int main()
{
int array[10],num=0,num2=10;
printf("enter the array:\n");
for (int i =0; i<num2; i++)
{
scanf("%d",&array[i]);
}
function(array,num,num2 - 1);
for (int t = 0; t<num2; t++)
{
printf("%d\n",array[t]);
}
}
请注意,在C中,数组从0开始。最后一个索引是9而不是10。您需要使用length - 1
而不是length
来访问最后一个元素
答案 1 :(得分:0)
大小为10的数组的最后一个索引实际上是9。所以这一行:
import re
with open("file", 'r') as f:
text=f.read()
for word in text.split(" "):
if len(word)==2:
x=int(input("DO you want to change second letter? (YES=1/N0=0):"))
if x==1:
lista2=re.sub('([A-Z][A-Z]+ )',lambda q: q.group(1).lower(),text)
else:
lista1 = re.sub('([A-Z][A-Z][a-z]+)', lambda q: q.group(1).lower(), text)
应该是:
function(array,num2,num);
此外,您对function(array,num2-1,num);
的使用不正确。消除scanf
字符。在此处阅读有关\n
的更多信息:http://www.cplusplus.com/reference/cstdio/scanf/
我已更正您的代码并在此处进行了测试:https://onlinegdb.com/B1Yy4yBqN