版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
C語言實驗指導(dǎo)練習(xí)題答案
第1章
VisualC++6.0集成開發(fā)環(huán)境
參考答案
一、選擇題答案
1.C2.D3.C4.C
6.C7.D8.C9.C
二、填空題答案
1.答案:系統(tǒng)軟件、應(yīng)用軟件
2.答案:32、34
3.答案:模塊化、結(jié)構(gòu)化
4.答案:物理、硬件
5.答案:高級、低級
6.答案:PASCAL
7.答案:main函數(shù)
8.答案:函數(shù)
9.答案:函數(shù)的首部、函數(shù)體
10.答案:聲明部分、執(zhí)行部分
11.答案:函數(shù)
12.答案:main函數(shù)
13.答案:分號
14.答案:/*……*/
15.答案:指令、指令
16.答案:源程序
17.答案:編譯程序
18.答案:編輯、編譯、連接、執(zhí)行5.A10.D
第
2
章
數(shù)據(jù)類型、運算符與表達式
參考答案
一、選擇題
1.B10.B19.A2.B11.D20.C
3.A12.B4.B13.A5.D14.D6.A15.C7.D16.D8.A17.C9.A18.D
二、填空題
1.答案:162.答案:36.答案:287.答案:3210.答案:0011010100110111
3.答案:08.答案:304.答案:85.答案:4729.答案:1.000000
第
3
章
順序程序設(shè)計
參考答案
一、選擇題答案
1.B2.D3.A4.C5.C6.B7.D8.D9.D
二、填空題答案
1.答案:【1】%c【2】%d【3】f【4】lf2.答案:putchargetchar。3.答案:【1】順序結(jié)構(gòu)【2】選擇結(jié)構(gòu)【3】循環(huán)結(jié)構(gòu)(三者的順序可以互換)4.答案:dec:1,oct:1,hex:1,unsigned:1
dec:1,oct:177777,hex:ffff,unsigned:655355.答案:B,71
6.答案:n1=%d\nn2=%d\n7.答案:【1】inta,b,c;【2】&a,&b,&c【3】temp=a【4】c=temp8.答案:12
9.答案:3.141593,3.1416,3.142,3.142
3.14159e+00,3.142e+00,3.14e+00,3.14e+00
三、編程練習(xí)題答案
1.#include<stdio.h>
main(){
charc,c1;
printf(“請輸入小寫字母:”);scanf(“%c”,&c);c1=c+32;printf(“小寫字母:%c\n”,c);printf(“大寫字母:%c\n”,c1);}
//輸入小寫字母//轉(zhuǎn)換成大寫字母//輸出小寫字母//輸出大寫字母
2.#include<stdio.h>
main(){
floatr,h;doublev,p;p=3.14;
scanf("%f,%f",&r,&h);v=p*r*r*h/3;
printf("r=%6.2f\n",r);printf("v=%6.2lf\n",v);}
3.#include<stdio.h>
main(){
intx,ge,shi,bai;
printf(“輸入一個三位數(shù):\n”);scanf(“%d”,&x);ge=x%10;shi=x/10%10;bai=x/100;printf((“%d\n”,bai+shi*10+ge*100);}
//輸入一個三位整數(shù)//求個位數(shù)字//求十位數(shù)字//求百位數(shù)字//逆序輸出
4.#include<stdio.h>
main(){
inta,b,c;floataver;
printf(“輸入三個整數(shù)a,b,c”);scanf(“%d,%d,%d”,&a,&b,&c);aver=(a+b+c)/3.0;printf(“aver=”;aver);}
//輸入三個整數(shù)//求平均值//輸出平均值
思考:為什么aver=(a+b+c)/3.0;后面是3.0而不是3?
5.#include<stdio.h>
main(){
floatc,f;
printf((“請輸入攝氏溫度c”);
scanf(“%d”,&x);f=5.0/9*(c+32);printf(“華氏溫度是%.2f\n”,f);}
//輸入一個攝氏溫度//求出對應(yīng)的華氏溫度//輸出華氏溫度
第4
10.D章選擇結(jié)構(gòu)程序設(shè)計參考答案一、選擇題答案1.D
11.C2.D12.A3.B13.B4.A14.D5.B6.D15.B7.B8.A9.D
二、填空題答案
1.答案:2
2.答案:x=1
3.答案:1
4.答案:3
5.答案:6,25
5,13y=1z=0
0,0
6.答案:2,1
7.答案:helloworld!
8.答案:hello
beijing
9.答案:【1】a==0
10.答案:【1】month
三、編程練習(xí)題答案【2】b==0【3】fabs(disc)<1e-6【4】disc>0【2】(year%400==0)||(year%4==0&&year%100!=0)
1.#include<stdio.h>
voidmain()
{
intmonth;
printf("inputintegernumber:");
scanf("%d",&month);
switch(month)
{
case1:printf("January\n");break;
case2:printf("February\n");break;
case3:printf("March\n");break;
case4:printf("April\n");break;
case5:printf("May\n");break;
case6:printf("June\n");break;
case7:printf("Jauly\n");break;
case8:printf("August\n");break;
case9:printf("September\n");break;
case10:printf("October\n");break;case11:printf("November\n");break;
case12:printf("December\n");break;
default:printf("Illegalmonth\n");break;
}
}
2.#include<stdio.h>
voidmain()
{intx,gz;
printf("請輸入職稱:1-教授2-副教授3-講師\n");
scanf("%d",&x);
printf("請輸入工資:");
scanf("%d",&gz);
switch(x)
{
case1:{if(gz>2000)gz=gz+200;elsegz=gz+180;break;}case2:{if(gz>1500)gz=gz+150;elsegz=gz+120;break;}case3:{if(gz>1200)gz=gz+100;elsegz=gz+80;break;}default:printf("inputillegal!");
}
printf("現(xiàn)在的工資是%d\n",gz);
}
3【實驗?zāi)康摹空莆誷witch語句用法
【程序代碼】
#include<stdio.h>
voidmain()
{
intc;
printf("請輸入今天星期幾:");
scanf("%d",&c);
switch(c)
{
case1:printf("星期1的食譜是雞肉\n");break;
case2:printf("星期2的食譜是魚\n");break;
case3:printf("星期3的食譜是青菜\n");break;
case4:printf("星期4的食譜是肉\n");break;
case5:printf("星期5的食譜是雞蛋\n");break;
case6:printf("星期6的食譜是豆腐\n");break;
case7:printf("星期7的食譜是海鮮\n");break;
default:printf("Illegal!\n");/*輸入值不在1到7范圍,輸入不合法*/}
}
第5章
循環(huán)結(jié)構(gòu)程序設(shè)計
參考答案
一、選擇題答案
1.A
11.C2.B12.D3.A13.B4.B14.C5.C6.C7.C15.D16.C17.B8.B18.D9.D19.D10.C20.B
二、填空題答案
1.答案:36
2.答案:x+2*y==90
3.答案:********#
4.答案:【1】i<=9
5.答案:2581114
6.答案:【1】k!=0
7.答案:【1】j=1
8.答案:31–1
9.答案:1.0/(i*i)
10.答案:【1】d=1.0
11.答案:【1】x>=0
12.答案:【1】i<=20
13.答案:f2=f1+f2
14.答案:【1】9
15.答案:【1】100
三、編程練習(xí)題答案【2】i%3!=0【3】continue【2】k/10【2】k<=6【2】k++【2】x<min【2】i%3==0【3】k<=n【2】i【3】“%d”,I【2】=k【3】i%j【4】printf(“\n”);
1.#include<stdio.h>
intmain()
{longintr,w=0;
intn,m;
for(n=1;n<=10;n++)
{r=1;
for(m=1;m<=n;m++)
r=r*m;
w=w+r;
}
printf("%ld",w);
}//求階乘//各個階乘相加
2.#include<stdio.h>
intmain()
{intmax,min;inta[10];inti;
for(i=0;i<10;i++)
scanf("%d",&a[i]);//輸入十個數(shù)max=min=a[0];
for(i=0;i<10;i++)
{if(max<a[i])//求最大值max=a[i];
if(min>a[i])//求最小值min=a[i];
}
printf("max=%d,min=%d",max,min);
}
3.#include<stdio.h>
intmain()
{inti,j;
for(i=1;i<=9;i++)
{for(j=1;j<=i;j++)
printf("%3d*%d=%d",j,i,j*i);
printf("\n");
}//九九乘法表中共有九行//每行中有i項//輸出每一項//打完一行進行換行
}
4.#include<stdio.h>
intmain()
{inti,j,k;
for(i=1;i<=6;i++)
{for(j=1;j<=20-3*i;j++)
printf("");
for(k=1;k<=i;k++)
printf("%3d",k);
for(k=i-1;k>0;k--)
printf("%3d",k);
printf("\n");
}
}//用空格進行填充//打印數(shù),并限制寬度
5.#include<stdio.h>
intmain()
{intm,i;floatx;
for(m=1;;m++)
{x=m;
for(i=1;i<=9;i++)
x=x/2-1;
if(x==1)
break;
}
printf("%d",m);
}//迭代式//找到后退出循環(huán)
6.#include"stdio.h"
#include"time.h"
intmain()
{
intx,m;
srand(time(0));//計算機每次產(chǎn)生的隨機數(shù)不同
while(1)//該循環(huán)用來產(chǎn)生1—100之間的隨機整數(shù)
{
x=rand();
if(x>=1&&x<=100)break;
}
while(1)
{
printf("請輸入猜測數(shù)字:");
scanf("%d",&m);
if(m==x)
{
printf("恭喜你,猜數(shù)成功!");break;
}
elseif(m>x)printf("猜高了,再猜!");
elseprintf("猜低了,再猜!");
}
return0;
}
思考1:編程先由計算機“想”一個1~100之間的數(shù)請人猜,如果人猜對了,則結(jié)束游戲,并在屏幕上輸出人猜了多少次才猜對此數(shù),以此來反映猜數(shù)者“猜”的水平;否則計算機給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10次,如果猜了10次仍未猜中的話,結(jié)束游戲。
思考2:編程先由計算機“想”一個1~100之間的數(shù)請人猜,如果人猜對了,在屏幕
上輸出人猜了多少次才猜對此數(shù),以此來反映猜數(shù)者“猜”的水平,則結(jié)束游戲;否則計算機給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10次,如果猜了10次仍未猜中的話,則停止本次猜數(shù),然后繼續(xù)猜下一個數(shù)。每次運行程序可以反復(fù)猜多個數(shù),直到操作者想停止時才結(jié)束。
7.#include<stdio.h>
intmain()
{inta,m;//m代表階梯數(shù)
for(m=1;;m++)//m從1開始,逐漸遞增
{a=m%2;
if(a==1)
{a=m%3;
if(a==2)
{a=m%5;
if(a==4)
{a=m%6;
if(a==5)
{a=m%7;
if(a==0)//m是否能被7整除
{printf("共有階梯%d",m);break;
}
}
}
}
}
}
return0;
}
8.#include<stdio.h>
intmain()
{intm,a,b,c;//變量定義
printf(“100-999之間的所有的水仙花數(shù)是:”);
for(m=100;m<=999;m++)//判斷100~999之間的所有的數(shù)
{
a=m%10;//計算個位數(shù)字
b=m/10%10;//計算十位數(shù)字
c=m/100;//計算百位數(shù)字
if(m==a*a*a+b*b*b+c*c*c)printf(“%5d”,m);
//判斷是否是水仙花數(shù),如果是就輸出
}
}
第6章
數(shù)組
參考答案
一、選擇題答案
1.B2.D3.D4.B5.A6.C7.B8.D9.C10.D
11.A12.D13.C14.C15.A
二、填空題答案
1.答案:9
2.答案:54
3.答案:0
4.答案:abc0efABC
5.答案:0,5
6.答案:13715
7.答案:6個字節(jié)
8.答案:t[2]
9.答案:357
10.答案:20
三、編程練習(xí)題答案
1.程序如下:
#include<stdio.h>
#defineMAX20
voidmain()
{inta[MAX],i,j,n;
printf("putinthe20numbers:\n");
for(i=0;i<MAX;i++)
scanf("%d",&a[i]);
n=MAX-1;i=MAX-1;
while(i>=0)
{if(a[i]==a[i-1])
{for(j=i+1;j<=n;j++)
a[j-1]=a[j];
n--;
}
i--;
}
for(i=0;i<=n;i++)
{if(i%5==0)printf("\n");
printf("%3d",a[i]);
}
printf("\n");
}
運行情況:
putinthe20numbers:
1223344567891010111213141516↙12345678910111213141516
2.程序如下:
#include<stdio.h>
voidmain()
{
intt[3][4]={{2,3,4,5},{6,7,8,9},{1,2,3,6}};intm[3][4]={{1,3,0,2},{2,0,0,11},{0,2,7.0}};inta[3][4],row,col;
for(row=0;row<=2;row++)
{
for(col=0;col<=3;col++)
a[row][col]=t[row][col]+m[row][col];}
for(row=0;row<=2;row++)
{
for(col=0;col<=3;col++)
printf("%d",a[row][col]);
printf("\n");
}
}
運行情況:
3647
87820
14106
3.程序如下:
#include<stdio.h>
#include<math.h>
voidmain()
{
doublex[10]={15.0,19.0,16.0,15.0,18.0,12.0,15.0,11.0,10.0,16.0};inti;
doublex1=0.0;
doublesum=0.0;
doublex2=0.0;
doubleX;
for(i=0;i<10;i++)
sum=sum+x[i];
x1=sum/10;
for(i=0;i<10;i++)
x2=x2+(x[i]-x1)*(x[i]-x1);
X=sqrt(x2/10);
printf("X=%f\n",X);
}
運行情況:
X=2.758623
4.程序如下:
#include<stdio.h>
#include<string.h>
voidmain()
{
chara[10]="abefml";
charb[10]="bdfopxyz";
charc[20];
inta_len,b_len,i,j,k=0;
a_len=strlen(a);
b_len=strlen(b);
i=0;j=0;
while(i<a_len&&j<b_len)
{
if(a[i]<=b[j])
{c[k]=a[i];i++;k++;}
else
{c[k]=b[j];j++;k++;}
}
while(i<a_len)
{
c[k]=a[i];i++;k++;
}
while(j<b_len)
{
c[k]=b[j];j++;k++;}
puts(c);}
運行情況:
abbdeffmlopxyz
5.程序如下:
#include<stdio.h>voidmain(){
inti,j,k,t;inta[10];
printf(”pleaseputin10numbers:\n”);for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<9;i++){
k=i;
for(j=i+1;j<10;j++)if(a[j]<a[k])k=j;if(k!=i){
t=a[i];a[i]=a[k];a[k]=t;}}
printf(”theselectsortresult:\n”);for(i=0;i<10;i++)
printf("%d",a[i]);}
運行情況:
pleaseputin10numbers:
12112339354690757086↙theselectsortresult:
11122335394670758690
第
7
章
函數(shù)
參考答案
一、選擇題
1.A2.C11.B12.C
二、填空題
3.C13.C4.C14.C5.A6.A15.B16.D7.B17.A8.C18.9.A19.C10.A20.B
1.答案:數(shù)組的首地址2.答案:主函數(shù)
3.答案:hlo
4.答案:246
5.答案:17
6.答案:15
7.答案:7
8.答案:70,30
9.答案:88
10.答案:13
三、編程題
1.程序如下:
#include<stdio.h>
floatfac(intn)
{
floatf;
if(n==0||n==1)
f=1;
else
f=fac(n-1)*n;/*遞歸調(diào)用函數(shù)fac()*/return(f);
}
main()
{
intn;
floaty;
printf("inputanintegernumber:");
scanf("%d",&n);
y=fac(n);
printf("%d!=%.0f\n",n,y);
}
運行情況:
inputanintegernumber:6↙
6!=720
2.程序如下:
#include<stdio.h>
#defineN80
voidfun(chars[],intn)
{
inti,j;
j=0;
for(i=0;i<n;i++)
{
if(s[i]%2!=0)
s[j++]=s[i];
}
s[j]=‘\0’;
}
main()
{
inti=0,strlen=0;
charstr[N];
clrscr();
printf("\nInputastring:\n");
gets(str);
while(str[i]!=‘\0’)/*求輸入字符串的長度*/
{
strlen++;
i++;
}
fun(str,strlen);/*調(diào)用函數(shù),刪除ASCII碼為偶數(shù)的字符*/printf("\n*********displaystring*********\n");
puts(str);
}
運行情況:
Inputastring:
Abcdefg
*********displaystring*********
aceg
3.程序如下:
#include<stdio.h>
#defineN8
voidmaopao(inta[])
{
inti,j,temp;
for(j=0;j<=N-2;j++)
{
for(i=0;i<N-j-1;i++)
if(a[i]>a[i+1])
{temp=a[i];a[i]=a[i+1];a[i+1]=temp;}
*/
}
}
main()
{
inta[N]={9,8,3,7,5,2,6,1};
inti,j;
maopao(a);
printf("thesortnumbersresult:\n");
for(i=0;i<=N-1;i++)
printf("%3d",a[i]);
printf("\n");
}
運行情況;
thesortnumbersresult:
12356789
4.程序如下:
#include<stdio.h>
#include<stdlib.h>
#defineN19
intzheban(inta[],intx)
{
intmid,top,bot;
top=0;
bot=N-1;
while(top<=bot)
{
mid=(top+bot)/2;
if(x==a[mid])
{
return(mid+1);/*冒泡排序函數(shù)*//*冒泡排序趟數(shù)*//*互換兩個變量的值,將大數(shù)調(diào)后
}
elseif(x>a[mid])top=mid+1;
elsebot=mid-1;
}
}
main()
{
inta[N]={2,5,6,7,8,13,15,17,19,21,23,
25,26,27,28,35,41,52,63};
intx,y;
printf("putinthenumberis:");
scanf("%d",&x);
y=zheban(a,x);
printf("thexweixuis:%d",y);
}
運行情況;
putinthenumberis:21↙
thenumberxweixuis:10
5.#include<stdio.h>
intfun(ints[][10],intb[],intmm,intnn)
{
intn;
inti,j,k=0;
for(i=0;i<mm;i++)/*將二維數(shù)組s中的數(shù)據(jù)按行的順序依次放到一維數(shù)組b中*/
for(j=0;j<nn;j++)
b[k++]=s[i][j];
n=k;
returnn;/*返回元素個數(shù)*/
}
main()
{
intw[10][10]={{1,3,2,5},{4,7,6,3},{9,2,8,7}},i,j;
inta[100]={0},n;
printf("Thematrix:\n");
for(i=0;i<3;i++)
{for(j=0;j<4;j++)
printf("%3d",w[i][j]);
printf("\n");
}
n=fun(w,a,3,4);
printf("TheAarray:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
}
第8章
預(yù)處理命令
參考答案
一、選擇題答案
1.C2.B3.A4.C5.A
二、填空題答案
1.答案:7
2.答案:48
3.答案:7
4.答案:8
5.答案:【1】#definePI3.1415926
三、編程練習(xí)題答案【2】&r【3】PI*r*r*r
1.#include<stdio.h>
#defineMIN(a,b)((a)<(b)?(a):(b))
voidmain()
{
inta,b,c;
printf("Inputthreeintegers:");
scanf("%d,%d,%d",&a,&b,&c);
printf("min=%d\n",MIN(MIN(a,b),c));
}
思考:用函數(shù)來實現(xiàn)將如何編程?函數(shù)和帶參的宏兩者有何區(qū)別?
2.解:“文件包含”是事先將程序中需要用到的信息分別存放在不同的“頭文件”(文件后綴為.h)中,用戶在編寫程序時,利用#include命令將該頭文件的else
printf("Itisnotatriangle!");
}
4.#include<stdio.h>
#defineCONVERSE
main()
{
charstr[50],*p=str;
printf("輸入一個字符串:");
scanf("%s",str);
printf("輸出結(jié)果:");
#ifndefCONVERSE
printf("%s\n",str);
#else
while(*p++!=‘\0’);
p-=2;
while(p>=str)
printf("%c",*p--);
printf("\n");
#endif;
}
運行結(jié)果:
輸入一個字符串:abcdef
輸出結(jié)果:fedcba
第9章
指針
參考答案
一、選擇題:
1.C
11.A
21.B2.D3.A4.C12.D13.D14.C22.A、C23.D5.D6.C7.A15.C16.C17.A24.A25.C8.D18.C9.D19.C10.B20.C
二、填空題:
1.答案:*ss!=‘\0’
2.答案:(2)266
(1)166
3.答案:4
4.答案:【1】’\0’
5.答案:2
6.答案:1001
7.答案:scanf(“%lf”,p);【2】s【3】*p++
8.答案:29.答案:【1】a[0]10.答案:3.1411.答案:312.答案:F,def13.答案:w[7]=2214.答案:#BC#EF#H15.答案:【1】p=s[0]
三、編程題:
【2】a[3]
【2】p=s[i]
1.#include<stdio.h>
voidmain()
{
intupper=0,lower=0,digit=0,space=0,other=0,i=0;char*p,s[20];
printf("Inputstring:");
while((s[i]=getchar())!=‘\n’)i++;/*從緩沖區(qū)逐個讀取字符賦給字符數(shù)組*/p=&s[0];/*指針指向字符串的起始字符*/while(*p!=‘\n’)/*當(dāng)串未結(jié)束時,逐個字符統(tǒng)計*/{if((*p>=‘A’)&&(*p<=‘Z’))++upper;
elseif((*p>=‘a(chǎn)’)&&(*p<=‘z’))++lower;
elseif(*p==‘‘)++space;
elseif((*p>=‘0’)&&(*p<=‘9’))++digit;else
++other;p++;}
printf("uppercase:%dlowercase:%d",upper,lower);
printf("space:%ddigit:%dother:%d\n",space,digit,other);}
2.#include<stdio.h>
#include<string.h>
voidfun(char*s,char*t){
inti,d;
d=strlen(s);for(i=0;i<d;i++)t[i]=s[i];for(i=0;i<d;i++)t[d+i]=s[d-1-i];t[2*d]=‘\0’;}
voidmain(){
chars[40],t[80];
printf("\nPleaseenterstringS:");scanf("%s",s);fun(s,t);printf("\nTheresultis:%s\n",t);}
/*得到s串的長度*/
/*將s串的正序復(fù)制到t中*//*將s串的逆序連接到t后*//*加結(jié)束標(biāo)記*/
/*輸入已知串*//*進行正反序連接*//*輸出連接后的串*/
3.#include<stdio.h>
voidmain()
{
voidmaxval(intart[][4],intm,intn);/*函數(shù)聲明*/intarray[3][4],i,j,l,c;
/*輸入數(shù)組大小*/
printf(“intputlinesofarray:”);
scanf(“%d”,&l);
printf(“\ninputcolunmnofarray:”);
scanf(“%d”,&c);
/*輸入數(shù)據(jù)*/
printf(“\ninputdatausecommabetweendata\n”);for(i=0;i<l;i++)
for(j=0;j<c;j++)
scanf(“%d,”,&array[i][j]);
printf(“\n”);
/*顯示數(shù)組的結(jié)構(gòu)形式*/
for(i=0;i<l;i++)
{
for(j=0;j<c;j++)
printf(“%4d”,array[i][j]);
printf(“\n”);
}
/*調(diào)用函數(shù)計算最大元素*/
maxval(array,l,c);
}
voidmaxval(intarr[][4],intm,intn)
{
inti,j,max,line=0,col=0;
int(*p)[4];
max=arr[0][0];
p=arr;
/*窮舉最大元素*/
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(max<*(*(p+i)+j))
{
max=*(*(p+i)+j);
line=i;
col=j;
}
/*輸出結(jié)果*/
printf(“\nthemaximumvalueis%d”,max);
printf(“\nthelineis:%d”,line);
printf(“\nthecolumnis:%d\n”,col);
}
4.#include<stdio.h>
voidmain()
{
charw[80],*p,ch;
p=w;
scanf("%c",p);
while(*p!=‘*’)
{p++;scanf("%c",p);}
p=w;
ch=*p;
while(*p!=‘*’)
{p++;
if(*p>ch)/*指針變量p指向w*//*輸入字符串*//*依次比較找出最大ASCII碼值的字符*/
ch=*p;}
printf("最大ASCII碼值的字符:%c,ASCII碼值:%d\n",ch,ch);}
5.#include<stdio.h>
#include<string.h>
voidmain()
{
charstr[80],*p;
inti;
p=str;
gets(p);puts(p);
for(i=strlen(p);i>0;i--)
{
*(p+2*i)=*(p+i);
*(p+2*i-1)=‘#’;
}
puts(p);
}
}/*將原來的字符向后移動,并插入‘#’*/
第10
9.B
19.B章結(jié)構(gòu)體與共同體參考答案一、擇題答案1.D11.B2.B12.A3.B13.C4.B14.C5.C6.C7.D15.B16.B17.D8.C18.A10.B20.D
二、填空題答案
1.答案:p.next=&b;
2.答案:6
3.答案:50,70,31
4.答案:6
5.答案:
6.答案:1002
7.答案:2002Shangxian
8.答案:20412044
9.答案:580550
10.答案:【1】(structlist*)【2】(structlist*)【3】returnh;
11.答案:【1】p2->next!=NULL【2】p1->next=p2->next
三、編程練習(xí)題答案
1.#include<stdio.h>#defineSN6
structstu
{intnum;
char*name;
charsex;
floatscore;}boy[SN]={
{1001,"wangying",’M’,55},
{1002,"Zhangping",’M’,65.5},
{1003,"liufang",’F’,92.5},
{1004,"Chengling",’F’,78},
{1005,"Wangming",’M’,58},
{1006,"linping",’M’,98.5}
};
intmain(void)
{
structstu*ps;
voidave(structstu*ps);
ps=boy;/*使指針指向結(jié)構(gòu)體數(shù)組*/
ave(ps);
return0;}
voidave(structstu*ps)
{intcnt=0,i;
floatave,sum=0;
for(i=0;i<SN;i++,ps++)
{sum+=ps->score;/*把每個學(xué)生的成績都加到sum上*/
if(ps->score<60)cnt+=1;/*統(tǒng)計不及格的人數(shù)*/
}
printf("sum=%6.2f\n",sum);
ave=sum/SN;
printf("average=%5.2f\ncount=%d\n",ave,cnt);
}
2.#defineN4
#include"stdio.h"
staticstructman
{charname[20];
intage;
}person[N]={"li",23,"wang",21,"zhang",25,"sun",22};
intmain(void)
{structman*max,*p;
intm;
max=person;/*讓指針max指向數(shù)組person*/
m=max->age;/*假設(shè)第一個人的年齡最大,放在m中*/
for(p=person;p<person+N;p++)
{if(m<p->age)/*如果數(shù)組中某個元素的年齡大于m,則讓指針max指向該數(shù)組元素*/max=p;
}
printf("%s,%d",max->name,max->age);
return0;
}
3.#include<stdlib.h>
#include<stdio.h>
#defineEmpNum3
structemployees
{intnum;
charname[20];
intsalary;
};
intmain(void)
{
structemployeesemp[EmpNum];
inti,sum=0;
for(i=0;i<EmpNum;i++)
{printf("\nenteremp[%d]’snumnamesalary:",i);
scanf("%d%s%d",&emp[i].num,emp[i].name,&emp[i].salary);sum=sum+emp[i].salary;
}/*輸入職工信息*/
printf("\nrecordnum\tname\tsalary\n");
for(i=0;i<EmpNum;i++)
printf("[%d]%d\t%-10s%d\n",i,emp[i].num,emp[i].name,emp[i].salary);/*輸出職工信息*/
printf("Theaveragesalaryis:%d",sum/EmpNum);
return0;
}
4.#defineN5
structstudent
{charnum[6];
charname[8];
intscore[4];
}stu[N];
voidinput()//輸入函數(shù)
{inti,j;
for(i=0;i<N;i++)
{printf("\npleaseinput%dof%d\n",i+1,N);
printf("num:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{printf("score%d.",j+1);
scanf("%d",&stu[i].score[j]);
}
printf("\n");
}
}
print()
{inti,j;
printf("\nNo.Name\tSco1\tSco2\tSco3\n");
for(i=0;i<N;i++)
{printf("%-6s%-10s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%-8d",stu[i].score[j]);
printf("\n");
}
}
intmain(void)
{
input();
print();
return0;
}
5.#include"stdlib.h"
#include"stdio.h"
structlist
{intdata;
structlist*next;
};/*定義鏈表的節(jié)點信息*/
typedefstructlistnode;/*把結(jié)構(gòu)體類型重命名為node*/
typedefnode*link;/*定義一個新類型link*/
intmain(void)
{
linkptr,head,tail;
intnum,i;
tail=(link)malloc(sizeof(node));/*開辟2.A3.A4.D5.D6.A7.A8.D9.B
二、填空題答案
1.答案:11110000
2.答案:0
3.答案:00011011
4.答案:129,201
5.答案:8
三、編程練習(xí)題答案
1.unsignedintcode(unsignedintx)
{
unsignedinty,z;
y=x&0x8000;
if(y==0)
z=x;else
z=(x