當前位置:首頁 » 招生排名 » 四川大學c語言期末考試答案

四川大學c語言期末考試答案

發布時間: 2023-05-12 04:39:00

① 四川C語言二級考試真題含答案

四川省普通高等學校計算機應用知識和能力
第二十九次等級考試
二級(C與C++語言) 筆 試 試 卷
時間: 2008年10月 18 日
上午 9:00—11:00
第一部分
軟體技術基礎
(共15分)
一、是非判斷題(每小題1分,共10分)
( 判斷下列各題是否正確,如正確,在客觀答題紙上對應編號選A,否則選B )
1. 在設備管理中通道是處理輸入、輸出的軟體。 ( 1 )
2. 從邏輯上可以把數據結構分為線性結構和非線性結構。 ( 2 )
3. 若無進程處於運行狀態,則就緒隊列為空。 ( 3 )
4. 在單處理器系統中,程序的並發執行,實質上是程序的交替執行。 ( 4 )
5. 分頁存儲管理中,頁面不能映射到不連續的內存塊中。 ( 5 )
6. 瀑布模型的突出缺點是不適應用戶需求的變化。 ( 6 )
7. 棧和隊列的共同特點是允許在端點之外處插入和刪除元素。 ( 7 )
8. 為了便於對照檢查,測試用例應由輸入數據和預期的輸出結果兩部分組成。 ( 8 )
9. 在軟體生存期內,能確定軟體系統必須做什麼和必須具備的功能階段是編碼。 ( 9 )
10.在結構化分析中,用於描述加工邏輯的主要工具有三種,即:結構化語言、判定表、判定樹。 ( 10 )

二、選擇題(每小題1分,共5分)
1. 軟體開發中,模塊設計的原則是( 11 ) 。
11 (A) 低偶合、高內聚 (B) 高偶合、高內聚
(C) 高偶合、低內聚 (D) 低偶合、低內聚
2. 進程從運行狀態進入就緒狀態的原因可能是( 12 )。
12 (A) 時間片用完 (B) 等待某一事件
(C) 等待的事件已發生 (D) 被選中佔有處理機
3. 隊列的操作原則是( 13 )。
13 (A) 先進後出 (B) 先進先出
(C) 只進不出 (D) 只出不進
4. 以下( 14 )不是實時操作系統的特點。
14 (A) 高可靠性 (B) 及時響應
(C) 高效性 (D) 通用性
5. 程序流程圖是用於描述結構化方法中 ( 15 )工作階段的工具。
15 (A) 可行性分析 (B) 程序編碼
(C) 詳細設計 (D) 需求分析

第二部分
C與C++語言程序設計
(共85分灶歷)
一、單項選擇題 ( 每小題1分,共10分 )
1. 下列關於C++語言類的描述中錯誤的是( 16 ) 。
16 (A) 類用於描述事物的屬性和對事物的操作
(B) 類與蘆辯敏類之間通過封裝而具有明確的獨立性
(C) 類與類之間必須是平等的關系,而不能組成層次結構
(D) 類與類之間可以通過一些方法進行通信和陪枝聯絡
2. C++中,已知有如下定義:
const int D=5;
int i=1;
long int f=0;
char c=15;
則下列選項錯誤的是( 17 )。
17 (A) ++i; (B) D--; (C) c++; (D) --f;
3. 下面關於類和對象的描述中,錯誤的是 ( 18 )。
18 (A) 類就是C語言中的結構體類型,對象就是C語言中的結構體變數
(B) 類和對象之間的關系是抽象和具體的關系
(C) 對象是類的實例,一個對象必須屬於一個已知的類
(D) 類是具有共同行為的若干對象的統一描述體
4. 設有定義:int n=0,*p=&n,**q=&p,則下列選項中正確的賦值語句是( 19 )。
19 (A) p=5; (B) *q=5; (C) q=p; (D) *p=5;
5. 設有定義:char s[20]= "ab\101\ncd"; 則sizeof(s)和strlen(s)的值為( 20 )。
20 (A) 6,6 (B) 20,6 (C) 20,7 (D) 20,10
6. 在C語言的函數中( 21 )。
21 (A) 必須有形參 (B) 形參必須是變數名
(C) 可以有也可以沒有形參 (D) 數組名不能作為形參
7. 下列程序輸出結果是( 22 )。
# include "stdio.h"
# define SQR(x) x*x
void main()
{ int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n",a);
}
22 (A) 10 (B) 1 (C) 9 (D) 0
8. 已知學生記錄描述如下
struct student
{ int no;
char name[20];
char sex;
struct
{ int year;
int month;
int day;
}birth;
};
struct student s;
設變數s中「生日」是「1982年5月29日」,對「生日」的正確賦值方式是( 23 )。
23 (A) year=1982;month=5;day=29;
(B) birth.year=1982;birth.month=5;birth.day=29;
(C) s.year=1982;s.month=5;s.day=29;
(D) s.birth.year=1982;s.birth.month=5;s.birth.day=29;
9. 有下列程序輸出結果是 ( 24 )。
# include <stdio.h>
void dig(char *s)
{
char *p=s;
while(*s)
*s>='0' && *s<='9'?s++:(*p++=*s++);
*p='\0';
}
void main()
{
char *str="A1B2C3";
dig(str);
puts(str);
}
24 (A) ABC (B) A1B2C3 (C) A1B2C (D) ABC3
10. 在下面的選項中,賦值語句錯誤的是 ( 25 ) 。
25 (A) i++; (B) a=(b=(c=2,d=3));
(C) a=a<a; (D) a=a*b=2;

