版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【MOOC】《C語言程序設(shè)計(jì)(上)》(北京理工大學(xué))中國大學(xué)慕課答案第二周:數(shù)據(jù)計(jì)算實(shí)現(xiàn)與順序結(jié)構(gòu)程序設(shè)計(jì)(一)第二周作業(yè)1.單選題:下列可以正確表示字符型常數(shù)的是____
選項(xiàng):
A、'\t’
B、"a"
C、"\n"
D、297
答案:【'\t’】2.單選題:已知intx=5,y=5,z=5;執(zhí)行語句x%=y+z;后,x的值是____
選項(xiàng):
A、5
B、0
C、1
D、6
答案:【5】3.單選題:已知inti=5;執(zhí)行語句i+=++i;i的值是____
選項(xiàng):
A、12
B、10
C、11
D、其他答案都不對(duì)
答案:【12】4.單選題:已知:chara;intb;floatc;doubled;執(zhí)行語句c=a+b+c+d;后,變量c的數(shù)據(jù)類型是____
選項(xiàng):
A、float
B、int
C、char
D、double
答案:【float】5.單選題:已知”inta=5,b=5,c;”,則執(zhí)行表達(dá)式”c=a=a>b”后變量a的值為____
選項(xiàng):
A、0
B、1
C、4
D、5
答案:【0】6.單選題:已知:intx,y;doublez;則以下語句中錯(cuò)誤的函數(shù)調(diào)用是____
選項(xiàng):
A、scanf("%x%o%6.2f",&x,&y,&z)
B、scanf("%d,%lx,%le",&x,&y,&z)
C、scanf("%2d%d%lf",&x,&y,&z)
D、scanf("%x%*d%o",&x,&y)
答案:【scanf("%x%o%6.2f",&x,&y,&z)】7.單選題:已知inti=10;表達(dá)式“20-0<=i<=9”的值是____
選項(xiàng):
A、1
B、0
C、19
D、20
答案:【1】8.單選題:溫度華氏和攝氏的關(guān)系是:C=5(F-32)/9。已知:floatC,F;由華氏求攝氏的正確的賦值表達(dá)式是____
選項(xiàng):
A、C=5*(F-32)/9
B、C=5/9(F-32)
C、C=5/9*(F-32)
D、三個(gè)表達(dá)式都正確
答案:【C=5*(F-32)/9】9.單選題:把算術(shù)表達(dá)式表示為一個(gè)C語言表達(dá)式,正確的寫法是____
選項(xiàng):
A、–(31.6*a*8+1.0/7)*12
B、–(31.6a*8+1/7)*12
C、–(31.6a*8.0+1.0/7.0)*12
D、–31.6*a*8+1.0/7*12
答案:【–(31.6*a*8+1.0/7)*12】10.單選題:字符串"\\\065a,\n"的長度是____
選項(xiàng):
A、5
B、8
C、7
D、6
答案:【5】第三周:數(shù)據(jù)計(jì)算實(shí)現(xiàn)與順序結(jié)構(gòu)程序設(shè)計(jì)(二)第三周編程作業(yè)1.判斷三角形的形狀。題目內(nèi)容:輸入三角型的三條邊,判斷三角形的形狀。假設(shè)輸入的三邊邊長均>0。輸入格式:三角型的3條邊的長度(int型)。輸出格式:等邊三角形:equilateraltriangle等腰三角形:isocelestriangle不構(gòu)成三角形:non-triangle一般三角形:triangle輸入樣例:222輸出樣例:equilateraltriangle.
答案:【下面是一個(gè)C語言程序,用于判斷輸入的三條邊是否能構(gòu)成三角形,并判斷其形狀:
#include<stdio.h→
intmain(){
inta,b,c;
//輸入三條邊的長度
printf("請(qǐng)輸入三角形的三條邊的長度(整數(shù)):");
scanf("%d%d%d",&a,&b,&c);
//判斷是否能構(gòu)成三角形
if(a+b<=c||a+c<=b||b+c<=a){
printf("non-triangle.\n");
}else{
//判斷三角形的形狀
if(a==b&&b==c){
printf("equilateraltriangle.\n");
}elseif(a==b||b==c||a==c){
printf("isocelestriangle.\n");
}else{
printf("triangle.\n");
}
}
return0;
}】2.一年級(jí)的算術(shù)題。題目內(nèi)容:小明上小學(xué)一年級(jí)了,老師已經(jīng)教會(huì)了他們進(jìn)行整數(shù)的+、-、*、/、%計(jì)算,下面老師開始出題,給出一個(gè)簡(jiǎn)單的算術(shù)表達(dá)式,請(qǐng)小明給出計(jì)算結(jié)果。輸入格式:接受兩個(gè)整數(shù),每個(gè)整數(shù)之間使用空格分隔。例如輸入格式為:123444輸出格式:分別輸出按照整型數(shù)據(jù)進(jìn)行+、-、*、/、*之后的運(yùn)行結(jié)果。輸入樣例:103輸出樣例:10+3=1310-3=710*3=3010/3=310%3=1
答案:【#include<stdio.h→
intmain(){
inta,b;
//輸入兩個(gè)整數(shù)
printf("請(qǐng)輸入兩個(gè)整數(shù),用空格分隔:");
scanf("%d%d",&a,&b);
//計(jì)算并輸出結(jié)果
printf("%d+%d=%d\n",a,b,a+b);
printf("%d-%d=%d\n",a,b,a-b);
printf("%d*%d=%d\n",a,b,a*b);
printf("%d/%d=%d\n",a,b,a/b);
printf("%d%%%d=%d\n",a,b,a%b);
return0;
}】3.輸出字符的ASCII碼。題目內(nèi)容:我們?cè)谟?jì)算機(jī)基礎(chǔ)中已經(jīng)學(xué)過:字母在計(jì)算機(jī)中采用ASCII碼進(jìn)行存儲(chǔ)。下面要從鍵盤上輸入任意一個(gè)字符,然后輸出該字符對(duì)應(yīng)的ASCII碼。輸入格式:一個(gè)字符輸出格式:該字符對(duì)應(yīng)的ASCII碼輸入樣例:A輸出樣例:TheASCIIofcharacter'A'is65.
答案:【#include<stdio.h→
intmain(){
charch;
//輸入一個(gè)字符
printf("請(qǐng)輸入一個(gè)字符:");
scanf("%c",&ch);
//輸出該字符對(duì)應(yīng)的ASCII碼
printf("TheASCIIofcharacter'%c'is%d.\n",ch,(int)ch);
return0;
}】4.學(xué)學(xué)scanf和printf的用法吧。題目內(nèi)容:該如何處理double型的數(shù)據(jù):如何定義變量類型?如何使用scanf函數(shù)?如果已知圓柱的底面半徑r,以及高h(yuǎn),則可計(jì)算出圓柱的側(cè)面積,體積。其中。輸入格式:第一行輸入圓柱的底面半徑r第二行輸入圓柱的高h(yuǎn)輸出格式:s=<圓柱的側(cè)面積>,v=<圓柱的體積>要求1.所有變量都定義為雙精度類型2.結(jié)果精確到小數(shù)點(diǎn)后兩位。作為練習(xí)題目:我們已經(jīng)給您編寫好了大部分的代碼,請(qǐng)您自己修改幾個(gè)地方,完成程序的剩余部分。**********************************************分隔線************#include#definePAI3.1415926intmain(){intr,h;doubles,v;scanf("%d%d",);s=2*PAI*r*h;v=PAI*r*r*h;printf("s=%.2f,v=\n",s,);return0;}輸入樣例:28輸出樣例:s=100.53,v=100.53
答案:【#include<stdio.h>
#definePI3.1415926
intmain(){
doubler,h;//將r和h定義為double類型
doubles,v;//s和v已經(jīng)是double類型
//使用scanf讀取兩個(gè)double類型的值
scanf("%lf",&r);
scanf("%lf",&h);
//計(jì)算圓柱的側(cè)面積和體積
s=2*PI*r*h;
v=PI*r*r*h;
//輸出結(jié)果,精確到小數(shù)點(diǎn)后兩位
printf("s=%.2f,v=%.2f\n",s,v);
return0;
}】5.讓我們學(xué)習(xí)用C語言向世界問好?!癏elloWorld”示例程序最早出現(xiàn)于1972年,由貝爾實(shí)驗(yàn)室成員BrianKernighan撰寫的內(nèi)部技術(shù)文件《IntroductiontotheLanguageB》之中。不久同作者于1974年所撰寫的《ProgramminginC:ATutorial》,也延用這個(gè)示例。一般來說,這是每一種計(jì)算機(jī)編程語言中最基本、最簡(jiǎn)單的程序,亦通常是初學(xué)者所編寫的第一個(gè)程序。它還可以用來確定該語言的編譯器、程序開發(fā)環(huán)境,以及運(yùn)行環(huán)境是否已經(jīng)安裝妥當(dāng)。將“HelloWorld”作為第一個(gè)示范程序,已經(jīng)成為編程語言學(xué)習(xí)的傳統(tǒng)。我們?cè)谶@里繼續(xù)傳統(tǒng),這也是一種向前輩們致敬的方式之一吧!最早的程序基本是這個(gè)樣子的:#includeintmain(){printf("Helloworld.\n");return0;}請(qǐng)模仿上面的程序,看看是否可以通過編譯?如果你能通過這個(gè)簡(jiǎn)單的程序,那就讓我們繼續(xù)完成后面的習(xí)題吧。
答案:【#include<stdio.h>
intmaxSubArray(int*nums,intnumsSize){
intmaxEndingHere=nums[0];
intmaxSoFar=nums[0];
for(inti=1;i<numsSize;i++){
maxEndingHere=(maxEndingHere+nums[i]>nums[i])?maxEndingHere+nums[i]:nums[i];
maxSoFar=(maxSoFar>maxEndingHere)?maxSoFar:maxEndingHere;
}
returnmaxSoFar;
}
intmain(){
intT,N;
scanf("%d",&T);
while(T--){
scanf("%d",&N);
intnums[N];
for(inti=0;i<N;i++){
scanf("%d",&nums[i]);
}
intresult=maxSubArray(nums,N);
printf("%d\n",result);
}
return0;
}】第四周:選擇結(jié)構(gòu)的程序設(shè)計(jì)第四周作業(yè)1.單選題:以下程序的輸出結(jié)果是main(){floatx=2,y;if(x<0)y=0;elseif(x<5&&!x)y=1/(x+2);elseif(x<10)y=1/x;elsey=10;printf(”%f\n”,y);}
選項(xiàng):
A、0.500000
B、0.000000
C、0.250000
D、10.000000
答案:【0.500000】2.單選題:下面程序的輸出是#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("a=%d,b=%d\n",a,b);}
選項(xiàng):
A、a=2,b=1
B、a=1,b=1
C、a=1,b=0
D、a=2,b=2
答案:【a=2,b=1】3.下列程序段當(dāng)a的值為014和0x14時(shí)的執(zhí)行結(jié)果分別是if(a=0xA|a>12)if(011&10==a)printf(”%d!\n”,a);elseprintf(”Right!%d\n”,a);elseprintf(”Wrong!%d\n”,a);
答案:【10!Right!11】4.若下列程序執(zhí)行后t的值為4,則執(zhí)行時(shí)輸入a,b的值范圍是#include”stdio.h”main(){inta,b,s=1,t=1;scanf(”%d,%d”,&a,&b);if(a>0)s+=1;if(a>b)t+=s;elseif(a==b)t=5;elset=2*s;printf(”s=%d,t=%d\n”,s,t);}
答案:【0】第四周編程作業(yè)1.確定母親節(jié)。題目內(nèi)容:母親節(jié)是每年的五月第二個(gè)星期天,針對(duì)輸入的年份,計(jì)算該年的哪一天是母親節(jié)。輸入格式:年份輸出格式:日期(5月的哪一天)輸入樣例:2014輸出樣例:11
答案:【#include<stdio.h>
//Zeller公式計(jì)算給定日期是星期幾
intdayOfWeek(intyear,intmonth,intday){
if(month<3){
month+=12;
year-=1;
}
intt=year+year/4-year/100+year/400;
intd=(1+(13*(month+1))/5+t+day)%7;
returnd;//返回值為0表示星期六,1表示星期日,依此類推
}
intmain(){
intyear;
printf("請(qǐng)輸入年份:");
scanf("%d",&year);
//五月第一個(gè)星期天是哪一天
intfirstSunday=1;
while(dayOfWeek(year,5,firstSunday)!=1){
firstSunday++;
}
//五月第二個(gè)星期天是哪一天
intsecondSunday=firstSunday+7;
printf("%d\n",secondSunday);
return0;
}】2.計(jì)算時(shí)鐘的夾角。題目內(nèi)容:鐘面上的時(shí)針和分針之間的夾角總是在0~180之間(包括0和180)。舉例來說,在十二點(diǎn)的時(shí)候兩針之間的夾角為0,而在六點(diǎn)的時(shí)候夾角為180,在三點(diǎn)的時(shí)候?yàn)?0。本題要解決的是計(jì)算12:00到11:59之間任意一個(gè)時(shí)間的夾角。輸入格式:每組測(cè)試數(shù)據(jù)包含兩個(gè)數(shù)字:第一個(gè)數(shù)字代表小時(shí)(大于0小于等于12),第二個(gè)數(shù)字代表分(在區(qū)間[0,59]上)。輸出格式:對(duì)應(yīng)每組測(cè)試數(shù)據(jù),用常用格式顯示時(shí)間以及這個(gè)時(shí)候時(shí)針和分針間的最小夾角,精確到小數(shù)點(diǎn)后一位。輸出格式如下所示。再看一看,想一想:是否可以不用if語句,只使用printf函數(shù)來簡(jiǎn)化你的程序?輸入樣例:120輸出樣例:At12:00theangleis0.0degrees.
答案:【#include<stdio.h>
intmain(){
inthour,minute;
printf("請(qǐng)輸入時(shí)間(小時(shí)分鐘):");
scanf("%d%d",&hour,&minute);
//計(jì)算時(shí)針和分針的角度
doublehour_angle=(hour%12)*30.0+minute*0.5;
doubleminute_angle=minute*6.0;
//計(jì)算兩針之間的夾角
doubleangle=fabs(hour_angle-minute_angle);
//取最小夾角
if(angle>180.0){
angle=360.0-angle;
}
//輸出結(jié)果
printf("At%d:%02dtheangleis%.1fdegrees.\n",hour,minute,angle);
return0;
}】3.求最后3位數(shù)值。題目內(nèi)容:小明在中學(xué)會(huì)求一個(gè)數(shù)的n次方了,但計(jì)算機(jī)還不會(huì),請(qǐng)你來編寫一個(gè)程序吧。由于計(jì)算機(jī)比較“笨”,所以我們編寫程序的功能不用太強(qiáng),只要能算出a的n次方的最后3位數(shù)就可以了。輸入格式:a和n的值。假設(shè)a<=150。輸出格式:求a的n次方的最后3位數(shù)。提示:再想一想,你的方法對(duì)嗎?你用的是什么數(shù)據(jù)類型?輸入樣例:100輸出樣例:Thelast3numbersis1.
答案:【#include<stdio.h>
intpowerMod(inta,intn,intmod){
intresult=1;
while(n>0){
if(n%2==1){
result=(result*a)%mod;
}
a=(a*a)%mod;
n=n/2;
}
returnresult;
}
intmain(){
inta,n;
printf("請(qǐng)輸入a和n的值:");
scanf("%d%d",&a,&n);
//計(jì)算a的n次方的最后三位數(shù)
intlastThreeDigits=powerMod(a,n,1000);
//輸出結(jié)果
printf("Thelast3numbersis%d.\n",lastThreeDigits);
return0;
}】4.計(jì)算星期。題目內(nèi)容:給出任意一個(gè)年月日(年>1900),現(xiàn)在我們不能只是直接計(jì)算,要先判斷給出的日期是否合法,對(duì)于非法的日期要給出錯(cuò)誤提示信息,合法的日期要再計(jì)算是星期幾。輸入格式:年月日輸出格式:0~6。星期日用0表示,星期一用1表示,星期二用2表示......星期六用6表示。假設(shè)年份大于1900。先想一想:我們現(xiàn)在只會(huì)使用if語句,該如何建立數(shù)學(xué)模型?輸入樣例:2013311輸出樣例:1輸入樣例:20131315輸出樣例:monthiserror.輸入樣例:2013332輸出樣例:dayiserror.
答案:【#include<stdio.h>
//判斷是否是閏年
intisLeapYear(intyear){
return(year%4==0&&year%100!=0)||(year%400==0);
}
//判斷日期是否合法
intisValidDate(intyear,intmonth,intday){
if(month<1||month>12){
return0;
}
if(day<1){
return0;
}
intdaysInMonth[]={31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(year)){
daysInMonth[1]=29;
}
if(day>daysInMonth[month-1]){
return0;
}
return1;
}
//Zeller公式計(jì)算星期幾
intdayOfWeek(intyear,intmonth,intday){
if(month<3){
month+=12;
year-=1;
}
intt=year+year/4-year/100+year/400;
intd=(1+(13*(month+1))/5+t+day)%7;
returnd;
}
intmain(){
intyear,month,day;
printf("請(qǐng)輸入年月日(年月日):");
scanf("%d%d%d",&year,&month,&day);
if(!isValidDate(year,month,day)){
if(month<1||month>12){
printf("monthiserror.\n");
}else{
printf("dayiserror.\n");
}
return0;
}
intweek=dayOfWeek(year,month,day);
printf("%d\n",week);
return0;
}】第五周:循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)(一)第五周編程作業(yè)1.求最小m值。題目內(nèi)容:求滿足下列不等式的最小m。1+2+3+4+......+m≥n例如:n=100,當(dāng)m=14時(shí),滿足:1+2+3+4+...+13=91<100,而1+2+3+4+......+14=105>100。輸入格式:n輸出格式:m輸入樣例:100輸出樣例:14
答案:【#include<stdio.h>
intmain(){
intn,m;
intsum=0;
//從用戶那里獲取輸入值n
printf("請(qǐng)輸入n的值:");
scanf("%d",&n);
//從1開始累加,直到累加和大于等于n
for(m=1;sum>n;m++){
sum+=m;
}
//輸出滿足條件的最小m值
printf("滿足條件的最小m值為:%d\n",m-1);
return0;
}】2.尋找特殊偶數(shù)。題目內(nèi)容:有一種特殊偶數(shù),它每一位上的數(shù)字都兩兩不相同。我們現(xiàn)在需要找出四位數(shù)中某一區(qū)間內(nèi)的這類偶數(shù)。輸入格式:所要尋找的四位偶數(shù)的范圍。每組輸入有兩個(gè)數(shù)字:第一個(gè)數(shù)字是最小范圍;第二個(gè)數(shù)字是最大范圍。如果輸入遇到0,輸入結(jié)束。輸出格式:列出此范圍內(nèi)的所有特殊偶數(shù),并且列出此范圍內(nèi)特殊偶數(shù)的個(gè)數(shù)。輸入樣例:300030206040609000輸出樣例:3012301430163018counter=46042604860526054605860726074607860826084counter=10輸入樣例:910187-100輸出樣例:ErrorError
答案:【#include<stdio.h>
#include
//函數(shù)用于檢查一個(gè)數(shù)是否是特殊偶數(shù)
boolisSpecialEven(intnum){
intdigits[4];
inttemp=num;
intcount=0;
//提取每一位數(shù)字
while(temp>0){
digits[count++]=temp%10;
temp/=10;
}
//檢查是否為偶數(shù)
if(digits[3]%2!=0){
returnfalse;
}
//檢查每一位數(shù)字是否兩兩不相同
for(inti=0;i<4;i++){
for(intj=i+1;j<4;j++){
if(digits[i]==digits[j]){
returnfalse;
}
}
}
returntrue;
}
intmain(){
intmin,max;
intcount=0;
while(scanf("%d%d",&min,&max)==2){
if(min==0&&max==0){
break;
}
if(min<1000||max>9999||min>max){
printf("Error\n");
continue;
}
count=0;
for(inti=min;i<=max;i++){
if(isSpecialEven(i)){
printf("%d",i);
count++;
}
}
printf("counter=%d\n",count);
}
return0;
}】3.鍛煉身體吧。題目內(nèi)容:沫沫,灰灰和渣渣去鍛煉身體,如果對(duì)他們跑步的距離分別只計(jì)整數(shù)a、b、c,由于他們身高的差距,造成了a<=b<=c,并且渣渣跑了N米之后就再也跑不動(dòng)了。但是,按照他們事先的約定:只有當(dāng)c*c==a*a+b*b時(shí),他們的鍛煉才有效果。現(xiàn)在他們?nèi)齻€(gè)人想知道,如果渣渣的極限N已知,那么有多少種有鍛煉效果的跑步方案(即a,b,c有多少種可能的取值)。輸入格式:一個(gè)整數(shù)N,表示渣渣的體力極限,N<=5000。輸出格式:一個(gè)整數(shù),代表他們跑步方案的個(gè)數(shù)。Hint:對(duì)于輸入N=5,有方案a=3,b=4,c=5,共一種。輸入樣例:5輸出樣例:1
答案:【#include<stdio.h>
intmain(){
intN;
intcount=0;
//從用戶那里獲取輸入值N
printf("請(qǐng)輸入N的值:");
scanf("%d",&N);
//遍歷所有可能的c值
for(intc=1;c<=N;c++){
//遍歷所有可能的b值
for(intb=1;b<=c;b++){
//計(jì)算a的值
inta_squared=c*c-b*b;
inta=(int)sqrt(a_squared);
//檢查a是否為整數(shù)且a<=b
if(a*a==a_squared&&a<=b){
count++;
}
}
}
//輸出滿足條件的跑步方案?jìng)€(gè)數(shù)
printf("滿足條件的跑步方案?jìng)€(gè)數(shù)為:%d\n",count);
return0;
}】第六周:循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)(二)第六周作業(yè)1.單選題:假定從鍵盤上輸入“3.6,2.4<回車>”,下面程序的輸出是____#includemain(){floatx,y,z;scanf(”%f,%f”,&x,&y);z=x/y;while(1){if(fabs(z)>1.0){x=y;y=z;z=x/y;}elsebreak;}printf(”%f\n”,y);}注:fabs()是浮點(diǎn)數(shù)絕對(duì)值函數(shù)。
選項(xiàng):
A、1.600000
B、1.500000
C、2.000000
D、2.400000
答案:【1.600000】2.單選題:下面程序的輸出結(jié)果是____main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<-3;j++){if(j%2)continue;x++;}x++;}printf(”x=%d\n”,x);}
選項(xiàng):
A、x=4
B、x=8
C、x=6
D、x=12
答案:【x=4】3.單選題:已知inti=1;執(zhí)行語句while(i++<4);后,變量i的值為
選項(xiàng):
A、5
B、3
C、4
D、6
答案:【5】4.單選題:下面的for語句for(x=0,y=10;(y>0)&&(x<4);x++,y--)
選項(xiàng):
A、循環(huán)執(zhí)行4次
B、是無限循環(huán)
C、循環(huán)次數(shù)不定
D、循環(huán)執(zhí)行3次
答案:【循環(huán)執(zhí)行4次】5.單選題:求取滿足式的n,正確的語句是____
選項(xiàng):
A、for(i=1,s=0;(s=s+i*i)<=1000;n=i++)
B、for(i=1,s=0;(s=s+i*i)<=1000;n=++i)
C、for(i=1,s=0;(s=s+i*++i)<=1000;n=i)
D、for(i=1,s=0;(s=s+i*i++)<=1000;n=i)
答案:【for(i=1,s=0;(s=s+i*i)<=1000;n=i++)】第六周編程作業(yè)1.火鍋火鍋和火鍋。題目內(nèi)容:眾所周知,沫沫以火鍋為生。在E8的聚餐活動(dòng)中,他經(jīng)常賣萌賣無辜領(lǐng)著大家吃火鍋。。有一天,沫沫聽說學(xué)校附近的哺呷哺呷在某現(xiàn)充的贊助下有一個(gè)優(yōu)惠活動(dòng),只需30軟妹幣,對(duì)每個(gè)客人,它會(huì)上N道菜,但是客人只能挑選其中連續(xù)上的一些菜。于是他非常興奮的拉著灰灰和渣渣去吃火鍋去啦。沫沫是一個(gè)十分挑食的人,所以他對(duì)每一道菜都有一個(gè)愉快度(當(dāng)然因?yàn)樗奶羰常承┦挛锏挠淇於葧?huì)是負(fù)數(shù))。為了讓沫沫能非常愉快的享受這次聚餐,善解人意的灰灰和渣渣決定幫他計(jì)算,他們應(yīng)該怎么選擇菜才能使沫沫最開心地吃完這次聚餐。輸入格式:第一行是一個(gè)整數(shù)T,(T<=10)表示測(cè)試案例的個(gè)數(shù)對(duì)于每個(gè)測(cè)試案例,第一行是一個(gè)整數(shù)N,(1<=N<=10000)表示菜的個(gè)數(shù)接下來的N個(gè)數(shù)字,第i個(gè)數(shù)字si表示沫沫對(duì)第i道菜的愉快度。(-1000<=si<=1000)PS:由于CF又被血虐掉rating,所以沫沫的起始愉快度是0PPS:沫沫完全可能得到一個(gè)為負(fù)值的愉快值,poor沫沫。。輸出格式:對(duì)于每個(gè)樣例,輸出一個(gè)數(shù)字,表示沫沫吃完之后愉快度的最大值。HINT:對(duì)于56-154-7我們選擇6,-1,5,4這四道菜(注意必須是連續(xù)的,所以不能跳過-1)做完后請(qǐng)思考,如果N的范圍是1<=N<=100000呢?輸入樣例:256-154-7706-11-67-5輸出樣例:147
答案:【#include<stdio.h>
//Kadane算法計(jì)算最大子數(shù)組和
intmaxSubArray(int*nums,intnumsSize){
intmaxEndingHere=nums[0];
intmaxSoFar=nums[0];
for(inti=1;i<numsSize;i++){
maxEndingHere=(maxEndingHere+nums[i]>nums[i])?maxEndingHere+nums[i]:nums[i];
maxSoFar=(maxSoFar>maxEndingHere)?maxSoFar:maxEndingHere;
}
returnmaxSoFar;
}
intmain(){
intT,N;
scanf("%d",&T);
while(T--){
scanf("%d",&N);
intnums[N];
for(inti=0;i<N;i++){
scanf("%d",&nums[i]);
}
intresult=maxSubArray(nums,N);
printf("%d\n",result);
}
return0;
}】2.郵票組合。題目內(nèi)容:我們寄信都要貼郵票,在郵局有一些小面值的郵票,通過這些小面值郵票中的一張或幾張的組合,可以滿足不同郵件的不同的郵資?,F(xiàn)在,郵局有4種不同面值的郵票。在每個(gè)信封上最多能貼5張郵票,面值可相同,可不同。輸入格式:四種郵票的面值。輸出格式:用這四種面值組成的郵資最大的從1開始的一個(gè)連續(xù)的區(qū)間。說明:如結(jié)果為10,則表明使用4張郵票可組合出1、2、3、4、5、6、7、8、9、10這些郵資。名詞解釋:郵資:就是你寄東西需要花多少錢。郵票面額:是由國家發(fā)行的具有固定價(jià)格的花紙片,被稱為郵票。如果你寄東西,郵局稱了重量,告訴你要240分。這樣你就要貼郵票了。如果現(xiàn)在郵局的郵票有面值為80分、50分、20分和10分的四種,你就可以采用不同的組合得到240的郵資,例如:采用3張80分的可以湊出240分;或者24張10分的湊起來240分也可以。顯然不同郵票的組合都可以得到同樣一種郵資。輸入樣例:141221輸出樣例:Themaxis71.
答案:【#include<stdio.h>
#include
#defineMAX_STAMPS5
#defineMAX_VALUE1000
intmain(){
intvalues[4];
printf("請(qǐng)輸入四種郵票的面值:");
for(inti=0;i<4;i++){
scanf("%d",&values[i]);
}
//動(dòng)態(tài)規(guī)劃數(shù)組,dp[i]表示能否用最多MAX_STAMPS張郵票組合出i的郵資
intdp[MAX_VALUE+1]={0};
dp[0]=1;//0郵資總是可以組合出的
//遍歷每種郵票面值
for(inti=0;i<4;i++){
//遍歷郵資從values[i]到MAX_VALUE
for(intj=values[i];j<=MAX_VALUE;j++){
//如果j-values[i]可以組合出,且使用的郵票數(shù)小于MAX_STAMPS
if(dp[j-values[i]]&&dp[j-values[i]]<MAX_STAMPS){
dp[j]=dp[j-values[i]]+1;
}
}
}
//找到最大連續(xù)區(qū)間
intmaxContinuous=0;
for(inti=1;i<=MAX_VALUE;i++){
if(dp[i]&&dp[i]<=MAX_STAMPS){
maxContinuous=i;
}else{
break;
}
}
printf("Themaxis%d.\n",maxContinuous);
return0;
}】3.空心字符菱形。題目內(nèi)容:根據(jù)菱型起始字母和菱形的高度,打印空心的由字符組成的菱形。輸入格式:菱型起始字母和菱形的高度。輸出格式:參照樣例,打印空心的由字符組成的菱形。輸入樣例:C4輸出樣例:C[回車]DD[回車]EE[回車]FF[回車]EE[回車]DD[回車]C
答案:【#include<stdio.h>
intmain(){
charstartChar;
intheight;
printf("請(qǐng)輸入菱型起始字母和菱形的高度:");
scanf("%c%d",&startChar,&height);
//計(jì)算字母的ASCII值
intstart=startChar;
//打印上半部分
for(inti=0;i<height;i++){
//打印空格
for(intj=0;j<height-i-1;j++){
printf("");
}
//打印字符
printf("%c",start+i);
if(i!=0){
for(intj=0;j<2*i-1;j++){
printf("");
}
printf("%c",start+i);
}
printf("\n");
}
//打印下半部分
for(inti=height-2;i>=0;i--){
//打印空格
for(intj=0;j<height-i-1;j++){
printf("");
}
//打印字符
printf("%c",start+i);
if(i!=0){
for(intj=0;j<2*i-1;j++){
printf("");
}
printf("%c",start+i);
}
printf("\n");
}
return0;
}】4.數(shù)字正方型。題目內(nèi)容:這是雙重循環(huán)的入門題目,大家來看看,你會(huì)做嗎?輸入n的值,輸出如下例(n=4)所示的由數(shù)字組成的正方型。(字母中間是兩個(gè)空格)12345678910111213141516輸入格式:n輸出格式:數(shù)字組成的正方型輸入樣例:1輸出樣例:1
答案:【#include<stdio.h>
intmain(){
intn;
printf("請(qǐng)輸入n的值:");
scanf("%d",&n);
intcount=1;//用于記錄當(dāng)前數(shù)字
//外層循環(huán)控制行數(shù)
for(inti=0;i<n;i++){
//內(nèi)層循環(huán)控制每行中的數(shù)字
for(intj=0;j<n;j++){
printf("%d",count);//打印數(shù)字,后面跟兩個(gè)空格
count++;
}
printf("\n");//每行結(jié)束后換行
}
return0;
}】第七周:數(shù)組(一)第七周作業(yè)1.虛擬實(shí)驗(yàn):冒泡排序算法程序設(shè)計(jì)實(shí)驗(yàn)-按考生成績排序(重要提示:虛擬實(shí)驗(yàn)網(wǎng)址開頭是http,如果打開后網(wǎng)址默認(rèn)是https,請(qǐng)去掉s再重新刷新打開。)做“冒泡排序算法程序設(shè)計(jì)”實(shí)驗(yàn),完成以下實(shí)驗(yàn)報(bào)告表并提交??蓪⒁韵聦?shí)驗(yàn)報(bào)告表內(nèi)容復(fù)制到word中,填寫完成后,轉(zhuǎn)成pdf后即可提交。實(shí)驗(yàn)報(bào)告表:冒泡排序?qū)嶒?yàn)過程數(shù)據(jù)與結(jié)果實(shí)驗(yàn)內(nèi)容操作名稱實(shí)驗(yàn)數(shù)據(jù)備注排序程序的幾個(gè)重要概念內(nèi)循環(huán)控制變量名稱外循環(huán)控制變量名稱內(nèi)循環(huán)開始條件外循環(huán)結(jié)束條件填空數(shù)據(jù)實(shí)現(xiàn)冒泡排序的語句i的終值是j的終值是RAM中數(shù)據(jù)變化外重循環(huán)是0,內(nèi)重循環(huán)是9時(shí)a[0]的值外重循環(huán)是2,內(nèi)重循環(huán)是7時(shí)a[6]的值實(shí)驗(yàn)結(jié)束時(shí),i、j、a[0]、a[9]中的值最終結(jié)果外循環(huán)進(jìn)行了多少次內(nèi)循環(huán)進(jìn)行了多少次
答案:【#include<stdio.h>
intmain(){
inta[10]={53,100,34,23,56,89,76,45,67,23};//假設(shè)的初始數(shù)組
inttemp;
inti,j;
//外循環(huán)控制變量名稱
intouterLoopVar=0;
//打印外重循環(huán)是0,內(nèi)重循環(huán)是9時(shí)a[0]的值
printf("外重循環(huán)是0,內(nèi)重循環(huán)是9時(shí)a[0]的值:%d\n",a[0]);
//冒泡排序
for(i=0;i<9;i++){//外循環(huán),i從0到8,共9次
for(j=0;j<9-i;j++){//內(nèi)循環(huán),j從0到8-i
if(a[j]>a[j+1]){//實(shí)現(xiàn)冒泡排序的語句
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
//打印外重循環(huán)是2,內(nèi)重循環(huán)是7時(shí)a[6]的值
printf("外重循環(huán)是2,內(nèi)重循環(huán)是7時(shí)a[6]的值:%d\n",a[6]);
//打印實(shí)驗(yàn)結(jié)束時(shí),i、j、a[0]、a[9]中的值
printf("實(shí)驗(yàn)結(jié)束時(shí),i、j、a[0]、a[9]中的值:%d、%d、%d、%d\n",i,j,a[0],a[9]);
//打印最終結(jié)果
printf("外循環(huán)進(jìn)行了多少次:%d\n",i+1);//i從0到8,共9次
printf("內(nèi)循環(huán)進(jìn)行了多少次:%d\n",(1+2+3+4+5+6+7+8)*2);//內(nèi)循環(huán)次數(shù)計(jì)算
return0;
}】第七周編程作業(yè)1.子數(shù)整除。題目內(nèi)容:對(duì)于一個(gè)五位數(shù)a1a2a3a4a5,可將其拆分為三個(gè)子數(shù):sub1=a1a2a3sub2=a2a3a4sub3=a3a4a5例如,五位數(shù)20207可以拆分成:sub1=202sub2=020(=20)sub3=207現(xiàn)在給定一個(gè)正整數(shù)K,要求你編程求出10000到30000之間所有滿足下述條件的五位數(shù),條件是這些五位數(shù)的三個(gè)子數(shù)sub1、sub2、sub3都可被K整除。輸出時(shí)請(qǐng)按照由小到大的順序排列(每行輸出一個(gè)數(shù))。輸入格式:一個(gè)正整數(shù)K輸出格式:請(qǐng)按照由小到大的順序排列(每行輸出一個(gè)數(shù))輸入樣例:15輸出樣例:22555[回車]25555[回車]28555[回車]30000[回車]
答案:【#include<stdio.h>
intmain(){
intK;
printf("請(qǐng)輸入一個(gè)正整數(shù)K:");
scanf("%d",&K);
//遍歷所有10000到30000之間的五位數(shù)
for(intnum=10000;num<=30000;num++){
intsub1=num/1000;//獲取前三位子數(shù)
intsub2=(num/100)%10;//獲取第二三位子數(shù)
intsub3=num%100;//獲取后三位子數(shù)
//檢查三個(gè)子數(shù)是否都能被K整除
if(sub1%K==0&&sub2%K==0&&sub3%K==0){
printf("%d\n",num);
}
}
return0;
}】2.洗牌。題目內(nèi)容:假設(shè)我們有2n張牌,它們以1,2,...,n,n+1,...,2n編號(hào)并在開始時(shí)保持著這種順序。一次洗牌就是將牌原來的次序變?yōu)閚+1,1,n+2,2,...,2n,n,也就是將原來的前n張牌放到位置2,4,...,2n,并且將余下的n張牌按照他們?cè)瓉淼拇涡蚍诺狡鏀?shù)位置1,3,...,2n-1。已經(jīng)證明對(duì)于任何一個(gè)自然數(shù)n,這2n張牌經(jīng)過一定次數(shù)的洗牌就回到原來的次序。但我們不知道對(duì)于一個(gè)特定的n,需要幾次洗牌才能將牌洗回原來的次序。輸入格式:牌張數(shù)的一半n,即初始情況下一共有2n張牌,n為int型整數(shù)輸出格式:將牌洗回原來的次序所需要的洗牌次數(shù)輸入樣例:10輸出樣例:6[回車]
答案:【#include<stdio.h>
voidshuffle(int*deck,intn){
for(inti=0;i<n;i++){
deck[2*i]=n+1+deck[i];
deck[2*i+1]=deck[i];
}
}
intmain(){
intn;
printf("請(qǐng)輸入牌張數(shù)的一半n:");
scanf("%d",&n);
intdeck[2*n];//創(chuàng)建一個(gè)數(shù)組來存儲(chǔ)2n張牌
for(inti=0;i<2*n;i++){
deck[i]=i+1;//初始化牌的編號(hào)
}
intcount=0;//洗牌次數(shù)計(jì)數(shù)器
while(deck[0]!=1||deck[1]!=2){//檢查是否回到原始順序
shuffle(deck,n);
count++;
}
printf("%d\n",count);//輸出洗牌次數(shù)
return0;
}】3.回文數(shù)。題目內(nèi)容:輸出所有不超過n(取n<256)的、其平方具有對(duì)稱性質(zhì)的正整數(shù)(也稱為回文數(shù))。如:1*1=1;2*2=4;3*3=9;11*11=121;1,2,3,11是回文數(shù)。輸入格式:輸入n(n<256)輸出格式:輸出所有不超過n的回文數(shù)輸入樣例:3輸出樣例:1[回車]2[回車]
答案:【#include<stdio.h>
#include
//函數(shù)用于檢查一個(gè)數(shù)是否是回文數(shù)
boolisPalindrome(intnum){
intoriginal=num;
intreversed=0;
while(num>0){
intdigit=num%10;
reversed=reversed*10+digit;
num/=10;
}
returnoriginal==reversed;
}
intmain(){
intn;
printf("請(qǐng)輸入n(n<256):");
scanf("%d",&n);
for(inti=1;i<=n;i++){
intsquare=i*i;
if(isPalindrome(square)){
printf("%d\n",i);
}
}
return0;
}】4.組成最大數(shù)。題目內(nèi)容:任意輸入一個(gè)自然數(shù),輸出該自然數(shù)的各位數(shù)字組成的最大數(shù)。輸入格式:自然數(shù)n輸出格式:各位數(shù)字組成的最大數(shù)輸入樣例:1593輸出樣例:9531[回車]
答案:【#include<stdio.h>
#include
//比較函數(shù),用于qsort
intcompare(constvoid*a,constvoid*b){
return(*(int*)b-*(int*)a);
}
intmain(){
intn;
printf("請(qǐng)輸入自然數(shù)n:");
scanf("%d",&n);
//將數(shù)字轉(zhuǎn)換為字符串,以便提取每一位數(shù)字
charstr[50];
sprintf(str,"%d",n);
//獲取字符串長度
intlen=strlen(str);
//將字符串中的字符轉(zhuǎn)換為整數(shù)數(shù)組
intdigits[len];
for(inti=0;i<len;i++){
digits[i]=str[i]-'0';
}
//使用qsort進(jìn)行排序
qsort(digits,len,sizeof(int),compare);
//將排序后的數(shù)字重新組合成一個(gè)新的整數(shù)
intmaxNumber=0;
for(inti=0;i<len;i++){
maxNumber=maxNumber*10+digits[i];
}
printf("%d\n",maxNumber);
return0;
}】第八周:數(shù)組(二)第八周編程作業(yè)1.安全的密碼。題目內(nèi)容:隨著電子設(shè)備的廣泛運(yùn)用,密碼也漸漸融入每個(gè)人的生活。保護(hù)好密碼,不僅關(guān)系到個(gè)人隱私,更關(guān)系到個(gè)人的財(cái)產(chǎn)和安全。一個(gè)安全的密碼,最好由大小寫字母、數(shù)字或符號(hào)組成。包含越多種類的字符,其安全性就越高。同時(shí)密碼還需要有一定的長度,通常至少要由六個(gè)以上的字符組成。并不是每個(gè)人都喜歡這樣復(fù)雜的密碼,很多人在設(shè)置密碼的時(shí)候,喜歡使用自己的名字或者生日,但這是很大的安全隱患。任務(wù)林曉煒正在設(shè)計(jì)一個(gè)網(wǎng)絡(luò)交易系統(tǒng),為了保證用戶的密碼安全,他需要一個(gè)程序,判斷用戶自己設(shè)置的密碼是否安全,如果不安全,則給出提示。現(xiàn)在他向你求助,請(qǐng)你幫忙設(shè)計(jì)一個(gè)程序來解決這個(gè)問題。應(yīng)當(dāng)按照以下的規(guī)則來判斷密碼是否安全:如果密碼長度小于6位,則不安全如果組成密碼的字符只有一類,則不安全如果組成密碼的字符有兩類,則為中度安全如果組成密碼的字符有三類或以上,則為安全通常,可以認(rèn)為數(shù)字、大寫字母、小寫字母和其它符號(hào)為四類不同的字符。輸入格式:輸入的第一行是一個(gè)整數(shù)N,表明后面有多少組密碼。隨后的N行輸入包括N個(gè)密碼,每個(gè)密碼的長度均小于20個(gè)字符。輸出格式:針對(duì)每一個(gè)密碼判斷并輸出它是否安全。對(duì)于不安全的密碼輸出"NotSafe",對(duì)于中度安全的密碼輸出"MediumSafe",對(duì)于安全的密碼輸出"Safe"輸入樣例:41234abcdefABC1231#c3Gh[回車]輸出樣例:NotSafeNotSafeMediumSafeSafe[回車]
答案:【#include<stdio.h>
#include
//函數(shù)用于檢查密碼的安全性
constchar*checkPasswordSecurity(constchar*password){
inthasUpper=0,hasLower=0,hasDigit=0,hasSymbol=0;
intlength=0;
while(*password){
length++;
if(isupper(*password))hasUpper=1;
if(islower(*password))hasLower=1;
if(isdigit(*password))hasDigit=1;
if(!isalnum(*password))hasSymbol=1;
password++;
}
if(length<6){
return"NotSafe";
}elseif(hasUpper+hasLower+hasDigit+hasSymbol==1){
return"NotSafe";
}elseif(hasUpper+hasLower+hasDigit+hasSymbol==2){
return"MediumSafe";
}else{
return"Safe";
}
}
intmain(){
intN;
printf("請(qǐng)輸入密碼數(shù)量N:");
scanf("%d",&N);
for(inti=0;i<N;i++){
charpassword[21];//假設(shè)密碼長度不超過20
printf("請(qǐng)輸入密碼#%d:",i+1);
scanf("%20s",password);//讀取密碼,最多20個(gè)字符
constchar*security=checkPasswordSecurity(password);
printf("%s\n",security);
}
return0;
}】2.身份證的奧秘。題目內(nèi)容:18位身份證標(biāo)準(zhǔn)在國家質(zhì)量技術(shù)監(jiān)督局于1999年7月1日實(shí)施的GB11643-1999《公民身份號(hào)碼》中做了明確的規(guī)定。GB11643-1999《公民身份號(hào)碼》為GB11643-1989《社會(huì)保障號(hào)碼》的修訂版,其中指出將原標(biāo)準(zhǔn)名稱"社會(huì)保障號(hào)碼"更名為"公民身份號(hào)碼",另外GB11643-1999《公民身份號(hào)碼》從實(shí)施之日起代替GB11643-1989。GB11643-1999《公民身份號(hào)碼》主要內(nèi)容如下:一、范圍該標(biāo)準(zhǔn)規(guī)定了公民身份號(hào)碼的編碼對(duì)象、號(hào)碼的結(jié)構(gòu)和表現(xiàn)形式,使每個(gè)編碼對(duì)象獲得一個(gè)唯一的、不變的法定號(hào)碼。二、編碼對(duì)象公民身份號(hào)碼的編碼對(duì)象是具有中華人民共和國國籍的公民。三、號(hào)碼的結(jié)構(gòu)和表示形式1、號(hào)碼的結(jié)構(gòu)公民身份號(hào)碼是特征組合碼,由十七位數(shù)字本體碼和一位校驗(yàn)碼組成。排列順序從左至右依次為:六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序碼和一位數(shù)字校驗(yàn)碼。2、地址碼表示編碼對(duì)象常住戶口所在縣(市、旗、區(qū))的行政區(qū)劃代碼,按GB/T2260的規(guī)定執(zhí)行。3、出生日期碼表示編碼對(duì)象出生的年、月、日,按GB/T7408的規(guī)定執(zhí)行,年、月、日代碼之間不用分隔符。4、順序碼表示在同一地址碼所標(biāo)識(shí)的區(qū)域范圍內(nèi),對(duì)同年、同月、同日出生的人編定的順序號(hào),順序碼的奇數(shù)分配給男性,偶數(shù)分配給女性。5、校驗(yàn)碼(1)十七位數(shù)字本體碼加權(quán)求和公式S=Sum(Ai*Wi),i=0,...,16,先對(duì)前17位數(shù)字的權(quán)求和Ai:表示第i位置上的身份證號(hào)碼數(shù)字值Wi:表示第i位置上的加權(quán)因子Wi:7910584216379105842(2)計(jì)算模Y=mod(S,11)(3)通過模得到對(duì)應(yīng)的校驗(yàn)碼Y:012345678910校驗(yàn)碼:10X98765432四、舉例如下:北京市朝陽區(qū)東省汕頭市:44052418800101001415位的身份證號(hào)升級(jí)辦法:15位的身份證號(hào):ddddddyymmddxxp18位的身份證號(hào):ddddddyyyymmddxxpy其中dddddd為地址碼(省地縣三級(jí))yyyymmddyymmdd為出生年月日xx順號(hào)類編碼p性別15位的yy年升為18位后,變成19yy年,但對(duì)于百歲以上老人,則為18yy年,此時(shí),他們的最后三位順序碼為996,997,998或999來標(biāo)記。輸入格式:輸入n組身份證號(hào)碼,第一行為個(gè)數(shù),以后每行為身份證號(hào)碼。輸出格式:如果輸入的身份證號(hào)碼為15位,則將其升級(jí)為18位后顯示輸出;否則判斷其是否為合法身份證號(hào),并逐行輸出。輸入樣例:435062219790413033111010519491231002X110105491231002110105491231996[回車]輸出樣例:Invalid[回車]Valid[回車回車回車]
答案:【#include<stdio.h>
#include
#include
//函數(shù)用于將15位身份證升級(jí)到18位
voidupgradeID(char*id){
if(strlen(id)==15){
intyear=(id[0]-'0')*1000+(id[1]-'0')*100+(id[2]-'0')*10+(id[3]-'0');
if(year<1950){
year+=2000;
}else{
year+=1800;
}
charnewId[19];
sprintf(newId,"%s%02d%s",id,year%100,id+6);
strcpy(id,newId);
}
}
//函數(shù)用于計(jì)算校驗(yàn)碼
charcalculateCheckDigit(char*id){
intweights[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
charcheckDigits[]="10X98765432";
intsum=0;
for(inti=0;i<17;i++){
sum+=(id[i]-'0')*weights[i];
}
returncheckDigits[sum%11];
}
//函數(shù)用于驗(yàn)證18位身份證的有效性
intvalidateID(char*id){
upgradeID(id);//確保是18位身份證
if(strlen(id)!=18)return0;//長度檢查
//出生日期檢查
intyear=(id[6]-'0')*1000+(id[7]-'0')*100+(id[8]-'0')*10+(id[9]-'0');
intmonth=(id[10]-'0')*10+(id[11]-'0');
intday=(id[12]-'0')*10+(id[13]-'0');
//簡(jiǎn)單的日期有效性檢查
if(year<1800||year>2100||month<1||month>12||day<1||day>31)return0;
//校驗(yàn)碼檢查
charcheckDigit=calculateCheckDigit(id);
returnid[17]==checkDigit;
}
intmain(){
intn;
scanf("%d",&n);
while(n--){
charid[19];
scanf("%s",id);
if(validateID(id)){
printf("Valid\n");
}else{
printf("Invalid\n");
}
}
return0;
}】3.尋找矩陣的鞍點(diǎn)。題目內(nèi)容:二維數(shù)組中的鞍點(diǎn),即該位置上的元素是所在行上的最大值,是所在列上的最小值。二維數(shù)組也可能沒有鞍點(diǎn)。輸入一個(gè)二維數(shù)組的行數(shù)n,列數(shù)m,二維數(shù)組的諸元素值;輸出數(shù)組的鞍點(diǎn),以及鞍點(diǎn)所在的行列號(hào)。輸入格式:第一行為矩陣的行數(shù)和列數(shù),從第二行開始,為矩陣本身(假設(shè)輸入的矩陣只有0和1個(gè)鞍點(diǎn))輸出格式:數(shù)組的鞍點(diǎn),以及鞍點(diǎn)所在的行列號(hào)(下標(biāo)從0開始)輸入樣例1:34135323413267[回車]輸出樣例1:Point:a[1][2]==4[回車]輸入樣例2:34123484369451[回車]輸出樣例2:NoPoint[回車]
答案:【#include<stdio.h>
intmain(){
intn,m;
scanf("%d%d",&n,&m);//讀取矩陣的行數(shù)和列數(shù)
intmatrix[n][m];
for(inti=0;i<n;i++){
for(intj=0;j<m;j++){
scanf("%d",&matrix[i][j]);//讀取矩陣元素
}
}
inthasSaddlePoint=0;//標(biāo)記是否找到鞍點(diǎn)
for(inti=0;i<n;i++){
intmaxRow=matrix[i][0];
intcolOfMax=0;
for(intj=1;j<m;j++){
if(matrix[i][j]>maxRow){
maxRow=matrix[i][j];
colOfMax=j;
}
}
intminCol=matrix[0][colOfMax];
for(intk=1;k<n;k++){
if(matrix[k][colOfMax]<minCol){
minCol=matrix[k][colOfMax];
}
}
if(maxRow==minCol){
printf("Point:a[%d][%d]==%d\n",i,colOfMax,maxRow);
hasSaddlePoint=1;
}
}
if(!hasSaddlePoint){
printf("NoPoint\n");
}
return0;
}】4.單詞排序。題目內(nèi)容:輸入5個(gè)單詞,將它們按從大到小的順序排列后輸出。輸入格式:5個(gè)單詞輸出格式:排序后的順序輸入樣例:BASIC[回車]C++[回車]Pascal[回車]C[回車]Fortran[回車]輸出樣例:Pascal[回車]Fortran[回車]C++[回車]C[回車]BASIC[回車]
答案:【#include<stdio.h>
#include
#defineMAX_WORDS5
#defineMAX_LENGTH100
intmain(){
charwords[MAX_WORDS][MAX_LENGTH];
chartemp[MAX_LENGTH];
//讀取5個(gè)單詞
for(inti=0;i<MAX_WORDS;i++){
scanf("%s",words[i]);
}
//使用冒泡排序?qū)卧~進(jìn)行降序排序
for(inti=0;i<MAX_WORDS-1;i++){
for(intj=0;j<MAX_WORDS-1-i;j++){
if(strcmp(words[j],words[j+1])<0){
//交換words[j]和words[j+1]
strcpy(temp,words[j]);
strcpy(words[j],words[j+1]);
strcpy(words[j+1],temp);
}
}
}
//輸出排序后的單詞
for(inti=0;i<MAX_WORDS;i++){
printf("%s\n",words[i]);
}
return0;
}】C語言程序設(shè)計(jì)(上)期末單選題1.單選題:對(duì)二維數(shù)組的正確說明是
選項(xiàng):
A、inta[][]={1,2,3,4,5,6};
B、inta[2][]={1,2,3,4,5,6};
C、inta[][3]={1,2,3,4,5,6};
D、inta[2,3]={1,2,3,4,5,6};
答案:【inta[][3]={1,2,3,4,5,6};】2.單選題:若有以下語句,則正確的描述是:staticcharx[]="12345";staticchary[]={’1’,’2’,’3’,’4’,’5’};
選項(xiàng):
A、x數(shù)組和y數(shù)組的長度相同
B、x數(shù)組長度大于y數(shù)組長度
C、x數(shù)組長度小于y數(shù)組長度
D、x數(shù)組等價(jià)于y數(shù)組
答案:【x數(shù)組長度大于y數(shù)組長度】3.單選題:運(yùn)算符有優(yōu)先級(jí),在C語言中關(guān)于運(yùn)算符優(yōu)先級(jí)的敘述中正確的是:
選項(xiàng):
A、邏輯運(yùn)算符高于算術(shù)運(yùn)算符,算術(shù)運(yùn)算符高于關(guān)系運(yùn)算符
B、算術(shù)運(yùn)算符高于關(guān)系運(yùn)算符,關(guān)系運(yùn)算符高于邏輯運(yùn)算符
C、算術(shù)運(yùn)算符高于邏輯運(yùn)算符,邏輯運(yùn)算符高于關(guān)系運(yùn)算符
D、關(guān)系運(yùn)算符高于邏輯運(yùn)算符,邏輯運(yùn)算符高于算術(shù)運(yùn)算符
答案:【算術(shù)運(yùn)算符高于關(guān)系運(yùn)算符,關(guān)系運(yùn)算符高于邏輯運(yùn)算符】4.單選題:錯(cuò)誤的轉(zhuǎn)義字符是:
選項(xiàng):
A、’\\’
B、’\’’
C、’\81’
D、’\0’
答案:【’\81’】5.單選題:對(duì)字符數(shù)組s賦初值。不合法的一個(gè)是
選項(xiàng):
A、chars[20];s="Beijing";
B、chars[]="Beijing";
C、chars[20]={"Beijing"};
D、chars[20]={'B','e','i','j','i','n','g'};
答案:【chars[20];s="Beijing";】6.單選題:從鍵盤上輸入“446755”時(shí),下面程序的輸出是____。#includemain(){intc;while((c=getchar())!=’\n’)switch(c-’2’){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);default:putchar(c+2);break;}printf(”\n”);}
選項(xiàng):
A、888988
B、668966
C、88898787
D、66898787
答案:【88898787】[vk-content]7.單選題:變量a整型,f實(shí)型,i雙精度型,則表達(dá)式10+'a'+i*f值的數(shù)據(jù)類型為
選項(xiàng):
A、double
B、int
C、float
D、不確定
答案:【int】8.單選題:對(duì)于數(shù)據(jù)類型的自動(dòng)轉(zhuǎn)換,正確的說法是
選項(xiàng):
A、字符型與單精度實(shí)型進(jìn)行運(yùn)算時(shí)都轉(zhuǎn)換為雙精度實(shí)型
B、字符型與字符型進(jìn)行運(yùn)算時(shí)不進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換
C、整型與字符型進(jìn)行運(yùn)算時(shí)根據(jù)字符的ASCII碼值來決定是否進(jìn)行類型轉(zhuǎn)換
D、單精度實(shí)型之間進(jìn)行運(yùn)算時(shí)不進(jìn)行類型轉(zhuǎn)換
答案:【字符型與單精度實(shí)型進(jìn)行運(yùn)算時(shí)都轉(zhuǎn)換為雙精度實(shí)型】9.單選題:下面有關(guān)for循環(huán)的正確描述是
選項(xiàng):
A、for循環(huán)必須用于循環(huán)次數(shù)已經(jīng)確定的情況
B、for循環(huán)是先執(zhí)行循環(huán)體語句,后判斷表達(dá)式
C、for循環(huán)中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度棉紗行業(yè)質(zhì)量標(biāo)準(zhǔn)制定與實(shí)施合同4篇
- 2025版年會(huì)現(xiàn)場(chǎng)攝影攝像服務(wù)合同范本4篇
- 二零二五年度棉花病蟲害防治與防治藥物供應(yīng)合同4篇
- 二零二五年度新能源汽車動(dòng)力電池研發(fā)合作合同
- 2025年度農(nóng)家樂景區(qū)旅游咨詢與導(dǎo)覽服務(wù)合同協(xié)議
- 二零二五年度美容院美容設(shè)備維護(hù)保養(yǎng)及備件供應(yīng)合同4篇
- 二零二五年度美甲店互聯(lián)網(wǎng)營銷與電商平臺(tái)合作合同4篇
- 二零二五年度南寧市體育場(chǎng)館設(shè)施租賃合同及賽事組織協(xié)議3篇
- 2025年度個(gè)人二手車居間銷售合同示范文本2篇
- 二零二五年帳篷租賃及活動(dòng)策劃服務(wù)合同3篇
- 完整版秸稈炭化成型綜合利用項(xiàng)目可行性研究報(bào)告
- 油氣行業(yè)人才需求預(yù)測(cè)-洞察分析
- 《數(shù)據(jù)采集技術(shù)》課件-Scrapy 框架的基本操作
- (2024)河南省公務(wù)員考試《行測(cè)》真題及答案解析
- 2025年河北省單招語文模擬測(cè)試二(原卷版)
- 工作計(jì)劃 2025年度醫(yī)院工作計(jì)劃
- 高一化學(xué)《活潑的金屬單質(zhì)-鈉》分層練習(xí)含答案解析
- DB34∕T 4010-2021 水利工程外觀質(zhì)量評(píng)定規(guī)程
- 2024年內(nèi)蒙古中考英語試卷五套合卷附答案
- 2024年電工(高級(jí))證考試題庫及答案
- 2024年全國各地中考試題分類匯編:古詩詞閱讀
評(píng)論
0/150
提交評(píng)論