CS111
CS111
Question 1
Code:
#include <stdio.h>
#include <math.h>
void main(){
int num;
scanf("%d",&num);
printf("Armstrong number test:\n");
int dnum = num;
int count = 0;
while (dnum){
dnum/=10;
count++;
}
if (num == armstrong(num, count))
printf("Positive\n");
else printf("Negative\n");
Output:
Question 2
Code:
#include <stdio.h>
void main(){
int n;
scanf("%d",&n);
if (n%2)
printf("%f\n",series_sum(n));
else printf("Invalid entry\n");
}
Output:
Question 3
Code:
#include <string.h>
#define SIZE 100
int countFN(char*);
void main(){
char s[SIZE];
scanf("%[^\n]s",s);
printf("%d\n",countFN(s));
}
while (*(consonants+i)){
if ((*s == *(consonants+i)) || (*s == *(consonants+i)-
32)){
flag = 1;
flagarray[i]++;
break;
}
i++;
}
if (flag)
if (*(flagarray+i) == 1)
printf("%c, ",*s);
Output:
It doesn’t print duplicates, but does count them.
Question 4
Code:
#include <stdio.h>
#include <string.h>
#define SIZE 100
int palindrome(char*);
void main(){
char string[SIZE];
scanf("%[^\n]s",string);
printf("%d\n",palindrome(string));
}
Output:
1 for positive and 0 for negative result
Question 5
Code:
#include <stdio.h>
#define SIZE 100
int list[SIZE];
int key;
int binarysearch(int, int);
void main(){
int length = 0;
char ch = 0;
while (ch!='\n'){
scanf("%d",list+length++);
ch = getchar();
}
scanf("%d",&key);
int flag = 1;
if (flag){
printf("Invalid key\n");
return;
}
printf("%d\n",binarysearch(0, length));
}
Output:
POINTERS
Question 1
Code:
#include <stdio.h>
#include <math.h>
void swap(int*,int*);
void main(){
int a,b;
scanf("%d%d",&a,&b);
printf("Before\na[%p] = %d\nb[%p] = %d\n",&a,a,&b,b);
swap(&a,&b);
printf("After\na[%p] = %d\nb[%p] = %d\n",&a,a,&b,b);
}
Output:
Question 2
Code:
#include <stdio.h>
#define SIZE 100
int countFN(char*);
void main(){
char s[SIZE];
scanf("%[^\n]s",s);
int count = 0;
char alphabet[] = "abcdefghijklmnopqrstuvwxyz";
int j = 0;
for (int i=0; i<26; i++){
count = 0;
j = 0;
while (*(s+j)){
if ((*(alphabet+i) == *(s+j)) || (*(alphabet+i)-32
== *(s+j))){
count++;
}
j++;
}
if (count){
printf("%c | ",*(alphabet+i));
for (int i=0; i<count; i++) printf("|");
printf("\n");
}
}
}
Output:
Question 3
Code:
#include <stdio.h>
#define SIZE 100
void main(){
char s[SIZE];
scanf("%[^\n]s",s);
int j = 0;
while (*(s+j)){
if (*(s+j) == 32){
*(s+j) = 10;
}
j++;
}
printf("%s\n",s);
}
Output:
Question 4
Code:
#include <stdio.h>
void main(){
int rows, columns;
int sum;
scanf("%d%d",&rows,&columns);
int matrix[rows][columns];
for (int i=0; i<rows; i++)
for (int j=0; j<columns; j++)
scanf("%d",&matrix[i][j]);
for (int i=0; i<rows; i++){
sum = 0;
for (int j=0; j<columns; j++)
sum += *(matrix[i]+j);
printf("Row %d:%d\n",i+1,sum);
}
for (int j=0; j<columns; j++){
sum = 0;
for (int i=0; i<rows; i++)
sum += *(matrix[i]+j);
printf("Column %d:%d\n",j+1,sum);
}
}
Output:
Question 5
Code:
#include <stdio.h>
#define SIZE 100
void main(){
int m,n;
scanf("%d%d",&m,&n);
Output:
Question 6
I have written the functions into a custom library file named instring.h for “indigeneous string” and
made use of a custom constants file named inconstants.h for “indigeneous constants”.
Code:
inconstants.h:
instring.h:
#include "inconstants.h"
int index;
for (index = len1; index < size; index++){
if (index - len1 < len2){
*(str_1 + index) = *(str_2 + index - len1);
}
else break;
}
str_1[index] = 0;
return str_1;
}
q6.c:
#include <stdio.h>
#include "instring.h"
void main(){
int choice;
char str_1[size];
char str_2[size];
scanf("%d",&choice);
printf("Enter string 1: ");
scanf("%s",str_1);
printf("Enter string 2: ");
scanf("%s",str_2);
switch (choice){
case 1:
printf("%s\n",instrcat(str_1,str_2));
break;
case 2:
printf("%d\n",instrcmp(str_1,str_2));
break;
case 3:
printf("%d\n",instrlen(str_1));
printf("%d\n",instrlen(str_2));
break;
case 4:
printf("%s\n",instrcpy(str_1,str_2));
break;
case 5:
printf("%s\n",instrrev(str_1));
printf("%s\n",instrrev(str_2));
break;
default:
printf("Invalid choice\n");
}
}
Output: