Tuyển tập đề thi + bài giải môn C của các trường

Print
Trường Công nghệ Thông tin Thành phố Hồ Chí Minh chi nhánh Hà Nội:

Câu 1:
giải và biện luận phương trình bậc 2 (tính cả trường hợp suy biến).

Bài giải:
C Code:
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<stdlib.h>
  4. #include<math.h>
  5.  
  6. int gptb2(float a, float b, float c, float* x1, float* x2)
  7. {
  8.     float del;
  9.     del = b*b - (4*a*c);
  10.     if(del < 0) return -1;
  11.     else
  12.     {
  13.         *x1 = (-b - sqrt(del))/ (2*a);
  14.         *x2 = (-b + sqrt(del))/ (2*a);
  15.     }
  16.     return 1;
  17. }
  18. int main()
  19. {
  20.     clrscr();
  21.     float a, b, c, x1, x2;
  22.     printf("\nNhap a, b, c:");
  23.     scanf("%f%f%f", &a,&b,&c);
  24.     fflush(stdin);
  25.     if(a  ==  0)printf("X = %.2f", -c/b);
  26.     else
  27.     {
  28.         if(gptb2(a,b,c,&x1,&x2) == -1)
  29.         printf("\nphuong trinh vo nghiem");
  30.         else
  31.         {
  32.             printf("\nx1 = %.2f", x1);
  33.             printf("\nx2 = %.2f", x2);
  34.         }
  35.     }
  36.     getch();
  37.     return 0;
  38. }

Câu 2:
viết chương trình cho phép nhập n từ bàn phím (nếu n <= 0 thì bắt nhập lại) . Tính tổng s = 1^2 + 2^2+.... + n^2.

Bài giải:
C Code:
  1. #include<stdio.h>
  2. #include<conio.h>
  3.  
  4. int main()
  5. {
  6.     clrscr();
  7.     int n;
  8.     long tong;
  9.     int i;
  10.     do
  11.     {
  12.         printf("\n Nhap n: ");
  13.         scanf("%d", &n);
  14.     }while(n <= 0);
  15.    
  16.     tong = 0;
  17.     for(i = 1; i <= n; i++) tong += i*i;
  18.     printf("\n S = %ld", tong);
  19.     getch();
  20.     return 0;
  21. }

Câu 3:
Nhập chuỗi s từ bàn phím. Kiểm tra tính đối xứng (nếu có đếm số ký tự giống nhau).

Bài giải:
C Code:
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<string.h>
  4.  
  5. int main()
  6. {
  7.     clrscr();
  8.     int i, j, dem = 0;
  9.     char s[100];
  10.     printf("\n Nhap chuoi:  ");
  11.     gets(s);
  12.     for(i=0,j=strlen(s)-1; i<j; i++, j--)
  13.     {
  14.         if(s[i]!=s[j])
  15.         {
  16.             printf("\n khong doi xung");
  17.             getch();
  18.             return 0;
  19.         }
  20.         else
  21.         {
  22.             dem++;
  23.         }
  24.     }
  25.     printf("\n co doi xung");
  26.     printf("\n So chhu giong nhau trong chuoi: %d", dem);
  27.     getch();
  28.     return 0;
  29. }

Trường đại học Bách Khoa Đà Nẵng:

Bài 1: Tính tổng S=1+2+3+….+n

C Code:
  1. #include<stdio.h>
  2. #include<conio.h>
  3.  
  4. int main()
  5. {
  6.     clrscr();
  7.     int n;
  8.     long tong;
  9.     int i;
  10.     do
  11.     {
  12.         printf("\n Nhap n: ");
  13.         scanf("%d", &n);
  14.     }while(n <= 0);
  15.    
  16.     tong = 0;
  17.     for(i = 1; i <= n; i++) tong += i;
  18.     printf("\n S = %ld", tong);
  19.     getch();
  20.     return 0;
  21. }


Bài 2:Viết chương trình nhập vào một số nguyên N có dạng abc rồi xuất ra màn hình một số đảo ngược có dạng cba

Có thể dùng code này:
C Code:
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<string.h>
  4. #include<stdlib.h>
  5. int main ()
  6. {
  7.     clrscr ();
  8.     char* p;
  9.     int i,n;
  10.     p = (char*)malloc(128);
  11.     printf("\n Nhap xau ki tu :");
  12.     gets (p);
  13.     n = strlen(p);
  14.     printf("\n xau dao: \n");
  15.     for( i = n-1; i>=0; i --)
  16.     putchar(p[i]);
  17.     printf("\n");
  18.     free(p);
  19.     getch ();
  20.     return 0;
  21. }


