Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

C Programming: I have two codes that I need to figure out the output. Would you

ID: 3936962 • Letter: C

Question

C Programming: I have two codes that I need to figure out the output. Would you mind showing how you got the answers

Thanks in advance


#1)
#include
int f(int num) {
if(num == 0) return 0;
int digit = num % 10;
if(digit % 2 == 1) return 1 + f(num/10);
return f(num/10);
}
int main() {
printf("25 is %d ", f(25));
printf("1010 is %d ", f(1010));
printf("2468 is %d ", f(2468));
printf("1357 is %d ", f(1357));
printf("12345 is %d ", f(12345));
return 0;
}

#2)
#include
#include
void f(char *s, int n) {
   if(*s == '') return;
   printf("%c", *s);
   if(strlen(s) > n)
   f(s + n, n);
return;
}
int main () {
   char s1[] = "Crimson Tide";
   char s2[] = "University of Alabama";
   char *ptr = s1;
   printf("%s ", s1);
   f(ptr, 1); printf(" ");
   f(ptr, 2); printf(" ");
   ptr = s2;
   printf("%s ", s2);
   f(ptr, 3); printf(" ");
   return 0;
}

Explanation / Answer

The output for the 1st is

25 is 1
1010 is 2
2468 is 0
1357 is 4
12345 is 3

int f(int num) {
if(num == 0) return 0;//not true
int digit = num % 10;//digit = 2
if(digit % 2 == 1) return 1 + f(num/10); //it will return 1
return f(num/10);

int f(int num) {
if(num == 0) return 0;//false
int digit = num % 10;//digit = 10
if(digit % 2 == 1) return 1 + f(num/10);//false
return f(num/10); //will call 101 same function

then again digit =1 it will return 1+f(10) whereas f(10) is 1

similarly you can calculate for other numbers