有几道考研C语言真题,能帮我看一下么?

来源:百度知道 编辑:UC知道 时间:2024/06/14 09:12:05
1、 写程序:数组有N个元素,分别为p1,p2……pn元(均为整数),现有整数S,S<(p1+p2+……pn);要求从p1,p2……pn中挑出M个数来使得pi1+pi2+……pim=S.输出这M个数和下标。
2、 #include<stdio.h>
void main()
{char *s,*s1="bbbb", *s2="aaaaa";
s=s1;
while(*s1++);
--s1;
while(*s1++=*s2++);
--s2;
printf("%d %s\n",s2-s,s);}
为什么是10和aaaabbbbb呢?我发现必须要连着定义s1和s2才会有这种结果,这里面的指针到底是怎么运动的?
3、 在递归函数中使用自动变量是否要担心递归过程中不同层次的同名变量在赋值时会产生相互影响?
4、 写出摇动算法,有数组r[n],从一端开始扫描,进行比较,交换,然后改变下一趟扫描方向,同样进行处理。
5、 本题采用对有序表采用顺序查找和插值查找相结合的算法,查找成功时返回元素在表中的位置,否则返回-1.
#define m 1000
#include<stdio.h>
typedef struct{
int key;
float info;
}element;
typedef elememt sqlist[m];
int search(sqlist r,int n,int k)
{int i,j;
if(n>0)
{j=(k-r[0].key)/(r[n-1].key-r[0].key);
j=j+1;
if(k<r[j].key)
while((j>0)&&(k<r[j].key))
【1】;
else
while((j<n-1)&&(k>r[j].key))
【2】;
}<

1.那些数可能无法得到S,也就是无解.如数组{6,7},数是9,那么无论怎么样都不会得到,而且初步看是个NP问题个人看法。
2.程序有错误,结果有问题!
3.除了static的和new出来的变量意外不需要考虑(new出来的东西可能出问题,static的一定出问题)
4.不知道算法是啥,,,,
5.没看明白要干啥
6.我觉得是4个.(f2,f3)算一个参数...而且传进去的是最后一个参数,也就是f3有效果(逗号表达式,最右边的有效)....崩溃了,平时还没见过这么写的....考试可真牛B

我怎么看着第1题有问题.M,N,S和数组元素的值用户自己定义?
如果是这样,我想比尔盖茨也编不出来.

如果一题一帖或许效果好点,看到这么多的问题,别人都怕了

谁解答啊我想知道答案

1.背包问题的变形,就好像在说一个背包最大能放S重量的东西,现有物品n个,其重量为p1,p2...pn,且满足题目中的条件,问如何将背包填满?
2.两个While后面的;是手误吧,不然结果不是这样,其次,常量字符串的分配确实是这样的,这种定义方式不会有C语言定义的字符串结束符,因此,指针S和S1是同一地址,输出aaaabbbb也恰好是其后的内存为0,不然后面可能会有一串乱码出来也说不定。
3.自动变量是什么意思。局部变量不会产生问题,全局或static变量就可能带来问题。
4.其余参考楼上