廣工C語言編程題目_第1頁
廣工C語言編程題目_第2頁
廣工C語言編程題目_第3頁
廣工C語言編程題目_第4頁
廣工C語言編程題目_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

C語言編程題目if(max<c)

max=c;

1.025編寫一個C程序,用函數(shù)printf(char*s)returnmax;}

輸出intmax_c(inla,intc)

以下3行信息:{intmax=c;

********************if(max<a)

VeryGood!*max=a;

if(max<b)

注意:max=b;

(1)要求精確到每個字符、空格、字母及returnmax;}

其大小寫。voidmain()

(2)可多次調用printf(char*s),每次僅一{inta,b,c,max;

個字符串參數(shù)。scanf("%d,%d,%d”,&a,&b,&c);

//max=a>b?a:b;

voidprint1()//max=max>c?max:c;

//max二a;

printf("****************?***\n'');//if(max<b)max=b;

//if(max<c)max=c;

voidprint2()printf("max(%d,%d,%d)=%d\n',,a,b,c,maK_a(a

{,b,c));

printf("*VeryGood!*\n");printf("max(%d,%d,%d)=%d\n,,,a,b,c,maK_b(

)a,b,c));

voidmain()printf("max(%d,%d,%d)=%d\n",a,b,c,max_c(a

{print1();,b,c));

pnnt2();)

print1();6.022n是系統(tǒng)給定的外部變量,編寫程序求

)I到n間的

1.055編寫一個程序,輸入a、b、c三個值,自然數(shù)之和。請定義局部變量s存放求和的

輸出其中最大值。結果,并用

要求不改變下列給定的程序框架內容,填入下列語句輸出結果

