當前位置:首頁 » 編程語言 » 周信東c語言程序設計實驗一答案
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

周信東c語言程序設計實驗一答案

發布時間: 2023-02-19 16:52:04

A. 幫忙給個《c語言程序設計》 練習題 答案 這次考試題就在其中。。。。

1A(B 中第四個選項首行是數字,D選型有關鍵字) 2D 3A 4A 5C(我在TC上運行的) 6A 7D 8D(0147是8進制轉換成十進制即103即『g』) 9D(屬自動類型轉換) 10 D 11C 12A(條件運算符運算方式是從右向左的) 13B(算術運算符-的優先順序高於關系運算符<=,最後是邏輯判斷 為真1,假0)14C
15 D(考察逗號運算符) 16D

B. C語言程序設計(201803)測試求大佬幫忙!

  1. 選D

  2. 選C;"my name"算上空格一共7個字元,加上結尾的''為8個字元,所以如果m前沒有空格,那麼答案為C

  3. 選C;p指向a[3]=4的地址,即p及其之後地址中的數值為{4,5,6,7,8,9,10},所以其中第5個數為p[4]=8

  4. 選C

  5. 選D;A錯誤,字元串應為char型;B錯誤,數組長度不夠;C錯誤,沒有vhst類型;D正確,可看作字元數組,{}內的數值可轉為相應的ASCII字元

  6. 選C;字元數組即字元串不能直接通過"="賦值,要使用strcpy函數

  7. 選C;函數實參可以是常量、變數或表達式,該題中逗號表達式(exp2,exp3)返回exp3,(exp4,exp5,exp6)返回exp6,因此一共3個實參

  8. 選C;A錯誤,函數調用時不用指明其參數類型;B錯誤,fun函數沒有返回值,不能賦給k;C正確;D錯誤,函數調用時不用指明其返回類型

  9. 選A;n++表示先返回n的值,再對n進行自增操作,即先令k=n,再執行n=n+1

  10. 選C;if-else不是循環結構

  11. 選D;aa表示數組首地址,即&aa[0],而不是&aa[1]

  12. 選B

  13. 選B;a[2]=3,a[2]+1=4,所以a[a[2]+1]=a[4]=5

  14. 選C;A錯誤,除非函數定義在調用語句之後的位置,才需要提前聲明;B錯誤,函數返回值不一定要顯示給出,沒有返回值類型的默認為整型;C正確;D錯誤,在類的定義中,當構造函數和析構函數不需要完成操作時可用空函數來表示,但它們又是有意義的

  15. 選B;scanf需指明讀入變數的地址,字元串名稱c就表示字元串的地址,也即字元數組首元素的地址,不用再加取地址符&

  16. 選A

  17. 選D;同第6題

碼字不易,望採納~

C. c語言程序設計課後習題解答與實驗指導

#include<stdio.h>
int max(int x,int y,int z)
{
int t;
t=x>y?x:y;
t=t>z?t:z;
return(t);
}
int min(int x ,int y,int z)
{
int t;
t=x<y?x:y;
t=t<z?t:z;
return(t);
}
int aver(int x ,int y,int z)
{
int t;
t=(x+y+z)/3;
return(t);
}
void main()
{ int x,y,z,a,b,c;
scanf("%d,%d,%d",&x,&y,&z);
a=(*max)(x,y,z);
b=(*min)(x,y,z);
c=(*aver)(x,y,z);
printf("%d,%d,%d\n",a,b,c);
}
建議改成:
#include<stdio.h>
int max(int x,int y,int z)
{
int t;
t=x>y?x:y;
t=t>z?t:z;
return(t);
}
int min(int x ,int y,int z)
{
int t;
t=x<y?x:y;
t=t<z?t:z;
return(t);
}
float aver(int x ,int y,int z)
{
int t;
t=(float)((x+y+z)/3.0);
return(t);
}
void main()
{ int x,y,z,a,b;float c;
scanf("%d,%d,%d",&x,&y,&z);
a=(*max)(x,y,z);
b=(*min)(x,y,z);
c=(*aver)(x,y,z);
printf("max=%d\nmin=%d\naver=%g\n",a,b,c);
}

