int a[100] 定义一个较大长度的数组即可;
printf(“请输入数组a的长度”)
scanf(“%d”,&m)
printf(“请输入数组a的数据元素”)
for(i=0i<mi++)//输入m个元素,存放在a数组中
scanf(“%d”,&a[i])
for(i=0i<mi++)//输出a数组中的值,供检查
printf(“%d”, a[i])
gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。
因为gets函数是以换行符为分隔,所以用一层循环即可读取一个二维数组。对于每行字符串,使用sscanf读取每个数。
例如:
char s[100]int a[3][3],ifor(i=0i<3i++){
gets(s)
sscanf(s,"%d%d%d",s[i],s[i]+1,s[i]+2)
}
你的函数逻辑有问题。return min(b[length-n-1],arboat(b,length-n-1))这句话并不能保证所有数都被判断到。你输入四个数的话,最后一个数不管多大都不会被判断到。只判断前3个。输入超过4的话。有情况是length会等于0.所以逻辑有问题。