




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PAGEPAGE3四、編寫程序題及參考答案基本按照把同類題目盡量排在一起原則組織的,便于讀者學(xué)習(xí)掌握編程方法和思路,提高編程能力。
【4.1】已知銀行整存整取存款不同期限的月息利率分別為:
0.315%期限一年
0.330%期限二年
月息利率=0.345%期限三年
0.375%期限五年
0.420%期限八年
要求輸入存錢的本金和期限,求到期時(shí)能從銀行得到的利息與本金的合計(jì)。
【4.2】輸入年份year和月month,求該月有多少天。判斷是否為閏年,可用如下C語言表達(dá)式:year%4==0&&year%100!=0||year%400==0。若表達(dá)式成立(即表達(dá)式值為1),則year為閏年;否則,表達(dá)式不成立(即值為0),year為平年。
【4.3】編寫一個(gè)簡單計(jì)算器程序,輸入格式為:data1opdata2。其中data1和data2是參加運(yùn)算的兩個(gè)數(shù),op為運(yùn)算符,它的取值只能是+、-、*、/。
【4.4】輸入n值,輸出如圖所示矩形?!?.5】輸入n值,輸出如圖所示平行四邊形?!?.6】輸入n值,輸出如圖所示高為n的等腰三角形。【4.7】編寫程序,輸入三角型的三條邊長,求其面積。注意:對于不合理的邊長輸入要輸出數(shù)據(jù)錯(cuò)誤的提示信息?!?.8】編寫程序求出555555的約數(shù)中最大的三位數(shù)是多少?!?.9】從鍵盤輸入任意的字符,按下列規(guī)則進(jìn)行分類計(jì)數(shù)。
第一類'0','1','2','3','4','5','6','7','8','9'
第二類'+','-','*','/','%','='
第三類其它字符
當(dāng)輸入字符'\'時(shí)先計(jì)數(shù),然后停止接收輸入,打印計(jì)數(shù)的結(jié)果?!?.10】編寫程序計(jì)算下列序列的值:要求最后一項(xiàng)小于0.001時(shí)、或者當(dāng)N=20時(shí)尚未達(dá)到精度要求,則停止計(jì)算?!?.11】從鍵盤輸入十個(gè)整數(shù),用插入法對輸入的數(shù)據(jù)按照從小到大的順序進(jìn)行排序,將排序后的結(jié)果輸出?!?.12】輸入一個(gè)正整數(shù),要求以相反的順序輸出該數(shù)。例如輸入12345,輸出位54321?!?.13】編寫程序,讀入一個(gè)整數(shù)N;若N為非負(fù)數(shù),則計(jì)算N到2×N之間的整數(shù)和;若N為一個(gè)負(fù)數(shù),則求2×N到N之間的整數(shù)和。分別利用for和while寫出兩個(gè)程序。【4.14】求解愛因斯坦數(shù)學(xué)題。有一條長階梯,若每步跨2階,則最后剩余1階,若每步跨3階,則最后剩2階,若每步跨5階,則最后剩4階,若每步跨6階則最后剩5階,若每步跨7階,最后才正好一階不剩。請問,這條階梯共有多少階?【4.15】一個(gè)自然數(shù)被8除余1,所得的商被8除也余1,再將第二次的商被8除后余7,最后得到一個(gè)商為a。又知這個(gè)自然數(shù)被17除余4,所得的商被17除余15,最后得到一個(gè)商是a的2倍。編寫程序求這個(gè)自然數(shù)?!?.16】若一個(gè)口袋中放有12個(gè)球,其中有3個(gè)紅的,3個(gè)白的和6個(gè)黑的,每次從中任取8個(gè)球,編寫程序求出共有多少種不同的顏色搭配?!?.17】100匹馬馱100擔(dān)貨,大馬一匹馱3擔(dān),中馬一匹馱2擔(dān),小馬兩匹馱1擔(dān)。試編寫程序計(jì)算大、中、小馬的數(shù)目?!?.18】編寫程序,輸出用一元人民幣兌換成1分、2分和5分硬幣的不同兌換方法?!?.19】設(shè)N是一個(gè)四位數(shù),它的9倍恰好是其反序數(shù)(例如:123的反序數(shù)是321),求N的值?!?.20】請驗(yàn)證2000以內(nèi)的哥德巴赫猜想,對于任何大于4的偶數(shù)均可以分解為兩個(gè)素?cái)?shù)之和?!?.21】猜數(shù)游戲。由計(jì)算機(jī)"想"一個(gè)數(shù)請人猜,如果人猜對了,則結(jié)束游戲,否則計(jì)算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小,直到人猜對為止。計(jì)算機(jī)記錄人猜的次數(shù),以此可以反映出猜數(shù)者"猜"的水平。【4.22】求矩陣A[2*3]的轉(zhuǎn)置矩陣B[3*2]。設(shè)矩陣A為:
┏123┓┏14┓
A=┃┃B=┃25┃
┗456┛┗36┛【4.23】輸入5×5的數(shù)組,編寫程序?qū)崿F(xiàn):
(1)求出對角線上各元素的和;
(2)求出對角線上行、列下標(biāo)均為偶數(shù)的各元素的積;
(3)找出對角線上其值最大的元素和它在數(shù)組中的位置?!?.24】編寫程序,以字符形式輸入一個(gè)十六進(jìn)制數(shù),將其變換為一個(gè)十進(jìn)制整數(shù)后輸出。【4.25】編寫程序,輸入一個(gè)十進(jìn)制整數(shù),將其變換為二進(jìn)制后儲(chǔ)存在一個(gè)字符數(shù)組中?!?.26】求這樣一個(gè)三位數(shù),該三位數(shù)等于其每位數(shù)字的階乘之和。
即:abc=a!+b!+c!【4.27】找出一個(gè)二維數(shù)組中的鞍點(diǎn),即該位置上的元素是該行上的最大值,是該列上的最小值。二維數(shù)組也可能沒有鞍點(diǎn)?!?.28】編寫一個(gè)函數(shù)實(shí)現(xiàn)將字符串str1和字符串str2合并,合并后的字符串按其ASCII碼值從小到大進(jìn)行排序,相同的字符在新字符串中只出現(xiàn)一次?!?.29】編寫程序,讀入一個(gè)以符號"."結(jié)束的長度小于20字節(jié)的英文句子,檢查其是否為回文(即正讀和反讀都是一樣的,不考慮空格和標(biāo)點(diǎn)符號)。例如:
讀入句子:MADAMI'MADAM.它是回文,所以輸出:YES
讀入句子:ABCDBA).它不是回文,所以輸出:NO【4.30】編寫程序,其中包括一個(gè)函數(shù),此函數(shù)的功能是:對一個(gè)長度為N的字符串從其第K個(gè)字符起,刪去M個(gè)字符,組成長度為N-M的新字符串(其中N、M<=80,K<=N)。例如輸入字符串"Wearepoorstudents.",利用此函數(shù)進(jìn)行刪除"poor"的處理,輸出處理后的字符串是"Wearestudents."?!?.31】編寫函數(shù),通過指針將一個(gè)字符串反向?!?.32】編寫一個(gè)函數(shù)insert(s1,s2,ch),實(shí)現(xiàn)在字符串s1中的指定字符ch位置處插入字符串s2?!?.33】編寫成績排序程序。按學(xué)生的序號輸入學(xué)生的成績,按照分?jǐn)?shù)由高到低的順序輸出學(xué)生的名次、該名次的分?jǐn)?shù)、相同名次的人數(shù)和學(xué)號;同名次的學(xué)號輸出在同一行中,一行最多輸出10個(gè)學(xué)號。【4.34】編寫程序,從鍵盤輸入一行字符串,將其中的小寫字母全部轉(zhuǎn)換成大寫字母,然后輸出到一個(gè)磁盤文件"test"中保存?!?.35】從鍵盤輸入10個(gè)正整數(shù),求出最大數(shù),最小數(shù),以及他們的最大公約數(shù)。要求用數(shù)組實(shí)現(xiàn)?!揪帉懗绦蝾}參考答案】
【4.1】參考答案:
#include<stdio.h>
main()
{intyear;
floatmoney,rate,total;/*money:本金rate:月利率total:本利合計(jì)*/
printf("Inputmoneyandyear=?");
scanf("%f%d",&money,&year);/*輸入本金和存款年限*/
if(year==1)rate=0.00315;/*根據(jù)年限確定利率*/
elseif(year==2)rate=0.00330;
elseif(year==3)rate=0.00345;
elseif(year==5)rate=0.00375;
elseif(year==8)rate=0.00420;
elserate=0.0;
total=money+money*rate*12*year;/*計(jì)算到期的本利合計(jì)*/
printf("Total=%.2f\n",total);
}
【4.2】參考答案:
#include<stdio.h>
main()
{intyear,month,days;
printf("Enteryearandmonth:");
scanf("%d%d",&year,&month);
switch(month)
{case1:case3:case5:case7:case8:case10:case12:
days=31;break;/*處理"大"月*/
case4:case6:case9:case11:
days=30;break;/*處理"小"月*/
case2:if(year%4==0&&year%100!=0||year%400==0)
days=29;/*處理閏年平月*/
elsedays=28;/*處理不是閏年平月*/
break;
default:printf("Inputerror!\n");/*月份錯(cuò)誤*/
days=0;
}
if(days!=0)
printf("%d,%dis%ddays\n",year,month,days);
}
【4.3】參考答案:
#include<stdio.h>
main()
{floatdata1,data2;/*定義兩個(gè)操作數(shù)變量*/
charop;/*操作符*/
printf("Enteryourexpression:");
scanf("%f%c%f",&data1,&op,&data2);/*輸入表達(dá)式*/
switch(op)/*根據(jù)操作符分別進(jìn)行處理*/
{case'+':/*處理加法*/
printf("%.2f+%.2f=%.2f\n",data1,data2,data1+data2);break;
case'-':/*處理減法*/
printf("%.2f-%.2f=%.2f\n",data1,data2,data1-data2);break;
case'*':/*處理乘法*/
printf("%.2f*%.2f=%.2f\n",data1,data2,data1*data2);break;
case'/':/*處理除法*/
if(data2==0)/*若除數(shù)為0*/
printf("Divisionbyzero.\n");
else
printf("%.2f/%.2f=%.2f\n",data1,data2,data1/data2);
break;
default:/*輸入了其它運(yùn)算符*/
printf("Unknownoperater.\n");
}
}
【4.4】分析:打印此圖形用兩重循環(huán)實(shí)現(xiàn)。
圖形要重復(fù)n行,故采用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)循環(huán)n次,循環(huán)體內(nèi)部打印一行'*'號,把上述思路表示為:
for(i=1;i<=n;i++)
打印一行'*'號;
每行有n個(gè)'*'號,再采用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)n次循環(huán),循環(huán)內(nèi)部用格式輸出語句打印一個(gè)'*'號,即:
for(j=1;j<=n;j++)
printf("*");
按照上述思路,實(shí)現(xiàn)打印矩形。
參考答案:
main()
{inti,j,n;
printf("\nPleaseEntern:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
printf("*");
printf("\n");
}
}
【4.5】分析:此圖形和上題的區(qū)別在于在每一行先要打印空格,然后再打印n個(gè)'*'號,在上題第一層循環(huán)體內(nèi)打印'*'號的循環(huán)前面增加一個(gè)循環(huán)打印空格。每行空格的個(gè)數(shù)是逐行減少的,由于第一層循環(huán)的控制變量i是逐行增1,所以用一個(gè)固定值的數(shù)減去i就可實(shí)現(xiàn)對空格個(gè)數(shù)的控制,在此題中固定值可使用變量n。
參考答案:
main()
{inti,j,n;
printf("\nPleaseEntern:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)
printf("");
for(j=1;j<=n;j++)
printf("*");
printf("\n");
}
}
【4.6】分析:此題和上題的區(qū)別在于每行'*'的數(shù)量逐行減少,可以使用上題控制空格個(gè)數(shù)的思路來控制'*'號的個(gè)數(shù),請注意每行'*'的個(gè)數(shù)都是奇數(shù)。
參考答案:
main()
{inti,j,n;
printf("\nPleaseEntern:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)
printf("");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
【4.7】參考答案:
#include"math.h"
main()
{intflag=0;
floata,b,c,s;
do
{printf("Pleaseenterabc:");
scanf("%f%f%f",&a,&b,&c);
if(a>b+c||b>a+c||c>a+b)
flag=1;
}while(flag);
s=(a+b+c)/2;
printf("S=%f",s=sqrt((s-a)*(s-b)*(s-c)));
}
【4.8】參考答案:
#include<stdio.h>
main()
{intj;
longn;/*使用長整型變量,以免超出整數(shù)的表示范圍*/
printf("Pleaseinputnumber:");
scanf("%ld",&n);
for(j=999;j>=100;j--)/*可能取值范圍在999到100之間,j從大到小*/
if(n%j==0)/*若能夠整除j,則j是約數(shù),輸出結(jié)果*/
{printf("Themaxfactorwith3digitsin%ldis:%d.\n",n,j);
break;/*控制退出循環(huán)*/
}
}【4.9】參考答案:
#include<stdio.h>
main()
{intclass1,class2,class3;
charch;
class1=class2=class3=0;/*初始化分類計(jì)數(shù)器*/
do
{ch=getch();
switch(ch)
{case'0':case'1':case'2':case'3':case'4':
case'5':case'6':case'7':case'8':case'9':
class1++;break;/*對分類1計(jì)數(shù)*/
case'+':case'-':case'*':case'/':case'%':case'=':
class2++;break;/*對分類2計(jì)數(shù)*/
default:class3++;break;/*對分類3計(jì)數(shù)*/
}
}while(ch!='\\');/*字符'\'在C程序中要使用轉(zhuǎn)義符'\\'*/
printf("class1=%d,class2=%d,class3=%d\n",class1,class2,class3);
【4.10】參考答案:
main()
{inti;
floats=1;
for(i=1;i<=20&&1.0/i/(i+1)>0.001;i++)
s=s+1.0/i/(i+1);
printf("Result=%fi=%d\n",s,i);
}【4.11】參考答案:
main()
{inti,j,num,a[10];
for(i=0;i<10;i++)
{printf("EnterNo.%d:",i+1);
scanf("%d",&num);
for(j=i-1;j>=0&&a[j]>num;j--)
a[j+1]=a[j];
a[j+1]=num;
}
for(i=0;i<10;i++)
printf("No.%d=%d\n",i+1,a[i]);
}
【4.12】參考答案:
main()
{intn;
printf("Pleaseentern:");
scanf("%d",&n);
while(n>0)
{printf("%d",n%10);
n=n/10;
}
}
【4.13】參考答案:
main()
{inti,n;
longs1=0,s2=0;
printf("PleaseenterN:");
scanf("%d",&n);
if(n>=0)
for(i=n;i<=2*n;i++)
s1=s1+i;
else
for(i=n;i>=2*n;i--)
s1=s1+i;
i=n;
if(i>=0)
while(i<=2*n)
s2=s2+i++;
else
while(i>=2*n)
s2=s2+i--;
printf("Result1=%ldresult2=%ld\n",s1,s2);
}
【4.14】分析:據(jù)題意,階梯數(shù)滿足下面一組同余式:
x≡1(mod2)
x≡2(mod3)
x≡4(mod5)
x≡5(mod6)
x≡0(mod7)
參考答案:
#include<stdio.h>
main()
{inti=1;/*i為所設(shè)的階梯數(shù)*/
while(!((i%2==1)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==0)))
++i;/*滿足一組同余式的判別*/
printf("Staris_number=%d\n",i);
}
【4.15】參考答案:
main()
{inti,n,a;
for(i=0;;i++)
{if(i%8==1)
{n=i/8;
if(n%8==1)
{n=n/8;
if(n%8==7)a=n/8;
}
}
if(i%17==4)
{n=i/17;
if(n%17==15)n=n/17;
}
if(2*a==n)
{printf("result=%d\n",i);
break;
}
}
}【4.16】分析:用窮舉法解決此類問題。設(shè)任取紅球的個(gè)數(shù)為i,白球的個(gè)數(shù)為j,則取黑球的個(gè)數(shù)為8-i-j,據(jù)題意紅球和白球個(gè)數(shù)的取值范圍是0~3,在紅球和白球個(gè)數(shù)確定的條件下,黑球的個(gè)數(shù)取值應(yīng)為8-i-j<=6。
參考答案:
main()
{inti,j,count=0;
printf("REDBALLWHITEBALLBLACKBALL\n");
printf("\n");
for(i=0;i<=3;i++)/*循環(huán)控制變量i控制任取紅球個(gè)數(shù)0~3*/
for(j=0;j<=3;j++)/*循環(huán)控制變量j控制任取白球個(gè)數(shù)0~3*/
if((8-i-j)<=6)
printf("%2d:%d%d%d\n",++count,i,j,8-i-j);
}【4.17】分析:此題采用窮舉法。
參考答案:
main()
{intx,y,z,j=0;
for(x=0;x<=33;x++)
for(y=0;y<=(100-3*x)/2;y++)
{z=100-x-y;
if(z%2==0&&3*x+2*y+z/2==100)
printf("%2d:l=%2dm=%2ds=%2d\n",++j,x,y,z);
}
}
【4.18】分析:此題采用窮舉法。
參考答案:
main()
{intf1,f2,f5,count=0;
for(f5=0;f5<=20;f5++)
for(f2=0;f2<=(100-f5*5)/2;f2++)
{f1=100-f5*5-f2*2;
if(f5*5+f2*2+f1==100)
printf("No.%2d>>5:%4d2:%2d1:%2d\n",++count,f5,f2,f1);
}
}
【4.19】分析:此題采用窮舉法??稍O(shè)整數(shù)N的千、百、十、個(gè)位為i、j、k、m,其取值均為0~9,則滿足關(guān)系式:(i*103+j*102+10k+m)*9=(m*103+k*102+10j+i)的i、j、k、m即構(gòu)成N。
參考答案:
#include<stdio.h>
main()
{inti;
for(i=1002;i<1111;i++)/*窮舉四位數(shù)可能的值*/
if(i%10*1000+i/10%10*100+i/100%10*10+i/1000==i*9)
printf("Thenumbersatisfiedstatesconditionis:%d\n",i);
/*判斷反序數(shù)是否是原整數(shù)的9倍若是則輸出*/
}【4.20】參考答案:
main()
{inti,j,k,m,error;
for(i=6;i<=2000;i+=2)
{error=1;
for(j=2;j<i;j++)/*窮舉法分解i為兩個(gè)素?cái)?shù)j和m之和*/
{for(k=2;k<j;k++)/*檢驗(yàn)j是否素?cái)?shù)*/
if(j%k==0)/*j能夠被小于它的一個(gè)數(shù)整除就不是素?cái)?shù)*/
break;
if(k>=j)/*j是素?cái)?shù)*/
{m=i-j;
for(k=2;k<m;k++)/*檢驗(yàn)m是否素?cái)?shù)*/
if(m%k==0)
break;
if(k>=m)/*m也是素?cái)?shù),輸出結(jié)果*/
{printf("%4d=%4d+%4d\n",i,j,m);
error=0;
break;}
}
}
if(error)
printf("%4derror!");
}
}【4.21】參考答案:
#include<stdio.h>
#include<stdlib.h>
main()/*猜數(shù)程序*/
{intmagic;/*計(jì)算機(jī)"想"的數(shù)*/
intguess;/*人猜的數(shù)*/
intcounter;
magic=rand();/*通過調(diào)用隨機(jī)函數(shù)任意"想"一個(gè)數(shù)*/
guess=magic-1;/*初始化變量guess的值*/
counter=0;/*計(jì)數(shù)器清零*/
while(magic!=guess)
{printf("guessthemagicnumber:");
scanf("%d",&guess);/*人輸入所猜的數(shù)*/
counter++;
if(guess>magic)
printf("****Wrong****toohight\n");
elseif(guess<magic)
printf("****Wrong****toolow\n");
}
printf("****Right****\n");
printf("guesscounteris%d\n",counter);
}【4.22】參考答案:
main()
{inti,j,b[3][2];
inta[2][3]={{1,2,3},{4,5,6}};
for(i=0;i<=1;i++)
for(j=0;j<=2;j++)
b[j][i]=a[i][j];
for(i=0;i<=2;i++)
{for(j=0;j<=1;j++)
printf("%d",b[i][j]);
printf("\n");
}
}【4.23】參考答案:
main()
{inti,j,s1=0,s2=1,a[5][5];
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{printf("%d%d:",i,j);
scanf("%d",&a[i][j]);
}
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
printf("%5d",a[i][j]);
printf("\n");
}
j=0;
for(i=0;i<5;i++)
{s1=s1+a[i][i];
if(i%2==0)s2=s2*a[i][i];
if(a[i][i]>a[j][j])j=i;
}
printf("SUN=%d\nACCOM=%d\na[%d]=%d\n",s1,s2,j,a[j][j]);
}
【4.24】參考答案:
#include"stdio.h"
main()
{inti,n=0,a[4]={0};
printf("Pleaseenteradigit:");
for(i=0;i<4&&(a[i]=getchar())!='\n';i++);
for(i=0;i<4;i++)
if(a[i]>=48&&a[i]<=57)a[i]=a[i]-48;
elseif(a[i]>=65&&a[i]<=69)a[i]=a[i]-55;
elseif(a[i]>=97&&a[i]<=102)a[i]=a[i]-87;
elseprintf("inputError!");
for(i=0;i<4;i++)
n=n*16+a[i];
printf("%d",n);
}
【4.25】參考答案:
main()
{inti,n,k=16,a[16]={0};
printf("Pleaseenteradigit:");
scanf("%d",&n);
while(n>0)/*將十進(jìn)制數(shù)轉(zhuǎn)變?yōu)槎M(jìn)制數(shù)*/
{a[--k]=n%2;
n=n/2;
}
for(i=0;i<16;i++)
printf("%2d",a[i]);
}
【4.26】參考答案:
main()
{inta[5],i,t,k;
for(i=100;i<1000;i++)
{for(t=0,k=1000;k>=10;t++)
{a[t]=(i%k)/(k/10);
k/=10;
}
if(f(a[0])+f(a[1])+f(a[2])==i)
printf("%d",i);
}
}
f(m)
intm;
{inti=0,t=1;
while(++i<=m)t*=i;
return(t);
}
【4.27】參考答案:
main()
{inti,j,l,n,m,k,a[20][20];
printf("Pleaseentern,m=");
scanf("%d,%d",&n,&m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
printf("%6d",a[i][j]);
printf("\n");
}
for(i=0;i<n;i++)
{for(j=0,k=0;j<m;j++)
if(a[i][j]>a[i][k])k=j;/*找出該行最大值*/
for(l=0;l<n;l++)/*判斷a[i][k]是否為該列最小*/
if(a[l][k]<a[i][k])break;/*該列有一個(gè)數(shù)比a[i][k]小*/
if(l>=n)/*沒有比a[i][k]小的數(shù),循環(huán)變量l就超過最大值*/
printf("Point:a[%d][%d]==%d",i,k,a[i][k]);
}
}
【4.28】分析:按題目的要求進(jìn)行分析,數(shù)字1一定是放在第一行第一列的格中,數(shù)字6一定是放在第二行第三列的格中。在實(shí)現(xiàn)時(shí)可用一個(gè)一維數(shù)組表示,前三個(gè)元素表示第一行,后三個(gè)元素表示第二行。先根據(jù)原題初始化數(shù)組,再根據(jù)題目中填寫數(shù)字的要求進(jìn)行試探。
參考答案:
#include<stdio.h>
intcount;/*計(jì)數(shù)器*/
main()
{staticinta[]={1,2,3,4,5,6};/*初始化數(shù)組*/
printf("Thepossibletablesatisfiedaboveconditionsare:\n");
for(a[1]=a[0]+1;a[1]<=5;++a[1])/*a[1]必須大于a[0]*/
for(a[2]=a[1]+1;a[2]<=5;++a[2])/*a[2]必須大于a[1]*/
for(a[3]=a[0]+1;a[3]<=5;++a[3])/*第二行的a[3]必須大于a[0]*/
for(a[4]=a[1]>a[3]?a[1]+1:a[3]+1;a[4]<=5;++a[4])
/*第二行的a[4]必須大于左側(cè)a[3]和上邊a[1]*/
if(jud1(a))
print(a);/*如果滿足題意,打印結(jié)果*/
}
jud1(s)/*判斷數(shù)組中的數(shù)字是否有重復(fù)的*/
ints[];
{inti,l;
for(l=1;l<4;l++)
for(i=l+1;i<5;++i)
if(s[l]==s[i])
return(0);/*若數(shù)組中的數(shù)字有重復(fù)的,返回0*/
return(1);/*若數(shù)組中的數(shù)字沒有重復(fù)的,返回1*/
}
print(u)
intu[];
{intk;
printf("\nNo.:%d",++count);
for(k=0;k<6;k++)
if(k%3==0)/*輸出數(shù)組的前三個(gè)元素作為第一行*/
printf("\n%d",u[k]);
else/*輸出數(shù)組的后三個(gè)元素作為第二行*/
printf("%d",u[k]);
}
【4.29】參考答案:
#include"string.h"
strcmbn(a,b,c)/*數(shù)組合并函數(shù):將數(shù)組a、b合并到*/
chara[],b[],c[];
{chartmp;
inti,j,k,m,n;
m=strlen(a);
n=strlen(b);
for(i=0;i<m-1;i++)/*對數(shù)組a排序*/
{for(j=i+1,k=i;j<m;j++)
if(a[j]<a[k])k=j;
tmp=a[i];a[i]=a[k];a[k]=tmp;
}
for(i=0;i<n-1;i++)/*對數(shù)組b排序*/
{for(j=i+1,k=i;j<n;j++)
if(b[j]<b[k])k=j;
tmp=b[i];b[i]=b[k];b[k]=tmp;
}
i=0;j=0;k=0;
while(i<m&&j<n)/*合并*/
if(a[i]>b[j])
c[k++]=b[j++];/*將a[i]、b[j]中的小者存入c[k]*/
else
{c[k++]=a[i++];
if(a[i-1]==b[j])j++;/*如果a、b當(dāng)前元素相等,刪掉一個(gè)*/
}
while(i<m)c[k++]=a[i++];/*將a或b中剩余的數(shù)存入c*/
while(j<n)c[k++]=b[j++];
c[k]='\0';
}【4.30】參考答案:
#include"stdio.h"
main()
{chars[21],*p,*q;
gets(s);
p=s;
q=s;
while(*q!='\0')q++;
q-=2;
while(p<q)/*指針p指向字符串首,指針q指向串未*/
if(*p++!=*q--)/*指針p、q同時(shí)向中間移動(dòng),比較對稱的兩個(gè)字符*/
{printf("NO\n");
break;
}
if(p>=q)
printf("YES\n");
}
【4.31】參考答案:
strcut(s,m,k)
chars[];
intm,k;
{char*p;
inti;
p=s+m;/*指針p指向要被刪除的字符*/
while((*p=*(p+k))!='\0')/*p+k指向要前移的字符*/
p++;
}
【4.97】參考答案:
strchg(s)
char*s;
{charc,*p;
p=s;
while(*p!='\0')p++;
p--;
while(s<p)
{c=*s;
*s++=*p;
*p--=c;
}
}
【4.32】參考答案:
insert(s1,s2,ch)
chars1[],s2[],ch;
{char*p,*q;
p=s1;
while(*p++!=ch);
while(*s2!='\0')
{q=p;
while(*q!='\0')q++;
while(q>=p)
*(q+1)=*q--;
*++q=*s2++;
p++;
}
}【4.33】參考答案一:
#include"stdio.h"
structstudent
{intn;
intmk;
};
main()
{inti,j,k,count=0,no;
structstudentstu[100],*s[100],*p;
printf("\nPleaseentermark(ifmark<0isend)\n");
for(i=0;i<100;i++)
{printf("No.%04d==",i+1);
scanf("%d",&stu[i].mk);
s[i]=&stu[i];
stu[i].n=i+1;
if(stu[i].mk<=0)break;
for(j=0;j<i;j++)
for(k=j+1;k<=i;k++)
if(s[j]->mk<s[k]->mk)
{p=s[j];s[j]=s[k];s[k]=p;
}
}
for(no=1,count=1,j=0;j<i;j++)
{if(s[j]->mk>s[j+1]->mk)
{printf("\nNo.%3d==%4d%4d:",no,s[j]->mk,count);
for(k=j-count+1;k<=j;k++)
{printf("%03d",s[k]->n);
if((k-(j-count))%10==0&&k!=j)
printf("\n");
}
count=1;
no++;
}
elsecount++;
}
}
參考答案二:
#include"stdio.h"
#defineN5
structstudent
{intnumber;
intscore;
intrank;
intno;
}stu[N];
main()
{inti,j,k,count,rank,score;
structstudenttemp;
for(i=1;i<=N;i++)
{printf("EnterN.o%d=",i);
scanf("%d%d",&temp.number,&temp.score);
for(j=i-1;j>0;j--)
if(stu[j-1].score<temp.score)
stu[j]=stu[j-1];
elsebreak;
stu[j]=temp;
}
stu[0].rank=1;
count=1;
k=0;
for(i=0;i<N-1;i++)
{score=stu[i].score;
rank=stu[i].rank;
if(stu[i+1].score==stu[i].score)
{stu[i+1].rank=stu[i].rank;
count++;
}
else
{for(j=0;j<count;j++)
stu[k+j].no=count-j;
stu[i+1].rank=stu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲常識(shí)培訓(xùn)體系構(gòu)建
- 口腔護(hù)理刷牙順序規(guī)范
- 解除合伙協(xié)議協(xié)議書
- 足球發(fā)展框架協(xié)議書
- 食堂共管賬戶協(xié)議書
- 魯南地質(zhì)工程協(xié)議書
- 露天采礦承包協(xié)議書
- 購銷合同變更協(xié)議書
- 防汛物質(zhì)供貨協(xié)議書
- 重慶股權(quán)轉(zhuǎn)讓協(xié)議書
- JJG 40-2011X射線探傷機(jī)
- GB/T 33217-2016沖壓件毛刺高度
- GB/T 31765-2015高密度纖維板
- GB/T 21618-2008危險(xiǎn)品易燃固體燃燒速率試驗(yàn)方法
- GB/T 19165-2003日光溫室和塑料大棚結(jié)構(gòu)與性能要求
- 品質(zhì)管理概念培訓(xùn)
- 《思想道德與法治》 課件 第四章 明確價(jià)值要求 踐行價(jià)值準(zhǔn)則
- 《擬行路難》課件26張
- 西安市非學(xué)歷培訓(xùn)機(jī)構(gòu)公示表
- DB64∕T 802-2021 有限空間作業(yè)安全技術(shù)規(guī)范
- 維修記錄表模板
評論
0/150
提交評論