Mùa thu Việt Nam | Năm 2020 - Chào Khách(0)

C (332 -> 323)

0. admin#374 11/11/2020 10:09:39 Tìm các phần tử mảng thuộc đoạn [x, y]
Nhập mảng a gồm n số nguyên, với n là một số nguyên dương nhập từ bàn phím. In ra các phần tử mảng thuộc đoạn [x,y] với x, y là hai số nguyên nhập từ bàn phím. Input Format Dữ liệu vào nằm trên 3 dòng: Dòng 1: số nguyên dương n chỉ kích thước mảng. Dòng 2: các số nguyên là các phần tử mảng, cách nhau bởi dấu cách. Dòng 3: hai số nguyên x và y cách nhau bởi dấu cách, chỉ phạm vi tìm kiếm. Vd: Với 3 dòng dữ liệu nhập vào là 5 2 4 6 8 10 3 9 thì mảng gồm 5 phần tử có giá trị lần lượt là 2 4 6 8 10 phạm vi tìm kiếm [x, y] là [3, 9] Constraints Mảng nhập vào có ít nhất 1 phần tử và nhiều nhất là 100 phần tử. (1<=n<=100) Output Format Các phần từ mảng thuộc đoạn [x, y], theo thứ tự từ đầu đến cuối mảng, cách nhau bởi 1 dấu cách. Vd: 4 6 8 Sample Input 0 5 2 4 6 8 10 3 9 Sample Output 0 4 6 8
#include <stdio.h>

int main() {
    int n,arr[1000],x,y;
    scanf("%d",&n);
    for(int i=0;i<n;i++) {
        scanf("%d",&arr[i]);
    }
    scanf("%d %d",&x,&y);
    for(int i=0; i<n; i++){
        if(arr[i]>=x && arr[i]<=y) {
            printf("%d ",arr[i]);
        }
    }
}
1. admin#373 11/11/2020 09:19:02 Tìm vị trí và giá trị của phần tử lớn nhất trong mảng
Nhập mảng a gồm n số thực, với n là một số nguyên dương nhập từ bàn phím. In ra vị trí và giá trị phần tử lớn nhất trong mảng. Input Format Dữ liệu vào nằm trên 2 dòng: Dòng 1: một số nguyên dương chỉ số phần từ mảng. Dòng 2: các số thực là các phần tử mảng, cách nhau bởi dấu cách. Vd: Để nhập vào mảng gồm 5 phần tử có giá trị lần lượt là 2.50 4.00 6.33 8.99 10.12 thì ta nhập: 5 2.50 4.00 6.33 8.99 10.12 Constraints Mảng nhập vào có ít nhất 1 phần tử và nhiều nhất là 100 phần tử. (1<=n<=100) Output Format Vị trí (chỉ số) phần tử lớn nhất và giá trị phần tử lớn nhất. Hai số cách nhau 1 dấu cách. Giá trị lớn nhất in ở định dạng số thực với độ chính xác 2 chữ số. Nếu có nhiều hơn 1 phần tử cùng bằng giá trị lớn nhất thì in ra vị trí phần tử gần với phần tử đầu tiên nhất. Sample Input 0 5 2.50 4.00 6.33 8.99 10.12 Sample Output 0 4 10.12
#include <stdio.h>


