① c語言程序設計能力教程答案
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 */ <br>printf("cock hen chick\n"); <br>for(i=1;i<=20;i++) <br>for(j=1;j<=33;j++) <br>for(k=1;k<=33;k++) <br>if (i+j+k*3==100&&i*5+j*3+k==100) <br>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; <br>a=b=1; <br>for(i=1;i<=10;i++) /*要計算前30項,把10改為15。*/ <br>{printf("%8ld%8ld",a,b); <br>a=a+b;b=b+a;}}
遞歸法 源程序:
main()
{int i; <br>for(i=0;i<=19;i++) <br>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; <br>x=1.5; <br>do {x0=pow(x+1,1./3); <br>deltax=fabs(x0-x); <br>x=x0; <br>}while(deltax>1e-12);
printf("%.10f\n",x);}
執行結果:
1.3247179572
5.源程序略。(分子、分母均構成斐波那契數列)
結果是32.66026079864
6.源程序:
main()
{int a,b,c,m; <br>printf("Please input a,b and c:"); <br>scanf("%d %d %d",&a,&b,&c); <br>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; <br>scanf("%d",&a); <br>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; <br>scanf("%d %d",&a,&b); <br>c=a;a=b;b=c; <br>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; <br>scanf("%d:%d",&h,&m); <br>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; <br>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; <br>scanf("%lf%lf%lf",&a,&b,&c); <br>if (a+b>c&&a+c>b&&b+c>a) <br>{double s=(a+b+c)/2; <br>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; <br>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; <br>scanf("%d %d %d",&a,&b,&c); <br>m=a;a=b;b=c;c=m; <br>printf("%d %d %d\n",a,b,c);}
執行結果:
5 6 7
6 7 5
8.源程序:
main()
{int a,b,c; <br>scanf("%d %d %d",&a,&b,&c); <br>printf("average of %d,%d and %d is %.2f\n",a,b,c,(a+b+c)/3.); <br>執行結果: <br>6 7 9 <br>average of 6,7 and 9 is 7.33 <br>9.不能。修改後的源程序如下: <br>main() <br>{int a,b,c,x,y; <br>scanf("%d %d %d",&a,&b,&c); <br>x=a*b;y=x*c; <br>printf("a=%d,b=%d,c=%d\n",a,b,c); <br>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; <br>scanf("%d,%d,%d",&a,&b,&c); <br>printf("min=%d\n",a>b?b>c?c:b:a>c?c:a);}
2.源程序:
main()
{unsigned long a; <br>scanf("%ld",&a); <br>for(;a;printf("%d",a%10),a/=10);}
執行結果:
12345
54321
3.(1)源程序:
main()
{int x,y; <br>scanf("%d",&x); <br>if (x>-5&&x<0)y=x; <br>if (x>=0&&x<5)y=x-1; <br>if (x>=5&&x<10)y=x+1; <br>printf("%d\n",y);}
(2)源程序:
main()
{int x,y; <br>scanf("%d",&x); <br>if(x<10) if(x>-5) if(x>=0) if(x>=5)y=x+1; <br>else y=x-1; else y=x; <br>printf("%d\n",y);}
(3)源程序:
main()
{int x,y; <br>scanf("%d",&x); <br>if(x<10) if(x>=5)y=x+1; <br>else if(x>=0)y=x-1; <br>else if(x>-5)y=x; <br>printf("%d\n",y);}
(4)源程序:
main()
{int x,y; <br>scanf("%d",&x); <br>switch(x/5) <br>{case -1:if(x!=-5)y=x;break; <br>case 0:y=x-1;break; <br>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; <br>printf("請輸入三個整數:"); <br>scanf("%d %d %d",&a,&b,&c); <br>if(a&&b&&c&&a==b&&a==c)printf("構成等邊三角形\n"); <br>else if(a+b>c&&a+c>b&&b+c>a) <br>if(a==b||a==c||b==c)printf("構成等腰三角形\n"); <br>else printf("構成一般三角形\n"); <br>else printf("不能構成三角形\n");}
執行結果:
請輸入三個整數:5 6 5
構成等腰三角形
6.源程序:
main()
{int x,y; <br>scanf("%d",&x); <br>if(x<20)y=1; <br>else switch(x/60) <br>{case 0:y=x/10;break; <br>default:y=6;}
printf("x=%d,y=%d\n",x,y);}
7.源程序:
main()
{unsigned m;float n; <br>scanf("%d",&m); <br>if(m<100)n=0; <br>else if(m>600)n=0.06; <br>else n=(m/100+0.5)/100; <br>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; <br>scanf("%ld",&i); <br>printf("%ld %d\n",i%10,(int)log10(i)+1);}
執行結果:
99887
7 5
10.源程序:
main()
{unsigned long i;unsigned j[10],m=0; <br>scanf("%ld",&i); <br>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; <br>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; <br>for(i=1;i<=10;i++) <br>{scanf("%lf",&f); <br>if (f>0)p+=f; else n+=f;}
printf("%lf %lf %lf\n",p,n,p+n);}
3.源程序:
main()
{unsigned a; <br>scanf("%ld",&a); <br>for (;a;printf("%d,",a%10),a/=10); <br>printf("\b \n");}
執行結果:
23456
6,5,4,3,2
4.源程序:
main()
{unsigned long a,b,c,i; <br>scanf("%ld%ld",&a,&b); <br>c=a%1000; <br>for(i=1;i<b;i++)c=c*a%1000; <br>if(c<100)printf("0"); <br>if(c<10)printf("0"); <br>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; <br>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; <br>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; <br>scanf("%d",&d); <br>for (i=1;i<=(d+2)/3;i++) <br>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); <br>for(i=1;i<=d;i++) <br>printf("%10ld",fun(i));}
執行結果:
15
1 2 3 6 11 20 37 68
125 230 423 778 1431 2632 4841
8.源程序:
main()
{int i; <br>for(i=1010;i<=9876;i+=2) <br>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; <br>printf("apple watermelon pear\n"); <br>for(i=1;i<=100;i++) <br>for(j=1;j<=10;j++) <br>if((k=100-i-j)*2==400-i*4-j*40) <br>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; <br>for(i=1;i<m;printf("\n"),i++) <br>for(j=1;j<m; <br>putchar(N-abs(i-N)<=abs(j++-N)?' ':'*'));}
如果把N值改為5,則執行結果如下:
*
***
*****
*******
*********
*******
*****
***
*
② 請問誰有c語言程序設計(第二版)課後習題答案,譚浩強的
4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2='b',想得到以下的輸出格式和結果,請寫出程序(包括定義變數類型和設計輸出)。要求輸出的結果如下:
a=凵3凵凵b=凵4凵凵c=凵5
x=1.200000,y=2.400000,z=-3.600000
x+y=凵3.60凵凵y+z=-1.20凵凵z+x=-2.40
c1='a'凵or凵97(ASCII)
c2='B'凵or凵98(ASCII)
解:
#include <stdio.h>
main()
{ int a,b,c;
long int u,n;
float x,y,z;
char c1,c2;
a=3;b=4;c=5;
x=1.2;y=2.4;z=-3.6;
u=51274;n=128765;
c1='a';c2='b';
printf("\n");
printf("a=%2d b=%2d c=%2d\n",a,b,c);
printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x,y,z);
printf("x+y=%5.2f y+z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x);
printf("u=%6ld n=%9ld\n",u,n);
printf("c1='%c' or %d(ASCII)\n",c1,c1);
printf("c2='%c' or %d(ASCII)\n",c2-32,c2);
}
4.5 請寫出下面程序的輸出結果:
#include <stdio.h>
main()
{ int a=5,b=7;
float x=67.8564,y=-789.124;
char c='A';
long n=1234567;
unsigned u=65535;
printf("%d%d\n",a,b);
printf("%3d%3d\n",a,b);
printf("%f,%f\n",x,y);
printf("%-10f,%-10f\n",x,y);
printf("%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n",x,y,x,y,x,y);
printf("%e,%10.2e\n",x,y);
printf("%c,%d,%o,%x\n",c,c,c,c);
printf("%ld,%lo,%x\n",n,n,n);
printf("%u,%o,%x,%d\n",u,u,u,u);
printf("%s,%5.3s\n","COMPUTER","COMPUTER");
}
運行結果:(在TC2.0中)
57
凵凵5凵凵7
67.856400,-789.124023
67.856400凵,-789.124023
凵凵凵67.86,凵-789.12,67.8564,-789.1240,67.856400,-789.124023
6.785640e+Ol,凵凵-7.9e+02
A,65,10l,4l
1234567,4553207,d687
65535,177777,ffff,-1
COMPUTER,凵凵COM
4.6 用下面的scanf函數輸入數據,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a'。問在鍵盤上如何輸入?
#include <stdio.h>
main()
{ int a,b;
float x,y;
char c1,c2;
scanf("a=%d凵b=%d",&a,&b);
scanf("%f凵%e",&x,&y);
scanf("凵%c凵%c",&c1,&c2);
printf("a=%d,b=%d,x=%f,y=%f,cl=%c,c2=%c\n,a,b,x,y,c1,c2);
}
解:可按如下方式在鍵盤上輸入:
a=3凵b=7↙
8.5凵71.82↙
A凵a↙
輸出為:
a=3,b=7,x=8.500000,y=71.820000,cl=A,c2=a
請注意:在第三個scanf函數雙引號中第一個字元為空格字元。如果沒有這個空格字元,而寫成:
scanf("%c%c,&c1,&c2);
按以上的輸入,輸出就會變成以下兩行:
a=3,b=7,x=8.500000,y=71.820000,cl=
,c2=A
這是因為在輸入完第二行數據後按的回車鍵被作為一個字元送到內存輸入緩沖區中,因此第三個scanf函數中的第一個變數c1讀人了回車符(實際上是回車符的ASCII碼)。第三行輸入的第一個字元A被c2讀取,所以在執行printf函數輸出cl時,就輸出一個回車符,輸出c2時就輸出字元A。我們在程序第三個scanf函數雙引號中第一個字元處放了一個空格字元,這樣第二行末尾輸入的回車符就不會輸入給c1,而是與該空格字元對應,第三行輸入的第一個字元A就被cl讀取。也可以不在scanf函數中加空格,而在第三個函數前加一個getchar函數:getchar(); 用它將前面的回車符「吃掉」。
在一個函數中如果有幾個scanf函數,在輸人數據時往往會出現一些想像不到的情況(例如前面碰到的情況),其中一個重要的原因就是由回車符引起的。C語言很靈活,書上不可能把一切細節都講到,讀者在遇到類似情況時,上機多試驗一下就可以找出規律來。
4.7 用下面的scanf函數輸入數據,使a=10,b=20,c1='A',c2='a',x=1.5,y=-3.75,z=67.8,請問在鍵盤上如何輸入數據?
scanf("%5d%5d%c%c%f%f%*f,%f",&a,&b,&c1,&c2,&x,&y,&z);
解:
#include <stdio.h>
main()
{
int a,b;
float x,y,z;
char cl,c2;
scanf("%5d%5d%c%c%f%f%*f,%f",&a,&b,&cl,&c2,&x,&y,&x);
printf("a=%d,b=%d,c1=%c,c2=%c,x=%6.2f,y=%6.2f,z=%6.2f\n",a,b,c1,c2,x,y,z);
}
運行情況如下:
凵凵凵10凵凵凵20Aa1.5凵-3.75凵1.5,67.8↙ (此行為輸人的數據)
a=10,b=20,cl=A,c2=a,x=凵凵1.50,y=凵-3.75,x=凵67.80 (此行為輸出)
說明:按%5d格式的要求輸入a與b時,要先鍵入三個空格,然後再鍵人10與20。%*f是用來禁止賦值的。在輸入時,對應於%*f的地方,隨意打人了一個數如1.5,該值不會賦給任何變數。
4.8 設圓半徑r=1.5,圓柱高h=3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數據,輸出計算結果,輸出時要求有文字說明,取小數點後2位數字。請編程序。
解:
#include <stdio.h>
main()
{ float pi,h,r,l,s,sq,vq,vz;
pi=3.1415926;
printf("請輸入圓半徑r,圓柱高h:\n");
scanf("%f,%f",&r,&h);
l=2*pi*r;
s=r*r*pi;
sq=4*pi*r*r;
vq=3.0/4.0*pi*r*r*r;
vz=pi*r*r*h;
printf("圓周長為:1=%6.2f\n",l);
printf("圓面積為:s=%6.2f\n",s);
printf("圓球表面積為:sq=%6.2f\n",sq);
printf("圓球體積為:sv=%6.2f\n",vq);
printf("圓柱體積為:sz=%6.2f\n",vz);
}
運行結果:
請輸入圓半徑r,圓柱高h;
1.5,3↙
圓周長為:l= 9.42
圓面積為:s= 7.07
圓球表面積為:sq= 28.27
圓球體積為:sv= 7.95
圓柱體積為:sz= 21.21
4.9 輸入一個華氏溫度,要求輸出攝氏溫度。公式為c=5(F-32)/9,輸出要有文字說明,取2位小數。
解:
#include <stdio.h>
main()
{ float c,f;
printf("請輸入一個華氏溫度:\n");
scanf("%f",&f);
c=(5.0/9.0)*(f-32); /*注意5和9要用實型表示,否則5/9的值為0*/
printf("攝氏溫度為:%5.2f\n",c);
}
運行結果:
請輸入一個華氏溫度:
78
攝氏溫度為:25.56
4.10 編程序,用getchar函數讀入兩個字元給cl、c2,然後分別用putchar函數和printf函數輸出這兩個字元。並思考以下問題:(1)變數c1、c2應定義為字元型或整型?抑或二者皆可?(2)要求輸出c1和c2值的ASCII碼,應如何處理?用putchar函數還是printf函數?(3)整型變數與字元變數是否在任何情況下都可以互相代替?如char"c1,c2;" 與"int cl,c2;" 是否無條件地等價?
解:
#include <stdio.h>
main()
{ char c1,c2;
printf("請輸入兩個字元c1,c2:\n");
c1=getchar();
c2=getchar();
printf("用putchar語句輸出結果為:\n");
putchar(c1);
putchar(c2);
printf("\n");
printf("用printf語句輸出結果為:\n");
printf("%c,%c\n",c1,c2);
}
運行結果:
請輸入兩個字元c1,c2:
ab↙
用putchar語句輸出結果為:
ab↙
用printf語句輸出結果為:
a,b
請注意連續用兩個getchar函數時怎樣輸入字元。不應當用以下方法輸入:
a↙
b↙
因為第一行將a和回車符輸入到內存的輸入緩沖區,因此c1得到a,c2得到一個回車符。在輸出c2時就會產生一個回車換行,而不會輸出任何可顯示的字元。在實際操作時,只要輸入了"a↙"後,屏幕顯示馬上從用戶屏切換到TC窗口,程序接著執行下去。因為系統認為用戶已輸入了兩個字元,所以我們連續輸入ab兩個字元然後再按回車鍵,就保證了c1和c2分別得到字元a和b。
回答思考問題:
(1) c1和c2可以定義為字元型或整型,二者皆可。
(2) 在printf函數中用%d格式符輸出,即:
printf("%d,%d\n",c1,c2);
(3) 字元變數在計算機內佔一個位元組,而整型變數占兩個位元組,因此整型變數在可輸出字元的范圍內(ASCII碼為0~255之間的字元)是可以與字元數據互相轉換的。如果整數在此范圍外,則不能代替,請分析以下三個程序。
程序1:(4-10-1.c)
#include <stdio.h>
main()
{ int c1,c2; /*定義為整型*/
printf("請輸入兩個整數c1,c2:\n");
scanf("%d,%d",&c1,&c2);
printf("按字元輸出結果為:\n");
printf("%c,%c\n",c1,c2);
printf("按ASCII碼輸出結果為:\n");
printf("%d,%d\n",c1,c2);
}
運行結果:
請輸入兩個整數c1,c2:
97,98↙
按字元輸出結果為:
a,b
按ASCII碼輸出結果為:
97,98
程序2:(4-10-2.c)
#include <stdio.h>
main()
{ char c1,c2; /* 定義為字元型*/
int i1,i2; /* 定義為整型 */
printf("請輸入兩個字元c1,c2:\n");
scanf("%c,%c",&c1,&c2);
i1=c1; /* 將字元型賦值給整型變數*/
i2=c2;
printf("按字元輸出結果為:\n");
printf("%c,%c\n",i1,i2); /* 將整型變數按字元輸出*/
printf("按整數輸出結果為:\n");
printf("%d,%d\n",c1,c2); /* 將字元變數按整型輸出*/
}
運行結果:
請輸入兩個字元c1,c2:
a,b↙
按字元輸出結果為:
a,b
按整數輸出結果為:
97,98
程序3:(4-10-3.c)
#include <stdio.h>
main()
{ char c1,c2;/* 定義為字元型 */
char i1,i2;/* 定義為整型 */
printf("請輸入兩個整數i1,i2:\n");
scanf("%c,%c",&i1,&i2);
c1=i1; /* 將整數賦給字元變數 */
c2=i2;
printf("按字元輸出結果為:\n");
printf("%c,%c\n",c1,c2);
printf("按整數輸出結果為:\n");
printf("%d,%d\n",c1,c2);
}
運行結果:
請輸入兩個整數i1,i2:
289,330↙
按字元輸出結果為:
!,J
按整數輸出結果為:
33,74
請注意c1和c2是字元變數,只佔一個位元組,只能存放0~255范圍內的整數,而現在輸入給i1和i2的值已超過0~255的范圍,所以只將i1和i2在內存中兩個位元組的低8位賦給c1和c2。可以看到,289-255=33,330-255=74;而與ASCII碼33和74相應的字元為"!"
另外,團IDC網上有許多產品團購,便宜有口碑
③ 跪求《C語言程序設計》課本習題答案!!!
習題1參考答案
一、選擇題 1. A 2. D
二、填空題
1. BASIC、FORTRAN、AL_GOL60和COBOL 2. 8
3. 關鍵字
4. 編輯、編譯、鏈接和運行
三、簡答題 1.答:
(1)C語言具有結構化的控制語句。C語言提供了結構化程序所必需的基本控制語句,實現了對邏輯流的有效控制。
(2)C語言具有豐富的數據結構類型。C語言除提供整型、實型、字元型等基本數據類型外,還提供了用基本數據類型構造出的各種復雜的數據結構,如數組、結構、聯合等。C語言還提供了與地址密切相關的指針類型。此外,用戶還可以根據需要自定義數據類型。 (3)C語言具有豐富的運算符。C語言提供了多達34種運算符,豐富的數據類型與豐富的運算符相結合,使C語言的表達力更具靈活性,同時也提高了執行效率。
(4)C語言簡潔、緊湊,使用方便、靈活,程序書寫自由,有9種控制語句。
(5)C語言既具有高級語言的功能,又具有低級語言的許多功能,通常被稱為中級計算機語言。它既是成功的系統描述語言,又是通用的程序設計語言。 (6)C語言與匯編語言相比,可移植性好。
(7)功能強大。C語言具有低級語言的一些功能,所以,生成目標代碼質量高,程序執行效率高。現在許多系統軟體都用C語言來描述,可以大大提高了編程效率。
2.答:運行一個C語言程序,一般需要經過如下幾個步驟:①上機輸入並編輯源程序;②編譯源程序;③與庫函數連接;④生成可執行目標程序;⑤運行目標程序。 3.答:
(1)操作系統的設計與實現。C語言是一種應用非常廣泛的結構化高級程序設計語言,既適合編寫應用軟體,又適合編寫系統軟體。
④ 求《C語言程序設計基礎》的課後習題答案
大學學習資料免費下載網 有類似資料
在 其他公共課程 版塊
標題:陳東方 C語言程序設計基礎實驗與題解(答案)
中國物聯網校企聯盟技術部
⑤ 求孫亞飛主編的C語言程序設計的課後答案啊啊
網路有很多這個教程的答案,非常多。你自己根據需求去下《C語言程序設計實驗指導與習題解答》是與孫力主編的《C語言程序設計》(中國農業出版社出版)配套使用的實驗指導書。全書共有4章。第1章是C語言編譯環境介紹,主要介紹了VisualC++6.0集成開發環境下編輯、編譯、調試和運行程序的方法。第2章是上機實驗內容,編寫了配合《C語言程序設計》上機實驗的47個實驗和1個綜合實訓,實驗內容循序漸進,由淺入深,分別由基礎性實驗、提高性實驗、綜合性和設計性實驗構成。第3章是程序開發中的常見錯誤與調試。第4章是《C語言程序設計》每章末部分習題的參考答案。
⑥ 求《C語言程序設計》第四版,譚浩強編,清華大學出版社 課後習題答案
#include<stdio.h>
int main(){
fload a[3];
scanf("%f,%f,%f",&a[0],&a[1],&a[2]);
float temp;
if(a[0]>a[1]){
temp = a[0];
a[0] = a[1];
a[1] = temp;
}
if(a[1]>a[2]){
temp = a[1];
a[1] = a[2];
a[2] = temp;
}
if(a[0]>a[1]){
temp = a[0];
a[0] = a[1];
a[1] = temp;
}
print("%f %f %f \n", a[0],a[1],a[2]);
}
⑦ 急求C語言程序設計答案!題目如下(兩道題)!!重金答謝!回答運行正確可加賞金。在線等高手江湖救急!
第一題:首先值得說明的是,你的題目有點兒問題應該是: if(a[i][j]>a[row][colum]){row=i;colum=j;}
然後,答案是:row
a[row][colum]
第二題:素數的問題,也就是質數,解題思路就是,如果這個數不能夠被2~這個數的開根號整除的話,那麼這個數就是素數。
【蒼狼涯】的答案是正確的。
我修改一下。
如下:
#include<stdio.h>
#include<math.h>
bool IsPrime(int x);
int main()
{
int num[5]={0,0,0,0,0};
int temp=0;
for(int i=1000;i>=2;i--)
{
if (IsPrime(i))
{
num[temp]=i;
temp++;
if (temp==5)
break;
}
}
printf("結果如下:\n");
for (int k=0;k<5;k++)
{
printf("%d\t",num[k]);
}
printf("\n");
return 0;
}
bool IsPrime(int x)
{
for(int i = 2; i <= (int)sqrt(x); i++)
{
if((x % i) == 0)
return false;
}
return true;
}