二、讀程序回答問題 ( 每個選擇3分,共45分 )
1. 讀下面程序並回答問題:
# include <stdio.h>
void fun1(int x,int y)
{
int t;
t=x; x=y; y=t;
}
void fun2(int x[])
{
int t;
t=x[0]; x[0]=x[1]; x[1]=t;
}
void main()
{
int a[2]={1,2},b[2]={1,2};
fun1(b[0],b[1]);fun2(a);
printf("%d,%d,%d,%d\n",a[0],a[1],b[0],b[1]);
}
(1) 下列說法錯誤的是( 26 )。
26 (A) 數組名作為函數參數進行傳遞,傳遞的是數組的首地址
(B) 數組名作為函數參數時,形參數組與實參數組共用內存空間
(C) 普通變數作為函數參數進行傳遞,實參與形參之間發生的是單向值傳遞
(D) 數組名作為函數參數時,傳遞的是數組元素的值
(2) 程序的運行結果是( 27 )。
27 (A)1,2,1,2 (B) 1,2,2,1 (C) 2,1,1,2 (D) 2,1,2,1
2. 讀程序並回答問題。
# include <stdio.h>
int fun()
{
static int c=0;
c++;
return c;
}
void main(int argc,char *argv[])
{
int x,i,j;
for(i=1;i<argc;i++)
for(j=0;argv[i][j]!='\0';j++)
x=fun();
printf("%d\n",x*argc);
}
(1)若程序經編譯連接後生成可執行文件2_3.exe,若鍵入以下命令行:
2_3 abcd 123
則程序的運行結果為( 28 )。
28 (A) 3 (B) 21 (C) 9 (D) 0
(2)若將函數fun中的static去掉,變為int c=0; 程序經編譯後連接生成可執行文件2_3.exe,若鍵入以下命令行:
2_3 abcd 123
則程序的運行結果為( 29 )。
29 (A) 3 (B) 30 (C) 22 (D) 10
3. 讀程序並回答問題
# include <stdio.h>
# include <string.h>
void fun(char *s,int p1,int p2)
{
char t;
while(p1<p2)
{
t=*(s+p1); *(s+p1)=*(s+p2); *(s+p2)=t;
p1++; p2--;
}
}
void main()
{
char str[10];
int i;
for(i=0;i<9;i++)
str[i]='A'+i;
str[i]='\0';
puts(str);
fun(str,0,strlen(str)-1);
puts(str);
}
(1)第一個puts(str)的輸出結果為( 30 )。
30 (A) AHCFEDGBI (B) IBGDEFCHA
(C) ABCDEFGHI (D) IHGFEDCBA
(2)第二個puts(str)的輸出結果為( 31 )。
31 (A) AHCFEDGBI (B) IBGDEFCHA
(C) ABCDEFGHI (D) IHGFEDCBA
4. 閱讀下面程序,回答問題。
void main()
{
int n,m,s=0,t=1;
scanf("%d",&m);
for(n=1;n<=m;n++)
{
t*=n;
s+=t;
}
printf("%d\n",s);
}
程序的功能是( 32 )
32 (A) 實現1的階乘至m的階乘的求和
(B) 求m的階乘
(C) 1到m的求和
(D) 實現1至m-1的階乘的求和
5. 讀程序,回答問題。
# include <stdio.h>
void main()
{
char s[80];
int i,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(s[i]!='c') s[j++]=s[i];
s[j]='\0';
puts(s);
}
程序運行時輸入cctv10,其輸出結果為( 33 )。
33 (A) cc (B) tv10 (C) ctv10 (D) tv10cc
6. 有下列程序:
# include <stdio.h>
char func(char *s)
{
char *p=s;
while(*p!='\0')
p++;
return p-s;
}
void main()
{
printf("\n%d\n",func("Hello!"));
getch();
}
(1)程序的運行結果是( 34 )。
34 (A) 3 (B) Hello!6 (C) 無輸出 (D) 6
(2)指針變數的運算不可以( 35 )。
35 (A) 指針變數加整形變數 (B) 指針變數減整形變數
(C) 指針變數加指針變數 (D) 指針變數減指針變數
7. 以下是一個C++程序,讀程序寫出程序運行結果。
# include <iostream.h>
void main()
{
int num=0,i=8;
do
{ i--;
num++;
}while(--i);
cout<<num<<endl;
}
程序的運行結果是( 36 )。
36 (A) 2 (B) 0 (C) 4 (D) 5
8. 有下列程序:
# include <stdio.h>
void main()
{ char c='A';
int k=0;
do
{ switch(c++)
{ case 'A': k++; break;
case 'B': k--;
case 'C': k+=2; break;
case 'D': k%=2; continue;
case 'E': k*=10;break;
default: k/=3;
}
k++;
}while(c<'G');
printf("k=%d\n",k);
getch();
}
(1)程序輸出結果是( 37 )。
37 (A) k=3 (B) k=4 (C) k=2 (D) k=0
(2)本程序中continue的作用( 38 )。
38 (A) 與break一樣 (B) 不起任何作用
(C) 開始下一次循環 (D) 出現語法錯誤
9. 有下列程序
int w=3;
int fun(int k)
{
if(k==0) return w;
return(fun(k-1)*k);
}
void main()
{
int w=10;
printf("%d\n",fun(5)*w);
}
輸出結果是( 39 )。
39 (A) 360 (B) 3600 (C) 1080 (D) 1200
10. 有下列程序
void main()
{
char ch[2][5]={"6934","8254"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++)
p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>'\0'&&p[i][j]<='9';j+=2)
s=10*s+p[i][j]-'0';
printf("%d\n",s);
}
輸出結果是( 40 )。
40 (A)6385 (B) 69825 (C) 63825 (D) 693825

注意:① 請把下面「程序填空」中各小題答案寫在主觀題答題紙上
② 每一個空只填一個語句或一個語句所缺的部分內容

三、程序填空 ( 每空2分,共30分 )
1. 函數fun的功能是:找出N行M列二維數組元素中的最大值,並作為函數值返回,最大值的行列下標通過形參指針帶回main函數中。請填空。
# include <stdio.h>
# define N 3
# define M 4
int fun(int a[N][M],int *row,int *col)
{
int i,j,r,c;
r=c=0;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(a[i][j]>① ) { r=i; c=j; }
② ;
*col=c;
③ ;
}
void main()
{
int a[N][M]={1,2,3,4,5,6,7,8,9,10,11,12};
int row,col,max;
max=fun(a,&row,&col);
printf("max=%d,row=%d,col=%d\n",max,row,col);
}
2. 程序的功能是:求出分數序列2/1,3/2,5/3,8/5,13/8……前20項之和,請填空。
# include <stdio.h>
void main()
{ double x=2,y=1,t,s=0;
int i;
for(i=1;i<=20;i++)
{
s=① ;
t=② ;
x=③ ;
y=t;
}
printf("s=%f\n",s);
}
3. 有5個學生的成績需要保存在文件score.dat文件中,保存格式如下:
姓名,年齡,成績<CR> 請填空。
# include <stdio.h>
void main()
{ FILE *fp;
int i;
char name[80];
int age;
float score;
fp=fopen(① ,"w");
for(i=0;i<5;i++)
{ printf("請輸入第%d個學生的信息\n",i);
printf("姓名:");
scanf("%s",name);
printf("年齡:");
scanf("%d",&age);
printf("成績:");
② ;
fprintf(fp,"%s,%d,%f\n",name,age,score);
}
③ ;
}
4. 下列程序的功能是:從5個字元串中找出最長的那個字元串。請填空。
# include <stdio.h>
# include <string.h>
# define N 5
# define M 81
char *fun(char (*sq)[M])
{ int i;
① ;
sp=sq[0];
for(i=1;i<N;i++)
if(② ) sp=sq[i];
return sp;
}
void main()
{ char str[N][M],*longest;
int i;
printf("please enter 5 string:");
for(i=0;i<N;i++)
gets(str[i]);
for(i=0;i<N;i++)
puts(str[i]);
longest=③ ;
printf("\nThe longest string:");
puts(longest);
}
5. 下面程序的功能是:由25人坐成圓圈,先從任一人出發用1到25順時針依次編號,然後從1號開始順時針報數(1,2,3,4,…),數到5的倍數的出圈,剩下的繼續報數,求最後出圈的編號。
# include <stdio.h>
void main()
{
int a[26],j,n,count;
for(j=1;j<=25;j++) a[j]=j;
j=1;
count=0;
① ;
do
{ if(a[j]!=0)
{ n++;
if(n%5==0)
{ ② ;
if(count==24) printf("%d\n",j);
count++;
}
}
j++;
if(j>25) j=1;
}
while(③ );
}

② 大一期末考C語言試題求解答

第一題:#include<stdio.h>

voidmain()

{

inta[10],b[9],i=0;

for(;i<10;i++)

{

printf("請輸入第%d個數",i+1);

scanf("%d",&a[i]);

}

for(i=1;i<10;i++)

b[i-1]=a[i]-a[i-1];

for(i=0;i<9;i++)

{

if(i%3==0)printf(" ");

printf("%d ",b[i]);

}

}

運行結果:

學習是要用心的,多動腦,多思考學到的東西才是自己的。喔,對了給分森液喲!!!!!

③ c語言考試,求答案,急!!急!!

一、選擇題((1)—(40)每題1分,(41)—(50)每題2分,共60分)
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項塗寫在答題卡相應位置上,答在試卷上不得分。

(1) 在32位計算機中,一個字長所佔的位元組數為( )。
A) 1
B) 2
C) 4
D) 8

(2) 與十進制數511等值的十六進制數為( )。
A) 1FF
B) 2FF
C) 1FE
D) 2FE

(3) 能將高級語言編寫的源程序轉換成目標程序的是( )。
A) 編程程序
B) 編譯程序
C) 解釋程序
D) 鏈接程序

(4) 在計算機系統中,存儲一個漢字的國標碼所需要的位元組數為( )。
A) 1
B) 2
C) 3
D) 4

(5) 下列帶有通配符的文件名中,能表示文件ABC.TXT的是( )。
A) *BC.?
B) A?.*
C) ?BC.*
D) ?.?

(6) 在多媒體計算機系統中,不能用以存儲多媒體信息的是( )。
A) 光纜
B) 軟盤
C) 硬碟
D) 光碟

(7) DOS命令「COPY/?」的功能是( )。
A) 將當前盤當前目錄中的所有文件復制到當前盤的根目錄下
B) 將當前盤當前目錄中所有以單個字元命名的文件復制到當前盤的根目錄下
C) 以提示方式復制文件
D) 顯示COPY命令的幫助信息

(8) 在Windows環境下,若要將當前活動窗口存入剪貼板,則可以按( )。
A) Ctrl+PrintScreen鍵
B) Ctrl+PrintScreen鍵
C) Shift+PrintScreen鍵
D) PrintScreen鍵

