c語言樣卷
『壹』 中南大學c語言試題
C 語言程序設計試卷
一、單項選擇題(每題1分,共20分)
1. C語言規定:在一個源程序中,main函數的位置( ① )。
A. 必須在最開始
B. 必須在系統調用的庫函數的後面
C. 可以任意
D. 必須在最後
2. 下面四個選項中,均是合法浮點數的選項是( ① )。
A. +1e+1 5e-9.4 03e2
B. -.60 12e-4 -8e5
C. 123e 1.2e-.4 +2e-1
D. -e3 .8e-4 5.e-0
3. 若a=-14,b=3,則條件表達式 a<b? a:b+1的值為 。
A. -14 B. -13 C. 3 D. 4
4. 已知:int n,i=1,j=2;執行語句n=i<j?i++:j++;則i和j的值是( ① ).
A. 1,2 B. 1,3 C. 2,2 D. 2,3
5. 為了判斷兩個字元串s1和s2是否相等,應當使用( ① )
A. if (s1==s2) B. if(s1=s2)
C. if (strcmp(s1,s2))
D. if (strcmp(s1,s2)==0)
6. 以下正確的描述是( ① )。
A. 函數的定義可以嵌套,但函數的調用不可以嵌套。
B. 函數的定義不可以嵌套,但函數的調用可以嵌套。
C. 函數的定義和函數的調用均不可以嵌套。
D. 函數的定義和函數的調用均可以嵌套。
7. 在C語言中,下面對函數不正確的描述是( ① )。
A. 當用數組名作形參時,形參數組值的改變可以使實參數組之值相應改變。
B. 允許函數遞歸調用。
C. 函數形參的作用范圍只是局限於所定義的函數內。
D. 子函數必須位於主函數之前。
8. 如果在一個函數中的復合語句中定義了一個變數,則以下正確的說法是( ① )。
A. 該變數只在該復合語句中有效
B. 該變數在該函數中有效
C. 該變數在本程序范圍內均有效
D. 該變數為非法變數
9. 以下正確的函數形式是( ① )。
A. double fun(int x,int y) { z=x+y;return z;}
B. fun(int x,y) { int z; return z;}
C. fun(x,y) { int x,y; double z; z=x+y; return z;}
D. double fun( int x,int y) {double z; z=x+y; return z; }
10. 以下程序的輸出結果是( ① )。
#include<stdio.h>
#define F(y) 8.19-y
#define PRINT(a) printf("%d",(int)(a))
void main(void)
{
int x=2;
PRINT(x*F(3));
}
A. 10 B. 13 C. 11 D. 報錯
11. 以下程序中編譯和運行結果均正確的一個是( ① )。
A. A. void main(void)
{
union
{
int n;
float x;
} comm={1};
printf("%d",comm.n);
}
B. B. void main(void)
{
union
{
int n;
float x;
} comm={12.5};
printf("%f",comm.x);
}
C. C. void main(void)
{
union
{
float x;
int n;
} comm={12.5}
printf("%f",comm.x);
}
D. D. void main(void)
{
union
{
int n;
float x;
} comm=5;
printf("%d", comm.n);
}
12. 設有定義:int a=1,*p=&a; float b=2.0; char c='A'; 以下不合法的運算是( ① )。
A. p++; B. a--; C. b++; D. c--;
13. 以下程序中調用scanf函數給變數a輸入數值的方法是錯誤的,其錯誤原因是( ① )。
main()
{
int *p,*q,a,b;
p=&a;
printf("input a:");
scanf("%d",*p);
…
}
A. *p表示的是指針變數p的地址
B. *p表示的是變數a 的值,而不是變數a的地址
C. *p表示的是指針變數p的值
D. *p只能用來說明p是一個指針變數
14. 若num、a、b和c都是int型變數,則執行表達式num=(a=4,b=16,c=32);後num的值為( ① )。
A. 4 B. 16 C. 32 D. 52
15. 已有如下定義和輸入語句,若要求a1,a2,c1,c2的值分別為10,20,A和B,當從第一列開始輸入數據時,正確的數據輸入方式是( ① ),(注: _ 表示空格)
int al,a2,char c1,c2;
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
A. 10A_20_B B. 10_A_20_B C. 10A20B D. 10A20_B
16. 若有說明:int a[10]; 則對a數組元素的正確引用是( ① )。
A. a[10] B. a[3.5] C. a[5-3] D. a[-1]
17. 在C語言中, 一維數組的定義方式為:
類型說明符 數組名 ① ;
A. [整型常量表達式] B. [表達式]
C. [整型常量] D. [整型表達式]
18. 以下能對一維數組a進行正確初始化的語句是( ① )。
A. in a[10]=(0,0.0,0,0);
B. int a[10]={}; C. int a[]={0};
D. int a[10]={10*1};
19. 以下程序段( ① )。
x=-1;
do
{
x=x*x;
}
while(! x);
A. 是死循環 B. 循環執行二次
C. 循環執行一次 D. 有語法錯誤
20. 以下關於do-while循環的不正確描述是( ① )。
A. do-while的循環體至少執行一次
B. do-while循環由do開始,用while結束,在while(表達式)後面不能寫分號
C. 在do-while循環體中,一定要有能使while後面表達式的值變為零("假")的操作
D. do-while的循環體可以是復合語句
二、是非判斷題(每題1分,共15分)
1. C語言規定,標識符中的字母一般區分大、小寫。
2. 控制台標准輸入設備一般是指鍵盤。
3. 使用while和do-while循環時,循環變數初始化的操作應在循環語句之前處理。
4. 循環體中continue語句的作用是結束整個循環的執行。
5. 關系表達式的值是0或1。
6. 若有說明:int a[3][4]={0},則只有元素a[0][0]可得到初值0。
7. 字元串作為一維數組存放在內存中。
8. 字元數組中的一個元素存放一個字元。
9. 字元數組中的最後一個字元必須是'\0'。
10. 形參為指針變數時,實參必須是數組名。
11. 用數組名作函數參數時傳遞的是數組的值。
12. 全局變數可以被任何一個函數中的任何一個表達式使用。
13. 一個函數可以帶回一個整型值、字元值、實型值等,也可以帶回指針型的數據。
14. 表達式i++與++i在任何場合功能完全相同。
15. 在賦值表達式中,賦值號左邊的變數和右邊的表達式之值的數據類型可以不相同。
三、多項選擇題(每題1分,共5分)
1. 若要求在if 後一對圓跨括弧中表示a不等於0的關系,則不能正確表示這一關系
的表達式為( ① ).
A.a<>0
B.!a
C.a=0
D.a
E.a!=0
2. 選出所有合法的常量( ① )。
A.3e22.5
B.-e-3
C.-.1e-1
D.'BASIC'
E.'\045'
F.0fd
G.0xfdaL
H.e8
I.'\\'
J."\""
3. 以下關於函數原型說法錯誤的是:
(1)對變數的定義」和「聲明」是一回事,對函數的「定義」和「聲明」也是一回事。
(2)在聲明函數原型時,允許只寫出參數的類型,而不必寫出參數的名稱。
(3)如果在定義函數時不指定函數類型,系統會隱含指定函數類型為int型。
(4)調用一個函數時,函數名、實參個數、實參類型必須與函數原型一致。
(5)如果被調函數的定義出現在主調函數之前,可以不必加以聲明。
(6)所有的函數之間可以互相調用。
(7)在C語言中,所有函數都是平行的,一個函數不能從屬於另一個函數,即不能嵌套定義的。
(8)如果函數沒有返回值,在定義時可以省略函數類型。
(9)在C語言中,任何函數的定義都不允許為空。
(10)C語言規定,實參變數對形參變數的數據傳遞是「值傳遞」。
4. 請從下面關於指針的敘述中, 選出5個正確的敘述。
(1)指針即地址。
(2)指針須先賦值後使用。
(3)當指針p指向數組a的首址後,由於p[i]和a[i]都能引用數組元素,所以這里p和a是等價的。
(4)int *p表示定義了一個指向int類型數據的指針變數p。
(5)數組的指針是指數組的起始地址。
(6)若有定義int a[4],*p=a,則p++後p指向數組a所佔內存的第二個位元組。
(7)使用指針變數作函數參數採取的是"值傳遞"的方式。
(8)相同類型的指針可以進行減法運算。
(9)指針變數和許多變數一樣可以進行四則運算。
(10)指針p指向數組元素a[2],若要其指向a[4],執行p=p*2即可。
5. 以下關於數組的敘述中,5個最確切的說法是:
(1)在聲明一個數組變數時必須指定大小。
(2)必須用常量表達式來說明一個數組變數的大小。
(3)在對數組進行初始化時大括弧中的數據個數必須和數組的大小相同。
(4)有變數定義int a[3]={0,1,2},b[3];,可以用b=a,使數組b的每個元素和a的每個元素相等。
(5)在C語言中,可以將字元串作為字元數組來處理。
(6)定義了字元數組char c[11];為了給它賦值,可以用c="china";。
(7)如果有char s[15]={"I am a\0 student"};,則strlen(s)的值為6。
(8)C語言中,二維數組中元素排列的順序是:按行存放。
(9)在C語言中,不能對局部的數組變數進行初始化。
(10)在聲明時對數組進行進行初始化必須指定數組大小。
四、程序運行結果題(每題4分,共20分)
1. (4分)
下面程序的運行結果是( ① ) 。
#include<stdio.h>
void main(void)
{
int i;
char a[]="Time",b[]="Tom";
for(i=0;a[i]!='\0'&&b[i]!='\0';i++)
if (a[i]==b[i])
if (a[i]>='a' && a[i]<= 'z') printf("%c",a[i]-32);
else printf("%c",a[i]+32);
else printf("*");
}
2. (4分)
下面程序段的運行結果是( ① ) 。
i=1;s=3
do
{
s+=i++;
if (s%7==0) continue;
else ++i;
} whlie(s<15);
printf("%d",i);
3. (4分)
若運行時輸入:5999,則以下程序的運行結果(保留小數點後一位)是( ① )。
void main(void)
{
int x;
float y;
scanf("%d",&x);
if (x>=0 && x<=2999) y=18+0.12 * x;
if (x>=3000 && x<=5999) y=36+0.6*x;
if (x>=6000 && x<=10000) y=54+0.3*x;
printf("%6.1f",y);
}
4. (4分)
以下程序的運行結果是( ① )。
void main(void)
{
int a=1,k;
for(k=0;k<3;k++) printf("%4d",f1(a))
}
int f1(int x)
{
static int z=3,y=0;
y++;
z++;
return(x+y+z);
}
5. (4分)
以下程序的功能是計算函數F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,請選擇填空。
#include<stdio,h>
#include<math.h>
float fun1(float,float);
void main(void)
{
float x,y,z,sum;
scanf("%f%f%",&x,&y,&z);
sum=fun1( ① )+ fun1 ( ② );
printf("sum=%f\n",sum);
}
float fun1(float a,float b)
{
float num;
num=a/b;
return num;
}
五、程序填空題(每題2分,共20分)
1.下面程序的功能是用公式:π×π/6=1/(1×1)+1/(2×2)+1/(3×3)+......
求π的近似值, 直到最後一項的值小於10e-6為止。
#include <stdio.h>
#include <math.h>
void main(void)
{
long i=1;
① pi=0;
while (i*i<=10e+6) { pi= ② ; i++; }
pi=sqrt(6.0*pi);
printf("pi=%10.6f\n",pi);
}
2. 下面程序的功能是把以下給定的字元按其矩陣格式讀入數組str1中,並輸出行列號之和是3的數組元素。
void main(void)
{
char str1[4][3]={'A','b','C','d','E','f','G','h','I','j','K','i'
};
int x,y,z;
for(x=0;x<4;x++)
for(y=0; ① ;y++)
{
z=x+y;
if ( ② ) printf("%c\n",str1[x][y]);
}
}
3. 以下程序的功能是用遞歸方法計算學生的年齡,已知第一位學生年齡最小,為10歲,其餘學生一個比一個大2歲,求第5位學生的年齡。
遞歸公式如下:
age(1)=10
age(n)=age(n-1)+2 (n>1)
#include<stdio.h>
int age(int n)
{
int c;
if (n==1) c=10;
else c= ① ;
return c;
}
4. 以下程序的功能是判斷輸入的年份是否是閏年。
void main(void)
{
int year,yes;
scanf("%d",&year);
if (year%400==0) yes=1;
else if ( ① ) yes=1;
else ② ;
if(yes) printf("%d is ",year);
else printf("%d is not ",year);
printf("a leap year.\n");
}
5. 以下程序實現: 輸入三個整數,按從大到小的順序進行輸出。
void main(void)
{
int x,y,z,c;
scanf("%d %d %d",&x,&y,&z);
if ( ① ) { c=y;y=z;z=c;}
if ( ② ) { c=x;x=z;z=c;}
if ( ③ ) { c=x;x=y;y=c;}
printf("%d,%d,%d",x,y,z);
}
六、填空題(每題1分,共20分)
1. 在C語言中,一個float型數據在內存中所佔的位元組數為( ① )個位元組;一個double型數據在內存中所佔的位元組數為( ② )個位元組。
2. 若有定義:char c='\010'; 則變數C中包含的字元個數為( ① )。
3. C源程序的基本單位是( ① )。
4. 在C語言中(以16位PC機為例),一個char型數據在內存中所佔的位元組數為( ① );
一個int型數據在內存中所佔的位元組數為( ② )。
5. 已有定義:
int m;
float n,k;
char chl,ch2;
為使m=3, n=6.5, k=12.6, ch1='a', ch2='A', 輸入數據的格式為:
3 6.5 12.6aA
則對應的scanf語句是( ① );。
6. 執行下面的程序片段後,x的值是( ① )。
i=10; i++; x=++i;
7. 設a、b、c均是int 型變數,則執行以下for循環後,c的值為( ① )。
for(a=1,b=5;a<=b;a++) c=a+b;
8. 以下do-while語句中循環體的執行次數是( ① )。
a=10;
b=0;
do { b+=2; a-=2+b; } while (a>=0);
9. 設x和y均為int型變數,則以下for循環中的scanf語句最多可執行的次數是( ① )。
for (x=0,y=0;y!=123&&x<3;x++)
scanf ("%d",&y);
10. 若有以下定義和語句:
int *p[3],a[9],i;
for(i=0;i<3;i++) p[i]=&a[3*i];
則*p[0]引用的是數組元素( ① ); *(p[1]+1)引用的是數組元素( ② )。
11. 設a=3,b=4,c=5,則表達式a||b+c&&b==c的值是( ① )。
12. 進行邏輯與運算的運算符是( ① )。
13. 若a=6,b=4,c=2,則表達式!(a-b)+c-1&&b+c/2的值是( ① )。
14. 下面程序片段中循環體的執行次數是( ① )次。
for(i=1,s=0;i<11;i+=2) s+=i;
15. 若有以下定義和語句:
int a[4]={0,1,2,3},*p;
p=&a[2];
則*--p的值是( ① )。
16. 執行以下程序段後, s的值是( ① )
int a[]={5,3,7,2,1,5,3,10},s=0,k;
for(k=0;k<8;k+=2)
s+=*(a+k);
17. 執行以下程序段後,m的值是( ① )
int a[]={7,4,6,3,10},m,k,*ptr;
m=10;
ptr=&a[0];
for(k=0;k<5;k+=2)
m=(*(ptr+k)<m)?*(ptr+k):m;
答案:
一、單項選擇題(20分)
1.~5.CBACD 6.~10.BDADB
11.~15.CABCC 16.~20.CACCB
二、是非判斷題(15分)
√√√×√ √√√×× × √
三、多項選擇題(5分)
1.ABC 2.CEGIJ 3.ADFHI 4.ABDEH 5.BEGHI
四、程序運行結果題(20分)
1. t*M
2. 8
3. 3635.4
4. 6 8 10
5. z+y,z-y^x+y,x-y
五、程序填空題(20分)
1. ①double ②pi+1.0/(i*i)
2. ①y<3 ②z==2
3. ①age(n-1)+2
4. ①year%4==0&&yeaar%100!=0 ②yes=0
5. ①z>y ②z>x ③y>x
六、填空題(20分)
1. ①4 / 四 ②8 / 八
2. ①1 / 1個
3. ①函數
4. ①1 / 一 ②2 / 二
5. ①scanf("%d%f%f%c%c",&m,&n,&k,&ch1,&ch2)
6. ①12
7. ①10
8. ①3..9. ①3..10. ①a[0] ②a[4]
11. ①112. ①&&13. ①1.14. ①5
15. ①1
16. ①16
17. ①6
『貳』 一張C語言(標准C)的樣卷!
確實做錯了哈,現修改如下:
第2題填空題是定義指向數組的指針,不是指針數組,所以我沒有錯:)
1 B
2 A
填空
1 ,(逗號)
2 0xFF
程序閱讀
1 54
程序填空
digit = 0, blank = 0, other = 0
c >= '0' && c <= '9'
other++
編程題
int a[10];//十個數
int max = a[0];
for(int i = 1; i < 10; i++)
{
if(max < a[i])
max = a[i];
}
max 為所求
『叄』 求一份大一c語言考試試卷,加答案
附件上傳失敗...
C語言期末考試題及答案(1)
1、構成C語言的基本單位是___B____。
過程?
函數?
語句?
命令?
2、設x為整型變數,不能正確表達數學關系:5<x<10的c語言表達式是__B___。
5
x>5&&x<10?
x==6||x==7||x==8||x==9?
!(x<=5)&&(x<10)?
3、在C語言中,邏輯運算符的優先順序從高到低的排列順序為__D___。
&&、||、!?
||、&&、!?
&&、!、||?
!、&&、||?
4、下面語句中,正確的是__D___。
printf("%c\n","student");?
printf("%c\n","c");?
printf("%s\n",&a);?
printf("%s\n","hello");?
5、對於for(表達式1;;表達式3)可以理解為__B___。
for(表達式1;0;表達式3)?
for(表達式1;1;表達式3)?
for(表達式1;表達式1;表達式3)?
for(表達式1;表達式3;表達式3)?
6、執行下面程序段的結果是__B___。 main() { int x=1,a=0,b=0; switch(x) { case 0:b++; case 1:a++; case 2:a++;b++; } printf("a=%d,b=%d",a,b); }
a=1,b=1?
a=2,b=1?
a=1,b=0?
a=2,b=2?
7、執行下面程序段的結果是__D___。 int x=0; do { printf(「%2d」,x--); }while(x);
列印出321?
列印出23?
不列印任何結果?
陷入死循環?
8、設x=10,y=5;z=15,執行下面一段程序後z的結果是__C___。 If(x>y) if(y>z)x=y; else z=y;
7?
6?
5?
4?
9、如果一個函數被說明為static,那麼__B___。
該函數只能被main函數調用?
該函數能被當前文件的函數調用,但不能被其他文件的函數調用?
該函數不能被當前文件的函數調用,可以被其他文件的函數調用?
任何文件的函數都可以調用該函數?
10、下面關於局部變數的描述中,錯誤的是__D___。
函數的局部變數的有效范圍只能在本函數?
函數的形式參數也是局部變數?
局部變數的名稱不能和函數同名稱?
不同的函數中不能定義相同名稱的局部變數?
11、下列初始化字元數組的語句中,錯誤的是__A___。
char str[5]="hello";?
char str[]={'h','e','l','l','o','\0'};?
char str[5]={"hi"};?
char str[100]="";?
12、引用數組元素時,數組下標可以是__D___。
整型常量?
整型變數?
整型表達式?
以上均可?
13、 已知:char str[10],*p=str; 下面的語句中正確的是__B___。
str="ABC";?
p="ABC";?
*str="ABC";?
*p="ABC";?
14、下面語句中,錯誤的是___D__。
int i;int *p;p=&i;?
int i,*p;p=&a;?
int i,*p=&a;?
int i,*p;*p=i;?
15、下面對於結構體類型的描述正確的是__A___。
結構體類型的大小為各成員變數所佔內存的總和?
結構體類型變數與簡單數據類型變數的引用規則一致。?
結構體類型的大小為其成員中所佔內存空間最大的變數的大小?
結構體類型的大小為其最後一個成員中所佔內存空間的大小?
16、C語言規定:在一個源程序中,main函數的位置____C____。
必須在最開始?
必須在系統調用的庫函數的後面?
可以任意?
必須在最後?
17、表達式18/4*sqrt(4.0)/8值的數據類型是 ___C____。
int?
float?
double?
不確定?
18、在c語言中,char型數據在內存中的存儲形式是 ___D___。
補碼?
反碼?
原碼?
ASCII碼?
19、閱讀以下程序,當輸入的數據形式為:25,13,10<CR>時,正確的輸出結果為___D___。 main() { int x,y,z; scanf("%d%d%d",&x,&y,&z); printf("x+y+z=%d\n",x+y+z); }
x+y+z=48?
x+y+z=35?
x+z=35?
不能確定?
20、有如下程序 void main() { float x=2.0,y; if(x<0.0) y=0.0; else if(x<10.0) y=1.0/x; else y=1.0; printf(「%f\n」,y); } 該程序的輸出結果是( C )。
0.000000?
0.250000?
0.500000?
1.000000?
21、判斷char型變數s是否為小寫字母的正確表達式是__C____。
'a'<=s<='z'?
(s>='a')&(s<='z')?
(s>='a')&&(s<='z')?
('a'<=s)and('z'>=s)?
22、執行以下語句後,y 的值為___A___。 int x,y,z; x=y=z=0; ++x || ++y && ++z;
0?
1?
2?
不確定值?
23、有如下程序段: int number=0; while(number++<=3) printf(「%d\n」,number++); 則正確的執行結果是___C___。
2 3 4?
0 1 2?
1 3?
2 4?
24、有如下程序 void main() { int n=9; while(n>6) { n--; printf(「%d」,n); } } 該程序段的輸出結果是__B___。
987?
876?
8765?
9876?
25、要使以下程序段輸出10個整數,請在空格中填入一個整數。 for(i=0;i<=___B___;printf("%d\n",i+=2));
15?
18?
20?
10?
26、設函數fun的定義形式為: fun(char ch,float x){…} 則以下對函數fun的調用語句中正確的是___B___。
fun(「abc」,3)?
t=fun(『D』,5)?
fun(『ab』,3)?
fun(『78』,1)?
27、函數求sum(int n)的功能是計算自然數1到n的和,即1+2+…+n。 Main() { printf("The sum=%d\n",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i<=n;i++) _____B_____ } 請從備選答案中選擇一答案,補全程序。
s=s+n;return s;?
s=s+i;return s;?
return s;?
return s+=I;?
28、設函數fun的定義形式為 int fun(int a[],int n) { int s=0,i=0; for(i=0;i<n;i++)s+=a[i]; return s; } main() { int a[10]={1,2,3,4,5}; printf("sum=%d", fun(&a[2],2)); } 則程序的運行結果為___C___。
3?
5?
7?
9?
29、若有說明:int a[10];則對數組元素的正確引用是___D____。
a[10]?
a[3,5]?
a(5)?
a[10-10]?
30、以下不正確的定義語句是___B___。
double x[5]={2.0,4,0,6,0,8,0,10.0};?
int y[5]={0,1,3,5,7,9};?
char c1[]={'1','2','3','4','5'};?
char c2[]={'\x10','\xa','\x8'};?
31、下面程序的運行結果是___B____。 #include "stdio.h" main() { char str[]="SWLIA",c; int k; for(k=0;(c=str[k])!='\0';k++) { switch(c) { case 'I':++k;break; c
SWA?
SW*?
SW*A?
SW?
32、以下能正確進行字元串賦值操作的是___D___。
char s[5]={"12345"};?
char s[5]={'1','2','3','4','5',『6』};?
char *s;*s="12345";?
char *s="12345";?
33、以下程序段的運行結果是___C___。 Char a[ ]="program", *p; p=a; while (*p!='g') { printf("%c", *p-32); p++; }
PROgram?
PROGRAM?
PRO?
proGRAM?
34、若有說明:char *pc[ ]={"aaa", "bbb", "ccc", "ddd"};,則以下敘述正確的是__C____。
*pc[0]代表的是字元串"aaa"的首地址?
*pc[0]代表的是字元'a'的首地址?
pc[0]代表的是字元串"aaa"的首地址?
pc[0]代表的是字元'a'的首地址?
35、下列程序的運行結果是___B___。 #include <stdio.h> #include <string.h> void f (char *s, int n) { char a,*q1,*q2; q1=s;q2=s+n-1; while(q1<q2) { a=*q1++; *q1=*q2--; *q2=a;} } main() { char b[]="ABCDEFG"; f(b, s
GAGGAGA?
AGAAGAG?
GFEDCBA?
AGADAGA?
36、定義如下的結構體描述同學信息 struct Student { unsigned long id; char name[30]; char class[30]; }s; 假設此同學的序號為1002,姓名為黎明,班級為冶金3班,則描述正確的為___C__。
id=1002; name=黎明; class=冶金3班;?
id=1002; name=」黎明」; class=」冶金3班」;?
s.id=1002; s.name=」黎明」; s.class=」冶金3班」;?
s.id=1002; s.name=黎明; s.class=冶金3班;?
37、用來描述C程序中注釋的是__C___。
//?
?
**?
38、下列變數中合法的定義是__A___。
short _a=2-1?
long if=0xabcL?
double 1_d=1.5e2?
float a=1.5e2.7?
39、當c的值不為0時,能夠將c的值賦給變數a和b的是__C___
c=b=a?
(a=c)||(b=c)?
(a=c)&&(b=c)?
a=c=b?
40、設有以下程序段,執行後的輸出結果是___B__ int x=100,y=200; printf("%d",(x,y));
100?
200?
100,200?
編譯出錯
C語言期末考試題及答案(2)
1、若執行下面的程序時從鍵盤輸入10,則輸出是__B__ main( ) { int a; scanf(「%d」,&a); if(a++>10) printf(「%d\n」,++a); else printf("%d\n",a--); }
12?
11?
10?
9?
2、執行下面程序段的結果是__D___ int x=0; do { printf(「%2d」,x--); }while(x);
列印出321?
列印出23?
不列印任何結果?
陷入死循環?
3、執行與句:for(n=0;n++<4; ); 後,變數n的值是__C__。
3?
4?
5?
不定?
4、以下關於循環的描述中,錯誤的是__D___。
可以用for語句實現的循環一定可以用while語句實現?
可以用while語句實現的循環一定可以用for語句實現?
可以用do…while語句實現的循環一定可以用while語句實現?
do…while語句與while語句的區別僅僅是關鍵字while的位置不同?
5、下面的描述錯誤的是__C__。
函數可以有多個形式參數?
函數可以沒有返回值?
函數內可以嵌套定義函數?
函數可以被其他函數調用?
6、函數返回值的類型是由__A__決定的。
定義函數時指定的返回類型?
函數中return語句的表達式類型?
主調函數的實際參數類型?
主調函數的返回值類型?
7、定義了一維int型數組a[10]後,下面錯誤的引用是__B__。
a[0]=1;?
a[10]=2;?
a[0]=5*2;?
a[1]=a[2]*a[0];?
8、定義了int型二維數組a[6][7]後,數組元素a[3][4]前的數組元素個數為__B__。
24?
25?
18?
17?
9、下面語句中,錯誤的是__D__。
int i; int *p; p=&i;?
int i,*p; p=&a;?
int i,*p=&a;?
int i,*p; *p=i;?
10、 已知int型二維數組a[3][4],數組元素a[1][2]的地址不能表達為__C__。
&a[1][2]?
a[1]+2?
*a[1]+2?
*(a+1)+2?
11、C語言中,5種基本數據類型的存儲空間長度的排列順序為___A___。
char
char=int
char
char=int=long int<=float
12、假設所有變數均為整型,則表達式(a=2,b=5,b++,a+b)的值是 ___B___。
7?
8?
6?
2?
13、若有說明語句:char c='\72';則變數c ___A___。
包含1個字元?
包含2個字元?
包含3個字元?
說明不合法,c的值不確定?
14、若x,y均定義為整型,z定義為double型,以下不合法的scanf函數調用語句是___C___。
scanf("%d%lx,%le",&x,&y,&z);?
scanf("%2d * %d%lf",&x,&y,&z);?
scanf("%x%*d%o",&x,&y,&z);?
scanf("%x%o%6.2f",&x,&y,&z);?
15、若輸入字元串:abcde<回車>,則以下while循環體將執行___A___次。 while((ch=getchar())=='e') printf("*");
1次?
死循環?
0次?
5次?
16、執行下面的程序段後,k的值是___C___。 k=1;n=263; do{k*=n%10;n/=10;}while(n);
3?
63?
36?
2?
17、下面程序段中循環的執行次數是___B___。 a=10;b=0; do{b+=2;a-=2+b;}while(a>=0);
10?
3?
5?
4?
18、下面程序段的運行結果是__D____。 x=2; do{printf("*");x--;}while(!x==0);
*?
***?
沒有輸出?
**?
19、下面程序段的運行結果是___B___。 i=1;s=1;a=0; do{a=a+s*i;s=-s;i++;}while(i<=10); printf("%d",a);
2?
-2?
3?
0?
20、有如下程序 void main() { int a=2,b=-1,c=2; if(a) if(b<0) c=0; else c++; printf("%d\n",c); } 該程序的輸出結果是___A___。
0?
1?
2?
3?
21、程序中對fun函數有如下說明 void fun(); 下面說明是錯誤的是___B___。
fun函數無返回值?
fun函數的返回值可以是任意的數據類型?
fun函數沒有形式參數?
void 可以省略?
22、函數求sum(int n)的功能是計算自然數1到n的和,即1+2+…+n。 main() { printf("The sum=%d\n",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i<=n;i++) _____B_____ } 請從備選答案中選擇一答案,補全程序。
s=s+n; return s;?
s=s+i; return s;?
return s;?
return s+=i;?
23、 有以下程序 int f1(int x,int y){return x>y?x:y;} int f2(int x,int y){return x>y?y:x;} main() { int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f; printf()__A___
4,3,7?
3,4,7?
5,2,7?
2,5,7?
24、若有說明:int a[][3]={1,2,3,4,5,6,7};則數組a第一維的大小是___B___。
2?
3?
4?
無確定值?
25、判斷字元串s1是否大於字元串s2,應當使用___D____。
if(s1>s2)?
if(strcmp(s1,s2))?
if(strcmp(s2,s1)>0)?
if(strcmp(s1,s2)>0)?
26、當運行以下程序時,從鍵盤輸入:AhaMA Aha<CR> <CR>表示回車,則下面程序的運行結果是___A____。 #include "stdio.h" main() { char s[80],c='a'; int i=0; scanf("%s",s); while(s[i]!='\0') { if(s[i]==c)
ahAMa?
AhAMa?
AhAMa ahA?
ahAMa ahA?
27、以下程序執行後a的值為___C____。main( ) { int a,m=2, k=1, *p=&k; a=p!=&m; printf("%d\n",a); }
-1?
0?
1?
2?
28、以下能正確讀入字元串的程序段是____C___。
char *p;scanf("%s", p);?
char str[10];scanf("%s", &str);?
char str[10], *p;p=str; scanf("%s", p);?
char str[10], *p=str;scanf("%s", p[1]);?
29、若有定義:int i, x[3][4];,則不能將x[1][1]的值賦給變數i的語句是___B___。
i=x[1][1] ?
i=*(*(x+1))?
i=*(*(x+1)+1)?
i=*(x[1]+1)?
30、下面程序的運行結果是____A___。 # include <stdio.h> # include <string.h> fun(char *s) { char t,*a,*z; a=s; z=s+strlen(s)-1; while(a++<z--) { t=*a++; *a=*z--; *z=t;} } main() { char *p; p="a
abdddfg?
afcdebg?
gbedcfa?
gfedcba?
31、用來描述C程序中注釋的是__C___
/ /?
?
* *?
32、對於"xy\n\102\\\'"字元串的長度是__B___
7?
6?
12?
13?
33、已知:int x=10;執行語句x-=x+x;後x的值是__A___
-10?
10?
-20?
20?
34、下列描述中,正確的是__A___
所有的輸入/輸出都是通過調用庫函數處理的?
所有的輸入/輸出都是通過輸入/輸出語句實現的?
getchar和putchar可以省略#include?
在輸入/輸出格式中的*表示跳過數據的含義?
35、設x=10,y=5;z=15,執行下面一段程序後z的結果是__C___ if(x>y) if(y>z)x=y; else z=y;
7?
6?
5?
4?
36、執行下面程序段的結果是__D___ int x=0; do { printf(「%2d」,x--); }while(x);
列印出321?
列印出23?
不列印任何結果?
陷入死循環?
37、以下關於switch語句和break語句的描述正確的是__D___
在switch語句中必須使用break語句?
break語句只能用於switch語句體中?
break語句只能用於循環語句中?
在switch語句中可以使用break語句?
38、與語句while(!x)等價的語句是__A___
while(x==0)?
while(x!=0)?
while(x!=1)?
while(~x)?
39、下面的描述錯誤的是__C___
?函數可以有多個形式參數?
?函數可以沒有返回值?
?函數內可以嵌套定義函數?
?函數可以被其他函數調用?
40、 下面關於局部變數的描述中,錯誤的是__D___
?函數的局部變數的有效范圍只能在本函數?
?函數的形式參數也是局部變數?
?局部變數的名稱不能和函數同名稱?
?不同的函數中不能定義相同名稱的局部變
『肆』 一張標准C的樣卷!幫忙看看!
2題選A題目要求的是定義指向數組的指針,而不是指針數組.
13&17|ee=
00010011
& 00010111
-------------
00010011
| 11101110
--------------
11111111
答案為0xFF
『伍』 C語言簡單題
#include<stdio.h>
voidmain(){
intage;doublepay;
scanf("%d",&age);
if(age<0)printf("Inputerror!");
else{
if(age<=6)pay=0;
elseif(age<=12)pay=0.6;
elseif(age<18||age>=60&&age<70)pay=0.8;
elseif(age<60)pay=1;
elsepay=0.7;
printf("%.1f",100*pay);
}
}
『陸』 C語言試卷
才30分……,覺得答得好多多加分!你的鼓勵是我努力的方向!o(∩_∩)o...哈哈
二、選擇題(每題3分,共45分)
1. 定義一個變數使之保存值的范圍是0-65535,應該選擇(A )類型。
A.unsigned short int B. int
C.short int D.long int
2. 設x、y、z都是整型變數,x、y的初值都是5,執行z=(++x)+(y- -)+1後,x、y、z三變數的值按順序是(D )。
A.5, 5, 11 B.6, 6, 13 C.4, 6, 12 D.6, 4, 12
3.下列字元中不屬於轉義字元的是(D )
A. \n B.\t C.\b D.\k
4.下列不正確的標識符是(B )
A._char B.a?b C.x D.st2_flag
5. C語言的源程序(C )主函數
A. 可以沒有 B.可以有多個
C.有且只有一個 D.若有,只有一個
6. 在內存中應該開辟(A )多少個位元組來存放字元『\n』.
A. 1 B. 2 C. 3 D. 4
7. 下面的(C )不是合法的c語言常量。
A. 123 B.『M』 C.0892 D. 「Flag」
8. 下面( A)對變數的說明是錯誤的。
A. char c1, int x; B. int a,b; float x, y;
C. int a; int b; D. char c1; int x;
9. 有變數說明int a=3;, 則表達式a<1&&--a>1的運算結果和a的值應該是(A )
A. 0和2 B. 0和3 C. 1和2 D. 1和3
10. 設int x=12;, 則執行完語句a+=a-=a*a; 後,a的值是(C ) //應該是a=12
A. 552 B. 264 C. -264 D. 144
11. c語言中,運算對象必須是整型數的運算符是( ) //題目有問題,選項C是什麼東東??
A. % B. / C. %和\ D. %和/
12. 以下關於break語句的描述,只有(C )是正確的。
A. 在循環語句中必須使用break語句。
B. break語句只能用於switch語句中。
C. 在循環語句中可以根據需要使用break語句。
D. break語句可以強制跳出所有循環。
13. 下面的敘述中,不正確的是(A )
A. 在main函數中說明的變數的作用域是整個程序。
B. 全局變數在程序運行期間一直佔用分配給它的存儲單元。
C. 形式參數是局部變數。
D. return()語句中括弧內可以是常量、有確定值的變數或表達式。
14. 定義函數時,默認的函數類型是(A )
A. auto B. register C. static D. extern
15. c語言中的函數(B )
A. 可以嵌套定義 B. 嵌套調用和遞歸調用均可
C. 不可以嵌套調用 D. 可以嵌套調用,但不可以遞歸調用
三、閱讀下列程序,寫出執行結果(每題5分,共15分)
1.#include<stdio.h>
main()
{
int x,m,n,a,b;
m=n=a=b=8;
x=(m=a>b)&&(n=a>b);
printf(「x=%d, m=%d, n=%d\n」,x,m,n);
}
答:
x=0,m=0,n=8
2. #include<stdio.h>
main()
{
int a,b,c;
a=2;b=3;c=1;
if(a>b)
if(a>c)
printf(「%d\n」,a);
else
printf(「%d\n」,b);
printf(「end\n」);
}
答:
end
3.#include<stdio.h>
main()
{
int s=0,k;
for(k=7;k>=0;k--)
{
switch(k)
{
case 1;
case 4;
case 7;
s++;
break;
case 2;
case 3;
case 6;
Break;
case 0;
case 5;
s+=2;
break;
}
}
printf(「s=%d\n」,s)
}
答:
S=7
四、程序設計題(每題10分,共20分)
1.整形數組a有五個元素,其值分別為:1、2、3、4、5,移動該數組的數,使其變成2、3、4、5、1
#include <stdio.h>
Main{
Int i,temp;
Int a[5]={1,2,3,4,5};
temp=a[0];
for(i=0;i<4;i++)
{
a[i]=a[i+1];
}
a[4]=temp;
}
}
2. 用戶從鍵盤輸入一個字元串(字元中不包含空格),當輸入回車時認為輸入結束,統計輸入字元串中小寫英文字母、大寫英文字母、數字字元、其他字元的個數
#include "stdio.h"
#include "string.h"
void main()
{
int i=0;//小寫英文字母數量
int j=0;//大寫英文字母數量
int k=0;//數字字元數量
int others=0;//其他字元數量
char temp;//接收字元。
int tempcounter;
printf("Please input the string") ;
for(tempcounter=0;;tempcounter++)
{ scanf("%c",&temp);
if(temp=='\n')
break;
else
{
if((temp>='a')&&(temp<='z'))
{
i=i+1;
continue;
}
if((temp>='A')&&(temp<='Z'))
{
j=j+1;
continue;
}
if((temp>='0')&&(temp<='9'))
{
k=k+1;
continue;
}
others=others+1;
}
}
printf("小寫英文字母數量: %d\n",i);
printf("大寫英文字母數量: %d\n",j);
printf("數字數量: %d\n",k);
printf("其他: %d\n",others);
}
『柒』 NCRE.2021.3二級C語言樣卷糾正和補充
NCRE.2021.3二級C語言樣卷糾正和補充?。
小蔣是一位中學教師,在教務處負責初一年級學生的成績管理。由於學校地處偏遠地區,缺乏必要的教學設施,只有一台配置不太高的PC可以使用。他在這台電腦中安裝了Microsoft Office,決定通過Excel來管理學生成績,以彌補學校缺少資料庫管理系統的不足。
現在,第一學期期末考試剛剛結束,小蔣將初一年級三個班的成績均錄入到文件名為「學生成績單.xlsx」的Excel工作簿文檔中。
請你根據下列要求幫助小蔣老師對該成績單進行整理和分析。
(1)對工作表「第一學期期末成績」中的數據列表進行格式化操作:將第一列「學號」列設為文本,將所有成績列設為保留兩位小數的數值;適當加大行高列寬,改變字體、字型大小,設置對齊方式,增加適當的邊框和底紋以使工作表更加美觀。
(2)利用「條件格式」功能進行下列設置:將語文、數學、英語三科中不低於110分的成績所在的單元格以一種顏色填充,其他四科中高於95分的成績以另一種顏色標出,所用顏色深淺以不遮擋數據為宜。
(3)利用sum和average函數計算每一個學生的總分及平均成績。
(4)學號第3、4位代表學生所在的班級,例如:「120105」代表12級1班5號。請通過函數提取每個學生所在的班級並按下列對應關系填寫在「班級」列中:
「學號」的3、4位對應班級
01 1班
02 2班
03 3班
(5)復制工作表「第一學期期末成績」,將副本放置到原表之後,改變該副本表標簽的顏色,並重新命名,新表名需包含「分類匯總」字樣。
(6)通過「分類匯總」功能求出每個班各科的平均成績,並將每組結果分頁顯示。
(7)以分類匯總結果為基礎,創建一個簇狀柱形圖,對每個班各科平均成績進行比較,並將該圖表放置在一個名為「柱狀分析圖」新工作表中。
答:
(1)步驟1:打開「學生成績單.xlsx」工作簿文檔,選中A2:A19單元格,單擊「開始」選項卡中「數字」組的對話框啟動器,打開「設置單元格格式」對話框,在「數字」選項卡的「分類」中選擇「文本」。
步驟2:選中D2:J19單元格,單擊「開始」選項卡 中「數字」組的對話框啟動器,打開「設置單元格格式」對話框,在「數字」選項卡的「分類」中選擇「數值」,在「小數點位數」中輸入「2」。
步驟3:打開「設置單元格格式」對話框,在「對齊」選項卡中可設置被選中單元格的水平對齊和垂直對齊方式;在「字體」選項卡中可設置被選中單元格的字體、字型大小;在「邊框」選項卡中可設置被選中單元格的邊框;在「填充」選項卡中可設置被選中單元格的底紋。
步驟4:單擊「開始」選項卡「單元格」組中的「格式」按鈕,設置行高列寬。
(2)步驟1:選中D2:F19單元格,單擊「開始」選項卡中的「樣式」組→「條件格式」→「突出顯示單元格規則」→「其他規則」命令,打開「新建格式規則」對話框,進行設置。
『捌』 c語言試卷求解答
一 、填空題:(每空2分,共30分)
1. 一個函數由兩部分組成,它們是 函數頭 和 函數體 。
2. 一個C源程序至少包含一個 函數 ,即 main()函數 。
3. 設int a=12; 則表達式a/=a+a的值是 0 。
先做a+a = 24;a/=24 = 0.5;除數是0,所以結果是0;
4. 表達式x=(a=3,6*a)和表達式x=a=3,6*a分別是 賦值 表達式和 逗號 表達式,兩個表達式執行完的結果分別是 18 和 18 ,x值分別是 18 和 3 。
5. 在C語言中,實數有兩種表示形式,即 浮點數 和 定點數 。
6. 若a=5,b=6,c=7,d=8,則表達式d=a/2&&b==c||!a的值為 0
7. 定義 int x=10,y,z;執行y=z=x;x=y==z後,變數x的值為 1 。
得分
閱卷人
二、選擇題:(每題2分,共20分)
1.一個C語言程序總是從 開始執行。 ( B )
A. 主過程 B. 主函數 C. 子程序 D.主程序
2.下列正確的標識符是 (B )
A.-a1 B.a[i] C.a2_i D.int t
3. C語言中的簡單數據類型包括 ( C )
A.整型、實型、邏輯型 B.整型、實型、邏輯型、字元型
C.整型、字元型、邏輯型 D.整型、實型、字元型
4. 在C語言程序中,表達式5%2的結果是 ( C )
A. 2.5 B. 2 C. 1 D. 3
5. 如果int a=3,b=4;則條件表達式"a<b? a:b"的值是 ( A )
A. 3 B. 4 C. 0 D. 1
6. 以下對一維數組a的正確說明是: ( D )
A.char a(10); B. int a[];
C. int k=5,a[k]; D. char a[3]={『a』,』b』,』c』};
7. 已知:int a[10]; 則對a數組元素的正確引用是 ( D )
A. a[10] B. a[3.5] C. a(5) D.a[0]
8. 若有以下數組說明,則i=10;a[a[i]]元素數值是 ( C )
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12}
A.10 B.9 C.6 D.5
9. 在C語言中,以 作為字元串結束標志 ( D )
A.\n』 B. 』 』 C. 』0』 D.』\0』
10. C語言中,關系表達式和邏輯表達式的值是 ( B )
A.0 B. 0或1 C. 1 D. 『T』或』F』
『玖』 一道C語言的題目。
main()
{
float
score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
float
*search(float(*pointf[4]));
/*改為float
*search(float(*pointf)[4]);不然為指針數組*/
float
*p;
int
i,j;
for(i=0;i<3;i++)
{
p=search(score+i);
if(p==*(score+i))
{
printf("nember:
%d
",i);
for(j=0;j<4;j++)
printf("%5.2f
",*(p+j));
printf("\n");}
}
}
float
*search(float(*pointf)[4])
{
int
i;
float
*pt;
pt=*(pointf+1);
for(i=0;i<4;i++)
if(*(*pointf+i)<60)
pt=*pointf;
return(pt);
}
以上修改後可以運行,輸出結果為:
number
:
1
56.00
89.00
67.00
88.00
number:
2
34.00
78.00
90.00
66.00
輸出結果正確
至於您所說的
2.if(*(*pointf+i)<60)
,裡面的*(*pointf+i)代表的是什麼意思
pointf為指向含有4個元素的一維數組的指針變數,*pointf就是某行的首列地址,*pointf+i為某行第i列的元素地址,則*(*pointf+i)就是某行第i列的元素值,判斷其是否小於60.
3.*(pointf+1)
是指向數組pointf
中第一行的數嗎?
如果是
照題目成立的話就是point
+2也就是第二行數據
對嗎?
答:應該不是吧,pointf是子函數中的一個指向一維數組的指針變數,不是數組,它接收主函數中傳遞過來的實參,如果實參是score+0則子函數中*(pointf+1)指向score數組的第一行首元素,為列指針,其值為&score[1][0],pointf+1指向score數組第一行,是行指針,而當實參是score+1時,則*(pointf+1)指向score數組的第二行首元素,pointf+1就指向score數組第二行
所以說具體它指向第幾行的首元素,要看實參傳遞過來的值為什麼地址了。
希望能夠幫到您。
『拾』 幫幫忙啊,c語言樣卷的一道閱讀程序,寫出運行結果的一道題!!
怎麼用點電腦輸出有4行,不是只有兩個printf嗎??
因為你調用了函數f,函數f裡面也帶有printf(),所以你調用了2次就會有兩次輸出,在加主函數的兩個printf結果就4個輸出了。
結果是
9 0 2 f(x,&y);//傳進去的參數是f(4.5),注意這里的傳進去的是y的地址。所以x=x+*y,x=4+5=9;
*y=x%z;*y=4%1=0; z++;z=2;(注意你f函數內部沒有定義z,那麼它引用的就是全局變數z);
4 0 6 printf("%d %d %d\n", x, y,z);//因為形參x的值,是不改變實參x的值,所以主函數x的值就不會改變,所以是4,但是y傳進去的是地址,所以在函數f裡面y的值改變了,那麼主函數的y也得變化,所以y=0;因為主函數內部定義有z所以不引用全局變數,所以z=6;
6 0 3 f(y,&z);//傳進去的參數是f(0.6),注意這里的傳進去的是z的地址,所以x=x+*y,x=0+6=6; *y=x%z;*y=0%1=0; z++;z=3;(注意你f函數內部沒有定義z,那麼它引用的就是全局變數z,因上次調用f函數z的值被改變z=2;);
4 0 0 printf("%d %d %d\n", x, y,z);///因為形參x的值,是不改變實參y的值,所以主函數x的值就不會改變,所以是y=0,但是z傳進去的是地址,所以在函數f裡面z的值改變了,那麼主函數的z也得變化,所以z=0(注意你傳進去z的地址是對應*y的別搞錯了);x=4