Khai báo nguyên mẫu ở đầu chương trình và chỉ được gọi bởi hàm main( ). Sau ) với các tham số cùng kiểu cũng phải khai báo riêng. Sau ) với các tham số cùng kiểu có thể khai báo chungC. [r]
Trang 1150 CÂU HỎI ÔN TẬP TIN HỌC ĐẠI CƯƠNG
Câu 1.Nếu hàm func( ) không có tham số thì trong có thể khai báo:
A Các hàm được gọi hàm main( )
B Các hàm không được gọi hàm main( )
C Các hàm được gọi bởi hàm main( )
D Các hàm được gọi bởi hàm main( ) và chúng có thể gọi lẫn nhau.
Câu 4 Tham số hình thức của hàm được khai báo :
A Như khai báo biến.
B Như khai báo mảng.
C Như khai báo biến nhưng không được khai báo chung.
D Khai báo khác
Câu 5 Hàm được khai báo nguyên mẫu với:
A Tên hàm và danh sách tham số.
B Kiểu hàm và tên hàm.
C Kiểu hàm và danh sách tham số.
D Kiểu hàm, tên hàm và danh sách tham số.
Câu 6.Hàm có thể khai báo nguyên mẫu và định nghĩa :
A Định nghĩa trong hàm main( ).
B Khai báo nguyên mẫu trong hàm main( ) và chỉ được gọi bởi hàm main( ).
C Khai báo nguyên mẫu ở đầu chương trình và chỉ được gọi bởi hàm main( )
D Khai báo nguyên mẫu ở đầu chương trình và định nghĩa sau hàm main( ).
Câu 7 Danh sách tham số chỉ có tên hình thức thì có thể khai báo kiểu tham số:
A Sau ) với các tham số cùng kiểu cũng phải khai báo riêng
B Sau ) với các tham số cùng kiểu có thể khai báo chung
C Sau { với các tham số cùng kiểu cũng phải khai báo riêng
D Sau { với các tham số cùng kiểu có thể khai báo chung
Câu 8 Trong lệnh gọi hàm, danh sách tham số thực sự truyền cho hàm:
A Như danh sách tham số hình thức trong khai báo.
B Phải có kiểu tham số.
C Đúng kiểu như trong khai báo.
D Đúng kiểu và đúng số tham số như trong khai báo.
Câu 9 Biến cục bộ:
A Là biến được khai báo bên ngoài tất cả các hàm.
B Là biến được khai báo bên trong một hàm.
C Là biến được khai báo bên trong một hàm và chỉ được dùng trong hàm đó
D Là biến được khai báo bên trong hoặc bên ngoài các hàm.
Câu 10 Giữa biến cục bộ và biến toàn cục:
A Có thể trùng tên.
B Không được trùng tên.
C Nếu trùng tên thì biến cục bộ phải khai báo bên ngoài các hàm.
Trang 2D Có thể trùng tên và lệnh trong hàm ưu tiên biến cục bộ.
Câu 11 Một hàm có thể được gọi ở:
D Là hàm được định nghĩa qua chính nó.
Câu 13 Khi hàm được gọi thì các lệnh trong hàm được thực hiện:
A Cho đến hết hàm.
B Cho đến khi gặp lệnh break.
C Cho đến khi gặp lệnh exit.
D Cho đến khi gặp lệnh return hoặc đến hết hàm.
Câu 14 Cho hàm func(a, b : int){ a=b++ ;} Hàm này bị lỗi vì:
A Không có khai báo kiểu trả về.
B Khai báo tham số không đúng.
C Không có lệnh return.
D Chưa có giá trị của biến b.
Câu 15 Cho hàm void swap (int a, int b){int temp=a ; a=b ; b=temp ;}
Với các lệnh ở hàm main( ) : int n=5, k=7 ; swap(n, k) ;
thì giá trị của các biến như sau :
A n=7, k=5.
B n=7, k=5, temp=7.
C n=5, k=7, temp=7.
D n=5, k=7.
int a=5; inc(a) ; printf(" %d", a) ;
Kết quả là :
A 6
B Không có kết quả vì hàm trên bị lỗi.
C Không có kết quả vì biến trùng tên với tham số.
Trang 3C Hàm bị lỗi vì không khai báo kiểu trả về.
D Hàm bị lỗi vì lệnh i=2;
Câu 20 Cho hàm prod(int a[], int n){ int i, p=1; for (i=0 ; i<n ; i++) p*=a[i]; return p;}
Hàm trên để tính:
A Tính tích mảng p gồm n số nguyên kiểu int.
B Tính tích mảng a gồm n số nguyên kiểu int.
C Hàm bị lỗi vì không khai báo kiểu trả về.
D Hàm bị lỗi vì không khai báo kích thước mảng a.
Câu 21 Biến toàn cục:
A Khai báo bên ngoài hàm main( )
B Khai báo trong tất cả các hàm, ngoại trừ hàm main( )
C Khai báo bên trong hàm main( )
D Khai báo ngoài tất cả các hàm kể cả hàm main( )
Câu 22 Phạm vi sử dụng của biến toàn cục
A Bên trong hàm main( )
B Bên ngoài hàm main( )
C Bên trong các hàm ngoại trừ hàm main( )
D Bên trong các hàm kể cả hàm main( )
Câu 23 Phạm vi sử dụng của biến cục bộ
A Bên trong hàm main( )
B Bên ngoài hàm main( )
C Bên trong các hàm ngoại trừ hàm main( )
D Bên trong hàm có khai báo nó
Câu 24 Nếu tham số của hàm là con trỏ thì trong lệnh gọi hàm:
A Truyền hằng
B Tuyền bằng địa chỉ của biến
C Truyền bằng địa chỉ của biến hoặc con trỏ
Trang 4int kt(unsigned n) {
if (n%2) return(1 ) ; else return(0) ; }
printf("\n So Fibonacci thu %d la %d",i,fibo(i)); }
int fibo(int i) {
Trang 5#include <stdio.h>
void main( ) {
unsigned n=3;
printf("\nTong cua %u so la : %u",n+1, tinhs(n));
} unsigned tinhs(unsigned n) {
A Được khai báo bên trong thân hàm
B Được khai báo với từ khoá static
C Vẫn tồn tại ngay cả khi hàm kết thúc\
D Tất cả đều đúng
Câu 32 Biến con trỏ có thể chứa
A Giá trị của một biến\
B Giá trị của một vùng nhớ
C Giá trị một biến hoặc một vùng nhớ
D Địa chỉ của một biến
Câu 33 Cho khai báo: int n, *pn=&n;
A n là biến kiểu int
B *pn là biến con trỏ và n là biến kiểu int
C pn là biến con trỏ
D n là biến kiểu int và pn là biến con trỏ
Câu 34 Toán tử truy cập giá trị mà con trỏ chỉ đến là
A Tăng str lên 1 byte
B Tăng str lên 1 char
A Tăng ptr lên 1 int
B Tăng ptr lên 2 byte.
C ptr trỏ tới num[1]
D Cả 3 đáp án trên đều đúng.
Trang 6Câu 37 Cho đoạn chương trình sau:
Câu 39 Cho biết giá trị của hàm thi(6)?
int thi(int i){
A 0
B 10
C 6
D 15
Trang 7Câu 43 Cho hàm sau:
int thi(int x, int *y){
Câu 44 Cho hàm sau:
void thi(unsigned int n){ if(n<2) printf("%d",n); else{thi(n/2);
Câu 45 Cho biết kết quả hiển thị lên màn hình khi gọi hàm thi(8);
void thi(int i){
if(i<5) printf("%d ",i);
else{thi(i-1); printf("%d ",i);}
Trang 8Câu 47 Hãy điền vào để hàm sau kiểm tra n có phải là số nguyên tố hay không?
int nguyento(unsigned int n) { int i;
for( i=2; i<=sqrt(n); i++) if ( ) return 0;
D Lỗi khai báo
Câu 49 Cho đoạn lệnh sau:
Câu 50 Số nguyên dương n là số hoàn hảo nếu n bằng tổng các ước số thực sự của n.Ví
dụ 6=1+2+3 Hãy điền vào để hàm sau kiểm tra n có phải là số hoàn hảo haykhông?
int thi(unsigned int n){
int s=0, i;
for(i=1; i<n; i++) if(!(n%i)) ; return n==s;
}
Trang 9Hãy cho biết kết quả hiển thị lên màn hình khi thực hiện lệnh printf("%d",thi(6));
A 6
B 10
C 12
D 14
Câu 52 Cho hàm sau:
int *thi(int i){
D Đoạn lệnh trên bị lỗi
Câu 53 Cho hàm sau:
int thi(int n){ int s=0;
Câu 54 Cho hàm sau:
int thi(int x, int *y){
Câu 55 Cho hàm sau:
int thi(int x, int *y){
x=3; *y=4;
return x+*y;
}
Hãy cho biết kết quả hiển thị lên màn hình khi thực hiện đoạn lệnh sau:
int x=1, y=2; thi(y,&x); printf("%d, %d",x,y);
Trang 10Câu 57 Cho hàm sau:
int thi(int x, int y){
Câu 58 Cho biết khai báo nguyên mẫu hàm nào là không thích hợp
A void funct(char x, char y);
B double funct(char x)
C int funct( );
D char x( );
Câu 59 Kiểu trả về của hàm sau đây là gì ?
funct( char c, double x, float y);
{ int t=*a; *a=*b; *b=t; } main( )
{ int a=10, b=20; hoandoi(a, b); printf("%d %d", a, b); }
{ int a=100, b=200; hoandoi(&a, &b); printf("%d %d", a, b); {
A 100 200
B 200 100
C Chương trình bị lỗi
Trang 11D Kết quả khác
Câu 62 Ưu điểm của việc dùng hàm ?
A Tránh dư thừa, dễ quản lý chương trình
B Giúp chương trình thực hiện nhanh hơn
C Tận dụng kỹ năng lập trình của nhiều người
D Tiết kiệm bộ nhớ
Câu 63 Phát biểu nào sau đây là sai đối với lời gọi hàm?
A Tham số thực và tham số hình thức có thể trùng tên
B Số tham số thực phải bằng số tham số hình thức
C Tham số thực và tham số hình thức phải trùng tên
D Tham số thực có thể là biến
Trang 12Câu 64 Đối với hàm trả về giá trị kiểu float, giá trị hàm được dùng :
A Trong biểu thức
B Như câu lệnh
C Trong hàm main( )
D Trong biểu thức hoặc như câu lệnh
Câu 65 Đối với hàm trả về kiểu void, lệnh gọi hàm được dùng :
A Trong biểu thức
B Như câu lệnh
C Trong hàm main( )
D Trong biểu thức hoặc như câu lệnh
Câu 66 Chọn phát biểu sai trong ngôn ngữ C:
A Có thể định nghĩa hàm ở trước hàm main( )
B Không được định nghĩa hàm trong hàm
C Có thể định nghĩa hàm trong hàm
D Các hàm được gọi bởi hàm main( )
Câu 67 Hàm nào sau đây là đúng cú pháp
A int sum(int a, b) { return a+b; }
B void sum(int a, int b) { return a+b;}
C int sum(a, b) { int a,b,c; c=a+b; return c; }
D int sum(int a, int b) { return a+b; }
Câu 68 Khai báo nguyên mẫu hàm để hoán đổi 2 biến kiểu float
A int hoandoi(float *a, float b) ;
B void hoandoi(float a, float b);
C void hoandoi(float *a, float *b) ;
D float hoandoi(float a, float b) ;
Câu 69 Với khai báo float a, b; float *pa, *pb;
Dãy lệnh nào dưới đây không đúng cú pháp
A b=5; a=b/2; pa=&a;
B a=10; b=a; *pb=a;
C a=b=5; pa=b;
D a=b=5; *pa=10;
Câu 70 Hàm dưới đây tính gì?
int tinh( unsigned a)
{ int n =0; while (a!=0) { a=a/10; n++); return n; }
A Tổng các chữ số của số nguyên dương a
B Đếm số chữ số của số nguyên dương a
C Tích các chữ số của số nguyên dương a
D Đếm số chữ số của tự nhiên a
Câu 71 Hàm nào dưới đây để tính n!?
B long GT(int n) { if (n==0) return 1; else return n*GT(n-1); }
C void GT(int n, long *q) { long s=1; for( int i=2;i<=n; i++) s=s*i; *q=s; }
D Tất cả đều đúng
Câu 72 Cho biết dãy fibonanci như sau: 1 1 2 3 5 8 13 21 34 …
Hàm dưới đây có ý nghĩa là gi`?
int fibo(int n)
Trang 13{ if (n==1|| n==2) return 1; else return fibo(n-1) + fibo(n-2); }
A Tính số fibonanci thứ n
B Kiểm tra số n có phải là số fibonanci?
C Tìm dãy n số fibonanci đầu tiên
Câu 74 Cho hàm sau:
void myFunc (int n) { if (n <5) myFunc(++n); printf("%d, ", n);}
Cho biết kết quả của lệnh gọi hàm: myFunc(0);
Trang 14Câu 77 Hãy điền vào chỗ # và ## để hàm sau kiểm tra số n có phải là số nguyên tố ?
int nguyento( unsigned n)
Câu 79 Xét khai báo sau
int a[100], *pa;
pa=a;
A pa là giá trị của mảng a
B pa chứa địa chỉ của a[0]
C pa là giá trị đầu tiên của mảng a
D Khai báo không hợp lệ
Câu 80 Cho khai báo:
Trang 15Câu 81 Cho khai báo: int a,*p;
Hãy chỉ ra biểu thức không hợp lệ
Câu 85 Giả sử có mảng một chiều a gồm n phần tử Hàm sau làm gì ?
void thitracnghiem(int *a, int &n, int x)
{ a[n]=x;
Trang 16D Thêm phần tử n vào cuối mảng a.
Câu 86 Giả sử có mảng một chiều a gồm n phần tử là số nguyên Hàm sau làm gì ?
void tinhco(int *a, int &n, int x, int k)
D Xóa phần tử x tại vị trí k của mảng a
Câu 87 Kết quả của chương trình sau là gì ?
#include <stdio.h>
main() { int x,*p ; x=3 ; x=6 ; p=&x ;*p=9 ; printf("%d %d", x, *p) ; }
printf("%d %d", a, b);
Trang 17Câu 90 Cho khai báo hàm:
void swap(int *a, int &b); và khai báo biến : int n, k ;
Câu 92 Cho hàm thực hiện trên mảng a gồm n phần tử:
int find (int x, int a[ ], int n){int i=0; while( i<n && a[i] !=x) i++ ; return i ;}
Hàm này để:
A Kiểm tra giá trị x có trong mảng a hay không.
B Tính tổng các phần tử của mảng a.
C Tìm vị trí i đầu tiên của giá trị x trong mảng a
D Tìm vị trí i đầu tiên của giá trị x trong mảng a; nếu không có thì trả về n.
Câu 93 Cho hàm thực hiện trên mảng a gồm n phần tử:
int find (int x, int *a, int n){int i=0; while( i>=0 && a[i] !=x) i ; return i ;}
Hàm này để:
A Kiểm tra giá trị x có trong mảng a hay không.
B Tìm vị trí i cuối cùng của giá trị x trong mảng a
C Tìm vị trí i cuối cùng của giá trị x trong mảng a; nếu không có thì trả về -1.
D Tính tổng các phần tử của mảng a.
Câu 94 Cho hàm thực hiện trên mảng a gồm n phần tử:
void Xoa (int *a, int &n)
Trang 18{ int i, j;
while (i<n)
if (a[i]<0){
for(j=i; j<n-1; j++) a[j]=a[j+1]; n ;
} else i++;
}
A Loại phần tử âm đầu tiên ra khỏi mảng a
B Loại tất cả phần tử âm ra khỏi mảng a
C Xóa phần tử thứ n của mảng a
D Loại phần tử đầu tiên ra khỏi mảng a để khai báo:
Câu 95 Cho khai báo hàm:
f( ); khai báo tương đương là:
A int f(int) ;
B void f(void) ;
C int f(void) ;
D void f(int) ;
Câu 96 Cho khai báo hàm:
f(int); khai báo tương đương là:
A void f(int) ;
B void f(void) ;
C int f(int) ;
D int f(void) ;
Câu 97 Cho hàm thực hiện trên mảng a gồm n phần tử:
void func (unsigned a[ ], int n)
Câu 98 Cho hàm thực hiện trên mảng a gồm n phần tử:
int func (int a[ ], int n, int *min)
Trang 19B Tính số nhỏ nhất trong mảng a.
C Trả về vị trí của số nhỏ nhất đầu tiên trong mảng a và giá trị nhỏ nhất trong m
D Trả về vị trí của số nhỏ nhất cuối cùng trong mảng a và giá trị lớn nhất trong m
Câu 99 Cho hàm thực hiện trên mảng a gồm n phần tử:
int func (int a[ ], int n, int *m)
C Trả về vị trí của số lớn nhất đầu tiên trong mảng a và giá trị lớn nhất trong m
D Trả về vị trí của số lớn nhất cuối cùng trong mảng a và giá trị lớn nhất trong m
Câu 100 Cho hàm thực hiện trên mảng t gồm n phần tử:
int func (unsigned t[ ], int n)
{ int i, k, ; for(i=0; i<n;
}
Hàm này để làm gì?
A Tìm số khác 0 đầu tiên trong mảng t.
B Đếm số khác 0 trong mảng t.
C Tìm vị trí của số nguyên tố đầu tiên trong mảng t.
D Tìm vị trí của số nguyên tố đầu tiên trong mảng t; nếu không có thì trả về n
Câu 101 Cho đoạn chương trình:
Kết quả in ra của đoạn chương trình trên là gì?
A 0 2 1 2
B 1 2 2 3
C (1): 2 (2): 3
D (0): 2 (1): 3
Câu 102 Cho hàm thực hiện trên mảng một chiều a gồm n phần tử kiểu int sau đây :
int func (int a[ ], int n, int *min {
int i, k;
Trang 20k=0; *min=a[k]; for(i=0; i<n; i++) if (a[i]>*min) {*min=a[i]; k=i;} return k;
}
Hàm này để làm gì?
A Tính số lớn nhất trong mảng a
B Tính số nhỏ nhất trong mảng a
C Trả về vị trí của số nhỏ nhất đầu tiên trong mảng a và giá trị nhỏ nhất trong min
D Trả về vị trí của số nhỏ nhất cuối cùng trong mảng a và giá trị lớn nhất trong min
Câu 103 Cho đoạn chương trình:
void increase(int *n ) {
(*n)++; printf("%d ", *n);
} main() { int i;
for( i = 0; i < 5; increase(&i) ) { } printf("%d ", i);
Câu 104 Cho hàm sau:
int myFunc (int n)
Câu 105 Cho đoạn chương trình:
void dec(int n ) { printf("%d ", n ); dec(n) ; } main() { dec(5) ; }
B float myfunc(float x) { return x/3;}
C void myfunc(int s) { printf(“ Hello”);
D void myfunc(int) { printf(“ Hello”); }
Câu 107 Khai báo nguyên mẫu hàm nào sau đây là không hợp lệ?
A int myfunc (char x, int n);
Trang 21B float myfunc( x: int );
Câu 113 Cho hàm thực hiện trên mảng một chiều a gồm n phần tử kiểu int sau đây :
void Insert(int *a, int *n, int x, int k)
Trang 22A Đặt tất cả các phần tử của a bằng x
B Chèn phần tử x vào vị trí k
C Chèn phần tử k vào vị trí x
D Xóa phần tử x tại vị trí k
Câu 114 Cho hàm thực hiện trên mảng một chiều a gồm n phần tử kiểu int sau đây :
void Delete(int *a, int *n, , int k)
A Xóa phần tử cuối của mảng a
B Chèn phần tử đầu vào vị trí cuối của mảng a
C Xóa phần tử k ra khỏi mảng a
D Xóa phần tử tại vị trí k ra khỏi mảng a
Câu 115 Cho đoạn chương trình sau:
main()
{ int x,*p ; x=3 ; x=6 ; p=&x ;
*p=9 ; printf("%d %d %d", x, *p, ,x) ; }
Kết quả in ra của đoạn chương trình trên là gì?
369
A 696
B 999