int main() 
{
    int n;
    scanf("%d",&n);
    float arr[n],max;
    for(int i=0;i<n;i++) {
        scanf("%f",&arr[i]);
    }
    max = arr[0];
    for(int i=1;i<n;i++)
    if(max<arr[i]) {
        max=arr[i];
    }
    for(int i=0;i<n;i++) {
        if(arr[i]==max) {
            printf("%d ",i);
        }
    }
    printf("%.2f ",max);
}
2. admin#372 11/11/2020 08:27:56 In mảng theo thứ tự ngược lại.
Nhập mảng a gồm n số nguyên, với n là một số nguyên dương nhập từ bàn phím. In ra mảng vừa nhập theo thứ tự ngược lại. Input Format Dữ liệu vào nằm trên 2 dòng: Dòng 1: một số nguyên dương chỉ số phần từ mảng. Dòng 2: các phần tử mảng, cách nhau bởi dấu cách. Vd: Để nhập vào mảng gồm 5 phần tử có giá trị lần lượt là 2 4 6 8 10 thì ta nhập: 5 2 4 6 8 10 Constraints Mảng nhập vào có ít nhất 1 phần tử và nhiều nhất là 100 phần tử. (1<=n<=100) Output Format Các phần từ mảng được in trên 1 dòng, theo thứ tự ngược lại, cách nhau bởi 1 dấu cách. Vd: 10 8 6 4 2 Sample Input 0 5 2 4 6 8 10 Sample Output 0 10 8 6 4 2
#include <stdio.h>
int main() {
    int arr[100];
    int n;
    scanf("%d", &n);
    for(int i=0;i<n;i++) {
        scanf("%d",&arr[i]);
    }
    for(int i=0;i<n/2;i++) {
        int a = n-i-1;
        int b = arr[a];
        arr[a] = arr[i];
        arr[i] = b;
    }
    for(int i=0;i<n;i++) {
        printf("%d ",arr[i]);
    }
}
3. admin#371 11/11/2020 07:52:21 Sắp xếp mảng tăng dần
Nhập mảng a gồm n số nguyên, với n là một số nguyên dương nhập từ bàn phím. Sắp xếp mảng theo thứ tự tăng dần và in mảng đã sắp xếp ra màn hình. Input Format Dữ liệu vào nằm trên 2 dòng: Dòng 1: một số nguyên dương chỉ số phần tử mảng. Dòng 2: các số nguyên là các phần tử mảng, cách nhau bởi dấu cách. Vd: Để nhập vào mảng gồm 5 phần tử có giá trị lần lượt là 10 8 6 4 2 thì ta nhập: 5 10 8 6 4 2 Constraints Mảng nhập vào có ít nhất 1 phần tử và nhiều nhất là 200 phần tử. (1<=n<=200) Output Format Các phần từ mảng đã được sắp xếp tăng, in trên 1 dòng, cách nhau bởi dấu cách. Vd: 2 4 6 8 10 Sample Input 0 5 10 8 6 4 2 Sample Output 0 2 4 6 8 10
#include<stdio.h>

int main() {
    int n;
    int arr[1000];
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            if (arr[i] > arr[j]) {
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}
4. admin#362 29/10/2020 15:29:51 Hàm đệ quy integerPower tính mũ
Định nghĩa hàm integerPower theo kiểu đệ quy: hàm nhận vào 2 số nguyên: base - cơ số, a - số mũ (>=0). hàm trả về số nguyên base^a (base mũ a) gợi ý giải thuật đệ quy Viết chương trình nhập vào hai số nguyên x, y từ bàn phím, trong đó y>=0. Dùng hàm integerPower để in ra x^y. Input Format Hai số nguyên, trong đó số thứ hai >=0. Vd: 2 3 Constraints Số mũ nhập vào >= 0. Output Format Chỉ in ra kết quả phép tính mũ. Vd: 8 Sample Input 0 2 3 Sample Output 0 8
#include <stdio.h>

int integerPower(int base, int a) {
  if (a==0)
  {
    return 1;
  }
  else{
    return base* integerPower(base,a-1);
  }
}
int main() {
  int num1,num2;
  scanf("%d %d",&num1,&num2);
  printf("%d",integerPower(num1,num2));
}
5. admin#361 29/10/2020 15:27:56 Hàm đệ quy addNumbers tính tổng các số tự nhiên từ 1 đến một giá trị bất kì.
Định nghĩa hàm addNumbers theo kiểu đệ quy: hàm nhận vào một số nguyên dương - n. hàm trả về tổng các số tự nhiên từ 1 đến n. Gợi ý giải thuật đệ quy Viết chương trình nhập vào một số nguyên dương x từ bàn phím, dùng hàm addNumbers để in ra tổng các số tự nhiên từ 1 đến x. Input Format Một số nguyên dương. Vd: 5 Constraints Một số nguyên dương. Output Format Chỉ in ra tổng. Vd: 15 Sample Input 0 20 Sample Output 0 210 Sample Input 1 5 Sample Output 1 15
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int addNumbers(int n) {
  if(n==0)
  {
    return 0;
  }
  else
  {
    return n+addNumbers(n-1);
  }
}
int main() {
  int number;
  scanf("%d", &number);
  printf("%d", addNumbers(number));
}
6. admin#360 29/10/2020 15:26:13 Hàm centuryFromYear tính thế kỉ của một năm
Viết hàm centuryFromYear nhận vào năm (số nguyên dương), trả về thế kỉ (số nguyên dương) tương ứng. Thế kỉ đầu tiên được tính từ năm 1 đến năm 100, thế kỉ thứ 2 từ năm 101 đến năm 200, v.v. Input Format Một số nguyên dương, chỉ năm. Thỏa mã 1 ≤ năm ≤ 2020. Vd: 2005 Constraints 1 ≤ năm ≤ 2020 Output Format Con số chỉ thế kỉ tương ứng của năm nhập vào. Vd: 21 Sample Input 0 2005 Sample Output 0 21 Sample Input 1 8 Sample Output 1 1
#include <stdio.h>

int centuryFromYear(int year) {
  int nam = year%100;
  if (nam>0)
  {
    return year/100+1;
  }
  else
  {
    return year/100;
  }
  return 0;
}
int main() {
  int number;
  scanf("%d", &number);
  printf ("%d",centuryFromYear(number));
  return 0;
}
7. admin#345 19/10/2020 07:53:21 Tìm 20 năm nhuận tiếp theo năm nhuận gần nhất là 2016
Nhập vào một số nguyên dương n. In n năm nhuận tiếp theo sau năm nhuận gần nhất là 2016. Năm nhuận là năm thỏa mãn a) hoặc b) a) Nó lặp lại 4 năm 1 lần, nhưng không lặp lại mỗi 100 năm. (chia hết cho 4 nhưng không chia hết cho 100) b) Năm nhuận cũng lặp lại mỗi 400 năm. (chia hết cho 400)

