{
int c;
if(n==1) c=1;
else c=2*(num(n-1)+1); return c; }
void main() {
printf(\}
7.用选择法,对十个整数按从小到大的顺序排列(排序用函数实现)。
void sort(int a[],int n) {
int i,j,k,t;
 for(i=0;i   k=i;    for(j=i+1;j  void main()  {     int i,a[10]={1,3,2,4,5,6,9,0,8,7};   sort(a,10);     for(i=0;i<10;i++)      printf(\  printf(\}    8.编一程序,查找输入的N个字符串中最长的那个字符串。  #include   33  {char str[N][81],*sp;  int k;   for(k=0;k  for(k=1;k  printf(\最长的那个字符串是:\\n%s\\n\  printf(\最长的那个字符串的长度是:%d\\n\}    9.编程序,设二进制数a=00101101,编程序使a的高4位取反,低4位不变,求出这个结果 。  #include  main()   {unsigned int a=055,b,c,d,e;     b=~0<<4;     c=a^b;     d=~(~0<<8);    e=c&d;    printf(\ }  10.函数原型说明为int mystrlen(char *s);,其功能是测试字符串s的长度,编制该函数并用相应主函数对其进行测试。  #include {  int mystrlen(char *s);    char str[80];    gets(str);      printf(“%d\\n”, mystrlen(str));  }  int mystrlen(char *s) {  int len=0;      while (*s++)    len++;    return  len;  }       34  七、程序分析题 1. 程序1如下:  #include  { int i,j,k,t,a[10];      printf(\     for(i=0;i<10;i++)  scanf(\  for(i=0;i<10;i++)  { k=i;   【1】    for(j=i+1;j<10;j++)      if(a[j]>a[k])    k=j;        【2】    if(k!=i)  {  t=a[i];   a[i]=a[k];   a[k]=t;  }     【3】   }   for(i=0;i<10;i++)  printf(\ printf(\}  语句【1】的所用是:假设无序序列中最大的数的下标为第一个数,其下标为i  语句【2】的所用是:找出无序序列中最大的数的下标   语句【3】的所用是:把最大的数与无序序列的第一个数交换  2. 程序2如下:  #include \void main() { int i;   int f[20]={1,1};【4】   for(i=2;i<20;i++)  f[i]=f[i-2]+f[i-1]; 【5】  for(i=0;i<20;i++)   { if(i%5==0)   printf(\  printf(\ }  【6】   printf(\}  语句【4】的所用是:初始化Fibonacci数列的前两个数为1 语句【5】指的for语句的所用是:循环求出Fibonacci数列的   35  每一项  语句【6】指的for语句的所用是:以每行5个整数每个整数占12格的格式输出Fibonacci数列  3. 程序3如下:  #include {  int  a,b,  temp;  【7】     printf(“input the data a and b:”); scanf(“%d %d”,&a,&b);  printf(“ %d %d”,a,b);【8】 printf(“change a and b: ”); temp=a;  a=b;   b=temp;  printf(“input the data a and b:”); printf(“%d %d”,a,b); 【9】 printf(“\\n”); }  【7】变数temp的所用是:中间变数           语句【8】和语句【9】的结果一样吗?:不一样           为什么?:因为8是原样输出9是在它们被交换了之后的输出      4. 程序4如下:  #include \ void funstr(char *q1,char *q2) { while(*q1) q1++;  【10】       while(*q2)  *q1++=*q2++; 【11】      *q1='\\0'; 【12】 }  void main() { char a[80]=\ char b[]=\  char *p1,*p2;   p1=a;  p2=b;   funstr(p1,p2);    printf(\【13】 }  语句【10】的所用是: 令q1指向字符串a的末尾     36