Link to home
Start Free TrialLog in
Avatar of ahha
ahha

asked on

Some Questions.

1) How to account the length of ''ab\n\\012\\\''''?
2) What's the principle of the following programmes?
a: #include<stdio.h>
   main(){
      char a[]="labchmfye",t;
      int i,j;
      for(i=0;i<7;i+=2)
         for(j=i+2;j<a;j++)
            if(a[i]>a[j]){
               t=a[i];
               a[i]=a[j];
               a[j]=t;
               j++;
            }
     puts(a); printf("\n");}
-------------
b: ...
   int a[]={4,0,2,3,1},i,j,t;
   for (i=1;i<5;i++){
      t=a[i];
      j=i-1;
      while(j>=0&&t>a[j]){
         a[j+1]=a[j];
         j--;
      }
      a[j+1]=t;
   }
  ....
-----------
c: Is there anything wrong?
   main(){
   int a[10]={0};
     int i;
     for(i=0;i<3;i++)
        scanf("%d",&a[i]);
     for(i=1;i<10;i++)
        a[0]=a[0]+a[i];
     printf("%d\n",a[0]);
   }
------------
d:  Are these correct "int c[]={0}", "int c[10]={}",
"int a[][3]={{1,0,1},{},{1,1}}?

and how they work?
Avatar of imladris
imladris
Flag of Canada image

Experts exchange user agreement specifically requires academic honesty from all of its users. So we can't do your homework for you. We'd be happy to answer specific questions, especially if they show you have done some work/thinking on your own, much as a TA might.
Avatar of captainkirk
captainkirk

hint for #1) - look for escape sequences in the string and don't count those in the length computation.

hint for #2a,b) - hand-trace the code and write intermediate results for the variables and counters as you go.

hint for #2c, d) - look in your book for array initialization syntax rules.


1) How to account the length of ''ab\n\\012\\\''''?

when you see a '\', if the next char is an octal digit, then keep reading numbers, otherwise just ignore the next character.  In either case treat the whole thing as a single character.

2) What's the principle of the following programmes?
a: #include<stdio.h>
   main(){
      char a[]="labchmfye",t;
      int i,j;
      for(i=0;i<7;i+=2)
         for(j=i+2;j<a;j++)
            if(a[i]>a[j]){
               t=a[i];
               a[i]=a[j];
               a[j]=t;
               j++;
            }
     puts(a); printf("\n");}

looks like some sort of sorting algorithm .. what inidicate that is the comparison of values in the if statement and the exchanging of values (using temporary variable t).

However, there appears to be a bug in it because it is comparing j (a simple integer) with a (the address of an array of characters).

b: ...
   int a[]={4,0,2,3,1},i,j,t;
   for (i=1;i<5;i++){
      t=a[i];
      j=i-1;
      while(j>=0&&t>a[j]){
         a[j+1]=a[j];
         j--;
      }
      a[j+1]=t;
   }
  ....


this also looks like a sort .. I'll leave it to you to work out the type of sort.

c: Is there anything wrong?
   main(){
   int a[10]={0};
     int i;
     for(i=0;i<3;i++)
        scanf("%d",&a[i]);
     for(i=1;i<10;i++)
        a[0]=a[0]+a[i];
     printf("%d\n",a[0]);
   }

how many numbers do you read in?  How many are added up?  It isn't wrong per se (cannot determine what is right or wrong unless one knows what problem the program was meant to solve) .. but does seem strange.

d:  Are these correct "int c[]={0}", "int c[10]={}",
"int a[][3]={{1,0,1},{},{1,1}}?

read your C-syntax ... or try them in your compiler and find out !!  HINT: Only one of them is ok.


ASKER CERTIFIED SOLUTION
Avatar of RONSLOW
RONSLOW

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial