A. 求大神c語言基礎答案
1. DBCBABDA
2. 1、注釋。2、main。3、頭文件,主函數。4、調用系統提供的輸入輸出函數。5、機器語言,匯編語言,高級語言。6、機器語言
第三題課本上網上都有啊。
B. C語言程序設計教程答案~有追加懸賞100分!
1 【C語言】《C語言程序設計教程(第二版)》習題答案
說 明
1. 本文所指的《C語言程序設計教程(第二版)》是李鳳霞主編、北京理
工大學出版社出版的,綠皮。
2 第1章 程序設計基礎知識
一、單項選擇題(第23頁)
1-4.CBBC 5-8.DACA
二、填空題(第24頁)
1.判斷條件 2.面向過程編程 3.結構化 4.程序 5.面向對象的程序設計語言 7.有窮性 8.直到型循環 9.演算法 10.可讀性 11.模塊化 12.對問題的分析和模塊的劃分
三、應用題(第24頁)
2.源程序:
main()
{int i,j,k; /* i:公雞數,j:母雞數,k:小雞數的1/3 */
printf("cock hen chick\n");
for(i=1;i<=20;i++)
for(j=1;j<=33;j++)
for(k=1;k<=33;k++)
if (i+j+k*3==100&&i*5+j*3+k==100)
printf(" %d %d %d\n",i,j,k*3);}
執行結果:
cock hen chick
4 18 78
8 11 81
12 4 84
3.現計算斐波那契數列的前20項。
遞推法 源程序:
main()
{long a,b;int i;
a=b=1;
for(i=1;i<=10;i++) /*要計算前30項,把10改為15。*/
{printf("%8ld%8ld",a,b);
a=a+b;b=b+a;}}
遞歸法 源程序:
main()
{int i;
for(i=0;i<=19;i++)
printf("%8d",fib(i));}
fib(int i)
{return(i<=1?1:fib(i-1)+fib(i-2));}
執行結果:
1 1 2 3 5 8 13 21 34 55
89 144 233 377 610 987 1597 2584 4181 6765
4.源程序:
#include "math.h";
main()
{double x,x0,deltax;
x=1.5;
do {x0=pow(x+1,1./3);
deltax=fabs(x0-x);
x=x0;
}while(deltax>1e-12);
printf("%.10f\n",x);}
執行結果:
1.3247179572
5.源程序略。(分子、分母均構成斐波那契數列)
結果是32.66026079864
6.源程序:
main()
{int a,b,c,m;
printf("Please input a,b and c:");
scanf("%d %d %d",&a,&b,&c);
if(a<b){m=a;a=b;b=m;}
if(a<c){m=a;a=c;c=m;}
if(b<c){m=b;b=c;c=m;}
printf("%d %d %d\n",a,b,c);}
執行結果:
Please input a,b and c:123 456 789
789 456 123
7.源程序:
main()
{int a;
scanf("%d",&a);
printf(a%21==0?"Yes":"No");}
執行結果:
42
Yes
3 第2章 C語言概述
一、單項選擇題(第34頁)
1-4.BDCB 5-8.AABC
二、填空題(第35頁)
1.主 2.C編譯系統 3.函數 函數 4.輸入輸出 5.頭 6. .OBJ 7.庫函數 8.文本
三、應用題(第36頁)
5.sizeof是關鍵字,stru、_aoto、file、m_i_n、hello、ABC、SIN90、x1234、until、cos2x、s_3是標識符。
8.源程序:
main()
{int a,b,c;
scanf("%d %d",&a,&b);
c=a;a=b;b=c;
printf("%d %d",a,b);}
執行結果:
12 34
34 12
4 第3章 數據類型與運算規則
一、單項選擇題(第75頁)
1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD 21-25.ADDBC 26-27.AB
二、填空題(第77頁)
1.補碼 2.±(10^-308~10^308) 3.int(整數) 4.單目 自右相左 5.函數調用 6.a或b 7.1 8.65,89
三、應用題(第78頁)
1.10 9
2.執行結果:
11
0
0
12
1
5 第4章 順序結構程序設計
一、單項選擇題(第90頁)
1-5.DCDAD 6-10.BACBB
二、填空題(第91頁)
1.一 ;2. 5.169000 3.(1)-2002500 (2)I=-200,j=2500 (3)i=-200
j=2500 4.a=98,b=765.000000,c=4321.000000 5.略 6.0,0,3 7.3 8.scanf("%lf%lf%lf",&a,&b,&c); 9. 13 13.000000,13.000000 10.a=a^c;c=c^a;a=a^c;(這種演算法不破壞b的值,也不用定義中間變數。)
三、編程題(第92頁)
1.仿照教材第27頁例2-1。
2.源程序:
main()
{int h,m;
scanf("%d:%d",&h,&m);
printf("%d\n",h*60+m);}
執行結果:
9:23
563
3.源程序:
main()
{int a[]={-10,0,15,34},i;
for(i=0;i<=3;i++)
printf("%d\370C=%g\370F\t",a[i],a[i]*1.8+32);}
執行結果:
-10℃=14°F 0℃=32°F 15℃=59°F 34℃=93.2°F
4.源程序:
main()
{double pi=3.14159265358979,r=5;
printf("r=%lg A=%.10lf S=%.10lf\n",r,2*pi*r,pi*pi*r);}
執行結果:
r=5 A=31.4159265359 S=49.3480220054
5.源程序:
#include "math.h";
main()
{double a,b,c;
scanf("%lf%lf%lf",&a,&b,&c);
if (a+b>c&&a+c>b&&b+c>a)
{double s=(a+b+c)/2;
printf("SS=%.10lf\n",sqrt(s*(s-a)*(s-b)*(s-c)));}
else printf("Data error!");}
執行結果:
4 5 6
SS=9.9215674165
6.源程序:
main()
{int a=3,b=4,c=5;float d=1.2,e=2.23,f=-43.56;
printf("a=%3d,b=%-4d,c=**%d\nd=%g\ne=%6.2f\nf=%-10.4f**\n",a,b,c,d,e,f);}
7.源程序:
main()
{int a,b,c,m;
scanf("%d %d %d",&a,&b,&c);
m=a;a=b;b=c;c=m;
printf("%d %d %d\n",a,b,c);}
執行結果:
5 6 7
6 7 5
8.源程序:
main()
{int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("average of %d,%d and %d is %.2f\n",a,b,c,(a+b+c)/3.);
執行結果:
6 7 9
average of 6,7 and 9 is 7.33
9.不能。修改後的源程序如下:
main()
{int a,b,c,x,y;
scanf("%d %d %d",&a,&b,&c);
x=a*b;y=x*c;
printf("a=%d,b=%d,c=%d\n",a,b,c);
printf("x=%d,y=%d\n",x,y);}
6 第5章 選擇結構程序設計
一、單項選擇題(第113頁)
1-4.DCBB 5-8.DABD
二、填空題(第115頁)
1.非0 0 2.k==0
3.if (abs(x)>4) printf("%d",x);else printf("error!");
4.if((x>=1&&x<=10||x>=200&&x<=210)&&x&1)printf("%d",x);
5.k=1 (原題最後一行漏了個d,如果認為原題正確,則輸出k=%。)
6. 8! Right!11 7.$$$a=0 8.a=2,b=1
三、編程題(第116頁)
1.有錯。正確的程序如下:
main()
{int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
printf("min=%d\n",a>b?b>c?c:b:a>c?c:a);}
2.源程序:
main()
{unsigned long a;
scanf("%ld",&a);
for(;a;printf("%d",a%10),a/=10);}
執行結果:
12345
54321
3.(1)源程序:
main()
{int x,y;
scanf("%d",&x);
if (x>-5&&x<0)y=x;
if (x>=0&&x<5)y=x-1;
if (x>=5&&x<10)y=x+1;
printf("%d\n",y);}
(2)源程序:
main()
{int x,y;
scanf("%d",&x);
if(x<10) if(x>-5) if(x>=0) if(x>=5)y=x+1;
else y=x-1; else y=x;
printf("%d\n",y);}
(3)源程序:
main()
{int x,y;
scanf("%d",&x);
if(x<10) if(x>=5)y=x+1;
else if(x>=0)y=x-1;
else if(x>-5)y=x;
printf("%d\n",y);}
(4)源程序:
main()
{int x,y;
scanf("%d",&x);
switch(x/5)
{case -1:if(x!=-5)y=x;break;
case 0:y=x-1;break;
case 1:y=x+1;}
printf("%d\n",y);}
4.本題為了避免考慮每月的天數及閏年等問題,故採用面向對象的程序設計。
現給出Delphi源程序和C++ Builder源程序。
Delphi源程序:
procere TForm1.Button1Click(Sender: TObject);
begin
edit3.Text:=format('%.0f天',[strtodate(edit2.text) -strtodate(edit1.text)]);
end;
procere TForm1.FormCreate(Sender: TObject);
begin
Edit2.Text:=datetostr(now);
button1click(form1)
end;
C++ Builder源程序:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit3->Text=IntToStr(StrToDate(Edit2->Text)-StrToDate(Edit1->Text))+"天";
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit2->Text=DateToStr(Now());
Button1Click(Form1);
}
執行結果:(運行於Windows下) http://img378.photo.163.com/nxgt/41463572/1219713927.jpg
5.源程序:
main()
{unsigned a,b,c;
printf("請輸入三個整數:");
scanf("%d %d %d",&a,&b,&c);
if(a&&b&&c&&a==b&&a==c)printf("構成等邊三角形\n");
else if(a+b>c&&a+c>b&&b+c>a)
if(a==b||a==c||b==c)printf("構成等腰三角形\n");
else printf("構成一般三角形\n");
else printf("不能構成三角形\n");}
執行結果:
請輸入三個整數:5 6 5
構成等腰三角形
6.源程序:
main()
{int x,y;
scanf("%d",&x);
if(x<20)y=1;
else switch(x/60)
{case 0:y=x/10;break;
default:y=6;}
printf("x=%d,y=%d\n",x,y);}
7.源程序:
main()
{unsigned m;float n;
scanf("%d",&m);
if(m<100)n=0;
else if(m>600)n=0.06;
else n=(m/100+0.5)/100;
printf("%d %.2f %.2f\n",m,m*(1-n),m*n);}
執行結果:
450
450 429.75 20.25
8. 2171天(起始日期和終止日期均算在內)
本題可利用第4小題編好的程序進行計算。把起始日期和終止日期分別打入「生日」和「今日」欄內,單擊「實足年齡」按鈕,將所得到的天數再加上1天即可。
9.源程序:
#include "math.h";
main()
{unsigned long i;
scanf("%ld",&i);
printf("%ld %d\n",i%10,(int)log10(i)+1);}
執行結果:
99887
7 5
10.源程序:
main()
{unsigned long i;unsigned j[10],m=0;
scanf("%ld",&i);
for(;i;){j[m++]=(i+2)%10;i/=10;}
for(;m;m--)i=i*10+j[m-1];
printf("%ld\n",i);}
執行結果:
6987
8109
(註:要加密的數值不能是0或以0開頭。如果要以0開頭需用字元串而不能是整數。)
7 第6章 循環結構程序設計
一、單項選擇題(第142頁)
1-4.BCCB 5-8.CBCA
二、填空題(第143頁)
1.原題可能有誤。如無誤,是死循環 2.原題有誤。如果把b=1後面的逗號改為分號,則結果是8。 3.20 4.11 5. 2.400000 6.*#*#*#$ 7.8 5 2 8.①d=1.0 ②++k ③k<=n 9.①x>=0 ②x<amin
三、編程題(第145頁)
1. 源程序:
main()
{int i=1,sum=i;
while(i<101){sum+=i=-i-2;sum+=i=-i+2;}
printf("%d\n",sum);}
執行結果:
51
2.源程序:
main()
{double p=0,n=0,f;int i;
for(i=1;i<=10;i++)
{scanf("%lf",&f);
if (f>0)p+=f; else n+=f;}
printf("%lf %lf %lf\n",p,n,p+n);}
3.源程序:
main()
{unsigned a;
scanf("%ld",&a);
for (;a;printf("%d,",a%10),a/=10);
printf("\b \n");}
執行結果:
23456
6,5,4,3,2
4.源程序:
main()
{unsigned long a,b,c,i;
scanf("%ld%ld",&a,&b);
c=a%1000;
for(i=1;i<b;i++)c=c*a%1000;
if(c<100)printf("0");
if(c<10)printf("0");
printf("%ld\n",c);}
執行結果:
129 57
009
5.略
6.原題提供的計算e的公式有誤(前面漏了一項1)。正確的公式是e= 1 + 1 + 1/2! + 1/3! + … + 1/n! + …
(1)源程序:
main()
{double e=1,f=1;int n;
for(n=1;n<=20;n++){f/=n;e+=f;}
printf("e=%.14lf\n",e);}
執行結果:
e=2.71828182845905
(2)源程序:
main()
{double e=1,f=1;int n;
for(n=1;f>1e-4;n++){f/=n;e+=f;}
printf("e=%.4f\n",e);}
執行結果:
e=2.7183
7.源程序:
main()
{unsigned long a=0,b=1,c=0;int i,d;
scanf("%d",&d);
for (i=1;i<=(d+2)/3;i++)
printf("%10ld%10ld%10ld",a,b,(a+=b+c,b+=c+a,c+=a+b));}
本題還可以用遞歸演算法(效率很低),源程序如下:
unsigned long fun(int i)
{return i<=3?i:fun(i-1)+fun(i-2)+fun(i-3);}
main()
{int i,d; scanf("%d",&d);
for(i=1;i<=d;i++)
printf("%10ld",fun(i));}
執行結果:
15
1 2 3 6 11 20 37 68
125 230 423 778 1431 2632 4841
8.源程序:
main()
{int i;
for(i=1010;i<=9876;i+=2)
if(i/100%11&&i%100%11&&i/10%100%11&&i/1000!=i%10&&i/1000!=i/10%10&&i/100%10!=i%10)printf(" %d",i);}
執行結果:
1024 1026 1028 1032 1034 1036 …… …… 9874 9876
9.源程序:
main()
{int i,j,k;
printf("apple watermelon pear\n");
for(i=1;i<=100;i++)
for(j=1;j<=10;j++)
if((k=100-i-j)*2==400-i*4-j*40)
printf("%4d%7d%9d\n",i,j,k);}
執行結果:
apple watermelon pear
5 5 90
24 4 72
43 3 54
62 2 36
81 1 18
10.源程序:
#include "stdio.h";
#define N 4 /* N為階數,可以改為其他正整數 */
main()
{int m=N*2,i,j;
for(i=1;i<m;printf("\n"),i++)
for(j=1;j<m;
putchar(N-abs(i-N)<=abs(j++-N)?' ':'*'));}
如果把N值改為5,則執行結果如下:
*
***
*****
*******
*********
*******
*****
***
*
作者:寧西貫通 2006-5-7 23:41 回復此發言
--------------------------------------------------------------------------------
8 說明
注意:上面最後一題的輸出結果應該是由星號組成的一個菱形,
9 第7章 數 組
一、單項選擇題(第192頁)
1-4.BBCC 5-8.AABA
二、填空題(第194頁)
1.1
2
4
8
16
32
64
128
256
512
2. ①a[age]++ ②i=18;i<26
3. ①break ②i==8
4. ①a[i]>b[j] ②i<3 ③j<5
5. ①b[j]=a[j][0] ②b[j]<a[j][k] 6.a[k++]=a[j]
三、編程題(第196頁)
1.源程序:
main()
{int a[4][4],i,j,s=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(i==j||i+j==3)s+=a[i][j];
printf("%d\n",s);} /* 注:5×5矩陣不能照此計算! */
執行結果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
68
2. 源程序:
main()
{int i,a[36];
a[0]=2;
for(i=1;i<=29;i++)a[i]=a[i-1]+2;
for(;i<=35;i++)a[i]=a[(i-30)*5+2];
for(i=0;i<=35;i++)printf("%d\t",a[i]);}
執行結果:
2 4 6 8 10 12 14 16 18 20
22 24 26 28 30 32 34 36 38 40
42 44 46 48 50 52 54 56 58 60
6 16 26 36 46 56
3. 源程序:
#include "stdlib.h"
#include "time.h"
main()
{int a[30],i,m=0;
randomize();
for(i=0;i<=29;i++)
{a[i]=rand();
if(m<a[i])m=a[i];
printf("%d\t",a[i]);}
for(i=0;i<=29;i++)if(a[i]==m)a[i]=-1;
printf("\n-----------------\n");
for(i=0;i<=29;i++)
if(~a[i])printf("%d\t",a[i]);
printf("\n");}
執行結果:
20679 29377 18589 9034 27083 4959 3438 5241 32278 23344
32499 29305 22340 5927 13031 2161 2583 31855 22977 14283
4851 22038 6992 11394 20887 27381 6293 18347 16414 10210
-----------------
20679 29377 18589 9034 27083 4959 3438 5241 32278 23344
29305 22340 5927 13031 2161 2583 31855 22977 14283 4851
22038 6992 11394 20887 27381 6293 18347 16414 10210
4.源程序:
main()
{int i,n=0,b[16];
scanf("%d",&i);
for(;i;i>>=1)b[n++]=i&1;
for(;n;)printf("%d",b[--n]);}
執行結果:
9876
10011010010100
本題也可以不用數組。源程序如下:
#include "stdio.h"
main()
{int i,n;
scanf("%d",&i);
for(n=16;n;n--)
{asm ROL i,1
putchar(i&1|48);}
} /* ROL是循環左移的匯編指令 */
5. 源程序:
#include "stdlib.h"
#include "time.h"
#define M 5
#define N 6
main()
{int a[M][N],i,j,t[M];
randomize();
/*生成M行N列隨機數*/
for(i=0;i<M;printf("\n"),t[i++]=0)
for(j=0;j<N;j++)
printf("%4d",a[i][j]=random(50));
/*找出每行的最小數,t[M]是第M行的最小數所在的列數*/
for(i=0;i<M;i++)
for(j=0;j<N;j++)
if(a[i][t[i]]>a[i][j])t[i]=j;
/*比較每個最小數在其所在的列上是否也是最小*/
for(j=0;j<M;j++)
for(i=0;i<M;i++)
{if(i==j)continue;
if(a[j][t[j]]>a[i][t[j]])
{t[j]=-1;break;}
}
printf("-------------------\n");
/*輸出在行和列上均為最小的數*/
for(i=0;i<M;i++)
if(t[i]!=-1)
printf("a[%d,%d]=%d\n",i,t[i],a[i][t[i]]);
}
執行結果:
13 19 13 20 0 1
20 41 6 16 35 30
3 5 37 8 23 15
6 36 24 29 18 1
1 5 28 21 46 34
-------------------
a[0,4]=0
a[1,2]=6
a[3,5]=1
a[4,0]=1
6. 源程序:
#include "stdlib.h"
#include "time.h"
#define M 5
#define N 7
main()
{int a[M][N],i,j,t=0;
randomize();
for(i=0;i<M;i++)
{a[i][N-1]=0;
for(j=0;j<N-1;j++)
{printf("%4d",a[i][j]=random(91)+10);
a[i][N-1]+=a[i][j];}
printf("%4d\n",a[i][N-1]);}
for(i=1;i<M;i++)
if(a[i][N-1]>a[t][N-1])t=i;
if(t)for(j=0;j<N;j++)
{i=a[0][j];a[0][j]=a[t][j];a[t][j]=i;}
printf("-----------------\n");
for(i=0;i<M;printf("\n"),i++)
10 第7章 數 組
for(j=0;j<N;j++)
printf("%4d",a[i][j]);
}
執行結果:
89 17 32 95 35 20 288
39 48 22 27 73 22 231
51 87 39 71 84 46 378
84 94 97 77 27 26 405
69 50 56 89 37 46 347
-----------------
84 94 97 77 27 26 405
39 48 22 27 73 22 231
51 87 39 71 84 46 378
89 17 32 95 35 20 288
69 50 56 89 37 46 347
7. 源程序:
#include "stdlib.h"
#include "time.h"
#define M 5
#define N 6
main()
{int a[M][N],i,j;
struct data{int value,x,y;}max,min;
max.value=0;min.value=100;
randomize();
for(i=0;i<M;printf("\n"),i++)
for(j=0;j<N;j++)
{printf("%4d",a[i][j]=random(100)+1);
if(max.value<a[i][j])
{max.value=a[i][j];max.x=i;max.y=j;}
if(min.value>a[i][j])
{min.value=a[i][j];min.x=i;min.y=j;}
}
printf("-----------------\n");
i=a[0][N-1];a[0][N-1]=max.value;a[max.x][max.y]=i;
i=a[M-1][0];a[M-1][0]=min.value;a[min.x][min.y]=i;
for(i=0;i<M;printf("\n"),i++)
for(j=0;j<N;j++)
printf("%4d",a[i][j]);
}
執行結果:
51 53 74 65 30 40
30 26 50 6 61 27
47 16 54 58 76 19
57 74 44 92 71 48
73 57 60 32 73 67
-----------------
51 53 74 65 30 92
30 26 50 73 61 27
47 16 54 58 76 19
57 74 44 40 71 48
6 57 60 32 73 67
9. 源程序:
main()
{char s[255];int i,j,b=1;
printf("Input a string:");
scanf("%s",s);
i=strlen(s);
for(j=1;j<=i/2;j++)
b=b&&(s[j-1]==s[i-j]);
printf(b?"Yes\n":"No\n");}
執行結果:
Input a string:level
Yes
10. 源程序:
main()
{char s[255],t,max=0,min=0,l,i;
printf("Input a string(length>4):");
gets(s);
l=strlen(s);
for(i=0;i<l;i++)
{if(s[max]<s[i])max=i;if(s[min]>s[i])min=i;}
t=s[1];s[1]=s[max];s[max]=t;if(min==1)min=max;
t=s[l-2];s[l-2]=s[min];s[min]=t;
printf("%s\n",s);}
執行結果:
Input a string(length>4):C++Builder
Cu+Beild+r
11. 源程序:
main()
{char m[13][10]={"****","January","February","March",
"April","May","June","July","August","September",
"October","November","December"};
int i,j,k,a,s,n;
printf("Please input an integer(100..999):");
scanf("%d",&n);
printf("%d:%d+%d+%d=%d, %d%%13=%d, %s\n", n,i,j,k,s,s,a,m[a=((s=(i=n/100)+(j=n/10%10)+(k=n%10))%13)]);}
執行結果:
Please input an integer(100..999):539
539:5+3+9=17, 17%13=4, April
11 第8章 函 數
一、單項選擇題(第241頁)
1-5.BCCAA 6-10.CCDDD 11-15.ACACB
二、填空題(第243頁)
1.看不出原題的意圖。因為要計算1~n的累加和,n應是一個≥1的正整數。可是題目中卻出現了n=0的情況。除非另加規定當n=0時1~n的累加和為0,或者把原題中的計算式改為計算0~n的累加和。據此猜測,原題應填為:①return(0) ②return(n+sum(n-1))
根據題意,如下程序較為合理:
int sum(int n)
{if(n<=0)return(-1); /* -1是出錯標志 */
else if(n==1)return(1);
else return(n+sum(n-1));}
2. ①return(1) ②return(n*facto(n-1))
三、編程題(第244頁)
3.源程序:
main()
{int i,a,b,c;
for(i=100;i<999;i++)
if((a=i/100)*a*a+(b=i/10%10)*b*b+(c=i%10)*c*c==i)
printf("%d\t",i);}
執行結果:
153 370 371 407
8.源程序(非遞歸演算法):
#define P 13 /* P可以改為其他正整數 */
main()
{int a[P],r,c;
for(r=0;r<=P;r++)
{a[r]=1;
for(c=r-1;c>=1;a[c--]+=a[c-1]);
printf("%*d",(P-r)*3+1,a[0]);
for(c=1;c<=r;printf("%6d",a[c++]));
printf("\n");}
}
執行結果:
(應該排列成一個三角形,是貼吧造成現在這個樣子的,不是程序有問題)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1
1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
9.源程序(遞歸演算法):
#include "stdio.h"
void printOCT(unsigned long n)
{unsigned long i;
if(i=n>>3)printOCT(i);
putchar((n&7)+48);}
main()
{unsigned long i;
scanf("%ld",&i);
printOCT(i);}
執行結果:
1234567890
11145401322
本題也可以不用遞歸演算法,源程序請參考第7章第三題4。
12 回復:【C語言】《C語言程序設計教程(第二版)》習題答案
但是不同時間印刷的版本課後題不太一樣呢,象我們的是1999年12月第2版,2005年12月第69次印刷的。沒有選擇填空,應用題和樓主不知道有多少相同的,因為看不到原題。這個比較麻煩呢。
作者:210.77.204.* 2006-5-9 18:38 回復此發言
--------------------------------------------------------------------------------
13 回復:【C語言】《C語言程序設計教程(第二版)》習題答案
你對照一下主編和出版社,看看對嗎?(見說明的第一條。)
我不是說叫你有問題另發帖子嗎?
14 第9章 指 針
一、單項選擇題(第276頁)
1-5.DCDAC 6-10.CCABC 11-16.AABBB 16-20.DCDBD
二、填空題(第278頁)
1.①int * ②*z
2.*p++
3.①'\0' ②++
4.①q=p+1 ②q<p+10 ③*q>max ④*q<min
三、編程題(第280頁)
7.源程序:
main()
{int i=0;char c[20];
do{scanf("%s",&c);i++;}
while(strcmp(c,"stop"));
printf("%d\n",i);}
執行結果:
This car ran form Nanyang
to Luoyang without a stop
10
9.源程序:
main()
{char s[255],c[255]={0};int i;
gets(s);
for(i=0;s[i];c[s[i++]]++);
for(i=0;i<255;i++)
if(c[i])printf("%c=%d\t",i,c[i]);}
執行結果:
abcedabcdcd
a=2 b=2 c=3 d=3 e=1
C. c語言,程序設計題,如圖
c 語言程序設計練習題 c 語言程序設計練習題 篇一:c 語言程序設計基礎單元總結與練習題及答案 答案 單元一程序設計宏觀認識 單元總結提升 本...
D. c語言題,急求大神給我答案
做好了,功能包括學生信息添加,學生信息顯示,按總體成績排序,學號查詢。數據保存在程序目錄下的yh.txt中,請在程序開始前在程序目錄下建立一個空白文本文件yh.txt。不要手動輸入數據,用程序輸入,不然除非按照我寫的格式一點不差的准確輸入,否則亂碼。程序會根據功能不同使用不同的窗口大小。默認最新加入的學生信息在顯示界面會顯示在最上方。
#include<stdio.h>
#include<windows.h>
#include<string.h>
typedef struct student
{
char name[12];
char sex[4];
char birth[40];
int clas;
int stunum;
int age;
int chinese;
int math;
int english;
int aver;
struct student *next;
}stu,*stur;
//讀取信息並創建鏈表
void CreateList(stur &L)
{
FILE *fp;
stu *p;
L=(stur)malloc(sizeof(stu));
L->next=NULL;
if((fp=fopen("yh.txt","r"))==NULL)
{
printf("打開文件失敗! ");
exit(1);
}
while(!feof(fp))
{
p=(stur)malloc(sizeof(stu));
fscanf(fp,"%s",p->name);
fscanf(fp,"%s",p->sex);
fscanf(fp,"%s",p->birth);
fscanf(fp,"%d",&p->clas);
fscanf(fp,"%d",&p->stunum);
fscanf(fp,"%d",&p->age);
fscanf(fp,"%d",&p->chinese);
fscanf(fp,"%d",&p->math);
fscanf(fp,"%d",&p->english);
p->aver=(p->chinese+p->english+p->math)/3;
p->next=L->next;
L->next=p;
}
printf("讀入數據成功! ");
system("pause");
}
void PList(stur &L) //列印
{
system("mode con cols=90 lines=50"); //擴大窗口
stu *p;
p=L->next;
if(p->age<0)
{
printf("沒有數據! ");
return;
}
printf(" 姓名 | 性別 | 生日 | 班級 | 學號 | 年齡 | 語文 | 數學 | 英語 | ");
while(p)
{
printf("%6s |%6s |%9s|%6d |%6d |%6d |%6d |%6d |%6d | ",p->name,p->sex,p->birth,p->clas,p->stunum,p->age,p->chinese,p->math,p->english);
p=p->next;
}
printf(" ");
}
void ListInsert(stur &L) //插入元素並寫入文件
{
system("mode con cols=100 lines=10"); //擴大窗口
stur p,s;
FILE *fp;
p=L;
printf("執行添加操作,輸入姓名,性別,生日,班級,學號,年齡,語文成績,數學成績,英語成績 (如:yh1 女 16 2000.1.12 110203 110203056 100 100 90): ");
s=(stur)malloc(sizeof(stu));
scanf("%s",s->name);
getchar();
scanf("%s",s->sex);
getchar();
scanf("%s %d %d %d %d %d %d",s->birth,&s->clas,&s->stunum,&s->age,&s->chinese,&s->math,&s->english);
s->aver=(s->chinese+s->english+s->math)/3;
if((fp=fopen("yh.txt","at+"))==NULL)
{
printf("文件打開失敗! ");
exit(1);
}
fprintf(fp,"%s %s %s %d %d %d %d %d %d",s->name,s->sex,s->birth,s->clas,s->stunum,s->age,s->chinese,s->math,s->english);
fclose(fp);
s->next=p->next;
p->next=s;
printf("已更新數據! ");
}
void CList(stur &L) //排序
{
stu *p,*temp1,*temp2,*temp3;
int flag;
p=L;
while(1)
{
flag=0;
for(p=L;p->next->next!=NULL;p=p->next)
{
if(p->next->aver>p->next->next->aver)
{
temp1=p->next;
temp2=p->next->next;
temp3=p->next->next->next;
p->next=temp2;
temp2->next=temp1;
temp1->next=temp3;
}
}
if(flag==0)
{
printf("排序成功! ");
return;
}
}
}
void searchL(stur &L) //單向鏈表查詢只能一個一個排查
{
int key;
printf("輸入學號! ");
scanf("%d",&key);
stu *p;
p=L;
while(p)
{
if(p->stunum==key)
{
system("mode con cols=100 lines=10"); //擴大窗口
printf("查詢成功! ");
printf(" 姓名 | 性別 | 生日 | 班級 | 學號 | 年齡 | 語文 | 數學 | 英語 | ");
printf("%6s |%6s |%9s|%6d |%6d |%6d |%6d |%6d |%6d | ",p->name,p->sex,p->birth,p->clas,p->stunum,p->age,p->chinese,p->math,p->english);
return;
}
p=p->next;
}
printf("查無此人! ");
return;
}
void main()
{
char ch;
stur L;
printf("讀取中,請稍候…… "); //如果讀入數據不是非常多就刪除它吧
CreateList(L);
while(1)
{
system("mode con cols=60 lines=10"); //縮小窗口
printf("***********************功能導航主頁面*********************** ");
printf("1.添加學員信息 2.察看學員信息 3.按學員總體成績排序 4.按學號查詢 5.退出 ");
scanf("%c",&ch);
switch(ch)
{
case '1':
ListInsert(L);
getchar();
system("pause");
system("cls");
break;
case '2':
PList(L);
getchar();
system("pause");
system("cls");
break;
case '3':
CList(L);
getchar();
system("pause");
system("cls");
break;
case '4':
system("cls");
searchL(L);
getchar();
system("pause");
system("cls");
break;
case '5':
system("cls");
printf("已退出,期待你的下次使用! ");
return;
default:
printf("錯誤的指令! ");
getchar();
system("cls");
system("pause");
break;
}
}
}
E. 7道C語言編程題,急求答案
#include <stdio.h>
void main()
{
int i,j;
int sum=0; //定義對角線的和
int a[100][100],n;
printf("輸入是n*n矩陣的n值:");
scanf("%d",&n);
printf("輸入一個%d*%d矩陣:",n,n);
printf("\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]); //按矩陣格式輸入
}
for(i=0;i<n;i++)
{
sum=sum+a[i][i]; //求出對角線數之和
}
printf("矩陣對角線之和為: %d\n",sum);
}
F. 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】;
}
G. c語言,求答案,以及解釋
28、ADD(2,2+3)替換為2*2+3所以為7
29 D r+是可讀寫模式
30 A p是一個指針,指向a[2],取指針的值就是(*p)
H. 急求計算機文化基礎課程習題答案,在線等!!!
答案都在這里,請自己找下。你們老師可能選擇了其中的一部分題目。
習題一
1.1選擇題
1. 最早的計算機是用來進行( )的。
A) 科學計算 B) 系統模擬 C) 自動控制 D) 信息處理
2. 在計算機中採用二進制是因為( )。
A) 電子元件只有兩個狀態 B) 二進制的運算能力強
C) 二進制的運算規則簡單 D) 以上三個原因
3. 下面有關計算機的敘述中,( )是正確的。
A) 計算機的主機包括 CPU 、內存儲器和硬碟三部分
B) 計算機程序必須裝載到內存中才能執行
C) 計算機必須具有硬碟才能工作
D) 計算機鍵盤上字母鍵的排列方式是隨機的
4. Pentium Ⅳ 2.8 微機型號中的2.8 與( )有關。
A) 顯示器的類型 B) CPU 的速度 C) 內存容量 D) 磁碟容量
5. CPU 中的( )可存放少量數據。
A) 存儲器 B) 輔助存儲器 C)寄存器 D) 只讀存儲器
6. 如果一個微處理器有12條地址匯流排, 那麼它所能訪問的存儲器的最大容量為( )位元組。
A)12K B)12M C)4K D)1M
7. 內存儲器的基本存儲單位是 ( ) 。
A) 比特(bit) B) 位元組(byte) C) 字(word) D) 字元(character)
8. 內存儲器中的每個存儲單元都被賦予一個惟一的序號, 稱為( )。
A) 單元號 B) 下標 C) 編號 D) 地址
9. 軟盤磁軌的編號是按從小到大的順序( )進行的。
A) 從兩邊向中間 B) 視軟盤而定 C) 從外向內 D) 從內向外
10. 顯示器的( )越高, 顯示的圖像越清晰。
A) 對比度 B) 亮度 C)對比度和亮度 D) 解析度
11. 下列數中最小的一個是( )。
A)10OB B)8 C)12H D)11O
12. 最大的15位二進制數換算成十進制數是( )。
A)65535 B)255 C)32767 D)1024
13. 最大的15位二進制數換算成十六進制數是( )。
A)FFFFH B)3FFFH C)7FFFH D)OFFFH
14. 已知小寫字母的ASCII 碼值比大寫字母大32, 大寫字母 A 的 ASCII 碼為十進制數65, 則小寫字母 d 的 ASCII 碼是二進制數( )。
A)110010O B)1000100 C)1000111 D)1110111
15. 下面有關計算機漢字處理的敘述中,( )是不正確的。
A) 國家標准 GB2312-80中, 共收集了6763個漢字
B) 通常漢字內碼在微機系統中占兩個位元組
C) 漢字型檔也可存放在軟磁碟上
D) 漢字擴展內碼規范中, 共收集了16763個漢字
16. 下面有關計算機操作系統的敘述中,( )是正確的。
A) 操作系統是計算機的操作規范
B) 操作系統是使計算機便於操作的硬體
C) 操作系統是便於操作的計算機系統
D) 操作系統是管理系統資源的軟體
17. 下面有關計算機操作系統的敘述中,( )是不正確的。
A) 操作系統屬於系統軟體
B) 操作系統只負責管理內存儲器, 而不管理外存儲器
C) UNIX ,Windows 2000 屬於操作系統
D) 計算機的內存、I/O 設備等硬體資源也由操作系統管理
18. 計算機能直接執行的程序設計語言是 ( ) 。
A)C B)BASIC C) 匯編語言 D) 機器語言
19. 為把 C 語言源程序轉換為計算機能夠執行的程序, 需要( )。
A) 編譯程序 B) 匯編程序 C) 解釋程序 D) 編輯程序
20. 下面各種軟體系統中, ( )是資料庫管理系統。
A) Word B) AutoCAD C) Oracle D)UNIX
21. 完整的計算機系統是由( )組成的。
A) 主機和外設系統 B) 硬體和軟體系統
C) 馮·諾依曼和非馮·諾依曼系統 D)Windows 系統和 UNIX 系統
22. ( )是生產活動現代化的一個具體的體現。
A) 虛擬現實 B)CAD C) 並行工程 D) 計算機網路
23. ( ) 軟體不受版權保護。
A) 免費 B) 商業 C) 共享 D) 自由
24. 任何人都可以取得、修改和重新發布( ) 軟體的源代碼。A) 免費 B) 商業 C) 共享 D) 自由
25. 激光列印機是( )式列印機。
A) 頁 B) 字元式 C) 行 D) 針
26. 下面有關計算機病毒的敘述中, ( ) 是不正確的。
A) 計算機病毒也是程序
B) 將軟碟片格式化可以清除病毒
C) 有些病毒可以寫入貼上了防寫標簽的軟碟片
D) 現在的微機經常是帶病毒運行的
1.2填空題
1. ROM、 DBMS的中文名稱分別是( )和( )。
2. lM 位元組 =( )K 位元組 =( ) 位元組。
3. 15=( )B =( )H 。
4. 標准 ASCII 碼採用( )位二進制編碼。漢字機內碼是將GB2312-80 中規定的漢字國標碼的每個位元組的最高位置( )得到的, 例如, 漢字「大」字, 國標碼為3473H,則機內碼為( )。真彩色是指用( )位二進制編碼來表示一個像素。
5. GB18030 是( )的擴展, 採用( )混合編碼。
6. CD-ROM 盤通過( )記錄信息, 與普通 VCD 唱盤的方式( )。
7. 地址匯流排的位數決定了計算機的( ), 數據匯流排的寬度決定了計算機的( ) 。
8. 功能最強的計算機是( )計算機。規模最小的計算機是( )計算機。存儲器、CPU 和輸入輸出介面集成在一起, 稱為( )計算機。
9. 一個硬碟中共有16個盤面, 每個盤面上有2100 個磁軌, 每個磁軌分為 63 個扇 區, 每個扇區的存儲容量為 512 位元組 , 則該盤有( )個磁頭、( )個柱面, 它的存儲容量是( )MB, 即 ( )GB 。
10. 磁碟讀寫動作過程分為( )、( )和( )三個階段。
11. 一個扇區的位置(稱為地址)是由它所在的( )編號、( )編號和扇區在( )中的位置編號三者共同確定的。
12. 計算機的運算速度用每秒鍾所能執行的( )數表示, 單位是( ) 。
13.( ) 插槽比較粗大, 目前主要用於連接低速外設;( )插槽接線細密, 適用於連接高速設備。
14. 軟體從( )之日起便享有版權, 從( )之日起便實際受到保護。( )軟體不受版權保護。
15. 軟體版權人依法享有( )權和( )權。
1.3判斷題
1. 機箱內的設備是主機, 機箱外的設備是外設。
2. MIPS 表示的是主機的類型。
3. 計算機內存的基本存儲單位是比特。
4. 計算機程序必須裝載到內存中才能執行。
5. 自由軟體允許用戶進行修改, 而共享軟體卻不一定。
6. 數據匯流排的寬度決定了內存一次能夠讀出的相鄰地址單元數。
7. 每個漢字的字模碼都用兩個位元組存儲。
8. 不同 CPU 的計算機有不同的機器語言和匯編語言。
9. 微型計算機就是個人計算機。
10. 外存上的信息可直接進入 CPU 進行處理。
11. 操作系統只負責管理內存儲器, 而不管理外存儲器。
12. C 語言是一種面向對象的程序設計語言。
13. 一個磁碟上各個扇區的長度可以不等, 但存儲的信息量相同。
14. 計算機鍵盤上字母鍵的排列方式是保證錄入速度的最佳方式。
15. 顯示器的解析度不但取決於顯示器, 也取決於配套的顯示器適配器。
16. 開機時先開顯示器後開主機電源, 關機時先關主機後關顯示器電源。
習題二
2.1 選擇題
1. 下面幾種操作系統中 , 不是網路操作系統。
A)MS-DOS B)Windows 2000 C)LinuX D)UNIX
2. 下面有關 Windows 系統的敘述中, 正確的是 。
A) Windows 文件夾與 DOS 目錄的功能完全相同
B) 在 Windows 環境中 , 安裝一個設備驅動程序 , 必須重新啟動後才起作用
C) 在 Windows 環境中 , 一個程序沒有運行結束就不能啟動另外的程序
D) Windows 是一種多任務操作系統
3. 對話框和窗口的區別是: 對話框 。
A) 標題欄下面有菜單 B) 標題欄上無最小化按鈕
C) 可以縮小 D) 單擊最大化按鈕可放大到整個屏幕
4. 在 Windows 中 , 一個項目通常是給該項目作標記 , 使之突出顯示。
A) 選擇 B) 選定 C)單擊 D) 雙擊
5. 在 Windows 中 , 一個項目導致一個動作。
A) 選擇 B) 選定 C) 單擊 D) 雙擊
6. Windows 操作具有 的特點。
A) 先選擇操作對象 , 再選擇操作項
B) 先選擇操作項 , 再選擇操作對象
C) 同時選擇操作對象和操作項
D) 把操作項拖到操作對象上
7. 按 鍵可以在己打開的幾個應用程序之間切換。
A)Alt+Esc B)Alt+Shift C)Ctrl+Esc D)Ctrl+Tab
8. 啟動盤的文件夾中有一個 文件夾 , Windows 啟動時自動啟動其中的文檔、應用程序和快捷方式。
A) 啟動 B) 程序 C)附件 D) 運行
9. 選擇了 項之後 , 用戶就不能再自行移動桌面上的圖標了。
A) 自動排列 B) 按類型排列 C) 平鋪 D) 層疊
10. 如果一個窗口右下角有三條斜線組成的標志 , 則 。
A) 按住這個標志就可以把窗口最小化成任務欄上的一個按鈕
B) 說明該窗口不能最小化成任務欄上的一個按鈕
C) 說明該窗口不是最大化的
D) 這個標志只是一種裝飾
11. "資源管理器" 中 "文件" 菜單的 "復制" 選項可以用來復制 。
A) 菜單項 B) 文件夾 C) 窗口 D) 對話框
12. 下面有關 Windows 幫助系統的敘述中 , 是正確的。
A) "Windows 幫助" 對話框中的 "目錄" 選項卡以字母順序排列各幫助主題
B) 無論以哪種方式選擇幫助主題 , 信息都要顯示在幫助窗口中
C) " 這是什麼 ?" 的幫助形式是選擇幫助主題的一種快捷方式
D) 右擊某個幫助主題 , 選擇 " 這是什麼 ?" 菜單項 , 即可顯示幫助信息
13. Windows 中的文檔是指 。
A) Windows 中的所有文件
B) 構成 Windows 操作系統的一系列文件
C) Windows 中的應用程序文件
D) 應用程序所生成的文件
14. 下面有關計算機漢字處理的敘述中 , 是不正確的。
A) 漢字擴展內碼規范 GBK 中 , 共收集了 6763 個漢字
B) 所謂漢字型檔就是漢字字模碼的集合
C) 漢字型檔也可存放在軟磁碟上
D) 一個漢字字模碼占兩個位元組
15. 在下列漢字輸入法中 , 輸入法是根據漢字的結構來輸入漢字的。
A) 電報碼 B) 五筆字型 C) 區位碼 D) 雙拼雙音
2.2 填空題
1. MS-DOS 是一種 用戶、 任務的操作系統。
2.在當前目錄下建立USER子目錄的DOS命令是 ,將當前系統提示符 C> 變為C:\ >的DOS命令是 。
3. 用戶從鍵盤上輸入的漢字編碼稱為 碼 , 漢字在計算機內部存儲和處理的表示形式稱為 碼 ,1 個 碼採用 2 個位元組表示 , 且每個位元組最高位為 "1", 以區別於 ASCII 碼。
4. 在 Windows 菜單命令中 , 有些命令是暗淡顯示的 , 說明該命令 ;有些命令後有 "▲" 符號 , 說明該命令 ;有些命令後有 " … " 符號 , 說明該命令 。
5. 資源管理器和 "我的電腦" 窗口的不同之處是: 資源管理器永遠在同一個窗口中瀏覽文件和文件夾 , 而 " 我的電腦 " 則可以為每個文件 ;資源管理器中可以使用左邊的文件夾列表選擇瀏覽那個文件夾 , 而 "我的電腦" 。
6. 在 Windows 中 , 把活動窗口或對話框復制到剪貼板上 , 可按 鍵。
7. 刪除文件時, 如果不想把文件移入回收站, 可先選擇要刪除的文件, 右鍵單擊這些文件, 再按住 鍵不放, 則選擇 "刪除" 命令就可以刪除該文件。如果使用鍵盤, 則在按住 鍵的同時, 按鍵 即可。
8. 利用控制面板進行設置: 在 5 分鍾內如果不按鍵也未移動滑鼠 , 就以 "飛行 Windows" 窗口進行屏幕保護。設置的過程是: 打開 窗口 , 選擇 對象 , 選擇 對話框的 選項卡 , 在 下拉列表框選擇 "飛行 Windows",在數字框選擇 5, 按 按鈕。
2.3 判斷題
1. 操作系統管理計算機的所有硬體資源 , 處理機也是在操作系統的完全控制下工作的。
2. LinuX 發行版的發行商擁有其發行版中所有軟體模塊的版權。
3. 沒有滑鼠就無法操作 Windows 。
4. 利用 Windows 的安全啟動模式可以解決啟動時的一些問題。
5. Windows 的對話框和窗口只有個體的差異 , 而沒有本質的區別。
6. Windows 工作的每個時刻 , 桌面上總有一個對象處於活動狀態。
7. 要找到一個打開的、被縮小的窗口的惟一辦法就是尋找任務欄上的按鈕。
8.Windows系統的幫助功能都是通過幫助窗口提供的。
習題一 參考答案
選擇題參考答案
1.A 2.D 3.B 4.B 5.C 6.C 7.B 8.D 9.C 10.D 11.A 12.C 13.C 14.A 15.D 16.D 17.B 18.D 19.A 20.C 21.B 22.C 23.A 24.D 25.A 26.C
填空題參考答案
1. 只讀存儲器 資料庫管理系統 通用公共許可證 2.1024 1024 × 1024 3.1111 F
4. 7 1 B4F3H 24 5. GB2312-80 1/2/4 位 6. 壓制的凹坑 相同
7. 內存容量 一次所能傳輸的二進制位數 8. 巨型 單片 單片
9. 16 2100 1034 1 10. 找磁軌 找扇區 讀寫
11. 柱面 盤面 磁軌 12. 百萬條指令 MIPS 13.ISA PCI
14. 完成 發表 公用 15. 支配 享受報酬
判斷題參考答案
1.× 2.× 3.√ 4.√ 5.√ 6.√ 7.× 8.√ 9.× 10.× 11.× 12.× 13.√ 14.× 15.√ 16.√
習題二 參考答案
選擇題參考答案
1.A 2.D 3.B 4.B 5.A 6.A 7.A 8.A 9.A 10.C 11.B 12.B 13.D 14.D 15.B
填空題參考答案
1. 單 單 2. CD USER,PROMPT$P$G 3. 外 內 內 4. 不可用 有下拉子菜單 有對話框 5. 設置不同的窗口 不行 6. Alt PrintScreen 7.Shift Shift Del 8. 控制面板 顯示 顯示屬性 屏幕保護程序 屏幕保護程序 等待 確定
判斷題參考答案
1.× 2.× 3.× 4.√ 5.× 6.√ 7.√ 8.×
I. 求c語言程序設計第三版和c語言程序設計實驗與習題指導答案
c語言程序設計第三版指導答案
附錄F課後題參考答案
習題1
1.1填空題
1.函數
2.主函數main();主函數main()3.主函數main()4.函數首部;函數體5.{;}
6.順序結構;選擇結構;循環結構7..c;.obj;.exe
1.2思考題
1.答:結構化程序設計是指,為使程序具有一個合理的結構以保證程序正確性而規定的一套如何進行程序設計的原則。順序結構,選擇結構,循環結構
2.答:演算法是對具體問題求解步驟的一種描述。計算機演算法的表達工具通常採用以下幾種方法:①用自然語言表示演算法;②用流程圖表示演算法;③用偽代碼表示演算法;④用程序設計語言表示演算法。
3.略4.略5.略1.3編程題1.答:
#include"stdio.h"main()
{floata=10,b=20,h=5,s;s=(a+b)*h/2;
printf("s=%f",s);}
2.答:
#include"stdio.h"
main()
{printf("******************************");printf("*helloworld*");printf("******************************");}
習題2
2.1單選題
DBDCADCABBCA
2.2填空題
1.2.000000
2.1;0.500000
3.9;24.65.100;d6.(1)20
(2)0
(3)607.(1)10;6;4
(2)6;9;15
(3)3;60;83
8.55或'7'
9.x=4;y=6;z=3;m=463
2.3改錯題(略)
習題3
3.1單選題
BDABCADCACBBA
3.2填空題
1.32.2613.10
4.2,1;互換a,b的值5.6.66.0037.7
8.5.0,4,c=3<Enter>
9.i=10,j=20<Enter>
10.(1)65(2)65,A(3)3.14,123.46
(4)3.141600e+000,1.234560e+002(5)8765.432100(6)8.765432e+003
11.a=2b=5x=8.8y=76.34c1=65c2=9712.%d/%d;%d/%d=%.2f
3.3改錯題(略)3.4編程題
1.答:
#include"stdio.h"main(){
intx,y;
scanf("%d%d",&x,&y);printf(" x y ");
printf("十進制數 %d %d ",x,y);printf("八進制數 %o %o ",x,y);printf("十六進制數 %X %x ",x,y);}
2.答:
#include"stdio.h"main(){
charch;
printf("請輸入一個大寫英文字母");scanf("%c",&ch);
printf("大寫英文字母是%c ",ch);printf("它的前導字元是%c ",ch-1);printf("它的後續字元是%c ",ch+1);}
3.答:
#include"stdio.h"main(){
intx,a,b,c,y;
printf("請輸入一個三位整數 ");scanf("%d",&x);a=x/100;
b=(x-a*100)/10;c=x%10;
y=c*100+b*10+a;
printf("反向輸出該整數:%d ",y);}}
4.答:
#include"stdio.h"main()
{inthour;
doublesalary,salaryday;
scanf("%d,%lf",&hour,&salaryday);
salary=hour*salaryday-hour*salaryday*0.1;
printf("%8.2lf ",salary);}
5.答:
#include"stdio.h"main(){
inta,b,c,t;
printf("請輸入三個整數 ");scanf("%d%d%d",&a,&b,&c);
printf("交換前a=%d,b=%d,c=%d ",a,b,c);t=a;a=c;c=b;b=t;
printf("交換後a=%d,b=%d,c=%d ",a,b,c);}
習題4
4.1單選題
BADDDACBBBBA
4.2填空題
1.1
2.(1)a>0||b>0
(2)x>0&&x<=10(3)a==1.5&&b==1.5&&c==1.5
(4)p<a||p<b||p<c
3.(1)0(2)1(3)1(4)0(5)1
4.c=15.-46.17.5,0,38.59.123
10.(cvb=='y'||cvb=='Y')&&(work>=3||college=='y'||college=='Y')&&age<=35
4.3改錯題(略)4.4編程題
1.答
#include"stdio.h"
#include"math.h"main(){
doublea,b,c,p,area;
scanf("%lf%lf%lf",&a,&b,&c);
printf("三角形的三邊為:%.llf,%.1lf,%.1lf ",a,b,c);if(a+b>c&&a+c>b&&b+c>a){p=(a+b+c)/2;
area=sqrt(p*(p-a)*(p-b)*(p-c));
printf("三角形的面積為%.2lf ",area);}else
printf("不能構成三角形 ");}
2.答:
#include"stdio.h"main()
{intx,y;
scanf("%d,%d",&x,&y);if(x*x+y*y>1000)
printf("%d ",(x*x+y*y)/100);else
printf("%d ",x+y);}
3.答:
#include"stdio.h"#include"math.h"main()
{doublex,y;
scanf("%lf",&x);if(x<-2)y=x*x-sin(x);elseif(x<=2)y=pow(2,x)+x;elsey=sqrt(x*x+x+1);
printf("x=%.2lfy=%.2lf ",x,y);}
4.答:
#include"stdio.h"main()
{longge,shi,qian,wan,x;scanf("%ld",&x);wan=x/10000;
qian=x%10000/1000;shi=x%100/10;
ge=x%10;
if(ge==wan&&shi==qian)/*個位等於萬位並且十位等於千位*/printf("thisnumberisahuiwen ");else
printf("thisnumberisnotahuiwen ");
}
5.答:
#include"stdio.h"main()
{floatp,w,s,d,f;
scanf("%f,%,%f",p,s,w);if(s>3000)d=0.15elseif(s>=2000)d=0.1;elseif(s>=1000)d=0.08;elseif(s>=500)d=0.05;elseif(s>=250)d=0.02;elsed=0f=p*w*s*(1-d);printf("%f",f);}
6.答:
#include"stdio.h"main()
{intyear,money;charx;
printf("是否是本公司產品(y/n):");scanf("%c",&x);
if(x=='y'||x=='Y')
{printf("產品使用的年限:");scanf("%d",&year);
if(year<=1)money=0;
elseif(year<8)money=50;elsemoney=100;
printf("產品保修額是:%d ",money);
}
else
{money=200;
printf("不是本公司產品,產品保修額是:%d ",money);}}
7.答:
#include"stdio.h"main()
{intmoney,num1,num2;
printf("請輸入取款額(≤2000):");scanf("%d",&money);
if(money>2000)printf("請輸入取款額數≤2000! ");elseif(money%50==0){num1=money/100;num2=(money-num1*100)/50;printf("需支付100元:%d張 ",num1);printf("需支付50元:%d張 ",num2);}elseprintf("輸入錢數必須是50的倍數! ");}
習題5
5.1單選題
CDABAABDDBDBCB
5.2填空題
1.202.333
3.(1)i<10或i<=9(2)j%3!=0
4.(1)flag*(float)k/(k+1)或1.0*flag*k/(k+1)(2)flag=-flag5.(1)max=x
(2)x!=-1(3)scanf("%d",&x)
6.(1)x<=9或x<10
(2)y=9-x
5.3改錯題(略)5.4編程題
1.答:
(1)for循環,其他略
#include"stdio.h"
main()
{inti,s=0;
for(i=1;i<=100;i++)s+=i*i;
printf("%d ",s);}
(2)for循環,其他略
#include"stdio.h"main()
{inti=1,p=1;doubles=1;do{
s+=1.0/p;p*=++i;
}while(1.0/p>1e-6);printf("%lf",s);}
2.答:
#include"stdio.h"main()
{intm,n,t,a,b;
scanf("%d,%d",&m,&n)if(m<n)
{t=mm=nn=t}a=m;b=n;t=m%nwhile(t)
{m=nn=tt=m%n;}printf("%d",n);}
3.答:
#include"stdio.h"main()
{intx,y,s=1;
scanf("%d,%d",&x,&y)for(y>0y--)s*=x
printf("%d,%d,%d ",s%10,s/10%10,s/100%10);}
4.答:
#include"stdio.h"main()
{intx,y,z;
for(x=1x<20x++)for(y=1y<33y++){z=100-x-y
if((z%3)==0&&(5*x+3*y+z/3)==100)printf("x=%d,y=%d,z=%d ",x,y,z)}}
5.答:(a)
#include"stdio.h"main()
{intj,k
for(j=1j<=4j++)
{for(k=1;k<=4-j;k++)printf("");printf("****")printf(" ")}}
(b)
#include"stdio.h"main()
{intj,k
for(j=1j<=4j++)
{for(k=1;k<=4-j;k++)printf("");for(k=1k<=2*j-1k++)printf("*")printf(" ")}}
6.答:
程序分析:利用for循環控制在100~999之間,對每個數分解出個位、十位、百位。
#include<stdio.h>main(){inti,j,k,n;printf("waterflower'numberis:");for(n=100;n<1000;n++){i=n/100;/*分解出百位*/j=n/10%10;/*分解出十位*/k=n%10;/*分解出個位*/if(n==i*i*i+j*j*j+k*k*k){printf("%-5d",n);}}printf(" ");}
7.答:
#include<stdio.h>main(){intx;for(x=1000;x>=3;x--)if(x%3==1&&x%5==2&&x%7==3){
printf("該校的學生人數是:%d人 ",x);break;}}
8.答:
#include<stdio.h>main(){intx=12,i=1;while(1)
{if((x+20+i)==2*(x+i))break;i++;}printf("小明母親在%d年後比小明的年齡大一倍 ",i);printf("那時小明年齡是:%d歲,小明母親年齡是:%d歲 ",x+i,x+20+i);}
習題6
6.1單選題
DBCCBBDC
C語言程序設計教程(第3版)
278
6.2填空題
1.c2.603.1000104.16
6.3編程題
1.答:
#include"stdio.h"#include"math.h"
#defineF(a)a*a+sqrt(3*a*a+2*a+1)main()
{floatx,f;
scanf("%f",&x);
f=4.5/F(exp(x))+F(cos(x))+F(sqrt(x))/F(x*x)printf("%f ",f);}
習題7
7.1單選題
BCADACCCDABCBDB
7.2填空題
1.(1)2345(2)10010(3)QuickC
(4)1000001000001000001000001(5)Language
(6)LanguageProgramming2.(1)j+=2(2)a[i]>a[j]3.(1)i=1(2)x[i-1]
7.3改錯題(略)7.4編程題
1.答:
#defineN10
#include"stdio.h"main()
{inta[N]={1,2,3,4,5,6,7,8,9,10,osum=0,qsum=0,j;for(j=0;j<10;j++)
if(j%2)qsum+=a[j];
elseosum+=a[j];
printf("osum=%d,qsum=%d ",osum,qsum);}
2.答:
#defineN10
#include"stdio.h"main()
{inta[N]={10,20,30,40,50,60,70,80,90},j,k,x;scanf("%d",&x);for(j=0;j<N;j++)
if(x<a[j])break;if(j==N)a[N-1]=x;else
{for(k=N-1;k>j;k--)a[k]=a[k-1];a[j]=x;}
for(j=0;j<N;j++)
printf("%d",a[j]);}
3.答:
#defineM3
#include"stdio.h"main()
{inta[M][M]={{1,2,3},{2,4,5},{3,5,6}},j,k,flag=1;;for(j=0;j<M;j++)
for(k=0;k<M;k++)if(a[j][k]!=a[k][j]){flag=0;break;}if(flag)printf("ok");elseprintf("NO");}
4.答:
#include"stdio.h"#include"string.h"main()
{charc1[10],c2[10],j;gets(c1);gets(c2);
for(j=0;(c1[j]==c2[j])&&c1[j]&&c2[j];j++);if(c1[j]>c2[j])printf("%d ",1);if(c1[j]<c2[j])printf("%d ",-1);if(c1[j]==c2[j])printf("%d ",0);}
5.答:
#include"stdio.h"#include"string.h"#defineM3#defineN80main()
{chara[M][N],j,k,n[5]={0};for(j=0;j<M;j++)gets(a[j]);
for(j=0;j<M;j++)
for(k=0;a[j][k];k++)
if(a[j][k]>='A'&&a[j][k]<='Z')n[0]++;
elseif(a[j][k]>='a'&&a[j][k]<='z')n[1]++;elseif(a[j][k]>='0'&&a[j][k]<='9')n[2]++;elseif(a[j][k]=='')n[3]++;elsen[4]++;
for(j=0;j<5;j++)printf("%4d",n[j]);}
習題8
8.1單選題
DBDACBACCC
8.2填空題
1.(1)2,1(2)10#30#(3)FOUR,P(4)60
2.(1)49
(2)2
(3)2
(4)
(5)
8.3改錯題(略)8.4編程題
1.答:
#include"stdio.h"
main()
{intn1,n2,n3,t;int*p1,*p2,*p3;
printf("pleaseinput3number:n1,n2,n3:");scanf("%d,%d,%d",&n1,&n2,&n3);p1=&n1;
p2=&n2;p3=&n3;
if(*p1>*p2){t=*p1;*p1=*p2;*p2=t;}
if(*p1>*p3){t=*p1;*p1=*p3;*p3=t;}if(*p2>*p3){t=*p2;*p2=*p3;*p3=t;}
printf("thesortednumbersare:%d,%d,%d ",n1,n2,n3);}
2.答:
#include"stdio.h"#defineN3main()
{inta[N],*p=a;for(;p-a<N;p++)scanf("%d",p);p=a+N-1;
for(;p-a>=0;p--)printf("%d",*p);}
3.答:
#include"stdio.h"main()
{inta[10];
intj,minl=0,maxl=0;for(j=0;j<10;j++)
scanf("%d",a+j);for(j=0;j<10;j++)
{if(a[maxl]<*(a+j))maxl=j;if(a[minl]>*(a+j))minl=j;}
j=a[0];a[0]=a[minl];a[minl]=j;j=a[9];a[9]=a[maxl];a[maxl]=j;for(j=0;j<10;j++)printf("%d",*(a+j));}
4.答:
輸入陣列如下:123456789101112輸出陣列如下:
121110987654321
#defineM3
#defineN4
#include"stdio.h"main()
{inta[M][N]={1,2,3,4,5,6,7,8,9,10,11,12},k,j,*p=&a[0][0],t;for(k=0,j=M*N-1;k<j;k++,j--)
{t=*(p+k);*(p+k)=*(p+j);*(p+j)=t;}for(k=0k<Mk++){for(j=0j<Nj++)
printf("%4d",a[k][j]);printf(" ");
}}
5.答:
#include"stdio.h"main(){
intlen;
charstr[20],*p=str;
printf("pleaseinputastring: ");scanf("%s",str);len=0;
while(*p!='