(9) 在Windows環境下,單擊當前應用程序窗口中的「關閉」按鈕,其功能是( )。
A) 將當前應用程序轉為後台運行
B) 退出Windows後再關機
C) 退出Windows後重新啟動計算機
D) 終止當前應用程序的運行

(10) 在Windows環境中,粘貼按鈕是( )。
A) ctrl+A
B) ctrl+C
C) ctrl+X
D) ctrl+V

(11) 以下敘述中正確的是( )。
A) 構成C程序的基本單位是函數
B) 可以在一個函數中定義另一個函數
C) main()函數必須放在其它函數之前
D) 所有被調用的函數一定要在調用之前進行定義

(12) 以下選項中合法的實型常數是( )。
A) 5E2.0
B) E-3
C) .2E0
D) 1.3E

(13) 以下選項中合法的用戶標識符是( )。
A) long
B) _2Test
C) 3Dmax
D) A.dat

(14) 已知大寫字母A的ASCII碼值是65,小寫字母a的ASCII碼是97,則用八進製表示的字元常量『\101』是( )。
A) 字元A
B)字元a
C)字元e
D)非法的常量

(15) 以下非法的賦值語句是( )。
A) n=(i=2,++i);
B)j++;
C) ++(i+1);
D)x=j>0;

(16) 設a和b均為double型變數,且a=5.5、b=2.5,則表達式(int)a+b/b的值是( )。
A)6.500000
B)6
C) 5.500000
D) 6.000000

(17) 已知i、j、k為int型變數,若從鍵盤輸入:1,2,3<回車>,使i的值為1、j的值為2、k的值為3,以下選項中正確的輸入語句是( )。
A) scanf(「%2d%2d%2d」,&i,&j,&k);
B) scanf(「%d %d %d」,&i,&j,&k);
C) scanf(「%d,%d,%d」,&i,&j,&k);
D) scanf(「i=%d,j=%d,k=%d」,&i,&j,&k);

(18) 與數學式子 對應的C語言表達式是( )。
A) 3*x^n(2*x-1)
B) 3*x**n(2*x-1)
C) 3*pow(x,n)*(1/(2*x-1))
D) 3*pow(n,x)/(2*x-1)

(19) 設有定義:long x=-123456L;,則以下能夠正確輸出變數x值的語句是( )。
A)printf(「x=%d\n」,x);
B) printf(「x=%1d\n」,x);
C)printf(「x=%8dL\n」,x);
D)printf(「x=%LD\n」,x);

(20) 若有以下程序:
main()
{ int k=2,i=2,m;
m=(k+=i*=k);printf(「%d,%d\n」,m,i);
}
執行後的輸出結果是( )。
A) 8,6
B) 8,3
C) 6,4
D) 7,4

(21) 已有定義:int x=3,y=4,z=5;,則表達式!(x+y)+z-1 && y+z/2的值是( )。
A) 6
B) 0
C) 2
D) 1

(22) 有一函數, ,以下程序段中不能根據x值正確計算出y值的是( )。
A) if(x>0) y=1; B) y=0;
else if(x==0) y=0; if(x>0) y=1;
else y=-1; else if(x<0) y=-1;
C)y=0; D)if(x>=0)
if(x>=0); if(x>0) y=1;
if(x>0) y=1 ; else y=0;
else y=-1; else y=-1;

(23) 以下選項中,與k=n++完全等價的表達式是( )。
A) k=n,n=n+1
B) n=n+1,k=n
C) k=++n
D) k+=n+1

(24) 以下程序的功能是:按順序讀入10名學生4門課程的成績,計算出每位學生的平均分並輸出,程序如下:
main()
{ int n,k;
float score ,sum,ave;
sum=0.0;
for(n=1;n<=10;n++)
{ for(k=1;k<=4;k++)
{ scanf(「%f」,&score); sum+=score;}
ave=sum/4.0;
printf(「NO%d:%f\n」,n,ave);
}
}
上述程序運行後結果不正確,調試中發現有一條語句出現在程序中的位置不正確。這條語句是( )。
A) sum=0.0;
B) sum+=score;
C) ave=sun/4.0;
D) printf(「NO%d:%f\n」,n,ave);

(25) 有以下程序段
int n=0,p;
do{scanf(「%d」,&p);n++;}while(p!=12345 &&n<3);
此處do—while循環的結束條件是( )。
A) P的值不等於12345並且n的值小於3
B) P的值等於12345並且n的值大於等於3
C) P的值不等於12345或者n的值小於3
D) P的值等於12345或者n的值大於等於3

(26) 有以下程序
main()
{ int a=15,b=21,m=0;
switch(a%3)
{ case 0:m++;break;
case 1:m++;
switch(b%2)
{ default:m++;
case 0:m++;break;
}
}
printf(「%d\n」,m);
}
程序運行後的輸出結果是( )。
A) 1
B) 2
C) 3
D) 4

(27) C語言中,函數值類型的定義可以預設,此時函數值的隱含類型是( )。
A) void
B) int
C) float
D) double

(28) 若有說明:int n=2,*p=&n,*q=p;,則以下非法的賦值語句是( )。
A) p=q;
B) *p=*q;
C) n=*q;
D) p=n;

(29) 有以下程序
float fun(int x,int y)
{ return(x+y); }
main()
{ int a=2,b=5,c=8;
printf(「%3.0f\n」,fun(int)fun(a+c,b),a-c));
}
程序運行後的輸出結果是( )。
A) 編譯出錯
B) 9
C) 21
D) 9.0

(30) 有以下程序
void fun(char *c,int d)
{ *c=*c+1;d=d+1;
printf(「%c,%c,」,*c,d);
}
main()
{ char a=』A』,b=』a』;
fun(&b,a); printf(「%c,%c\n」,a,b);
}
程序運行後的輸出結果是( )。
A)B,a,B,a
B) a,B,a,B
C) A,b,A,b
D) b,B,A,b

(31) 以下程序中函數sort的功能是對a所指數組中的數據進行由大到小的排序
void sort(int a[],int n)
{ int i,j,t;
for(i=0;i
for(j=i+1,j
if(a[i]
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for(i=o;i<10;i++) print(「%d,」,aa[i]);
printf(『\n」);
}
程序運行後的輸出結果是( )。
A)1,2,3,4,5,6,7,8,9,10
B) 10,9,8,7,6,5,4,3,2,1,
C) 1,2,3,8,7.6.5.4.9,10
D) 1,2,10,9,8,7,6,5,4,3

(32) 有以下程序
int f(int n)
{ if (n==1) return 1;
else return f(n-1)+1;
}
main()
{ int i,j=0;
for(i=i;i<3;i++) j+=f(i);
printf(「%d\n」,j);
}
程序運行後的輸出結果是( )。
A) 4
B) 3
C) 2
D) 1

(33) 有以下程序
main()
{ char a[ ]={『a』,『b』,『c』,『d』, 『e』, 『f』, 『g』,『h』,『\0』}; int i,j;
i=sizeof(a); j=strlen(a);
printf(「%d,%d\b」i,j);
}
程序運行後的輸出結果是( )。
A)9,9
B)8,9
C)1,8
D)9,8

(34) 以下程序中函數reverse的功能是將a所指數組中的內容進行逆置。
void reverse(int a[ ],int n)
{ int i,t;
for(i=0;i{ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
reverse(b,8);
for(i=6;i<10;i++) s+=b[i];
printf(「%d\n」,s);
}
程序運行後的輸出結果是( )。
A) 22
B) 10
C) 34
D) 30

(35) 有以下程序
main()
{ int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i,s=0
for(i=0;i<4;i++) s+=aa[i][1];
printf(「%d\n」,s);
}
程序運行後的輸出結果是( )。
A) 11
B) 19
C) 13
D) 20

(36) 有以下程序
#include
main()
{ char *p=「abcde\Ofghjik\0」;
printf(「%d\n」,strlen(p));
}
程序運行後的輸出結果是( )。
A) 12
B) 15
C) 6
D) 5

(37) 程序中頭文件typel.h 的內容是:
#define N 5
#define M1 N*3
程序如下:
#define 「type1.h」
#define M2 N*2
main()
{ int i;
i=M1+M2; printf(「%d\n」,i);
}
程序編譯後運行的輸出結果是:( )。
A) 10
B) 20
C) 25
D) 30