合適語句,使其成printf("1+2+...+n=%d\nn,s);

為滿足題目要求的正確程序。**********/

**********/voidmain()

inimax_a(in(a,inib,inlc){ints;

{intmax=a;/*請?zhí)砑酉嚓P說明和語句*/

if(max<b)inti;

max=b:for(i=l;i<=n;i++)

if(max<c)s+=i;

max=c;printf(,,14-2+...+n=%d\n',,s);/*注意:不要修

returnmax;}改此輸巳語句*/

intmax_b(inta,in(c))

{intmax=b;6.026n和s是系統(tǒng)給定的外部整型變量(不

if(max<a)需要自行定義),

max=a;編寫程序求1到n之間的奇數(shù)之和,并將結

果存放到s。

**********/s+=1.0/i++*flag;

voidmain()flag*=-l;

{inti;)

for(i=l;i<=n;i++)printf("s=%f\n",s);

if(i%2!=0))

s+=i;intmin(intx,inty,intz)

)/*返回3個整數(shù)x,y和z中最小的數(shù)*/

6.040m,n和s是系統(tǒng)定義的外部整型變量(

(不需要自行定義),intt;

編寫程序,根據(jù)m的值求滿足i+2+...+n>=ml=x<y?x:y;

的最小n,并將return(t<z?t:z);

l+2+...+n的結果存放到S?例如,若m=50,)

則n=10,s=55o/*8.020編寫函數(shù),求用1元、5元和10元

**********/三種紙幣支付n元錢

voidmain()共有多少種支付方法?

{inti;例如,16元可有6種支付方法:

fbr(i=l;s<m;i++)方法123456

{s+=i;10元000011

n=i;5元012301

)1元16116161

I*/

/**********intchange(intn)

6.051n和s是系統(tǒng)給定的外部整型變量(不{inti,j,k;

需要自行定義),intsum=0;

編寫程序求l-l/2+l/3-l/4+...l/n,并將結果prir.tf("\tl元\t5元V10元\n");

存放到Sofbr(i=O;i<=n;i++)

******木***/for(j=0;j<=n/5;j++)

voidmain()for(k=0;k<=n/10;k++)

if(n==(i+5*j+10*k))

//intsign=l;{sum=sum+l;

//floatdeno=2.0,tenn;printf("%-d",sum);

//s=1.0;printf("\t%-d\t%-d\t%-d\n",i,j,k);

//\vhile(deno<=n))

〃{printf("\n");

//sign=-sign;return(sum);

//term=sign/deno;}

//s=s+term;/*8.030先編寫一個判斷素數(shù)的函數(shù)。再編

//deno=deno+1;寫一個函數(shù)將一個

//)偶數(shù)表示為兩個素數(shù)之和,并返回其中較

//printf("%f\n",s);小的素數(shù)。

inti=l,flag=l;注:素數(shù)指只能被1和自身整除的正整數(shù)。

s=0.0;規(guī)定。,1不是素數(shù)。

while(i<=n)*/

intprimc(intn)78974I

/*判斷素數(shù),如果是素數(shù)返回1,不是素數(shù)*/

則返回0*/voidinvcrt(chara[N][N])

{intt;{inti,j,b[20][20];

if(n==1)for(i=0;i<N;i++)

return0;for(j=0;j<N;j++)

for(t=2;t<=(n/2);t++)b[i][j]=a[N-l-j][N-l.i];

if(n%t==0)for(i=0;i<N;i++)

return0;for(j=0;j<N;j++)

return1;a[i]U]=b[i]U];

}reium;

intf(inti)}

/*將偶數(shù)i表示為兩個素數(shù)之和,返回其中/*8.064編寫函數(shù)將一個NxN的二維數(shù)組

較小的素數(shù)*/“水平”翻轉。

{intn;例如:翻轉前的數(shù)組翻轉后的數(shù)組

for(n=3;n<=i;n++)123789

if(primc(i-n)&&primc(r))456-->456

returnn;789123

)*/

/*8.050編寫函數(shù),將字符串中ASCH碼最voidinvertH(chara[N][N])

小的字符放在第一{inti,j;

個字符位置,其余字符依次往后移。chark;

*/for(i=0;i*2<N;i++)

voidfunc(char*str)for(j=O;j<N;j++)

/*將字符串str中ASCII碼最小的字符放在{

第一個*/k=a[i]|j];

產字符位置,其余字符依次往后移。a[inj]=a[N-i-l][j];

*/a[N-i-l](j]=k;

{inti,j,min;

for(min=0,i=1;str[i]!='\0*;i++)

(/*8.067編寫函數(shù)將一個NxN的二維數(shù)組

if(str(minl>str[il)的周邊元素"順時針''輪轉1位。

min=i;例如:輪轉前的數(shù)組輪轉后的數(shù)組

)123412

j=str[min];456-->753

fbr(i=min-1;i>=0;i")789896

str[i+l]=str[i];*/

str[O]=j;voidturningClockwise(chara[N][N])

}{inti,j,row=0,column=0;

/*8.060編寫函數(shù)將一個nxn的二維數(shù)組按int

“次對角線”翻轉。intflag=l;

例如:翻轉前的數(shù)組翻轉后的數(shù)組printf("原來的數(shù)組:\n");

I23963for(i=0;i<N;i++){

456—>852for(j=0;j<N;j++)

printf("%5d",ali]|j]);的元素按行向右輪轉1位。

printf("\n");例如:輪轉前的數(shù)組輪轉后的數(shù)組

)123312

(mp=a[01(01;456-->645

a[O][O]=a[l][O];789978

column=1;*/

while(!(row==0&&column==0)){voidtumingRight(chara[N][N])

t=a[rowj[column];{introw,col=N-3,tmp;

a[row][columnl=Imp:printf("原來的數(shù)組:\n");

tmp=t;for(row=0;ro\v<N;row++)

if(flag==l){{fcr(col=0;col<N;col++)

if(column!=N-l)pr:ntf("%5d",a[row][col]);

column++;printf("\nu);

else{)

flag++;for(ro\v=0;row<N;row++)

row++;{tmp=a[row][N-l];

)for(col=N-l;col;col")

}clscif(Oag==2){(

if(row!=N-l)a[row][col]=a[row][col-I];

row++;)

else{a[row][col]=tmp;

flag++;)

column--;printf("右移一位后的的數(shù)組:\n");

)fnr(row=0;ro\v<N;row++)

}elseif(flag==3){{fcr(col=0;coI<N;col++)

if(column!=0)printf("%5d'\a[row][col]);

columnprintf('\n");

else{)

,

flag++;;prir1tf("\n');

row";}

1voidfunc(chars[],chart[],intn)

}elseif(flag==4){/*數(shù)組s的前n個元素存放給定的字符序

if(row!=0)列,

row—;數(shù)組(的前n個元素存放s的逆序列。

I注意:數(shù)組的下標從0開始。

)*/

printf(”\n順時針旋轉后的數(shù)組:W);{inti;

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

for(j=0;j<N;j++)t[i]=s[n-i-l];

printf("%5d",a[i]|j]);t[i]='\0r;

printf("\n");)

Ivoidfunc(char*s,char*t)

)/*s是給定字符串的起始地址,

/*8.072編寫函數(shù)將一個NxN的二維數(shù)組at是求得s的逆串的起始地址

*/

{inti.n=strlen(s);intmonth_day(intyear,intyearday,int

for(i=0;i<n;i++)*pmonth,int*pday)

*(t+i)=*(s+n-i-l);/*year是年,

Iycarday是天數(shù),

voidfunc(char*sl,char*s2,inin)若year和yearday合理,

{intij;則*pmonth和*pday是計算得出的月和

chart;日,函數(shù)返回I;

fbr(i=O;i<*n;i++)否則,函數(shù)返回0。

*(s2+i)=*(s1+i);*/

for(j=l;j<n-2;j++){int

fbr(i=1;i<=n-2-j;i++)i,z=0,d1(12]={31,28,31,30,31,30,31,31,30,31,

{if(*(s2+i)<*(s2+i+l))30,31},d2[12]=[31,29,31,30,31,30,31,31,30,3

{t=*(s2+i);130,31);

*(s2+i)=*(s2+i+1);*pinonth=I;

*(s2+i+l)=t;if(year%4==0&&year%100!=0||year%400==0)

{if(l<=ycar&&1<=ycarday&&ycarday<=366

)

{z=l;

對字符串除首尾字符外,將其余字符按if((yearday-31)>0)

ASCII碼將序排列{yearday二yearday-31;

voidfunc(char*sl,char*s2)for(i=I;i<=l1;i++)

{intij,n;if(yearday/d2[i]==0)

chart;(

n=strlen(sl);*pmon(h=*pmonth+1;

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

*(s2+i)="(sl+i);)

forQ=l;j<n-2;j++)else

fbr(i=I;i<=n-2-j;i++){*pmonth=*pmonth+1;

{if(*(s2+i)<*(s2+i+l))if(yearday-d2[il>0)

{t=*(s2+i);ycarday=ycarday-d2[ij;

*(s2+i)=*(s2+i+1);else

*(s2+i+1)=t;break;

)

)

*pday=yearday;

char*match(char*s,charc)}

/*返回字符在串s中首次出現(xiàn)的位置指針)

*/else

{while(*s!='\0'){if(l<=ycar&&1<=ycarday&&yearday<=

if(*s==c)365)

return(s);{z=l;

elses++;if((yearday-31)>0)

return(NULL);{yearday=yearday-31;

for(i=l;i<=ll;i++)注意:要求在函數(shù)中采用指針(而不是

下標)滅處理數(shù)組元素。

if(ycarday/d1[i]==O&&ycaiday!=O)*/

({inii,max;

*pmonth=*pmonth+l;max=*s;

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

)if(*(s+i)>max)

elsemax=*(s+i);

(returnmax;

*pnionth=*pmonth+1;)

if'(yearday-dl[il!=O)intmin3adj(inl*s,intn)

yearday=yearday-dl[i];/*數(shù)組s含n(>=3)個整數(shù),

else返回在s中相鄰三個數(shù)的和中的最小值。

break;*/

){inti,j;

)intsum[20]={0};intmin=0;

*pday=ycarday;for(i=0;i<n-2;i++)

{

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

return(z);(

}sum[i]+=s[i+j];

longfunc(char*s))

/*s是一個數(shù)字字符串的地址,函數(shù)返回值)

為由S含有的數(shù)字字符轉或得到的數(shù)(包含sum[i+l]-\0';

正負數(shù)情況)min=sum[0|;

*/for(i=0;i<n-2;i++)

{inti,j,k=O,a=l;

longn=0;if(suir.[i]<min)

for。=0;*(s+j)!=10';j++)(

{)min=sum[i];

fbr(i=j-1;i>=0;i—)I

{I

if(*(s+i)>=,0,&&*(s+i)<=*9,)returnmin;

()

n=n+(*(s+i)-,0')*a;/*11.023數(shù)組s存儲了n個人的信息。寫一

a=a*10;函數(shù),求這n個人中年齡最大(即出生日期

}最小)者的姓名。

1*/

if(*s=='j)char*oldest(students[],intn)

n=n*(-l);{inti;

returnn;structstudent*p;

Ip=&s[0];

intHndmax(ints[],intn)for(i=l;i<n;i++)

/*返回s中n(>0)個整數(shù)的最大值。{if(s[i].birth.year<(*p).birth.year)

{p=&s[i];continue;]

if(s[i].birth.year==(*p).biith.year){if((*head).birth.year==(*head1).birth.year)

{if(s[i].birth.month<(*p).birth.month)(

{p=&s[il;continue;}if((*head).birth.month<(*hea(ll).birlh.mcnlh)

if(s[i].birth.month==(*p).birth.month){head->next=headl->next;

{if(s[i].birth.day<(*p).birth.day)p=(*head).name;

P=&s[i];I

)else

){

Iif((*hcad).birth.month==(*hcadl).birth.month

retum(p->name);)

}(

/*11.033鏈表L存儲了多個人的信息。寫if((*head).birth.day<(*headl).birth.day)

一函數(shù),求這些人中年齡最大{head->next=head1->next;

(即出生日期最小)者的名字。p=(*head).name;

結構體類型定義如下:I

structdatc{intyear;intmonth;intday;};else

〃日期結構體類型{hcad=hcad1;

structstudcntNodc〃鏈表結點的結p=(*hcad).name;

構體類型)

{charname[10];〃人名}

structdatebirlh;//出生日期else

structstudentNode*next{head二head1;

};p=(*hcad).namc;}

*/}

char*oldcst(structstudcntNodc*L))

/*若L是空表,則返回空指針nullelse

否則返回表中年齡最大者的名字{head=head1;

*/p=(*head).name;|

{intj;)

char*p;if(hcad1->ncxt==0)break;

structstudentNode*headl,*head;)

hcad=L;1

p=(*head).name;else

if(hcad->next!=0){p=(*head).name;}

{return(p);

for(j=l;u++)}

(/*11.063結構體類型定義如下:

headl=head->next;structcourse

if((*hcad).birth.ycar<(*head1).birth.ycar){intcID;〃課程號,取值0?99

{head->next=head1->next;charnameflO];〃課程名

p=(*head).name;floatcredit;〃學分,取值0~5

)intsemester;//學期,取值1~8

else);

結構體數(shù)組c存儲了n1課程的信息。寫structstudent〃結構體類型

一函數(shù),求學期s的總學分。{charname[10];〃人名

*/structdatebirth;〃出生日期

floatcre(litSum(structcoursec[],intn,ints));

{inti;結構體數(shù)組s存儲了n個人的名字和出生

floatsum=0;日期。寫一函數(shù),由數(shù)組s中n個人

for(i=0;i<n;i++)的信息及其順序構造相應的鏈表。鏈表的

if(c[i].semester==s)結點的結構體類型定義如下:

sum=sum+c[il.credit;structstudentNode〃結構體類型

returnsum;{charname!10];〃人名

}structdatebirlh;〃出生日期

/*11.073課程鏈表結點的結構體類型定義structstudentNode*next

如下:);

structcourseNode,/課程鏈表結點的*/

結構體類型structstudentNode*CreateLinkList(,$truct

(intcID;//課程號,取值0?99students[],intn)

charnamellOJ;〃課程名{inti,j=0;

floatcredit;〃學分,取值0~5structstudentNode*hcad;

intsemester;〃學期,取值1~8structstudentNode水pl,水p2;

structcourseNode*next;if(n==0)returnNULL;

};while(j<n)

結構體鏈表Lc存儲了各學期多門課程的{pl=(structstudentNode

信息。寫一函數(shù),*)malloc(sizeof(structstudentNode));

求學期s的總學分。if(j=O)hcad=p1;

*/else(*p2).next=pl;

floatcrcditSum(structcourseNode*Lc,ints)p2二pl;

/李若Lc是空表,則返回0;for(i=0;i<IO;i++)

否則返回學期s的總學分(*pl).name[i]=s[j].name[i];

*/(*pI).birth.year=s[jJ.birth.year;

{floatsum=0;(*pl).birth.month=s[j].birth.month:

if(Lc==NULL)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論