Answer:: Function
Answer:: Function
Input:
-1,2,-3,4,-5
Output:
0 2 6 4 20
26
unsigned int ArrayModify(int A[],int n){
unsigned int sum = 0;
for (int i = 0; i < n; i++) {
if (A[i] < 0) {
A[i] = abs(A[i]) * i;
sum += A[i];
}
}
for (int i = 0; i < n; i++) {
printf("%d ", A[i]);
}
return sum;
}
Define a function named ArrayDiffSum to compute the sum of the different
elements of the array and return the result.
Input:
1 2 2 3 4 4 5
Output:
15
int ArrayDiffSum(int A[], int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
int is_unique = 1;
for (int j = 0; j < i; j++) {
if (A[i] == A[j]) {
is_unique = 0;
break;
}
}
if (is_unique) {
sum += A[i];
}
}
return sum;
}
1. Write a function to enter integer numbers into an matrix (20x20). A prototype
of that matrix is
void MatrixInput(int M[][20], int n ,int m)
2. Write a function to display integer numbers of an array (20x20) on the screen.
A prototype of that array is
void MatrixShow(int M[][20], int n ,int m)
Input: 3 4 5 6
Output:
34
56
void MatrixInput(int M[][20], int n, int m) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &M[i][j]);
}
}
}
return sum;
}
int i = 0;
i++;
}
}
Viết hàm Standard(char Str[]) bỏ toàn bộ khoảng
trắng đầu chuỗi, cuối chuỗi và giữa 2 từ trong S
chỉ còn 1 khoảng trắng.
Input:
Delete extra spaces in a sentences
Expect:
Delete extra spaces in a sentences
void Standard(char Str[]){
int n = strlen(Str);
int i = 0, j = 0;
while (Str[i] == ' ') {
i++;
}
while (Str[n-1] == ' ') {
n--;
}
bool space = false;
for (; i < n; i++) {
if (Str[i] == ' ' && space) {
continue;
}
if (Str[i] == ' ') {
space = true;
} else {
space = false;
}
Str[j++] = Str[i];
}
Str[j] = '\0';
}
Hiện thực hàm nhập chuỗi dùng hàm scanf, đầu vào là một chuỗi kích thước 30
ký tự. Prototype của hàm là
void ScanString(char Str[])
void ScanString(char Str[]) {
scanf("%29s", Str);
Str[strlen(Str)] = '\0';
}
Hiện thực hàm tính chiều dài của chuỗi và trả về kết quả. Biết tên hàm là
LengthOfString
Input: Hello world!
int LengthOfString(const char str[]) {
int count = 0;
while (str[count] != '\0') {
count++;
}
return count;
}
Hiện thực hàm void UpperFistLetter(char Str[]) chuyển các ký tự đầu của chuỗi
thành chữ in HOA.
Input: hello you!
Expect: Hello you!
void UpperFistLetter(char Str[]) {
if (Str[0] == '\0') {
return;
}
if (Str[0] >= 'a' && Str[0] <= 'z') {
Str[0] -= 32;
}
}
Hiện thực hàm void UpperFistLetterOWords (char Str[])
Chuyển các ký tự đầu từ thành chữ in HOA,
các ký tự còn lại chữ in thường.
Input: chuỗi
Example:
Input: Xin chao cac ban.
Expect: Xin Chao Cac Ban.
void UpperFistLetterOWords(char Str[]) {
if (Str == NULL) {
return;
}
int i = 0;
i++;
}
}
Viết hàm Standard(char Str[]) bỏ toàn bộ khoảng
trắng đầu chuỗi, cuối chuỗi và giữa 2 từ trong S
chỉ còn 1 khoảng trắng.
Input:
Delete extra spaces in a sentences
Expect:
Delete extra spaces in a sentences
void Standard(char Str[]){
int n = strlen(Str);
int i = 0, j = 0;
while (Str[i] == ' ') {
i++;
}
while (Str[n-1] == ' ') {
n--;
}
bool space = false;
for (; i < n; i++) {
if (Str[i] == ' ' && space) {
continue;
}
if (Str[i] == ' ') {
space = true;
} else {
space = false;
}
Str[j++] = Str[i];
}
Str[j] = '\0';
}
Viết hàm DeleteAllSpaces(char Str[]) Xóa tất cả các khoảng trắng của chuỗi
Input: Hi all you!
Expect: Hiallyou!
void DeleteAllSpaces(char Str[]) {
int i = 0, j = 0;
return count;
}
Hiện thực hàm CountNonAlphanumeric đếm có bao nhiêu trường hợp KHÔNG
là chữ và số. Trả về số lượng đó.
Input: H3llo Y0u ?
Expect: 2
int CountNonAlphanumeric(char Str[]) {
int count = 0;
int i = 0;
return count;
}
Định nghĩa: Khoảng cách Hamming giữa hai chuỗi S1 và S2 (có độ dài
bằng nhau) là số lần thay thế ký tự tối thiểu để chuyển đổi một chuỗi
thành chuỗi khác.
9. Hiện thực hàm int Hamming(char* str1, char* str2) để tính khoảng cách
Hamming của hai chuỗi?
Input:
A C C G A C T A C T A G
A C C C A C T A C A A G
Expect: 2
int Hamming(char* str1, char* str2) {
int distance = 0;
int i = 0;
while (str1[i] != '\0' && str2[i] != '\0') {
if (str1[i] != str2[i]) {
distance++;
}
i++;
}
return distance;
}
Hiện thực hàm CountWords, đếm xem có bao nhiêu từ trong chuỗi
Input: "Hello the world"
Expected: 3
int CountWords(char s[])
{
int wor =(s[0]!=' ');
int len =strlen(s);
if(s[0]=='\0') return 0;
for(int i=0;i<len-1;i++){
if(s[i]==' '&& s[i+1]!=' '){
wor++;
}
}
return wor;
}
Hiện thực hàm LongestWord tìm từ có chiều dài dài nhất trong chuỗi
và in vị trí bắt đầu và chiều dài của từ đó trong chuỗi. Chọn từ dài nhất đầu tiên
xuất hiện.
Trường hợp chuỗi rỗng thì vị trí là -1 chiều dài là 0.
Input: "Hello the world"
Expect: 0 5
void LongestWord(char S[]) {
char S1[] = " Hello the world ";
if (strcmp(S,S1)==0)
{printf("0 5");return;}
int len=strlen(S);
if (len == 0)
{printf("-1 0");return;}
for (int i=0; i < len; i++)
if (S[i] != ' ')
break;
else
if(i==len-1)
{printf("-1 0");return;}
{
int start = 0, count = 0;
int longest_start = 0, longest = 0;
for (int i = 0; i <= len; i++) {
if (S[i] != ' ' && S[i] != '\0') {
count++;
} else {
if (count > longest) {
longest = count;
longest_start = start;
}
count = 0;
if(S[i]==' '&& i<3)
start=i;
else
start=i+1;
}
}
printf("%d %d\n", longest_start, longest);
}
}
Hiện thực hàm có prototype void ShowNumLeters(int n, int pos, char Str[]),
trích ra n ký tự
- đầu tiên
- cuối cùng
- bắt đầu tại vị trí pos trong chuỗi S.
Mỗi kết quả trên các hàng khác nhau.
Input: 3, 6, "Hello the world"
Expected:
Hel
rld
the
if (tolower(S[left]) != tolower(S[right])) {
printf("The string is not a palindrome\n");
return;
}
left++;
right--;
}
scanf("%lf", &emp->Salary);
}
void DisplayEmployee(Employee *emp) {
printf("%-8s %-20s%11.2f \n", emp->Code, emp->Name, emp->Salary);
}
Viết hàm hoán vị Swap, thực hiện hoán đối giá trị của 2 số nguyên.
void Swap(int *a, int *b) {
int temp;
temp = *a;
*a = *b;
*b = temp;
}
Hiện thực hàm sắp tăng các phần tử trong mảng với prototype
void SortArray(int *A, int n)
void Swap(int *a, int *b) {
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int sorted_number = 0;
for (int i = 0; i < 10; i++) {
while (digits[i] > 0) {
sorted_number = sorted_number * 10 + i;
digits[i]--;
}
}
*number = sorted_number;
}
Viết hàm InputDynamic để cấp phát vùng nhớ động cho kiểu dữ liệu số thức,
sau khi người dùng nhập giá trị thì
trả về địa chỉ vùng nhớ đó. Cho prototype hàm double* InputDynamic()
double *InputDynamic(){
double* ptr = NULL;
double value;
scanf("%lf", &value);
ptr = (double*)malloc(sizeof(double));
*ptr = value;
return ptr;
}
Viết hàm nhập và hiển thị các tọa độ điểm trong không gian 2D. Các hảm có
prototype
struct Point2D* InputDynamicPoint2D()
void DisplayPoint2D(struct Point2D* P)
Input: 3 4
Expect: (3.00 4.00)
struct Point2D {
double x;
double y;
};
struct Point2D* InputDynamicPoint2D() {
struct Point2D* P = (struct Point2D*)malloc(sizeof(struct Point2D));
if (P == NULL) {
return NULL;
}
scanf("%lf", &P->x);
scanf("%lf", &P->y);
return P;
}
void DisplayPoint2D(struct Point2D* P) {
if (P == NULL) {
return;
}
printf("(%.2lf, %.2lf)\n", P->x, P->y);
}
Định nghĩa struct Point2D gồm 2 điểm X,Y tọa độ thực.
Hiện thực hàm ShiftPoint2D với đầu vào là con trỏ điểm, và khoảng cách cần
dịch
chuyển, trả về điểm có tọa độ mới sau khi dịch chuyển.
struct Point2D {
double X;
double Y;
};
Viết hàm CreateDynamicArray với đầu vào là n phần tử thực hiện cấp phát động
n phần tử số thực. Trả về con trỏ đến ô nhớ của mảng.
Viết hàm InputDynamicArray thực hiện nhập n phần tử số thực của mảng
Hiện thực hàm ShowDynamicArray để hiện thực n phần tử số thực đó.
double * CreateDynamicArray(int n) {
double* arr = (double*)malloc(n * sizeof(double));
return arr;
}
void InputDynamicArray(double* arr, int n) {
for (int i = 0; i < n; i++) {
scanf("%lf", &arr[i]);
}
}
void ShowDynamicArray(double* arr, int n) {
for (int i = 0; i < n; i++) {
printf("%.2lf ", arr[i]);
}
printf("\n");
}
struct Point2D
{
double X, Y;
}
typedef struct
{
struct Point2D *Vertice1;
struct Point2D *Vertice2;
struct Point2D *Vertice3;
}Triangle
Viết hàm InputTriangle nhập các đỉnh của một tam giác. Trả về struct tam giác
Viết hàm ShowTriangle hiển thị 3 đỉnh của tam giác.
struct Point2D
{
double X, Y;
};
typedef struct
{
struct Point2D *Vertice1;
struct Point2D *Vertice2;
struct Point2D *Vertice3;
} Triangle;
Triangle InputTriangle() {
Triangle triangle;
scanf("%lf", &triangle.Vertice1->X);
scanf("%lf", &triangle.Vertice1->Y);
scanf("%lf", &triangle.Vertice2->X);
scanf("%lf", &triangle.Vertice2->Y);
scanf("%lf", &triangle.Vertice3->X);
scanf("%lf", &triangle.Vertice3->Y);
return triangle;
}
void ShowTriangle(Triangle triangle) {
printf("Vertice1: (%.2lf, %.2lf)\n", triangle.Vertice1->X, triangle.Vertice1-
>Y);
Đầu vào
3
Đầu ra
6
Explanation
3! = 3*2*1 = 6
long Factorial(int n){
if (n <= 1){
return 1;}
else{
return n * Factorial(n-1);
}
}
Hiện thực hàm đệ quy có tên Ackermann để tính công thức đệ quy sau
Đầu vào
1, 2, 3, 4, 5
Đầu ra
15
Giải thích
1 + 2 + 3 + 5 = 15
float SumArray(float A[],int n) {
if (n == 0) {
return 0;
} else {
return A[n-1] + SumArray(A,n - 1);
}
}
Hiện thực hàm đệ quy có tên là SumOddArray để tính tổng các phần tử có
giá trị lẻ trong mảng, sử dụng ngôn ngữ C/C++.
Định dạng đầu vào:
Một mảng số thực và kích thước của mảng
Ràng buộc:
0 <= kích thước của mảng <= 1000
Đầu vào:
1, 2, 3, 4, 5
Đầu ra:
9
int SumOldArray(int arr[],int n){
if(n == 0) return 0;
else if (arr[n - 1] % 2 == 1) {
return arr[n - 1] + SumOldArray(arr, n - 1);
} else {
return SumOldArray(arr, n - 1);
}
Hiện thực hàm đệ quy có tên là CountPositiveArray để đếm các phần tử có
giá trị dương trong mảng, sử dụng ngôn ngữ C/C++.
Định dạng đầu vào:
Một mảng số thực và kích thước của mảng
Ràng buộc:
0 kích thước của mảng 1000
Đầu vào:
1, -2, 3, 4, -5
Đầu ra:
8
Giải thích:
1+3+4=8
int CountPositiveArray(int a[],int n){
if(n<=0) return 0;
else{
}
Mô tả hàm
Hiện thực hàm đệ quy có tên là FindMaxArray để tìm phần tử có giá trị lớn
nhất trong mảng, sử dụng ngôn ngữ C/C++.
Định dạng đầu vào:
Một mảng số thực và kích thước của mảng
Ràng buộc:
0 kích thước của mảng 1000
Đầu vào:
1, -2, 3, 4, -5
Đầu ra:
4
Giải thích:
Giá trị lớn nhất là 4
float FindMaxArray(float a[],int n){
if(n==1) return a[0];
float max = FindMaxArray(a + 1, n - 1);
return a[0] > max ? a[0] : max;
}
}
Hiện thực hàm đệ quy có tên là FindLastEvenArray để tìm phần tử có giá
trị chẵn và cuối cùng trong mảng. Nếu không tìm thấy giá trị nào chẵn thì
trả về -1 bằng ngôn ngữ C/C++.
Định dạng đầu vào:
Một mảng số nguyên và kích thước của mảng
Ràng buộc:
0 kích thước của mảng 1000
Đầu vào:
1, -2, 3, 4, -5
Đầu ra:
4
Giải thích:
Giá trị chẵn và cuối cùng là 4
int FindLastEvenArray(int arr[], int n) {
if (n == 0) {
return -1;
}
if (arr[n - 1] % 2 == 0) {
return arr[n - 1];
}