(38) 有以下程序
#include
main()
{ FILE *fp; int i=20,j=30,k,n;
fp=fopen(「d1.dat」「w」);
fprintf(fp,「%d\n」,i);fprintf(fp,「%d\n」j);
fclose(fp);
fp=fopen(「d1.dat」, 「r」);
fp=fscanf(fp,「%d%d」,&k,&n); printf(「%d%d\n」,k,n);
fclose(fp);
}
程序運行後的輸出結果是( )。
A) 20 30
B) 20 50
C) 30 50
D) 30 20

(39) 以下敘述中錯誤的是( )。
A) 二進制文件打開後可以先讀文件的末尾,而順序文件不可以
B) 在程序結束時,應當用fclose函數關閉已打開的文件
C) 在利用fread函數從二進制文件中讀數據時,可以用數組名給數組中所有元素讀入數據
D) 不可以用FILE定義指向二進制文件的文件指針

(40) 有以下程序
#include
main(int argc,char *argv[])
{ int i,len=0;
for(i=1;iprintf(「%d\n」,len);
}
程序編譯連接後生成的可執行文件是ex1.exe,若運行時輸入帶參數的命令行是:
ex1 abcd efg 10<回車>
則運行的結果是:( )。
A) 22
B) 17
C) 12
D) 9

(41) 有以下程序
int fa(int x)
{ return x*x; }
int fb(int x)
{ return x*x*x; }
int f(int (*f1)(),int (*f2)(),int x)
{ return f2(x)-f1(x); }
main()
{ int i;
i=f(fa,fb,2); printf(「%d\n」,i);
}
程序運行後的輸出結果是( )。
A) -4
B) 1
C) 4
D) 8

(42) 有以下程序
int a=3;
main()
{ int s=0;
{ int a=5; s+=a++; }
s+=a++;printf(「%d\n」,s);
}
程序運行後的輸出結果是( )。
A) 8
B) 10
C) 7
D) 11

(43) 有以下程序
void ss(char *s,char t)
{ while(*s)
{ if(*s==t) *s=t-『a』+』A』;
s++;
}
}
main()
{ char str1[100]=「abcddfefdbd」,c=』d』;
ss(str1,c); printf(「%s\n」,str1);
}
程序運行後的輸出結果是( )。
A) ABCDDEFEDBD
B) abcDDfefDbD
C) abcAAfefAbA
D) Abcddfefdbd

(44) 有以下程序
struct STU
{ char num[10]; float score[3]; };
main()
{ struct stu s[3]={{「20021」,90,95,85},
{「20022」,95,80,75},
{「20023」,100,95,90}},*p=s;
int i; float sum=0;
for(i=0;i<3,i++)
sum=sum+p->score[i];
printf(「%6.2f\n」,sum);
}
程序運行後的輸出結果是( )。
A) 260.00
B) 270.00
C) 280.00
D) 285.00

(45) 設有如下定義:
struck sk
{ int a;
float b;
}data;
int *p;
若要使P指向data中的a域,正確的賦值語句是( )。
A) p=&a;
B) p=data.a;
C) p=&data.a;
D) *p=data.a;

(46) 有以下程序
#include
struct NODE
{ int num; struct NODE *next; };
main()
{ struct NODE *p,*Q,*R;
p=(struct NODE*)malloc(sizeof(struct NODE));
q=(struct NODE*)malloc(sizeof(struct NODE));
r=(struct NODE*)malloc(sizeof(struct NODE));
p->num=10; q->num=20; r->num=30;
p->next=q;q->next=r;
printf(「%d\n」,p->num+q->next->num);
}
程序運行後的輸出結果是( )。
A) 10
B) 20
C) 30
D) 40

(47) 若有以下說明和定義
typedef int *INTEGER;
INTEGER p,*q;
以下敘述正確的是( )。
A) P是int型變數
B) p是基類型為int的指針變數
C) q是基類型為int的指針變數
D) 程序中可用INTEGER代替int類型名

(48) 有以下程序
main()
{ unsigned char a,b,c;
a=0x3; b=a|0x8; c=b<<1;
printf(「%d%d\n」,b,c);
}
程序運行後的輸出結果是( )。
A) –11 12
B) –6 –13
C) 12 24
D) 11 22

(49) 有以下程序
#include
main()
{ char *p,*q;
p=(char*)malloc(sizeof(char)*20); q=p;
scanf(「%s%s」,p,q); printf(「%s%s\n」,p,q);
}
若從鍵盤輸入:abc def<回車>,則輸出結果是:( )。
A) def def
B) abc def
C) abc d
D) d d

(50) 以下程序中函數f的功能是將n個字元串按由大到小的順序進行排序。
#include
void f(char p[][10],int n)
{ char t[20]; int i,j;
for(i=0;ifor(j=i+1;jif(strcmp(p[i],p[j])<0)
{ strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}
}
main()
{ char p[][10]={「abc」,「aabdfg」,「abbd」,「dcdbe」,「cd」};int i;
f(p,5); printf(「%d\n」,strlen(p[0]));
}
程序運行後的輸出結果是( )。
A) 6
B) 4
C) 5
D) 3

二、填空題(每空2分,共40分)
請將答案分別寫在答題卡中序號為【1】至【20】的橫線上,答在試卷上不得分。

1、計算機軟體分為系統軟體和應用軟體,操作系統屬於 [1] 。

2、在DOS環境下,代表鍵盤和顯示器的設備文件名為 [2] 。

3、支持Internet基本服務的協議是 [3] 。

4、從Windows環境進入MS-DOS方式後,返回Windows環境的DOS命令為 [4] 。

5、某微型機的運算速度為2MIPS,則該微型機每秒執行 [5] 條指令。

6、設有定義:int n,*k=&n;以下語句將利用指針變數k讀寫變數n中的內容,請將語句補充完整。
scanf(「%d, 」 [6] );
printf(「%d\n」, [7] 。);

7、以下程序運行後的輸出結果是 [8] 。
main()
{ int x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf(「%d,%d \n」,x,y);
}

8、以下程序運行後的輸出結果是 [9] 。
main()
{ int x=15;
while(x>10 && x<50)
{ x++;
if(x/3){x++;break;}
else continue;
}
printf(「%d\n」,x);
}


9、有以下程序:
#include
main()
{ char c;
while((c=getchar( ))!=』?』) putchar(--c);
}
程序運行時,如果從鍵盤輸入:Y?N?<回車>,則輸出結果為 [10] 。

10、以下程序運行後的輸出結果是 [11] 。
void fun(int x,int y)
{ x=x+y;y=x-y;x=x-y;
printf(「%d,%d,」,x,y); }
main()
{ int x=2,y=3;
fun(x,y);
printf(「%d,%d\n」,x,y);
}

11、以下函數的功能是計算s=1+ + +……+ ,請填空。
double fun(int n)
{ double s=0.0,fac=1.0; int i;
for(i=1,i<=n;i++)
{ fac=fac [12] ;
s=s+fac;
}
return s;
}