Bài 4: Liệt kê tất cả các số nguyên tố nhỏ hơn 1000
C Code:
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<conio.h>
  4. #include<math.h>
  5.  
  6. int ktSNT (const int a)
  7. {
  8.     int i = 0;
  9.     for(i = 2; i <= (int)sqrt(a); i++)
  10.     {
  11.         if( a % i == 0 || a < 2 && a != 2)
  12.         {
  13.             return 0;
  14.         }
  15.     }
  16.     return 1;
  17. }
  18. int main ()
  19. {
  20.     int N= 1000,i, k = 0;
  21.     int* snt = 0;
  22.  
  23.     snt = (int*)malloc(N*sizeof(int));
  24.     k = 0;
  25.     for(i = 2; i <= N; i++)
  26.     {
  27.         if(ktSNT(i) == 1)
  28.         {
  29.             snt[k] = i;
  30.             k++;
  31.         }
  32.     }
  33.  
  34.     printf("\n          Bang cac so nguyen to\n");
  35.     for (i = 0; i < k; i++)
  36.     {
  37.         printf("%9d", snt[i]);
  38.     }
  39.     free(snt);
  40.     getch();
  41.     return 0;
  42. }


Bài 5: Nhập vào số nguyên N rồi xuất ra màn hình N số nguyên tố
C Code:
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<conio.h>
  4. #include<math.h>
  5.  
  6. int ktSNT (const int a)
  7. {
  8.     int i = 0;
  9.     for(i = 2; i <= (int)sqrt(a); i++)
  10.     {
  11.         if( a % i == 0 || a < 2 && a != 2)
  12.         {
  13.             return 0;
  14.         }
  15.     }
  16.     return 1;
  17. }
  18. int main ()
  19. {
  20.     int N,i, k = 0;
  21.     int* snt = 0;
  22.     printf("\n Nhap vao N:");
  23.     scanf("%d", &N);
  24.  
  25.     snt = (int*)malloc(N*sizeof(int));
  26.     k = 0;
  27.     i = 2;
  28.     while(k < N)
  29.     {
  30.         i++;
  31.         if(ktSNT(i) == 1)
  32.         {
  33.             snt[k] = i;
  34.             k++;
  35.         }
  36.     }
  37.  
  38.     printf("\n          Bang cac so nguyen to\n");
  39.     for (i = 0; i < k; i++)
  40.     {
  41.         printf("%5d", snt[i]);
  42.     }
  43.     free(snt);
  44.     getch();
  45.     return 0;
  46. }

Bài 11: Nhập mảng 2 chiều có dạng M*N (Hoặc N*N) rồi tính tổng các phần từ.
C Code:
  1. #include <stdio.h>
  2. #include<conio.h>
  3.  
  4. int dong, cot;
  5. long SUM = 0;
  6. int A[100][100];
  7. void    NHAPMANG(int A[][100]);
  8. void INMANG(int A[][100]);
  9.  
  10. int main()
  11. {
  12.    
  13.    
  14.    
  15.     NHAPMANG(A);
  16.     INMANG(A);
  17.     getch();
  18.     return 0;
  19. }
  20. void    INMANG(int A[][100])
  21. {
  22.     for(int i=0;i<dong;i++)
  23.     {
  24.         for(int j=0;j<cot;j++)
  25.         {
  26.             printf(" %d  ",A[i][j]);    
  27.            
  28.         }    
  29.         printf("\n");
  30.     }
  31.     printf("Tong = %ld",SUM);
  32.  
  33. }
  34. void    NHAPMANG(int A[][100])
  35. {
  36.     do{
  37.         printf("Nhap vao so dong cua ma tran: ");scanf("%d",&dong);
  38.         printf("\nNhap vao so cot cua  ma tran: ");scanf("%d", &cot);
  39.     }while(dong < 2 || cot < 2 || dong > 100 || cot >100);
  40.     for(int i=0;i<dong;i++)
  41.     {
  42.         for(int j=0;j<cot;j++)
  43.         {
  44.             printf("\nNhap vao phan tu A[%d][%d]: ",i,j);
  45.             scanf("%d",&A[i][j]);    
  46.         SUM += A[i][j];
  47.         }        
  48.        
  49.     }    
  50.    
  51.    
  52. }

Đề thi của Đại học công nghệ - ĐHQG