D. c語言程序設計答案

444444

E. 《C語言程序設計》試題1 求解 請勿亂填 非常感謝

CCCBA,DBD9D
CDBBB,BCBAC不敢保證全對。。。
第九題我覺得答案是2.。。。

F. c語言程序設計(周信東版)的綜合程序設計如下:編寫程序,從鍵盤輸入某樓6家住戶某月的水電消耗及水費和電費

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

int main()
{
char user[4];
char waterNum[4];
char elecNum[4];
char inlinebuf[32];
char outlinebuf[32];
char pbuf[256];
FILE *fp1;
FILE *fp2;

int WaterNum=0;
int ElecNum=0;
int length =0;
int m=0;
int n=0;
int weishuflag=0;
int flagnum=0;
int i=0;
int j=0;

float waterPrice=0.0;
float elecPrice=0.0;

if((fp1=fopen("./input.dat","r"))==NULL)
{
printf("open input data error!\n");
return -1;
}

if((fp2=fopen("./change.dat","w"))==NULL)
{
printf("open input data error!\n");
return -1;
}

fseek(fp1,0,SEEK_END);
length = ftell(fp1);
fseek(fp1,0,SEEK_SET);
memset(pbuf,0,sizeof(pbuf));

printf("the input data length == %d\n",length);
fread(pbuf,length,1,fp1);

fseek(fp2, 0, SEEK_SET);
sprintf(outlinebuf,"住戶\t\t水費\t\t電費\n");
fputs(outlinebuf, fp2);

while(length--)
{
if(pbuf[m]!='\n')
{
inlinebuf[n]=pbuf[m];
n++;
}
else
{
j = 0;
inlinebuf[n++]='\t'; //為處理每一行的最後一個數據(即用電量),需加入一個tab或空格鍵
inlinebuf[n] = '\0';//一行數據結束
while( inlinebuf[j] != '\0')
{
switch(flagnum)
{
case 0: //用戶
if(inlinebuf[j] != ' ' && inlinebuf[j] != '\t')
{
user[i]=inlinebuf[j];
i++;
}
else
{
user[i]='\0';
flagnum++;//表示之前獲取的是住戶,下兩個數據分別獲取用水量與用電量
i=0;
}
break;

case 1: //用水量
if(inlinebuf[j] != ' ' && inlinebuf[j] != '\t')
{
waterNum[i]=inlinebuf[j];
i++;
}
else
{
waterNum[i]='\0';
weishuflag=i;//表示當前數據的位數,住戶、用水量、用電量均限制為三位數以內
flagnum++;//表示下個數據獲取的是用電量
if(weishuflag == 1)
{
WaterNum = waterNum[0] - 48;
}
else if(weishuflag == 2)
{
WaterNum = (waterNum[0] - 48)*10 + (waterNum[1] - 48);
}
else
{
WaterNum = (waterNum[0] - 48)*100 + (waterNum[1] - 48)*10 + (waterNum[2] - 48);
}
i=0;
weishuflag = 0;
}
break;

case 2: //用電量
if(inlinebuf[j] != ' ' && inlinebuf[j] != '\t')
{
elecNum[i]=inlinebuf[j];
i++;
}
else
{
elecNum[i]='\0';
weishuflag=i;//表示當前數據的位數,住戶、用水量、用電量均限制為三位數以內
flagnum = 0;//表示一行三個數據獲取完畢
if(weishuflag == 1)
{
ElecNum = elecNum[0] - 48;
}
else if(weishuflag == 2)
{
ElecNum = (elecNum[0] - 48)*10 + (elecNum[1] - 48);
}
else
{
ElecNum = (elecNum[0] - 48)*100 + (elecNum[1] - 48)*10 + (elecNum[2] - 48);
}
i=0;
weishuflag = 0;
}
break;
default:
break;
}
j++;
}
waterPrice = (float)WaterNum * 1.5;
elecPrice = (float)ElecNum * 0.5;
printf("The user == %s,waterNum == %d,elecNum == %d\n",user,WaterNum,ElecNum);//列印用戶,用水量,用電量
printf("The user == %s,waterPrice == %.1f,elecPrice == %.1f\n\n",user,waterPrice,elecPrice);//列印用戶,水費,電費
sprintf(outlinebuf,"%3s \t\t%4.1f \t\t%4.1f\n",user,waterPrice,elecPrice);

fputs(outlinebuf, fp2);//寫入每一行數據(數據格式為 住戶 + 水費 + 電費)
memset(outlinebuf,0,sizeof(outlinebuf));
memset(inlinebuf,0,sizeof(inlinebuf));
n=0; //一行數據處理結束,開始新的一行
}
m++;
}

fclose(fp1);
fclose(fp2);
return 0;
}
input.dat(每一行數據分別為住戶 用水量 用電量,以空格或tab鍵隔開,且每行數據必須以回車結尾)
101 5 150
201 4 90
301 4 120
401 3 78
501 4 60
601 6 105
charge.dat (輸出文件格式如下)
住戶 水費 電費
101 7.5 75.0
201 6.0 45.0
301 6.0 60.0
401 4.5 39.0
501 6.0 30.0
601 9.0 52.5