12 fun函數的功能是:首先對a所指的N行N列的矩陣,找出各行中的最大的數,再求這N個最大值中的最小的那個數作為函數值返回。請填空。
#include
#define N 100
int fun(int(*a)[N])
{ int row,col,max,min;
for(row=0;row{ for(max=a[row][0],col=1;colif( [13] )max=a[row][col];
if( row==0)min=max;
else if( [14] )min=max;
}
return min;
}

13、函數sstrcmp()的功能是對兩個字元串進行比較。當s所指字元串和t所指字元串相等時,返回值為0;當s所指字元串大於t所指字元串時,返回值大於0;當s所指字元串小於t所指字元串時,返回值小於0(功能等同於庫函數strcmp())。請填空。
#include
int sstrcmp(char *s,char *t)
{ while(*s&&*t&& *s== [15] )
{ s++;t++;}
return [16] ;
}

14、下面程序的運行結果是 [17] 。
#define N 10
#define s(x) x*x
#define f(x) (x*x)
main()
{ int i1,i2;
i1=1000/s(N); i2=1000/f(N);
printf(「%d %d\n」,i1,i2);
}

15、下面程序的運行結果是: [18] 。
void swap(int *a,int *b)
{ int *t;
t=a; a=b; b=t;
}
main()
{ int x=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf(「%d%d\n」,*p,*q);
}

16、下面程序的運行結果是: [19] 。
typedef union student
{ char name[10];
long sno;
char sex;
float score[4];
}STU;
main()
{ STU a[5];
printf(「%d\n」,sizeof(a));
}

(17) 函數sstrcmp()的功能是對兩個字元串進行比較。當s 所指字元串和t所指字元相等時,返回值為0;當s所指字元串大於t所指字元串時,返回值大於0;當s所指字元串小於t所指字元串時,返回值小於0(功能等同於庫函數strcmp())。請填空。
#include <stdio.h>
int sstrcmp(char *s,char *t)
{while(*s&&*t&&*s==【19】)
{s++;t++; }
return 【20】;
}

④ 急求C語言考試題答案(我擁有的積分不高,所以給不了多少,但我真的急求,大哥大姐幫幫忙)

2.多個源文件的C程序編譯和連接:
1)首先分別編輯、編譯file1.c和file2.c ;
2)在TC下編輯一個項目文件,擴展名為.PRJ;
如: 文件內容——c:\\zyc\\cprg\\file1.c
c:\\zyc\罩銀\cprg\\file2.c
文件內容指出了要參加聯調的源程序文件名
3)編譯運行

4.結果:
main:x=5 y=1 n=1
func:x=6 y=21 n=11
main:x=5 y=1 n=11
func:x=8 y=31 n=21

5.
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b,c,max;
scanf("%d%d%d",&a,&b,&c);
if(a>b)
max=a;
else
max=b;
if(c>max)
max=c;
printf("max=%d",max);

}

6.
#include<stdio.h>
void main(){
float x,y;
printf("請輸入x的值:\n");
scanf("%f",&x);
if(x<1)
printf("y的值是:%f",x);
else if(1<=x<10){
y=2*x-1;
printf("y的信旁值是:%f",y);
}
else {
y=3*x-11;
printf("y的值是:%f",y);
}
}

7題
57
5 7
67.856400,-789.124023
67.856400 ,-789.124023
67.86,-789.12,67.864,-789.1240,67.856400,-789.124023
6.78564e+01, -7.9e+02
A,65, 101, 41
1234567,4553207, d687
65535,177777,ffff,-1
COMPUTER, COM

8.結果9

二、編程:
1.
#include<stdio.h>
void main()
{
int a,s;
scanf("%d",&s);
if(s==100)
a=9;
else
a=s/10;
switch(a)
{
case 0:printf("E\n");break;
case 1:printf("E\n");break;
case 2:printf("E\n");break;
case 3:printf("E\n");break;
case 4:printf("E\n");break;
case 5:printf("E\物坦宴n");break;
case 6:printf("D\n");break;
case 7:printf("C\n");break;
case 8:printf("B\n");break;
case 9:printf("A\n");break;
default:printf("error\n");
}}