Bài 1: sử dụng khuôn hình hàm tìm giá trị lớn nhất của 1 mảng;
Bài 2: nhập dữ liệu và các phương thúc của số phức , nhap , in, tính modull và sử dụng toán tử operator < để so sánh số phức;
ham main; nhập 1 dãy số phức sau đó in ra số phức nhỏ nhất

code của bài 1

C++ Code:
Select All | Show/Hide
  1. #include<iostream>
  2. using namespace std;
  3. // ----------------------------------------------------------------------------------------
  4. // xay dung khuon hinh ham tim gia tri lon nhat cau mang
  5. //-----------------------------------------------------------------------------------------
  6. template <typename T >  T GTLN( T a[], int n){
  7.        
  8.               int imax =0 ; // gan vi tri imax = 0;
  9.           for (  int i = 0 ; i < n ; i++){
  10.                   if ( a[imax] < a [i] ){
  11.                         imax = i;
  12.         }
  13.     }
  14.              return a[imax];
  15. }
  16. // ---------------------------------------------------------------------------------------
  17. // xay dung ham main
  18. //------------------------------------------------------------------------------------
  19.  
  20. int main(){
  21.      
  22.              int n, i;
  23.              cout<<" nhap so luong cua phan tu cua mang  n = ";
  24.              cin>>n;
  25.              int *a = new int [n]; // cap phat dong mang a
  26.              // nhap mang a
  27.              for ( i = 0 ; i < n ; i++){
  28.                    
  29.                      cout<< " a [ " << i << " ] = ";
  30.                      cin>>a[i];
  31.         }
  32.               // xuat mang a
  33.              
  34.               cout<<"\n Mang vua nhap la : \n";
  35.               for ( i = 0 ; i < n ; i++){
  36.                    
  37.                       cout<< a[i] <<  "  " ;
  38.         }
  39.              cout<<" \ngia tri lon nhat cua mang a la : " << GTLN( a,n) << endl;
  40.              // giai phong mang a
  41.              delete []a;
  42.              system (" pause");
  43.              return 0;
  44. }


code bài 2

C++ Code:
Select All | Show/Hide
  1. #include<iostream>
  2. #include<math.h>
  3. using namespace std;
  4. //-----------------------------------------------------------------------------------
  5. // xay dung lop so phuc
  6. //-------------------------------------------------------------------------------------
  7. class sophuc {
  8.          
  9.             private :
  10.                     int thuc;
  11.                     int ao;
  12.               public  :
  13.                     sophuc(){
  14.                         thuc = ao =0;
  15.         }
  16.                  void input();
  17.                  void output();
  18.                  // tinh modull cua so phuc
  19.                  float modull(){
  20.                        
  21.                         return sqrt( pow ( thuc, 2) + pow (ao, 2));
  22.         }
  23.               // toan tu so sanh
  24.               int operator < ( sophuc );
  25. };
  26. //-----------------------------------------------------------------------------------
  27. // ham nhap
  28. //--------------------------------------------------------------------------------------
  29. void sophuc::input(){
  30.    
  31.               cout<< " nhap phan thuc = " ;
  32.               cin>>thuc;
  33.               cout<<" nhap phan ao = ";
  34.               cin>>ao;
  35. }
  36. //---------------------------------------------------------------------------------------
  37. // ham in so phuc
  38. //-------------------------------------------------------------------------------------
  39. void sophuc::output(){
  40.      
  41.              if ( ao < 0 ) cout<< thuc << " - " << ao << " i " << endl;
  42.              else  cout<< thuc << " + " << ao << " i " << endl;
  43.        
  44. }
  45. //--------------------------------------------------------------------------------------
  46.  // ham so sanh toan tu operator
  47.  //----------------------------------------------------------------------------------
  48.  int sophuc::operator <( sophuc x){
  49.             return  ( modull() < x.modull() );
  50.                    
  51.    
  52.            
  53.    
  54. }
  55. //-------------------------------------------------------------------------------------------
  56. // ham main
  57. //------------------------------------------------------------------------------------------
  58. int main(){
  59.            
  60.              int i,n, imin=0;
  61.              sophuc *a= new sophuc [n];
  62.              cout<<" nhap so phan tu cua mang n = ";
  63.              cin>>n;
  64.              // nhap mang so phuc
  65.              for ( i = 0 ; i < n ; i++ ){
  66.                      cout<<" nhap so phuc thu " << i +1 << endl;
  67.                      a[i].input();
  68.                      
  69.         }    // ham so sanh
  70.               for ( i = 0 ; i < n ; i++ ){
  71.                     if ( a[i] < a[imin]){
  72.                           imin= i;
  73.         }
  74. }
  75.                cout<<" so phuc nho nhat cua mang la : " ;
  76.                a[imin].output();
  77.               system ("pause");
  78.               return 0;
  79. }