G. C語言程序設計2015A卷-

一、判斷題(每小題1分,共15分)

1.標准C中,只有數值型數據才能進行4則混合運算。

2.標准C中,_a是合法的自定義標識符。

3.有定義:float f;表達式f+=(int)3.6%2」不符合C語言語法。

4.標准C中,邏輯運算的結果只有是1表示滿足條件,而結果是0表示不滿足條件。

6.以下運算符排列順序滿足按照優先順序從高到低的排列:『&&』、『!』、『==』、『-』。

7.語句for(;;);是非法的。

8.在C語言程序中可以由多個源文件構成,每個源文件都可以有自己的main()函數。

9.while和do-while的主要區別是後者至少無條件執行一次。

10.數組名代表數組的首地址是常量,所以將實參數組名表示地址傳給形參數組名是錯誤的。

11.當函數沒有返回值類型時,表示函數類型為void。

12.C語言中,指針變數作函數參數時,它們不是採取單向值傳遞的方式。

13.一個函數中只允許有一條return語句。

14.在C語言中,如果沒有說明變數的存儲類型是auto類型的。

15.由於指針中所存放的地址都是整數,所以整型指針和浮點型指針可以相互賦值。

二、填空題(每空1分,共15分)

1. 若a=4;b=5,c=6;則表達式c==(b=-a); 中c的值是 (1) 。

2. 計算表達式的值:

4&&-4的值: (2) ;

設int a=3,b=4,c=5,則表達式a||b+c&&b==c的值: (3) ;

設x=2.5, a=7, y=4.7,則表達式x+a%3*(int)(x+y)%2/4的值: (4) ;

設a=12,則表達式a*=a/5的值: (5) ;

3. 若int x = 4,y = 6,z = 0;有循環while(x = y) {z ++;y--;}

則循環語句執行完後,z值為 (6) 。

4. 變數的指針就是指該變數的 (7) 。

5. 若有定義int (*p)[4],則標識符p是 (8) ;若有定義int *p[4],則標識符p是 (9) ;

6. 已有定義:char *p[ ]={「France」,「Chinese」,「Russia」,「America」};則語句printf(「%s」,p[2]);printf(「%c」,*(p[1]+2));printf(「%c」,*(*(p+1)+1));

的輸出結果分別為: (10) 、 (11) 、 (12) 。

7. 已有定義: int x=65; 若格式化輸出結果為「A, 65」,則對應的格式化輸出語句為printf(「 (13) , (14) 」, x, x)。

8. 已定義:int a[][2]={1, 2, 3, 4, 2, 6, 7, 2};則a[3][0]= (15) 。

三、簡答題(每題4分,共12分)

1、簡述選擇語句if和else語句對與switch語句的區別。

2、簡述在循環語句中,break和continue的區別。

3、若int a[5],*p=a;簡述*p++和(*p)++的區別。