2.
#include<stdio.h>
#define N 10
main()
{
int i,j,k;
int a[N];
printf("\nplease input %d datas:\n\n",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N;i++)
for(j=0;j<N-i;j++)
if(a[j]<a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
printf("\n\nthe sortde numbers are:\n\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
}

祝你好運!

⑤ 求c語言試題及答案!急啊!

c語言考試題(一)

一、 單項選擇題(每題2分,共20分)
1、以下選項中屬於C語言的數據類型是( )
A.復數型 B.邏輯型 C.集合型 D.雙精度型
2、一個C程序的執行是從( )
A.main()函數開始,直到main()函數結束 B.第一個函數開始,直到最後一個函數結束
C.第一個語句開始,直到最後一個語句結束 D.main()函數開始,直到最後一個函數結束
3、設有語句int a=3;則執行語句a+=a-=a*a;後,變數a的值是( )
A.3 B.0C.-12D.9
4、若有 char c[5]={'c','d','\0','e','\0'};則執行語句printf("%s",c);結果是( )。
A.cd\0e B.'c''d' C.cd D.cd e
5、已知:int a[2][3]={1,2,3,4,5,6}, (*p)[3]=a;則下列表達式不是4的是 ( )。
A.*(*p+3) B.*p+3 C.*(*(p+0)+3) D.a[0][3]
6、以下有宏替換不正確的敘述( ).
A.宏替換不佔用運行時間 B.宏名無類型
C.宏替換只是字元串替換 D.宏名必須用大寫字母表示
7、執行char str[10]=」Ch\nina」; strlen(str)的值是( )
A.5 B.6 C.7 D.9
8、下面程序的輸出結果是:( )
#define POWER(x) (x*x)
main()
{int i=4; printf("%d",POWER(i-2)); }
A. -9 B. -7 C. 5 D. -6
9、在定義int a[3][4][2];後,第10個元素是( )
A.a[2][1][2] B.a[1][0][1] C.a[2][0][1] D.a[2][2][1]
10、下面程序的輸出結果是:( )
typedef struct
{long x[2];<br>short y[4];<br>char z[8];<br>}MYTYPE;
MYTYPE a;
main()
{ printf("%d\n",sizeof(a));}
A. 2 B. 8 C. 14 D. 24
二、 填空題(每空1分,共11分)
1、字元串"A"在內存中佔用的位元組數為 。
2、C語言中的標識符只能由字母、下劃線和 組成。
3、若有定義語句「 int a=25,b=14,c=19;",以下語句的執行結果是
if(a++<=25&&b--<=2&&c++) printf("***a=%d,b=%d,c=%d\n",a,b,c);
else printf("###a=%d,b=%d,c=%d\n",a,b,c);
4、有如下定義a[]="B\172\\\'a%%";則執行語句printf("%d",strlen(a));的結果為 。
5、若有定義:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i; for(i=0;i<4;i++) p[i]=&a[i*3];則*(*(p+1)+2)的值為 ,*p[2]的值為 。若數組的首地址為2000,則p[1]指向的地址為 。
6、設a=2,b=3,x=3.5,y=2.5,則表達式(float)(a+b)/2+(int)x%(int)y 的結果是 。
7、設x、y都是int型變數,初值都為1,則執行表達式:--x&&y++後,y的值為 。
8、語句for(i=1;i==10;i++)continue;循環的次數是 。
9、以下程序輸出 。
main()
{enum em {em1=3,em2=1,em3};
char *aa[]={"AA","BB","CC","DD"}; printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);
}
三、 寫程序結果(每題5分,共35分)

1、#include
main()
{int x,y,z;<br>x=1,y=2,z=3; x+=y+=z;<br>printf("1:%d\n",z+=x>y?x++:y++);<br>x=0x02ff;y=0xff00;<br>printf("2:%d\n",(x&y)>>4|0x005f);<br>x=y=z=-1; ++x||++y&&++z;<br>printf("3:%d,%d,%d\n",x,y,z);<br>}
2、#define f(x) x*x
main()
{int a=6,b=2,c;<br>c=f(a+b)/f(b);<br>printf(「%d\n」,c);<br>}
3、fun(int k)
{ printf("%d",k);
if(k>0)
fun(k-1);
}
main( )
{ int w=5; fun(w); printf("\n"); }
4、#include
main()
{int x=1,y=0;<br>switch(x)<br>{ case 1:<br>switch(y)<br>{ case 0:printf(「first\n」);break;<br>case 1:printf(「second\n」);break;<br>}
case 2:printf(「third\n」);
}
}
5、#include
main()
{ int k=4;
func(k); func(k);
}
func(int a)
{ static int m=0;
m+=a;
printf("%d",m);
}
6、struct st
{ int x;
int *y;
}*p;
int s[]={30,20};
struct st a[]={1,&s[0],2,&s[1]};
main()
{ p=a; printf("%d,",p->x);
printf("%d\n",++(*(++p)->y));
}
7、假定在當前盤目錄下有2個文本文件,其名稱和內容如下:
文件名: a1.txt a2.txt
內容: ABCDEF# abcdef#
#include "stdio.h"
main()
{FILE *fp;<br>void fc();<br>if((fp=fopen("a1.txt","r"))==NULL)<br>{printf("Can not open file!\n"); exit(1);}
else{fc(fp);fclose(fp);}
if((fp=fopen("a2.txt","r"))==NULL)
{printf("Can not open file!\n"); exit(1);}
else{fc(fp);fclose(fp);}
}
void fc(fp1)
FILE *fp1;
{char c;<br>while((c=fgetc(fp1))!='#')putchar(c);<br>}

四、 程序填空(每空2分,共14分)

1、下面程序求矩陣a的主對角線元素之和,請填空。
main()
{ int a[3][3]={2,4,6,8,10,12,14,16,18};
int sum=0,i,j;
for(i=0;i<3; ① )
for(j=0; ② ;j++)
if(i= =j) sum=sum+ ③ ;
printf("sum=%d\n",sum);
}
2、下列函數coy把字元數組S2中的全部字元復制到字元數組S1中, 復制時』\0』也要復制過去,』\0』後面的字元不用。
coy(char s1[],char s2[])
{ int i;
for(i=0;s2[i]!= ① ;i++)
s1[i]=s2[i];
② ;
}
3、下面程序的功能是將字元串a中的下標為奇數的元素由小到大排序,其他元素不變,請填空。
main()
{ char a[]="students",t; int i,j;
for(i=1;i<7;i+=2)
for(j=i+2;j<8; ① )
if( ② )
{t=a[i];a[i]=a[j];a[j]=t;}
puts(a);
}

c語言考試題(二)

一. 填空題(每題2分,共20分)
1. C語言基本數據類型有:_______________________________;
構造類型有:_____________________________________。 P.13

2. C語言源程序注注釋符號是:________________________________,
為表明層次結構,C語言源程序通常採用_____________________格式編寫。P.4

3. 源程序TEST.C經編譯產生的目標文件是:________________________;
經連接處理後,產生的可執行文件是:__________________________。

4. strlen(「1234 \ 0xy)的值為:_____________________________;
sizeof(float)的值為:____________________________

5. 二維數組a[10] [50]最後一行的首地址為:_________________________;
最後一個元素的首地址為:____________________________________。

6. C標准庫函數中,數學函數的原型在:________________頭文件中,自定義頭文件D :\ MYC \ MY . H應如何包含到源程序文件中:_________________________。P.130

7. 已知函數定義為:int stat(inta,float *p)
{……………}
則此函數的兩個參數類型分別是_______________ 、 _____________________。

8. 設int x,y,z=4;
x=y=++z;
x=(y>z)?x+2;x++;則x的值是:_________;
設int a=0,b=0,c=0;c=++a | | b++; ,則a、b、c值分別是:_____________。

9. 與if (x=0) 等價的寫法是if ( ! x );
判斷兩個(float)變數x,z是否相等一般:if ( fabc(x-z)<1e-6 )。

10.已知賦值語句zhang.year=1985;可判斷zhang是_______________類型的變數;
定義文件指針的C語句是:_________________________________。

二. 單項選擇題 (每題1分,共10分)
1. 組成C程序的基本單位是____________________________。
A.函數 B.標識符 C.表達式 D.語句

2. 設int類型的數據長度為2位元組,則該類型數據的取值范圍是__________________。
A.0至65536 B.0至65535
C.-32767至32768 D.-32768至32767

3. 在C語言中,邏輯值「真」是用_____________________表示的。
A.預定義為真值的宏 B.非零數
C.正數 D.非零整數

4. C語言對於嵌套if語句規定else總是與_____________________匹配。
A.與最外層的if B.與之前最近的if
C.與之前最近的不帶else的if D.與最近的{ }之前的if

5. 數組定義char a[10]={`a`,`b`,`c`}:包括了幾個元素____________________。
A.3 B.9 C.4 D.10

6. 數組名作為實參傳給被調用的函數時,形參獲得的是_____________________。
A.該數組第一個元素的值 B.該數組所有元素的值
C.該數組第一個元素的首地址 D.該數組所有元素的首地址

7. 為表示關系x ≥ y ≥z,正確的C語言表達式為_________________________。
A.(x>=>y>=z) B.(x>=y)AND(y>=z)
C.(x>=y)&&(y>=z) D.(x>y)&(y>=z)

8. 根據定義int a[ ]={1,2,3},i,*p=a; 從語法分析_________________是不正確的。
A. a[p-a] B.*(&a) C.p D.*(*(a+i))

9. 若有語句scanf(「%d%d」,&a,&b);要使變數a,b分別得到12和34;正確的輸入形式為____________________________。
A.12 34 B.12,34 C.1234 D.12:34

10.union uex {int i;float f;char c;}ex;則sizeof(ex)的值是____________________。
A.4 B.5 C.6 D.7

三. 分析程序,寫出運行結果。(每題4分,共20分)
1. 源程序如下,運行時假定鍵盤輸入字元串為``2004``
#include
void main(void)
{
int n=0;
char c;
while( (c=getchar( )) ! =`\n` ) /*字元型數字*/
{
if (c>=`0`&&c<=`9` )
n = n*10 + c- `0` ; /*數字*/
}
printf(「value=%d|n」 ,n);
}
結果為: value=2004 。

2. 源程序如下:
#include
void main(void)
{
int num[9]={399,398,397,396,395,299,290,311,301};
int score[9]={81,85,59,77,90,66,89,93,73};
int iMax,iPos,i;
iPos=0;
iMax=score[iPos];
for(i=1;i<9;i++)
if(score>iMax)
{
iPos=i;
iMax=score[iPox];
}
printf(「num=%d,score=%d」,num[iPos];score[iPos]);

結果為: num=311, score=93 。

3. 源程序如下,運行時假定鍵盤輸入數據為:1 2 3 4 5 6 7 8 9 10
#include
void main(void)
{
int i,a[10];
int *p;
p=a;
for(i=0;i<10;i++)
scanf(「%d「,p++);
for(p=a;p< SPAN>;p++)
if (*p%2)printf(「%3d」,*p);
}
結果為: 1 3 5 7 9 。

4. 源程序如下,兩次運行,分別輸入數據13和21
#include
#include
void main(void)
{
int n,s;
scant (「%d」,&n);
s=panan( n);
if(s==1)printf(「yes\n」);
else printf(「no\n);
}
int panan(int n)
{
int k,j;
k=(int)sqrt((double)n);
for(j=2;j<=k,j++)
{
if(n%j==0) break;
}
if(j>k) retum(1);
else retum(0);
}
結果為 yes
no

5.源程序如下,運行時假定鍵盤輸入字元為:AxByCz
#include
#include
void main(void)
{
char str[80];
int i;
gets(str);
for(i=0;str!=`\0`;i++)
if(str>=`a`&&str<=`z`) str-=32;
else if (str>=`A`&&str<=`Z`) str+=32;
puts(str);
}
結果為: aXbYcZ 。

四. 下列程序中每個劃線處有一個錯誤,改正劃線 中的錯誤,使其實現題目要求。(每體4分,共20分)
1. 求 s=1+2+3+、、、、、、、+100
include 改正為_________________________。
void sum (void) 改正為_________________________。
{
int s,i;
for (s=0,i=1;i<=100;i++)
{
s=s+ i ++; 改正為__________________________。
}
printf (「s=%f」,s) 改正為__________________________。
}

2. 源程序實現求x
#include
double pow(float . int) 改正為_________________________。
void main(void)
{
int i, n;
float x;
scanf (「%f,%d」,&x,&n);
for (i=1; i<9;i++)
printf(「%d,%e\n」, i, pow(i,x);
} 改正為______________________。
double v v pow(float x, int n)
{
int i;
double p=0; 改正為______________________。
for (i=1; i< i++)>改正為_______________________。
p*=x;
retum(p);
}

3. 源程序實現排升序。
#include
void main(void)
{
int i, j, iMin, a[10]={4,3,5,1,10,12,2,6,7,9}, iTemp;
for (i=0; i<9; i++)
{
iMin=0; 改正為_______________________。
for (j=i+1; j<10;j++)
if(a[iMin]< iMin="j;">改正為_______________________。

if (iMin==i) 改正為_________________________。
{ iTemp=a;
a[iMin]=a; 改正為_________________________。
a[iMin]=iTemp;
}
}
for(i=0; i<10; i++)
printf(「%4d」, a):
}

4. 源程序為求平均值。
#include
void main(void)
{
int i, sum; 改正為____________________。
float avg;
int sc[10], *p=sc;
for (i=0, i<10; i++) 改正為____________________。
{
scanf(「%d」, p++);
sum+= *p; 改正為____________________。
}
avg = sum/ 10; 改正為___________________。
printf(「avg=%f」, avg);
}
5. 源程序求 eX=1+x+x2/2!+……+xn/n!前n+1項之和
#include
void main(void>
{
float exp , x , t;
int i, n;
scanf(「%f, %d」,&x, &n);
t=0; 改正為___________________。
exp=1.0;
for(i=1 ; i<=n; i++)
{
if(t<1e-6) loop; 改正為__________________。
t+=x/i; 改正為___________________。
exp*=t; 改正為___________________。
}
printf(「\n%15.6f」, exp);
}
五. 編程題 (每題6分,共30分)
1. 根據以下程序框架,編寫子函數,實現交換兩個整型變數x和y的值。
#include
void swap (int *, int *);
void main (void)
{
int x, y;
scanf(「%d, %d」, &x, &y);
swap( &x, &y);
printf(「%d, %d」, x, y);
}
void swap( )
{

}

2. 設某班人數36人,參加C語言考試,用一維數組score[36]存放考試成績,已給出一部分程序,完善以下程序,使其實現統計並輸出不及格人數及百分比。
#include
void main (void)
{ int i;
float scoer[36], precent;
int count=0;
for (i=0; i<36; i++)
{
scanf(「%f」, &score);

}

3. 完善以下程序使其實現由鍵盤任意輸入一串字元,統計其中大寫字母個數iA、小寫字母個數ia、其他字元個數iother。
#include
#include
void main (void)
{
char str [80];
int i, iA=0, ia=0, iother=0;

}

4. 完善以下程序使其實現求方陣主和輔對角線元素之和及其轉置矩陣,設方陣用二維數組a表示,轉置矩陣用t表示,sl和s2表示主和輔對角線元素之和。
#include
void main(void)
{
int a[3] [3]={1,3,5,7,9,11,13,15,11};
int i, j, s1, s2;
int t[3] [3];
printf(「%d, %d,\n」,s1, s2);
for(i=0; i<3; i++)
for(j=0; j<3; j++)
printf(「%3d」, t [j]);
}

5. 已知字元數組str[80],編寫返回指針的子函數,實現在其中查找字元ch首次出現的位置。
#include
#include
#include
char *lstrchar(char*, char);
void main(void)
{
char c, *p, str[80];
gets (str);
scanf(「%c」, &c);
p=lstrchar(str,c);
if(p==NULL) printf(「char %c not found\n」c);
else printf(「The position is %d」, p-str);
char 「lstrchar( )
{ }

歷年全國計算機二級考試c語言真題及答案
http://jsj.lsxy.com/UploadFiles/20064222324839.rar

⑥ C語言期末考試試題(譚浩強版)

C語言期末考試試題
2008年04月12日 星期六 00:22

一 選擇題(24分,每小題2分)
1.已知函數fread的調用形式為fread(buffer,size,count,fp),其中buffer代表的是()。

A 存放讀入數據項的存儲區
B 存放讀入數據的地址或指向此地址的指針
C 一個指向所讀文件的文件指針
D 一個整形變數,代表要讀入的數據項總數

2.以下程序的輸出結果為( )。
main( )
{
int i=010,j=10;
printf("%d,%d\n",i++,j--);
}

A 11,9
B 9,10
C 8,10
D 9,9

3.設a為int型變數,執行下列賦值語句後,a的取值分別是( )。
a=125.534;
a=20.0/3;
a=(int)125.521%4;
a=5<<2;

A 125,6,31,1
B 125,6,1,20
C 125,6.666666,31,20
D 125.534,6.666666,2,20

4.設i和k都是int類型,則for循環語句( )。
for(i=0,k=-1;k=1;i++,k++)
printf("****\n");

A 循環結束的條件不合法
B 循環體一次也不執行
C 循環體只執行一次
D 是無限循環

5.以下程序的輸出結果為( )。
main( )
{
char c;
int i;

for(i=65;i<68;i++)
{
c=i+32;
switch(c)
{
case 'a':
case 'b':
case 'c':printf("%c,",c);break;
default:printf("end");
}
}
}

A a,b,c,end
B a,a,a,end
C a,a,a,
D a,b,c,

6.函數調用語句:fseek(fp,-10L,2);的含義是( )。
A 將文件位置指轎豎衡針從文件末尾處向文件頭的方向移動10個位元組
B 將文件位置指針從當前位置向文件頭的方向移動10個位元組
C 將文件位置指針從當前位置向文件末尾方向移動10個位元組
D 將文件位置指針移到距離文件頭10個位元組處

7.以下程序的輸出結果為纖掘( )。
main( )
{
int i=0,j=0;
while(s1[i]!='\0')
i++;
while(s2[j]!='\0')
s1[i++]=s2[j++];
s1[i]=0;

printf("%s\n",s1);
}

A side
B country
C sidetry
D countryside

8.下列說法不正確的是( )。

A 主函數main中定義的變數在整個文件或程序中有效
B 不同函數中,可以使用相同名字的變數
C 形式參數是局部變數
D 在一個函數內部,可以在復合語句中定義變數,這些變數只在本復合語句中有效

9.在下列程序段中,枚舉變數 c1的值是( )。
enum color { red,yellow,blue=4,green,white}c1;
c1=yellow;
c1=white;

A 1
B 3
C 5
D 6

10.設有說明 int (*ptr)();其中標識符ptr是( )。

A 是一個指向整形變數的指針
B 是一個指針,它指向一個函數值是int的函數
C 是一個函數名
D定義不合法

11.定義由n個指向整形數據的指針組成的數組p,其正確的方式為( )。

A int p;
B int (*p)[n];
C int *p[n];
D int (*p)( );

12.具有相同類型的指針類型變數p與閉做數組a,不能進行的操作是( )。

A p=a;
B *p=a[0];
C p=&a[0];
D p=&a;

二 判斷對錯,對的劃「√」,錯的劃「×」(20分,每小題2分)

1.參加位運算的數據可以是任何類型的數據。 ( )

2.若有定義和語句:
int a;
char c;
float f;
scanf("%d,%c,%f",&a,&c,&f);

若通過鍵盤輸入:10 A 12 5
則a=10,c=『A』,f=12.5。 ( )

3.C語言把文件看作是一個字元(位元組)的序列。 ( )

4.若有宏定義:
#define S(a,b) t=a;a=b;b=t
由於變數t沒定義,所以此宏定義是錯誤的。 ( )

5.在Turbo C中,下面的定義和語句是合法的:
file *fp;
fp=fopen("a.txt","r"); ( )

6.若有定義:
char s[ ]="china";
則Turbo C系統為數組s開辟6個位元組的內存單元。 ( )

7.若有定義和語句:
int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;
for(i=0;i<3;i++)
sum+=a[i][2-i];
則sum=21。 ( )

8.若有定義和語句:
struct student
{
int num;
char name[10];
float score;
}
s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++);
輸出結果是1。 ( )

9.在程序中定義了一個結構體類型後,可以多次用它來定義具有該類型的變數。 ( )

10.在Turbo C中,此定義和語句是合法的:
enum aa{ a=5,b,c}bb;
bb=(enum aa)5; ( )

三 寫出下列程序的運行結果(36分,每小題6分)
1.
main( )
{
int i=29,j=6,k=2,s;
s=i+i/j%k-9; //s=i+(i/j)%k-9
printf(「s=%d\n」,s);
}

2.
main( )
{
int x=31,y=2,s=0;
do
{
s-=x*y;
x+=2;y-=3;
}
while(x%3==0); //先執行,後判斷
printf(「x=%d\ty=%d\ts=%d\n」,x,y,s);
}

3.
main( )
{
int a[6]={10,20,30,40,50,60},i;
invert(a,0,5);
for(i=0;i<6;i++)
printf(「%d,」,a[i]);
printf(「\n」);
}

invert(int s[ ],int i,int j) //倒置
{
int t;
if(i<j)
{
invert(s,i+1,j-1); //函數自身的嵌套調用,形成循環
t=s[i];
s[i]=s[j];
s[j]=t;
}
}

4.
#include <stdio.h>

main()
{
char str[ ]="The C program",c;
int i;
for(i=2;(c=str[i])!='\0';i++)
{
switch(c)
{
case 'g': ++i; break; //由於++i,跳過了g後面的1個字母
case 'o': continue;
default: printf(「%c」,c); continue;
}
printf(「*」);
}
printf(「\n」);
}

5.
struct w //結構體
{
char low;
char high;
};

union u //共用體
{
struct w byte;
short word;
}uw;

main( )
{
int result;
uw.word=0x1234;

printf("word value:%04x\n",uw.word);
printf("high byte:%02x\n",uw.byte.high);
printf("low byte:%02x\n",uw.byte.low);

uw.byte.low=0x74;

printf("word value:%04x\n",uw.word);
result=uw.word+0x2a34;
printf("the result:%04x\n",result);
}

6.
main()
{
char *s2="I love China!",**s1=&s2;
char *s3,c,*s4="w";
s3=&c;
*s3='H';
s2=s2+2;
printf("%s\t%c\t%s\t%c\n",s2,*s3,s4,**s1);
}

四 閱讀下列程序,在 處填入適當內容,使程序完整(20分,每個空2分)

1.百馬百擔問題:有100匹馬,馱100擔貨,大馬馱3擔,中馬馱2擔,兩匹小馬馱1擔,問大、中、小馬各多少匹?
main( )
{
int hb,hm,hl,n=0;
for(hb=0;hb<=100;hb+=(1))
for(hm=0;hm<=100-hb;hm+=(2))
{
hl=100-hb- (3) ;
if(hb/3+hm/2+2*(3)==100)
{
n++;
printf("hb=%d,hm=%d,hl=%d\n",hb/3,hm/2,2*hl);
}
}
printf("n=%d\n",n);
}

2.用「起泡法」對輸入的10個字元排序後按從小到大的次序輸出。
#define N 10

char str[N];

void main()
{
int i,flag;

for(flag=1;flag==1;)
{
scanf("%s",str);
flag=0;
printf("\n");
}

sort(___(4)___);

for(i=0;i<N;i++)
{
printf("%c",str[i]);
}
printf("\n");
}

sort(char str[N]) //冒泡排序
{
int i,j;
char t;

for(j=1;j<N;j++)
for(i=0;i<10-j;i++)
if(str[i]>str[i+1])
{
t=str[i];
____(5)____;
____(6)____; //交換位置
}
}

3.以下程序是一個函數,功能是求二階矩陣(m行n列矩陣)的所有靠外側的各元素值之和。(本程序中二階矩陣用一維數組來表示。)

例如,矩陣為:
3 0 0 3
2 5 7 3
1 0 4 2
則所有靠外側的各元素值之和為3+0+0+3+2+3+1+0+4+2=18。

add(int m,int n,int arr[])
{
for(i=0;i<m;i=i+m-1)
for(j=0;j<n;j++)
sum=sum+____(7)____;
for(j=0;j<n;j=j+n-1)
for(i=1;____(8)____;i++)
sum=sum+arr[i*n+j];
return(sum);
}

4.用指針作函數參數,編程序求一維數組中的最大和最小的元素值。
#define N 10
main()
{
void maxmin(int arr[],int *pt1,int *pt2,int n);
int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;
p1=&a;
p2=&b;
maxmin(array,p1,p2,N);
printf("max=%d,min=%d",a,b);
}

void maxmin(int arr[],int *pt1,int *pt2,int n)
{
int i;
*pt1=*pt2=arr[0];
for(i=1;i<n;i++)
{
if(arr[i]>*pt1)
____(9)____ ;

if(arr[i]<*pt2)
____(10)____ ;
}
}

答案
一 選擇題(24分,每小題2分)
1.( B ) 2.( C ) 3.( B )
4.( D ) 5.( D ) 6.( A )
7.( D ) 8.( A ) 9.( D )
10.( B ) 11.( C ) 12.( D )
二 判斷對錯,對的劃「√」,錯的劃「×」(20分,每小題2分)
1.( × ) 2.( √ )
3.( √ ) 4.( × )
5.( × ) 6.( √ )
7.( √ ) 8.( × )
9.( √ ) 10.( √ )
三 寫出下列程序的運行結果(36分,每小題6分)
1.s=20
2.x=35 y=-4 s=-29
3.60,50,40,30,20,10,
4.e C pr*am
5.word value:1234
6.love China! H w l
high byte:12
low byte:34
word value:1274
the result:3ca8
四 閱讀下列程序,在 處填入適當內容,使程序完整(20分,每個空2分)
1.(1) 3 (2) 2 (3)hm hl
2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t
3.(7) arr[i*n+j] (8) i<m-1
4.(9) *ptr1=arr[i] (10) *ptr2=arr[i]

⑦ 求一份大一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語言程序高人給出如下試卷的答案,本人將不慎感激

選擇題:
1.d
2a
3b
4a
5b
6a
7d
8c
9a
10d

填早喚空:
1.循環結好渣構
2.4
3.非0
4.if
5.跳出本次循環
6.char
7.假
8.for
9.0
10.switch
問答題:
1,不與回答填空有。
2.int ,long,char, double, float
3.++i是在i的寄存器中直接加1,i++是把i放到臨時寄存器中,再臨時寄存器中加1,然後臨時寄存器友睜悄中的i值返回個i的寄存器。
4.不是任何時候,當值小於255的時候可以的。因為char是1一個位元組,最大255,int4個位元組最大65535.
讀程題:
1。a=10,b=8,c=16
2。a=65 a=A b=66 b=66
x=67 x=C y=65 y=65
z=67
編程題:
1#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>

#define LINE 1024
void main()
{
int i = 5;
int sum=1;
for( ; i > 0; --i)
sum *= i;
printf("%d\n", sum);
return 0;
}
2#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>

#define LINE 1024
int main(void)
{
int a[3];
int min, max;
int i=0;
scanf("%d%d%d", &a[0], &a[1], &a[2]);
min = max = a[0];
for (i = 1; i<3;++i)
{
if (min > a[i])
min = a[i];
if (max < a[i])
max = a[i];
}
printf("max=%d min=%d\n", max, min);
return 0;
}
3#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>

#define LINE 1024
int main(void)
{
int i=100;
int a,b,c;
for (;i<999;++i)
{
a = i / 100;
b = i / 10 % 10;
c = i % 10;
if(a*a*a+b*b*b+c*c*c == i)
printf("%d\n", i);
}
return 0;
}
4:

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

int main(void)
{
int line, i, j;
scanf("%d", &line);
int a[line][line];
int len = 1;
int h;
for(i = 0; i < line; ++i)
for(j = 0; j < line; ++j)
a[i][j] = 0;

for(i = 0; i < line; ++i)
{
for(j = 0; j < len; ++j)
{
if (len == 1)
a[i][j] = 1;
else
{
a[i][0] = 1;
for(h = len - 1; h > 0; --h)
{
a[i][h] = a[i-1][h]+a[i-1][h-1];
}
}
}
len ++;
}
for(i = 0; i < line; ++i)
{
for(j = 0; j < line; ++j)
if (a[i][j] != 0)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}

給你升級了,自己輸入行數,比如輸入10行,就是你想要的。

⑨ C語言期末題。幫忙做做。

第五題應蘆大該鋒嘩知為B,不銀消會是C的
第六題選B!b是地址常量,哪能被賦值撒!
第十題選A!從case1開始執行,b就加了一次

熱點內容
四川農業大學申請考核博士 發布:2025-10-20 08:58:11 瀏覽:981
福田雷沃重工本科生待遇怎麼樣 發布:2025-10-20 08:53:49 瀏覽:575
華為要本科生嗎 發布:2025-10-20 08:25:41 瀏覽:550
2008年青島本科生工資 發布:2025-10-20 08:04:24 瀏覽:444
東北大學藝術考研 發布:2025-10-20 07:38:35 瀏覽:299
我的大學生活txt 發布:2025-10-20 07:35:28 瀏覽:25
人民大學外語系考研 發布:2025-10-20 07:31:12 瀏覽:894
上海交通大學考研輔導班 發布:2025-10-20 07:24:54 瀏覽:420
華中農業大學細胞生物學考研群 發布:2025-10-20 07:09:36 瀏覽:558
南京大學2016考研線 發布:2025-10-20 06:43:12 瀏覽:930