#include <stdio.h>

int main() {
  int i,n,y;
  scanf("%d",&n);
  y=2016;
  i=1;
  while(i<=n) {
    y+=4;
    if(((y % 4 == 0) && (y % 100!= 0)) || (y%400 == 0)) {
      printf("%d ", y);
      i++;
    }
  }
  return 0;
}
8. admin#339 17/10/2020 13:55:10 Giải phương trình ax+b=0.
Viết chương trình giải phương trình (pt) ax+b=0. Với a, b là hai số thực nhập từ bàn phím. Input Format Hai số thực cách nhau bởi dấu 1 cách. VD: 1.00 2.00 Constraints Không có. Output Format Nếu pt vô nghiệm, in ra VN. Nếu pt có 1 nghiệm, in ra nghiệm ở định dạng số thực với độ chính xác 2 chữ số sau dấu chấm thập phân. Nếu pt có vô số nghiệm, in ra VSN. Sample Input 0 1.00 2.00 Sample Output 0 -2.00

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
    float a,b;
    scanf("%f", &a);
    scanf("%f", &b);
    if(a==0) {
        if(b==0) {
            printf("VSN");
        } else {
            printf("VN");
        }
    } else {
        printf("%.2f",-b/a );
    }
    return 0;
}
9. admin#338 17/10/2020 13:53:48 Tìm UCLN của 2 số nguyên
Nhập 2 số nguyên, tìm và in ra ước chung lớn nhất của chúng. Nếu dữ liệu vào không hợp lệ (<=0), in ra Error. Input Format Hai số nguyên cách nhau 1 dấu cách. Vd: 6 9 Constraints Không có. Output Format Ước chung lớn nhất của 2 số nhập vào, hoặc In ra Error nếu trong 2 số nhập vào, có số <=0. Sample Input 0 6 9 Sample Output 0 3 Sample Input 1 0 10 Sample Output 1 Error

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() 
{
    int a,b,ucln;
    scanf ("%d %d", &a, &b);
    if(a <= 0 || b <= 0 ) 
     { 
         printf ("Error");
     }
    else 
    {
        while ( a != b )
        {
            if (a>b)
                a = a-b;
            else
                b = b-a;
        }
        printf ("%d",ucln=a);
    }
    return 0;
}