Học viên bưu chính viễn thông ( cơ sở 2 )
Đề bài : nhập 1 dãy số , tối thiểu là 2 số nguyên âm
tính tổng các số dương nằm giữa 2 số nguyên âm đầu tiên và cuối cùng của mảng
nếu 2 số âm liền kề nhau in ra tong =0;

C++ Code:
Select All | Show/Hide
  1. #include<iostream>
  2. #include<math.h>
  3. using namespace std;
  4. void input_arg(int *a, int n);
  5. void output_arg( int *a, int n);
  6. int sum_arg( int *a, int n);
  7. int dem_arg( int*a, int n);
  8.  
  9.  
  10. int main(){
  11.    
  12.                 int n,i;
  13.                 int dem_a;
  14.              cout<<" nhap so phan tu cua mang n = ";
  15.                 cin>>n;
  16.                 int *a = new int[n];
  17.                 input_arg(a,n);
  18.  
  19.                 if ( (dem_arg(a,n)) < 2 ) cout<<" xin moi ban nhap lai , toi thieu la 2 so am"<< endl;
  20.                 else {
  21.              // in mang
  22.                 cout<< " \nmang vua nhap la \n";
  23.                 output_arg(a,n);
  24.                 cout<<" \ntong cua mang la : " << sum_arg(a,n);
  25.     }
  26.                 delete[]a;
  27.                 cout<<endl;
  28.                 system ("pause");
  29.                 return 0;
  30. }
  31.  
  32. // ham nhap mang
  33. void input_arg( int *a, int n){
  34.            
  35.               int i;
  36.                  for ( i = 0 ; i < n ; i++){
  37.                        
  38.                     cout<< " a [ " << i << " ] =";
  39.                     cin>>a[i];
  40.        }
  41.  
  42. }
  43. // ham in mang
  44.              
  45. void output_arg( int *a, int n){
  46.            
  47.               int i, dem =0;
  48.                  for ( i = 0 ; i < n ; i++){
  49.                      cout<< a[i] << "  ";
  50.         }
  51.  
  52. }
  53. // ham kiem tra co 2 so am
  54. int dem_arg( int *a, int n){
  55.      
  56.           int dem =0;
  57.           for ( int i = 0 ; i  < n ; i++ ){
  58.                    if ( a[i] < 0 ) {
  59.                         dem ++;
  60.         }
  61.     }
  62.           return dem;
  63. }
  64.  
  65.          
  66.          
  67.                
  68. int sum_arg( int *a, int n){
  69.      
  70.        
  71.              int i,j=0,k=0;
  72.              int tong =0;
  73.              int kt=0;
  74.              for ( i = 0 ; i < n ; i++){
  75.                     //  neu 2 so am lien tiep la so am thi tong =0
  76.                  if (( a[i] < 0) && (a[i+1] < 0 ) ){
  77.                             kt=1;
  78.         }
  79.        
  80.     }
  81.              
  82.              if ( kt ==1) cout<<" tong = 0 "<< endl;
  83.               //  neu khong thi      
  84.              else {
  85.  
  86.                     for ( i = 0 ; i < n ; i++){
  87.                          if ( a[i] < 0 ){
  88.                             k = i; // gan chi so i cho k  roi ket thuc vong lap
  89.                              break;
  90.         }
  91.                  
  92.     }          
  93.                 //  cout<<"  k = " << k << endl;
  94.              
  95.                     for ( i = (n-1) ; i > 0 ; i--){
  96.                             if ( a[i]  <  0 ){
  97.                                     j = i; // gan chi so cua i cho j roi ket thuc vong lap
  98.                               break;
  99.       }
  100.      
  101.     }
  102.                 // tinh tong
  103.                     for ( i = k ; i < j ; i++){
  104.                             if (a[i] > 0 )
  105.                         tong  += a[i];
  106.        
  107.    }
  108.   }
  109.  
  110.              return tong;
  111. }

Bạn có đam mê ngành thiết kế vi mạch và bạn muốn có mức lương 1000 usd cùng lúc bạn

đang muốn tìm một Trung tâm để học vậy hãy đến với ngành vi mạch tại SEMICON

  HotLine: 0972 800 931 Ms Duyên

Last Updated ( Sunday, 04 October 2015 20:01 )