當前位置:首頁 » 編程語言 » c語言程序設計上機指導與習題解答

c語言程序設計上機指導與習題解答

發布時間: 2023-08-22 11:22:03

⑴ 求解c語言程序設計題

完整的fun函數代碼如下:

int fun(STU a[], int n, STU h[]) {

int i, k = 0;

double avg = 0;

for (i = 0; i < n; i++) {

a[i].sum = a[i].s1 * 0.7 + a[i].s2 * 0.3;

avg += a[i].sum; // 先計算總分

}

avg = avg / n; // 再計算平均分

for (i = 0; i < n; i++) {

if (a[i].sum > avg) { // 統計平均分以上的學生

strcpy(a[i].level, "均分以上");

h[k++] = a[i];

}

}

return k;

}

運行結果如下:

可見成功輸出了平均分以上的學生信息,望採納~

⑵ 誰有C語言程序設計(第三版)杜友福主編的答案啊

C語言程序設計(第三版)習題答案
習題一
一、名詞解釋
(1)程序P1 (2)程序設計P1 (3)機器語言P1 (4)高級語言P2
(5)匯編程序P3 (6)編譯程序P4 (7)演算法P5 (8)結構化程序設計方法P10

二、簡答題
1. 設計程序時應遵循哪些基本原則?P4
答:正確性、可靠性、簡明性、有效性、可維護性、可移植性。
2. 演算法具有哪些特點?
答:有窮性、確定性、有效性、有零個或多個輸入、有一個或多個輸出。
3. 演算法的表示形式有哪幾種?
答:自然語言、偽代碼、傳統流程圖、N-S流程圖、計算機語言。
4. 結構化程序設計方法的三種基本結構是什麼?
答:順序結構、選擇結構和循環結構。
5. 傳統流程圖與N-S流程圖最大的區別是什麼?
答:N-S流程圖去掉了在傳統流程圖中常用的流程線,使得程序的結構顯得更加清晰、簡單。

三、用傳統流程圖或N-S流程圖表示求解以下問題的演算法。
1. 從鍵盤輸入10個和塌整數,求出其中的最小數並輸出。

2. 求1 2 3 … 100的值。

3. 求10~50的所有素數之和。

4. 求下列分段函數的值。

四、請參照本章例題,編寫一個簡單的C程序,輸出以下三行信息。
**************************
Yangtze University
**************************

#include <stdio.h>
void main()
{
printf("**************************\n");
printf(" Yangtze University\n");
printf("**************************\n");
}

習題二
一、選擇題
1~10: B C D C D D B C A A
11~20: D A C D B D B A C D

二、填空題
1.字母 L 或字母 l
2. %c(或字元) 、 %d(或整數)
3. 在程序運行過程中,其值可以在一定的范圍內變化的量
4. '\0'
5. 小數形式 、 指數形式
6. 關鍵字 、 預定義標識符 、 用戶標識符
7. 字母 、 數字 、 下劃線 、 數字
8. 18
9. 2 、 1 、 30
10. 雙精度實數或double
11. 賦值 、 逗號 、 20 、 20 、 20 、 4
12. 4 、 4

習題三
一、選擇題
1~10: B C C B C C C D C C
註:第4題答案D為: 10 22↙
33↙

二、填空題
1. printf 、 scanf
2. h
3. "]"
4. '\0'
5. e 、 E
6. 6
7. s 、 c
8. *
9. - 、
10. i

