C語言試題
在學習、工作生活中,我們會經常接觸并使用試題,試題可以幫助學;蚋髦鬓k方考察參試者某一方面的知識才能。一份好的試題都具備什么特點呢?下面是小編精心整理的C語言試題,僅供參考,歡迎大家閱讀。
C語言試題 1
1.若有以下程序
#include
main()
{ int a=6, b=0, c=0;
for ( ;a; ) { b += a; a -= ++c; }
printf("%d,%d,%d", a,b,c);
}
則程序的輸出結果是
A) 1,14,3
B) 0,14,3
C) 0,18,3
D) 0,14,6
參考答案:B
【解析】本循環(huán)的條件判斷時只要a為0就退出循環(huán)體,初始值a的值為6,滿足條件執(zhí)行完循環(huán)體,b的值為6,a-=+ +c即a=a-(++c),所以a的值為5,c的值為1第二次循環(huán)后b的值為11,a的值為3,c的值為2第三次也是最后循環(huán)后,a的值為0,b的值14,c的值為3
2.以下選項中非法的C語言字符常量是
A) 07
B)
C) aa
D) xaa
參考答案:C
【解析】C選項中是字符串常量,應該用雙引號表示即"aa"所以選擇C選項
3.若有以下程序
#include
void sp(int *a)
{ int b=2;
a=&b; *a = *a * 2; printf("%d,", *a);
}
main()
{ int k=3, *p=&k;
sp(p); printf("%d,%d", k, *p);
}
則程序的輸出結果是
A) 4,3,3
B) 4,3,4
C) 6,3,6
D) 6,6,6
參考答案:A
【解析】首先在主函數中給整型變量k賦值為3,將變量k的地址賦給指針變量p;調用sp函數,將實參p的值傳給形參a,在sp函數中,指針變量a又獲得變量b的地址,通過運算后,輸出a的值為4;返回主函數,輸出k的.值和p的值為3和3。因此A選項正確。
4.若有以下程序
#include
int k=7;
void f(int **s)
{ int *t=&k;
*s=t;
printf("%d,%d,%d,", k, *t, **s);
}
main()
{ int i=3,*p=&i, **r = &p;
f(r); printf("%d,%d,%d", i, *p, **r);
}
則程序的輸出結果是
A) 3,3,3,7,7,7
B) 3,7,7,7,7,7
C) 7,7,7,3,3,3
D) 7,7,7,3,7,7
參考答案:D
5.若有以下程序
#include
int *f(int *s,int *t)
{ int *k;
if (*s < *t){ k = s; s=t; t=k; }
return s;
}
main()
{ int i=3, j=5, *p=&i, *q=&j, *r;
r=f(p,q); printf("%d,%d,%d,%d,%d", i, j, *p, *q, *r);
}
則程序的輸出結果是
A) 3,5,5,3,5
B) 3,5,3,5,5
C) 5,3,5,3,5
D) 5,3,3,5,5
參考答案:B
【解析】在主函數中分別給整型變量i、j和指針型變量p、q賦初值,并聲明指針變量r;調用f函數,并將實參變量p和q的值傳遞給形參變量s和t,并且f函數是指針型函數,即函數的返回值將是一個地址。在f函數中,如果條件成立,則將指針變量s和t互換,并且將指針s的地址返回主函數。最后輸出i, j, *p, *q, *r的值,即3,5,3,5,5。因此B選項正確。
6.若有以下程序
#include
#define N 4
void fun(int a[][N], int b[], int flag)
{ int i,j;
for(i=0; i { b[i] = a[i][0]; for(j=1; j if (flag ? (b[i] > a[i][j]) : (b[i] < a[i][j])) b[i] = a[i][j]; } } main( ) { int x[N][N]={1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16}, y[N],i; fun(x, y, 1); for ( i=0; i fun(x, y, 0); for (i=0;i printf(""); } 則程序的輸出結果是 A) 1,5,9,13,4,8,12,16, B) 4,8,12,16,1,5,9,13, C) 1,2,3,4,13,14,15,16, D) 13,14,15,16,1,2,3,4, 參考答案:A 7.若有以下程序 #include void fun(int a[ ], int n) { int t,i,j; for (i=1; i for (j=i+2; j if (a[i] > a[j]) { t=a[i]; a[i]=a[j];a[j]=t;} } main() { int c[10]={10,9,8,7,6,5,4,3,2,1},i; fun(c, 10); for (i=0;i<10; i++) printf("%d,", c[i]); printf(""); } 則程序的輸出結果是 A) 1,10,3,8,5,6,7,4,9,2, B) 10,9,8,7,6,5,4,3,2,1, C) 2,9,4,7,6,5,8,3,10,1, D) 10,1,8,3,6,5,4,7,2,9, 參考答案:D 【解析】該題首先對一維數組進行初始化,c[0]到c[9]依次賦值為10到1;fun(c, 10);語句調用fun函數,fun函數的功能是將一維數組偶數位元素的數值由小到大排序;最后將排好序的新的一維數組進行輸出。因此D選項正確。 8.若有以下程序 #include main() { int i,j=0; char a[]="How are you!"; for (i=0; a[i]; i++) if (a[i] != ) a[j++]=a[i]; a[j]=; printf("%s",a); } 則程序的輸出結果是 A) Hay! B) Howareyou C) Howareyou! D) How are you! 參考答案:C 【解析】主函數中首先定義字符數組a[]="How are you!";執(zhí)行for循環(huán)語句,語句if (a[i] != ) a[j++]=a[i];其功能是將字符數組中的空格去掉。因此C選項正確。 9.若有以下程序 #include char *a="you"; char b[ ]="Welcome you to China!"; main() { int i, j=0; char *p; for ( i=0; b[i] !=; i++ ) { if (*a == b[i]) { p=a; for (j=i; *p!=; j++) { if (*p != b[j]) break; p++; } if (*p==) break; } } printf("%s", &b[i]); } 則程序的輸出結果是 A) China! B) to China! C) me you to China! D) you to China! 參考答案:D 【解析】該程序首先定義*a和b[ ],并進行初始化。主函數中通過外層for循環(huán)語句,遍歷字符數組b[ ],并且將符合if條件語句的字符賦給數組p;for內層循環(huán)語句,遍歷字符數組a[ ]。再將符合if條件語句的結果輸出。因此D選項正確。 10.若有以下程序 #include main() { char a[20], b[ ]="The sky is blue."; int i; for (i=0; i<7; i++) scanf("%c", &b[i]); gets(a); printf("%s%s", a,b); } 執(zhí)行時若輸入: (其中表示回車符) Fig flower is red. 則輸出結果是 A) wer is red.Fig flo is blue. B) wer is red.Fig flo C) wer is red.The sky is blue. D) Fig flower is red.The sky is blue. 參考答案:A 1、第1題請編寫函數fun,其功能使:將兩個兩位正整數a b合并形成一個整數放在c中。合并的方式使:將a數的十位和個位數依次放在c數的百位和個位上,b數的十位和個位數依次放在c數的千位和十位上。 答案: void fun(int a,int b,long *c) {*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;} 2、 第2題請編寫一個函數fun,它的功能使:計算n門課程的平均分,計算結果作為函數值返回。 答案: float fun(float *a,int n) {float ave=0.0; int i; for(i=0;i ave+=a; ave/=n; return ave;} 3、 第3題假定輸入的'字符串中只包含字母和*號。請編寫函數fun,它的功能使:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。 答案: void fun(char *a) {int i=0; char *p,*q; p=q=a; while(*p) p++; p--; while(*p==‘*’) p--; while(q<=p) {a=*q; i++; q++;} a=‘’;} 4、第4題請編寫函數fun,其功能是:將兩個兩位數的正整數a b合并形成一個整數放在c中,合并的方式是:將a數的十位和個位數依次放在c的個位和百位上,b數的十位和個位數依次放在c數的千位和十位上。 答案: void fun(int a,int b,long *c) {c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10;} 5、第5題 n名學生的成績已在主函數中放入一個帶頭節(jié)點的鏈表結構中,h指向鏈表的頭節(jié)點。請編寫函數fun,它的功能是:求出平均分,由函數值返回。 答案: double fun(strec *h) {double aver=0.0; while(h!=null) {aver+=h->s; hy=h->next;} aver/=n; return aver;} 6:、第6題請編寫函數fun,計算并輸出給定10個數的方差。 答案: double fun(double x[10]) {int i,j; double s=0.0,s1=0.0; for(i=0;i<10;i++) s1+=x; s1/=10; for(j=0;j<10;j++) s+=(x[j]-s1)*(x[j]-s1); s/=10; s=pow(s,0.5); return s;} 7、第7題請編寫函數fun,其功能是:將兩個兩位數的正整數a b合并形成一個整數放在c 中。合并的方式是:將a數的十位和個位數依次放在c數的千位和十位上,b數的十位和個位數依次放在c數的個位和百位上。 答案: void fun(int a,int b,long *c) {*c=(a/10)*1000+(a%10)*10+(b%10)*100+b/10;} 【C語言試題】相關文章: C語言試題08-02 C語言試題10-20 C語言程序試題04-26 C語言試題大全08-06 C語言試題及答案07-26 C語言練習試題07-01 c語言經典筆試題10-06 C語言試題訓練08-07 C語言考點試題08-19 C語言試題 2