10. admin#337 17/10/2020 13:52:26 Phân loại học sinh dựa trên điểm nhập vào
Nhập một số nguyên chỉ điểm ở thang 10. In ra phân loại dựa trên điểm như sau: Nếu điểm từ 0~3 in ra Kem Nếu là 4 in ra Yeu Nếu từ 5~6 in ra TB Nếu từ 7~8 in ra Kha Nếu từ 9~10 in ra Gioi Nếu điểm không thuộc phạm vi nào bên trên thì in ra Error Input Format Một số nguyên chỉ điểm (d) ở hệ 10. Vd: 5 Constraints 0 <= d <= 10 Output Format In ra một trong các phân loại: Kem, Yeu, TB, Kha, Gioi Hoặc in ra thông báo lỗi: Error In đúng chữ hoa thường, không in thêm bất kì kí tự nào khác. Sample Input 0 -1 Sample Output 0 Error Sample Input 1 2 Sample Output 1 Kem Sample Input 2 5 Sample Output 2 TB Sample Input 3 8 Sample Output 3 Kha Sample Input 4 10 Sample Output 4 Gioi

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() 
{
    int diem;
    scanf( "%d", &diem );
    switch ( diem )
    {
        case 0:
        case 1:
        case 2:
        case 3: printf ( "Kem
" ); break;
        case 4: printf ( "Yeu
" ); break;
        case 5:
        case 6: printf ( "TB
" ); break;
        case 7:
        case 8: printf ( "Kha
" ); break;
        case 9:
        case 10: printf ( "Gioi
" ); break;
        default: printf ( "Error
" );
    }
    return 0;
}
11. admin#336 17/10/2020 13:51:09 Sắp xếp 5 số theo thứ tự giảm
Nhập 5 số nguyên, sắp xếp rồi in chúng ra theo thứ tự giảm. Kết quả in ra trên 1 dòng, giữa 2 số cách nhau bởi 1 dấu cách. Input Format Năm số nguyên cách nhau bởi 1 dấu cách. Vd: 1 2 3 4 5 Constraints Không có. Output Format In ra 1 dòng gồm 5 số theo thứ tự giảm, hai số cách nhau bởi 1 dấu cách. Vd: 5 4 3 2 1 Trước số đầu tiên và sau số cuối cùng không in thêm kí tự nào. Sample Input 0 1 2 3 4 5 Sample Output 0 5 4 3 2 1

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
    int a,b,c,d,e,tg ;
    scanf ("%d%d%d%d%d", &a, &b, &c, &d, &e);
    if (a<b)
    {
        tg = b ;
        b = a ;
        a = tg ;
    }
    if (a<c)
    {
        tg = c ;
        c = a ;
        a = tg ;
    }
    if (a<d)
    {
        tg = d ;
        d = a ;
        a = tg ;
    }
    if (a<e)
    {
        tg = e ;
        e = a ;
        a = tg ;
    }
    if (b<c)
    {
        tg = c ;
        c = b ;
        b = tg ;
    }
    if (b<d)
    {
        tg = d ;
        d = b ;
        b = tg ;
    }
    if (b<e)
    {
        tg = e ;
        e = b ;
        b = tg ;
    }
    if (c<d)
    {
        tg = d ;
        d = c ;
        c = tg ;
    }
    if (c<e)
    {
        tg = e ;
        e = c ;
        c = tg ;
    }
    if (d<e)
    {
        tg = e ;
        e = d ;
        d = tg ;
    }
    printf ("%d %d %d %d %d", a, b , c, d, e);
    return 0;
}

12. admin#335 17/10/2020 13:50:11 Sắp xếp 3 số theo thứ tự tăng
Nhập 3 số nguyên, sắp xếp rồi in chúng ra theo thứ tự tăng. Kết quả in ra trên 1 dòng, giữa 2 số cách nhau bởi 1 dấu cách. Input Format Ba số nguyên cách nhau bởi 1 dấu cách. Vd: 3 2 1 Constraints Không có. Output Format In ra ba số theo thứ tự tăng, cách nhau bởi 1 dấu cách. Vd: 1 2 3 Sample Input 0 3 2 1 Sample Output 0 1 2 3

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
    int a,b,c,tg ;
    scanf ("%d%d%d", &a, &b, &c);
    if (a>b)
    {
        tg = a ;
        a = b ;
        b = tg ;
    }
    if (a>c)
    {
        tg = a ;
        a = c ;
        c = tg ;
    }
    if (b>c)
    {
        tg = b ;
        b = c ;
        c = tg ;
    }
    printf ("%d %d %d", a, b , c);
    return 0;
}

13. admin#334 17/10/2020 13:39:32 Tính tổng 1 dãy các số nguyên
input: 3 100 200 200 output: 500

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() 
{
    int n;
    int x;
    int i;
    int sum = 0; 
    scanf ("%d", &n);
    for (i = 1; i <= n; i++)
    {
        scanf ("%d", &x);
        sum = sum + x;
    }
    printf("%d", sum);
    return 0;
}
14. admin#333 17/10/2020 09:28:29 Tìm ước chung lớn nhất của 2 số
Nhập 2 số nguyên, tìm và in ra ước chung lớn nhất của chúng. Nếu dữ liệu vào không hợp lệ (<=0), in ra Error. Input Format Hai số nguyên cách nhau 1 dấu cách. Vd: 6 9 Constraints Không có. Output Format Ước chung lớn nhất của 2 số nhập vào, hoặc In ra Error nếu trong 2 số nhập vào, có số <=0.

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
    int a,b,ucln;
    scanf("%d", &a);
    scanf("%d", &b);
    if (a!=b) {
    if(a<=0 || b<=0){printf("Error");} else {
        while(a!=b) {
            if(a>b) {
                a=a-b;
                ucln=a;
            } else {
                b=b-a;
                ucln=b;
            }
        }
        printf("%d
",ucln); }
    }
  else {printf("%d",a);}
    return 0;
}