三、編程題
1. 編寫程序,從鍵盤輸入一個以秒為單位的時間數,將其換算成幾小時幾分幾秒,然後進
行輸出。例如輸入的時間為4258秒,則輸出結果為:1小時10分58秒。
#include <stdio.h>
void main()
{
int x,h,m,s;
scanf("%d",&x);
h=x/3600; m=x600/60; s=x`;
printf("%ds=%d:%d:%d!\n",x,h,m,s);
}
2. 編寫程序,讀入三個整數給變數a、b、c,然後交換它們中的數,把a中原來的值給b,
把b中原來的值給c,把c中原皮念來的值給a。
#include <stdio.h>
void main()
{
int a,b,c,t;
printf("input a b c:");
scanf("%d%d%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d\n",a,b,c);
t=a;a=c;c=b;b=t;
printf("a=%d,b=%d,c=%d\n",a,b,c);
}

習題四
一、填空題
1. 1 、喚握圓 0
2. ! % + <= != && || =
3. x==0
4. 0 、 2
5. 20 、 0 、 0

二、選擇題
1~7:D D C A D D C

三、程序閱讀題
1. 595959
2. 0.500000
3. 1
4. 2
5. 6
6. a=2,b=1
7. pass
warn
8. 1

四、編程題
1. 設a為整型變數且其值大於零,請將以下if語句改寫成switch語句。
if(a<60) m=1;
else if(a<70) m=2;
else if(a<80) m=3;
else if(a<90) m=4;
else m=5;
方法1
#include <stdio.h>
void main()
{
int a,m;
scanf("%d",&a);
switch(a/10)
{
case 0:case 1:case 2:case 3:
case 4:case 5:m=1;break;
case 6:m=2;break;
case 7:m=3;break;
case 8:m=4;break;
default:m=5;break;
}
printf("m=%d\n",m);
}
方法2
#include <stdio.h>
void main()
{
int a,m;
scanf("%d",&a);
m=0;
switch(a/10)
{
default:m ;
case 8:m ;
case 7:m ;
case 6:m ;
case 5:case 4:case 3:case 2:
case 1:case 0:m ;
}
printf("m=%d\n",m);
}
2. 編寫程序,從鍵盤輸入一個整數,列印出它是奇數還是偶數。
#include <stdio.h>
void main()
{
int a;
scanf("%d",&a);
if(a%2==1)
printf("%d is a odd number!\n",a);
else
printf("%d is a even number!\n",a);
}
3. 編寫程序,從鍵盤輸入一個字元,判別它是否是小寫字母,如果是,將它轉換為大寫字母;如果不是,不轉換。然後輸出最後得到的字元。
#include <stdio.h>
void main()
{
char ch;
scanf("%c",&ch);
if(ch>='a' && ch<='z')
ch=ch-32;
printf("%c\n",ch);
}
4. 編寫程序,從鍵盤輸入一個不多於4位的正整數,列印出它是幾位數。
#include <stdio.h>
void main()
{
int x,n;
scanf("%d",&x);
if(x>1000) n=4;
else if(x>100) n=3;
else if(x>10) n=2;
else n=1;
printf("%d\n",n);
}
5. 當一個人的月收入在3500元以下時免稅;月收入在3500元到5000元之間時,超過3500的部分納稅3%;月收入在5000元以上時,3500至5000之間的部分納稅3%,超過5000的部分納稅10%。編寫程序從鍵盤輸入月收入income,計算並輸出應交稅款tax。
#include <stdio.h>
void main()
{
int income;
float tax;
scanf("%d",&income);
if(income<=3500) tax=0;
else if(income<=5000) tax=0.03*(income-3500);
else tax=0.03*(5000-3500) 0.10*(income-5000);
printf("tax=%f\n",tax);
}
6. 迴文是指正讀和反讀都一樣的數或字元串。例如:12321、55455、35553等都是迴文。請編寫一個程序,從鍵盤上讀取一個包含五位數字的長整數,並判斷它是否是迴文。(提示:用除法運算和求余運算把一個數的個位、十位、百位、千位等分別分離出來。)
#include <stdio.h>
void main()
{
long x;
int a,b,d,e;
scanf("%ld",&x);
a=x/10000;
b=x000/1000;
d=x0/10;
e=x;
if(a==e && b==d)
printf("%ld is huiwen!\n",x);
else
printf("%ld is not huiwen!\n",x);
}

習題五
一、閱讀題
1. 8
2. 4321
3. X
4. -1
5. 23
6. 52
7. 5
8. 3

二、填空題
1. 18
2. 2
3. b=i 1
4. 17
5. i<=9 、 j%3!=0
6. d=1.0 、 k=k 1 、 k<=10

三、選擇題
1~8:A D D A B D D A

四、編程題
1. 編寫程序,列印出所有的「水仙花數」,所謂「水仙花數」是指一個三位數,其各位數字的立方之和等於該數本身。例如,407是一個「水仙花數」,因為407=43 03 73。(註:若將題意改為列印出最大的或最小的「水仙花數」,則應將循環語句作如何調整?)。
#include <stdio.h>
void main()
{
int a,b,c,k;
for(k=100;k<=999;k )
//求最大的「水仙花數」改用:for(k=999;k>=100;k--)
{
a=k/100;b=k/10;c=k;
if(k==a*a*a b*b*b c*c*c)
{
printf("]",k);
//求最大或最小」水仙花數」時增加一個語句:break;
}
}
printf("\n");
}
2. 編寫程序,輸出1980~2880年所有閏年的年號。每輸出5個年號換一行。
#include <stdio.h>
void main()
{
int k,flag,n=0;
for(k=1980;k<=2880;k )
{
flag=(k%4==0)&&(k0!=0)||(k@0==0);
if(flag)
{
printf("]",k);
n ;
if(n==0)
printf("\n");
}
}
printf("\n");
}
3. 編寫程序,求1-3 5-7 …-99 101的值。
#include <stdio.h>
void main()
{
int n,t=1,s=1;
for(n=3;n<=101;n =2)
{ t=-t; s=s t*n; }
printf("s=%d\n",s);
}
4. 編寫程序,計算並輸出下列級數的前n項之和Sn。n的值從鍵盤輸入。

#include <stdio.h>
void main()
{
int fz,fm,n,i;
float s,t;
fz=2;fm=1;s=0;
scanf("%d",&n);
for(i=1;i<=n;i )
{
t=(1.0*fz)/fm;
s=s t;
fz=fz fm;
fm=fz-fm;
}
printf("s=%f\n",s);
}
5.編寫程序,求e的值e=1 1/1! 1/2! 1/3! 1/4! … 1/n!
#include <stdio.h>
void main()
{
int n,i;
float t,fm=1,e=1;
scanf("%d",&n);
for(i=1;i<=n;i )
{ fm=fm*i; t=1.0/fm; e=e t; }
printf("n=%d,e=%f\n",n,e);
}
6. 已知某球從80米高度自由落下,落地後反復彈起,每次彈起的高度都是上次高度的一半。求此球8次落地所經過的總路程。
#include <stdio.h>
void main()
{
int n;
float s=80,h=s/2;
for(n=2;n<=8;n )
{
s=s 2*h;
h=h/2;
}
printf("s=%f\n",s);
}
7. 用牛頓迭代法求高次方程f(x)=2x3-4x2 5x-18=0的根(約為2.466)。
註:牛頓迭代公式為:x2=x1-f(x1)/f』(x1),其中f』(x1)為導函數在點x1的值。
#include <stdio.h>
#include <math.h>
void main()
{
float x,f,f1;
x=8; // x的初值可為任意值
do
{ f=2*x*x*x-4*x*x 5*x-18; f1=6*x*x-8*x 5; x=x-f/f1;
}while(fabs(f)>0.00001);
printf("x=%f,f=%f\n",x,f);
}
8. 有這樣一些真分數:其分子和分母都是兩位正整數,且分子的個位數與分母的十位數相同,如果把該分數的分子的個位數與分母的十位數同時去掉,所得到的新的分數正好與原分數的值相等,如26/65=2/5。試編程求出所有滿足上述條件的真分數。
#include <stdio.h>
void main()
{
int a,b,c; // 設這個分數為ab/bc
for(a=1;a<=9;a )
for(b=1;b<=9;b )
for(c=1;c<=9;c )
if((a<c)&&(1.0*a/c==(a*10.0 b)/(b*10.0 c)))
printf("%d/%d=%d%d/%d%d=%f\n",a,c,a,b,b,c,1.0*a/c);
}
9. 編寫程序,求數列:1,(1 1/2),(1 1/2 1/3),(1 1/2 1/3 1/4),(1 1/2 1/3 1/4 1/5),…的前10項之和。
#include <stdio.h>
void main()
{
float s,t;
int i;
s=0,t=0;
for(i=1;i<=10;i )
{ t=t 1.0/i; s=s t; }
printf("s=%f\n",s);
}
10. 編寫程序,求3到100之間的所有素數之和。
#include <stdio.h>
void main()
{
int s,i,k,flag;
s=0;
for(i=3;i<=100;i )
{
flag=1;
for(k=2;k<i;k )
if(i%k==0)
{ flag=0; break; }
if(flag)
{ s=s i; printf("M",i); }
}
printf("\nsum=%d\n",s);
}
11. 編寫程序,求Fibonacci數列中大於800的最小的一個數(結果為987)。
#include <stdio.h>
void main()
{
int f1=1,f2=1,f3;
while(f3<=800)
{
f3=f1 f2;
f1=f2;
f2=f3;
}
printf("Fibonacci數列中大於800的最小數是]\n",f3);
}

習題六
一、選擇題
1~10:D D C B A B C D C D
11~20:A B B C C D C A B B
21~30:B B D D D D C D C A
註:第16題答案C為:字元串"SHORT"與"SHORT "相等
第19題題目為:已知:char str1[10],str2[10]={"books"};則在程序中能夠將字元串
"books"賦給數組str1的正確語句是 。
第21題題目為:設有:char str1[20]="abcde",str2[20]="xyz";則執行語句:
printf("%d",strlen(strcpy(str1,str2)); 的結果是 。
第28題答案D為: aaaa
bbbb

cccc dddd

二、填空題
1. 9 、 0
2. 先行後列
3.

⑶ 急求解答:C語言程序設計試題 請專長人士幫忙解答 謝!!!

一、填空題
1.一個函數一般由兩部分組成,它們分別是函數名和函數體。
2.一個C語言的程序至少應包含一個主函數。
3.函數體用{符號開始,用}符號結束。
4.欲將一個16位二進制的整數變數的高8位清零,而只保留低8位,可用的方法是和0x00ff進行與運算。
5.數組在內存中是一塊連續的儲存區,數組名代表首地址。
6.函數直接或間接的自己調用自己,被稱作函數信如的遞歸調用。
7.函數在內部定義只在本函數內有效的變數叫內部變數,在函數以滑薯啟外定義的變數叫外部變數。
二、選擇題
1.下列變數中合法的是(沒對的,A改成B_C_Tom就對,C改成_6a7b對)
A. B.C.Tom B.3a6b C.-6a7b D. $ABC
2.下面兩對用戶定義標識符哪個可讀性最強(c)
A. cheackquality B. salarytotal C. check-quality D. sa-la-ry-tot-al
3.設 int m=10,則下列表達式的值不等手攔於0的有(D)
A. m=10/11.0 B. m==8 C. ~m&m D ~(m|m)
4.設 int x=25,則表達式 (x&20>>1)|(x>10|7&x^33)的值是(D)
A. 35 B. 43 C. 42 D. 41
5.C語言中,邏輯「真」等價於(C)
A. 大於0的數 B.大於0的整數 C.非0的數 D. 非0的整數
6.有段程序:int x=20; do{x/=2;}while(x--);請問此循環執行(A)次。
A. 4 B. 3 C. 5 D.不確定
7.下面選項中,於if(a)等價的是(C)
A. if(a==0) B.if(a!=0) C.if(a=0) D. if(a==1)
8.為判斷字元串s1是否大於字元串s2,正確的語句是(C)
A.if(s1>s2) B.if(strlen (s1)>strlen(s2)) C.if(strcmp (s1,s2)>0) D.if (strcmp (s1,s2)==1)

⑷ 求C語言程序設計習題集與上機指導-第三版 (及答案)......

C語言程序設計第三版譚浩強課後習題答案完整版
第一章
1.5請參照本章例題,編寫一個C程序,輸出以下信息:
**************************
Very Good!
**************************
解:
mian()
{printf(「**************************」);
printf(「\n」);
printf(「Very Good!\n」);
printf(「\n」);
printf(「**************************」);
}
1.6 編寫一個程序,輸入a、b、c三個值,輸出其中最大值。
解:
mian()
{int a,b,c,max;
printf(「請輸入三個數a,b,c:\n」);
scanf(「%d,%d,%d」,&a,&b,&c);
max=a;
if(max<b)
max=b;
if(max<c)
max=c;
printf(「最大數為:「%d」,max);
}
第三章
3.6寫出以下程序運行的結果。
main()
{char c1=』a』,c2=』b』,c3=』c』,c4=』\101』,c5=』\116』;
printf(「a%cb%c\tc%c\tabc\n」,c1,c2,c3);
printf(「\t\b%c %c」,c4,c5);
}
解:
aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc
AㄩN
3.7 要將"China"譯成密碼,解碼規律是:用原來字母後面的第4個字母代替原來的字母.例如,字母"A"後面第4個字母是"E"."E"代替"A"。因此,"China"應譯為"Glmre"。請編一程序,用賦初值的方法使cl、c2、c3、c4、c5五個變數的值分別為,』C』、』h』、』i』、』n』、』a』,經過運算,使c1、c2、c3、c4、c5分別變為』G』、』l』、』m』、』r』、』e』,並輸出。
解:
#include <stdio.h>
main()
{ char c1=』C』,c2=』h』,c3=』i』,c4=』n』,c5=』a』;
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("密碼是%c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
運行結果:
密碼是Glmre
3.9求下面算術表達式的值。
(1)x+a%3*(int)(x+y)%2/4
設x=2.5,a=7,y=4.7
(2)(float)(a+b)/2+(int)x%(int)y
設a=2,b=3,x=3.5,y=2.5
(1)2.5
(2)3.5
3.10寫出程序運行的結果。
main()
{int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(「%d,%d,%d,%d」,i,j,m,n);
}
解:
9,11,9,10
3.12 寫出下面表達式運算後a的值,設原來a=12。設a和n都已定義為整型變數。
(1)a+=a (2) a-=2 (3) a*=2+3 (4)a/=a+a
(5) a%=(n%=2),n的值等於5
(6)a+=a-=a*=a
解:
(1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0
第四章
4.4若a=3,b=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.600_ _y+z=-1.20_ _z+x=-2.40
c1=ˊaˊ_or_97(ASCII)
c2=ˊbˊ_or_98(ASCII)
main()
{int a=3,b=4,c=5;
long int u=51274,n=128765;
float x=1.2,y=2.4,z=3.6;
char c1=』a』,c2=』b』;
printf("a=%2d b=%2d c=%2d\n",a,b,c);
printf("x=%f,y=%f,z=%f\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("%s %s %d%s\n","c1=』a』","or",c1,"(ASCII)");
printf("%s %s %d%s\n","c2=』a』","or",c2,"(ASCII)");
}
4.7用scanf下面的函數輸入數據,使a=3,b=7,x=8.5,y=71.82,c1=ˊAˊ,c2=ˊaˊ,問在鍵盤上如何輸入?
main()
{
int a,b;float x,y;char c1c2;
scanf("a=%d_b=%d",&a,&b);
scanf("_x=%f_y=%e",&x,&y);
scanf("_c1=%c_c2=%c",&c1,&c2);
}
a=3_b=7
_x=8.5_y=71.82
_c1=A_c2=a
4.8設圓半徑r=1.5,圓柱高h=3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數據,輸出計算結果,輸出時要求文字說明,取小數點後兩位數字。請編程序。
main()
{float r,h,C1,Sa,Sb,Va,Vb;
scanf("%f,%f",&r,&h);
C1=2*3.14*r;
Sa=3.14*r*r;
Sb=4*Sa;
Va=4*3.14*r*r*r/3;
Vb=Sa*h;
printf("C1=%.2f\n",C1);
printf("Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n",Sa,Sb,Va,Vb);
}
4.9輸入一個華氏溫度,要求輸出攝氏溫度。公式為
c=5(F-32)/9
輸出要求有文字說明,取位2小數。
main()
{float F,c;
scanf("%f",&F);
c=5*(F-32)/9;
printf("c=%.2f",c);
}
4.10編程序,用getchar函數讀入兩個字元給c1、c2,然後分別用函數和函數輸出這兩個字元。並思考以下問題:(1)變數c1、c2應定義為字元型或整形?抑二者皆可?(2)要求輸出c1和c2值的ASCII碼,應如何處理?用putchar函數還是printf函數?(3)整形變數與字元變數是否在任何情況下都可以互相代替?如:
char c1,c2;

int c1,c2;
是否無條件的等價?
#include"stdio.h"
main()
{char c1,c2;
c1=getchar();c2=getchar();
putchar(c1);putchar(』\n』);putchar(c2);putchar(』\n』);
file:///C|/Documents and Settings/Administrator/桌面/C語言程序設計第三版譚浩強課後習題答案完整版.txt(第 1/19 頁)[2010-5-10 9:14:34]
file:///C|/Documents and Settings/Administrator/桌面/C語言程序設計第三版譚浩強課後習題答案完整版.txt
1.5請參照本章例題,編寫一個C程序,輸出以下信息:
**************************
Very Good!
**************************
解:
mian()
{printf(「**************************」);
printf(「\n」);
printf(「Very Good!\n」);
printf(「\n」);
printf(「**************************」);
}
1.6 編寫一個程序,輸入a、b、c三個值,輸出其中最大值。
解:
mian()
{int a,b,c,max;
printf(「請輸入三個數a,b,c:\n」);
scanf(「%d,%d,%d」,&a,&b,&c);
max=a;
if(max<b)
max=b;
if(max<c)
max=c;
printf(「最大數為:「%d」,max);
}
第三章
3.6寫出以下程序運行的結果。
main()
{char c1=』a』,c2=』b』,c3=』c』,c4=』\101』,c5=』\116』;
printf(「a%cb%c\tc%c\tabc\n」,c1,c2,c3);
printf(「\t\b%c %c」,c4,c5);
}
解:
aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc
AㄩN
3.7 要將"China"譯成密碼,解碼規律是:用原來字母後面的第4個字母代替原來的字母.例如,字母"A"後面第4個字母是"E"."E"代替"A"。因此,"China"應譯為"Glmre"。請編一程序,用賦初值的方法使cl、c2、c3、c4、c5五個變數的值分別為,』C』、』h』、』i』、』n』、』a』,經過運算,使c1、c2、c3、c4、c5分別變為』G』、』l』、』m』、』r』、』e』,並輸出。
解:
#include <stdio.h>
main()
{ char c1=』C』,c2=』h』,c3=』i』,c4=』n』,c5=』a』;
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("密碼是%c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
運行結果:
密碼是Glmre
3.9求下面算術表達式的值。
(1)x+a%3*(int)(x+y)%2/4
設x=2.5,a=7,y=4.7
(2)(float)(a+b)/2+(int)x%(int)y
設a=2,b=3,x=3.5,y=2.5
(1)2.5
(2)3.5
3.10寫出程序運行的結果。
main()
{int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(「%d,%d,%d,%d」,i,j,m,n);
}
解:
9,11,9,10
3.12 寫出下面表達式運算後a的值,設原來a=12。設a和n都已定義為整型變數。
(1)a+=a (2) a-=2 (3) a*=2+3 (4)a/=a+a
(5) a%=(n%=2),n的值等於5
(6)a+=a-=a*=a
解:
(1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0
第四章
4.4若a=3,b=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.600_ _y+z=-1.20_ _z+x=-2.40
c1=ˊaˊ_or_97(ASCII)
c2=ˊbˊ_or_98(ASCII)
main()
{int a=3,b=4,c=5;
long int u=51274,n=128765;
float x=1.2,y=2.4,z=3.6;
char c1=』a』,c2=』b』;
printf("a=%2d b=%2d c=%2d\n",a,b,c);
printf("x=%f,y=%f,z=%f\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("%s %s %d%s\n","c1=』a』","or",c1,"(ASCII)");
printf("%s %s %d%s\n","c2=』a』","or",c2,"(ASCII)");
}
4.7用scanf下面的函數輸入數據,使a=3,b=7,x=8.5,y=71.82,c1=ˊAˊ,c2=ˊaˊ,問在鍵盤上如何輸入?
main()
{
int a,b;float x,y;char c1c2;
scanf("a=%d_b=%d",&a,&b);
scanf("_x=%f_y=%e",&x,&y);
scanf("_c1=%c_c2=%c",&c1,&c2);
}
a=3_b=7
_x=8.5_y=71.82
_c1=A_c2=a
4.8設圓半徑r=1.5,圓柱高h=3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數據,輸出計算結果,輸出時要求文字說明,取小數點後兩位數字。請編程序。
main()
{float r,h,C1,Sa,Sb,Va,Vb;
scanf("%f,%f",&r,&h);
C1=2*3.14*r;
Sa=3.14*r*r;
Sb=4*Sa;
Va=4*3.14*r*r*r/3;
Vb=Sa*h;
printf("C1=%.2f\n",C1);
printf("Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n",Sa,Sb,Va,Vb);
}
4.9輸入一個華氏溫度,要求輸出攝氏溫度。公式為
c=5(F-32)/9
輸出要求有文字說明,取位2小數。
main()
{float F,c;
scanf("%f",&F);
c=5*(F-32)/9;
printf("c=%.2f",c);
}
4.10編程序,用getchar函數讀入兩個字元給c1、c2,然後分別用函數和函數輸出這兩個字元。並思考以下問題:(1)變數c1、c2應定義為字元型或整形?抑二者皆可?(2)要求輸出c1和c2值的ASCII碼,應如何處理?用putchar函數還是printf函數?(3)整形變數與字元變數是否在任何情況下都可以互相代替?如:
char c1,c2;

int c1,c2;
是否無條件的等價?
#include"stdio.h"
main()
{char c1,c2;
c1=getchar();c2=getchar();
putchar(c1);putchar(』\n』);putchar(c2);putchar(』\n』);

switch(place)
{ case 5: printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);
printf("\n反序數字為;");
printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);
break;
case 4: printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);
printf("\n反序數字為:");
printf("%d%d%d%d\n",indiv,ten,hundred,thousand);
break;
case 3: printf("%d,%d,%d",hundred,ten,indiv);
printf("\n反序數字為:");
printf("%d%d%d\n",indiv,ten,hundred);
break;
case 2: printf("%d,%d",ten,indiv);
printf("\n反序數字為:");
printf("%d%d\n",indiv,ten);
break;
case 1: printf("%d",indiv);
printf("\n反序數字為:");
printf("%d\n",indiv);
break;
}
}
第五章
5.8 企業發放的獎金根據利潤提成。利潤I低於或等於10萬元時,獎金可提成10% ;利潤高於10萬元,低於20萬元(100000<I≤200000)時,其中10萬元按10%提成,高於10萬元的部分,可提成7.5% ;200000<I≤400000時,其中20萬元仍按上述辦法提成(下同),高於20萬元的部分按5%提成;400000<I≤600000時,高於40萬元的部分按3%提成;600000〈I≤1000000時,高於60萬的部分按1.5%提成;I>1000000時,超過100萬元的部分按1%提成。從鍵盤輸入當月利潤I,求應發放獎金總數。要求:(1)用if語句編程序;(2)用switch語句編程序。
解:計算利潤時,要特別注意不同利潤的不同提成比例。例如,利潤為15萬元,其中有10萬元按10%的比例提成,另外5萬元則按7.5%提成。
(1) 用if語句編程序。
#include <stdio.h>
main()
{ long i;
float bonus,bon1,bon2,bon4,bon6,bon10;
bon1=100000*0.1; /*利潤為10萬元時的獎金*/
bon2=bon1+100000*0.075; /*利潤為20萬元時的獎金*/
bon4=bon2+200000*0.05; /*利潤為40萬元時的獎金*/
bon6=bon4+200000*0.03; /*利潤為60萬元時的獎金*/
bon10=bon6+400000*0.015; /*利潤為100萬元時的獎金*/
printf("請輸入利潤i:");
scanf("%ld",&i);
if(i<=100000)
bonus=i*0.1; /*利潤在10萬元以內按0.1提成獎金*/
else if(i<=200000)
bonus=bon1+(i-100000)*0.075; /*利潤在10萬至20萬元時的獎金*/
else if(i<=400000)
bonus=bon2+(i-200000)*0.05; /*利潤在20萬至40萬元時的獎金*/
else if(i<=600000)
bonus=bon4+(i-400000)*0.03; /*利潤在40萬至60萬元時的獎金*/
else if(i<=1000000)
bonus=bon6+(i-600000)*0.015; /*利潤在60萬至100萬元時的獎金*/
else
bonus=bon10+(i-1000000)*0.01; /*利潤在100萬元以上時的獎金*/
printf(」獎金是%10.2f\n",bonus);
}
此題的關鍵在於正確寫出每一區間的獎金計算公式。例如利潤在10萬元至20萬時,獎金應由兩部分組成:①利潤為10萬元時應得的獎金。即100000ⅹ0.1;②10萬元以上部分應得的獎金。即(num-100000)ⅹ0.075。同理,20萬~40萬這個區間的獎金也應由兩部分組成:①利潤為20萬元時應得的獎金,即100000ⅹ0.1ⅹ10萬ⅹ0.075;②20萬元以上部分應得的獎金,即(num-200000)ⅹ0.05。程序中先把10萬、20萬、40萬、60萬、100萬各關鍵點的獎金計算出來,即bon1、bon2、bon4、bon6、hon10;然後再加上各區間附加部分的獎金。
(2) 用switch語句編程序。
輸入利潤i,確定相應的提成等級branch
根據branch確定獎金值
0 獎金=i*0.1
1 獎金=bon1+(i-105)*0.075
2 獎金=bon2+(i-2*105)*0.05
3
4 獎金=bon4+(i-4*105)*0.03
5
6 獎金=bon6+(i-6*105)*0.015
7
8
9
10 獎金=bon10+(i-106)*0.01
輸出獎金
#include <stdio.h>
main()
{ long i;
float bonus, bon1, bon2, bon4, bon6, bon10;
int c;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
printf("請輸入利潤i:");
scanf("%ld",&i);
c=i/100000;
if(c>10) c=10;
switch(c)
{ case 0: bonus=1*0.1;break;
case 1: bonus=bon1+(i-100000)*0.075;break;
case 2 :
case 3: bonus=bon2+(i-200000)*0.05; break;
case 4:
case 5: bonus=bon4+(i-400000)*0.03;break;
case 6:
case 7:
case 8:
case 9: bonus=bon6+(i-600000)*0.015;break;
case 10: bonus=bon10+(i-1000000)*0.01;
}
printf("獎金是%10.2f",bonus);
}
5.9 輸入4個整數,要求按由大到小的順序輸出。
解:此題採用依次比較的方法排出其大小順序。在學習了循環和數組以後,可以有更多的排序方法。
#include <stdio.h>
main()
{ int t,a,b,c,d;
printf("請輸入4個整數:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("\n a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
if(a>b) {t=a; a=b; b=t;}
if(a>c) {t=a; a=c; c=t;}
if(a>d) {t=a; a=d; d=t;}
if(b>c) {t=a; b=c; c=t;}
if(b>d) {t=b; b=d; d=t;}
if(c>d) {t=c; c=d; d=t;}
printf("排序結果如下:\n");

⑸ c語言程序設計試題

c語言程序設計試題

闡述編程語言的概念,學習進制轉換以及程序的基本運行原理,讓大家先有一個整體上的認識。下面是我整理的關於c語言程序設計基礎知識,希望大家認真閱讀!

【程序1】

題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?

1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去

掉不滿足條件的排列。

2.程序源代碼:

代碼如下:

#include "stdio.h"

#include "conio.h"

main()

{

int i,j,k;

printf(" ");

for(i=1;i<5;i++) /*以下為三重循環*/

for(j=1;j<5;j++)

for (k=1;k<5;k++)

{

if (i!=k&&i!=j&&j!=k) /*確保i、j、k三位互不相同*/

printf("%d,%d,%d ",i,j,k);

}

getch();

}

【程序2】

題目:企業發放的獎金根據利潤提成。利潤(I)低於或等於10萬元時,獎金可提10%;利潤高

於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可可提

成7.5%;20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於

40萬元的部分,可提成3%;60萬到100萬之間時,高於60萬元的部分,可提成1.5%,高於

100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?

1.程序分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。

2.程序源代碼:

代碼如下:

#include "stdio.h"

#include "conio.h"

main()

{

long int i;

int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;

scanf("%ld",&i);

bonus1=100000*0. 1;

bonus2=bonus1+100000*0.75;

bonus4=bonus2+200000*0.5;

bonus6=bonus4+200000*0.3;

bonus10=bonus6+400000*0.15;

if(i<=100000)

bonus=i*0.1;

else if(i<=200000)

bonus=bonus1+(i-100000)*0.075;

else if(i<=400000)

bonus=bonus2+(i-200000)*0.05;

else if(i<=600000)

bonus=bonus4+(i-400000)*0.03;

else if(i<=1000000)

bonus=bonus6+(i-600000)*0.015;

else

bonus=bonus10+(i-1000000)*0.01;

printf("bonus=%d",bonus);

getch();

}

【程序3】

題目:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?

1.程序分析:在10萬以內判斷,先將該數加上100後再開方,再將該數加上268後再開方,如果開方後

的結果滿足如下條件,即是結果。請看具體分析:

2.程序源代碼:

代碼如下:

#include "math.h"

#include "stdio.h"

#include "conio.h"

main()

{

long int i,x,y,z;

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

{

x=sqrt(i+100); /*x為加上100後開方後的結果*/

y=sqrt(i+268); /*y為再加上168後開方後的結果*/

if(x*x==i+100&&y*y==i+268) /*如果一個數的平方根的平方等於該數,這說明此數是完全平方數*/

printf(" %ld ",i);

}

getch();

}

【程序4】

題目:輸入某年某月某日,判斷這一天是這一年的第幾天?

1.程序分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的.第幾天,特殊

情況,閏年且輸入月份大於3時需考慮多加一天。

2.程序源代碼:

代碼如下:

#include "stdio.h"

#include "conio.h"

main()

{

int day,month,year,sum,leap;

printf(" please input year,month,day ");

scanf("%d,%d,%d",&year,&month,&day);

switch(month) /*先計算某月以前月份的總天數*/

{

case 1:sum=0;break;

case 2:sum=31;break;

case 3:sum=59;break;

case 4:sum=90;break;

case 5:sum=120;break;

case 6:sum=151;break;

case 7:sum=181;break;

case 8:sum=212;break;

case 9:sum=243;break;

case 10:sum=273;break;

case 11:sum=304;break;

case 12:sum=334;break;

default:printf("data error");break;

}

sum=sum+day; /*再加上某天的天數*/

if(year%400==0||(year%4==0&&year%100!=0)) /*判斷是不是閏年*/

leap=1;

else

leap=0;

if(leap==1&&month>2) /*如果是閏年且月份大於2,總天數應該加一天*/

sum++;

printf("It is the %dth day.",sum);

getch();

}

【程序5】

題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。

1.程序分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,

然後再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。

2.程序源代碼:

代碼如下:

#include "stdio.h"

#include "conio.h"

main()

{

int x,y,z,t;

scanf("%d%d%d",&x,&y,&z);

if (x>y)

{t=x;x=y;y=t;} /*交換x,y的值*/

if(x>z)

{t=z;z=x;x=t;} /*交換x,z的值*/

if(y>z)

{t=y;y=z;z=t;} /*交換z,y的值*/

printf("small to big: %d %d %d ",x,y,z);

getch();

}

【程序6】

題目:用*號輸出字母C的圖案。

1.程序分析:可先用'*'號在紙上寫出字母C,再分行輸出。

2.程序源代碼:

代碼如下:

#include "stdio.h"

#include "conio.h"

main()

{

printf("Hello C-world! ");

printf(" **** ");

printf(" * ");

printf(" * ");

printf(" **** ");

getch();

}

【程序7】

題目:輸出特殊圖案,請在c環境中運行,看一看,Very Beautiful!

1.程序分析:字元共有256個。不同字元,圖形不一樣。

2.程序源代碼:

代碼如下:

#include "stdio.h"

#include "conio.h"

main()

{

char a=176,b=219;

printf("%c%c%c%c%c ",b,a,a,a,b);

printf("%c%c%c%c%c ",a,b,a,b,a);

printf("%c%c%c%c%c ",a,a,b,a,a);

printf("%c%c%c%c%c ",a,b,a,b,a);

printf("%c%c%c%c%c ",b,a,a,a,b);

getch();

}

【程序8】

題目:輸出9*9口訣。

1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。

2.程序源代碼:

代碼如下:

#include "stdio.h"

#include "conio.h"

main()

{

int i,j,result;

printf(" ");

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

{

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

{

result=i*j;

printf("%d*%d=%-3d",i,j,result); /*-3d表示左對齊,佔3位*/

}

printf(" "); /*每一行後換行*/

}

getch();

}

【程序9】

題目:要求輸出國際象棋棋盤。

1.程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。

2.程序源代碼:

代碼如下:

#include "stdio.h"

#include "conio.h"

main()

{

int i,j;

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

{

for(j=0;j<8;j++)

if((i+j)%2==0)

printf("%c%c",219,219);

else

printf(" ");

printf(" ");

}

getch();

}

;

⑹ 跪求《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語言程序設計能力教程答案

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語言程序設計答案!題目如下(兩道題)!!重金答謝!回答運行正確可加賞金。在線等高手江湖救急!

第一題:首先值得說明的是,你的題目有點兒問題應該是: 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;
}

熱點內容
如何用學習機配置的筆寫字 發布:2025-02-05 04:09:15 瀏覽:392
5歲編程 發布:2025-02-05 04:06:21 瀏覽:648
jdk17linux64位 發布:2025-02-05 04:01:01 瀏覽:466
人臉驗證演算法 發布:2025-02-05 03:54:45 瀏覽:358
解壓驛站 發布:2025-02-05 03:54:44 瀏覽:598
php系統下載 發布:2025-02-05 03:54:43 瀏覽:143
android相機圖片 發布:2025-02-05 03:54:09 瀏覽:842
php小票列印機 發布:2025-02-05 03:42:00 瀏覽:613
vivo安卓手機如何連接藍牙耳機 發布:2025-02-05 03:40:30 瀏覽:957
youtubeapp緩存 發布:2025-02-05 03:33:10 瀏覽:747