四、下列各程序中每個程序各有2個錯誤,指出錯誤語句,寫出對應正確語句(每小題4分,共16分)



五、程序填空題:下列程序中缺少若干條語句,在對應的下劃線上填上合適的語句,每一個下劃線只填一條語句(每小題6分,共24分)

六、閱讀下列程序,寫出運行結果(第一小題4分,第二小題6分,共10分)



七、編程題(8分)

編譯程序,其功能是比較字元串的大小( 不允許 用系統提供的字元串比較函數strcmp)。要求是:

(1) 通過主函數調用一個函數strcompare來實現。

(2) 要求函數strcompare實現兩個字元的比較:如第一個字元小於第二個字元則返回一個負值;如兩個字元相等則返回0值;如第一個字元大於第二個字元則返回一個正值。

(3) 並輸出兩個字元串中相同部分的子串。

《C語言程序設計基礎》試卷參考答案

一、判斷題(每小題1分,共15分)

1~5 ; 6~10 ; 11~15

二、填空題(每空1分,共15分)

(1) 6 (2) 1 (3) 1 (4) 2.5 (5) 24 (6) 6

(7)地址 (8) 行指針,指向有四個元素的一維數組

(9)指針數組名,該數組有四個元素,每個元素都是指針

(10)Russia (11)i (12)h (13) %c (14) %d (15)7

三、簡答題(每題4分,共12分)

1、if總是判斷其後面的表達式的值是否為非零值,如是非零值則執行其後面的語句或由{}括起來的復合語句,否則執行else後面的語句。而switch語句則根據其後面表達式的可數值來判斷,執行switch語句體內與其中的一個case:常量值相等語句後面的語句。執行break語句後,跳出switch語句體。

2、break是終止整個循環過程;continue是終止本次循環。

3、*p++首先取a[0]的值,然後p指向a[1];(*p)++使得a[0]的值自增1,但p保持不變。

四、下列各程序中每個程序各有2個錯誤,指出錯誤語句,寫出對應正確語句(每小題4 分,共16分)

1、 (1)缺#include ; (2)scanf(「%f」,a); 改為 scanf(「%f」,&a);

2、 (1)缺sum=0; (2)for(i=1; i<=3; i++) 改為for(i=0;i<3;i++)

3、 (1)p1=p2 改為 *p1=*p2 (2)swap(&a, *p) 改為swap(&a, p)

4、 (1)在if(m<0)語句後添加else if(m==0) a=1; (2) 添加 return(a);

五、程序填空題:下列程序中缺少若干條語句,在對應的下劃線上填上合適的語句,每一個下劃線只填一條語句(每小題6分,共24分)

1、 (1)x=0; (2)if(n==x) (3)s++;或s=s+1;

2、 (4)&num[i] (5)max< num[i]? (6)num[i]!=0

3、 (7)n-i-1 (8)a[j]>a[j+1] (9)a[j+1]=temp

4、 (10)count=0; (11)n%10 (12)n>0或n!=0或n

六、閱讀下列程序,寫出運行結果(第一小題4分,第二小題6分,共10分)

1、 #*#*#*

2、 main i=1 j=2 k=2

sub i=1 j=2 k=1 x=2

sub i=1 j=2 k=1 x=3

七、編程題(8分)

#include

main()

{

int i,j, flag=0;

char str1[90],str2[90];

gets(str1);

gets(str2);

i=0;

do{

flag=strcompare(str1[i],str2[i]);

i++;

}while(str1[i]!=』』 && str2[i]!=』』 &&flag=0);

if(flag<0)printf(「%s小於%s 」,str1,str2);

else if(flag==0) printf(「%s 等於%s 」,str1,str2);

else printf(「%s大於%s 」,str1,str2);

printf(「兩個字元串中相同的字串為:」);

j=0;

i--; 後3句可用str1[i]=』』; printf(「%s」,str1);代替//用str2也可以。

while(j<i){printf(「%c」,str1[i]);j++;} span=""> </i){printf(「%c」,str1[i]);j++;}>

}

int strcompare(char c1,char c2)

{

int v;

v=c1-c2;

return v;

}