1. 程式人生 > >c語言課程設計論文

c語言課程設計論文

輸入一個百分制的成績t,將其轉換成對應的等級,具體轉換規則如下:90100為A;8089為B;7079為C;6069為D;0~59為E;
輸入一個數字,判斷其範圍,注意輸入的是多組資料,需用while來實現。
程式碼如下
#include
using namespace std;
int main()
{
int n;
while(cin>>n)
{
if(n<0||n>100)
cout<<“Score is error!”<<endl;
if(0<=n&&n<=59)
cout<<“E”<<endl;
if(60<=n&&n<=69)
cout<<“D”<<endl;
if(70<=n&&n<=79)
cout<<“C”<<endl;
if(80<=n&&n<=89)
cout<<“B”<<endl;
if(90<=n&&n<=100)
cout<<“A”<<endl;
}
}

春天是鮮花的季節,水仙花就是其中最迷人的代表,數學上有個水仙花數,他是這樣定義的:
“水仙花數”是指一個三位數,它的各位數字的立方和等於其本身,比如:153=13+53+3^3。
現在要求輸出所有在m和n範圍內的水仙花數。
先將這個三位數的百位、十位、個位分離開,利用水仙花數的特點去判斷是否為水仙花數。
#include
using namespace std;
int main()
{
int m,n,i,a,b,c,d=0,e;
while(cin>>m>>n)
{
e=1;
d=0;
for(i=m;i<=n;i++)
{
a=i%10;
b=i/10%10;
c=i/100%10;
if(iaa

a+bbb+ccc)
{
if(e1)
cout<<i;
else cout<<" "<<i;
e++;
}
else d++;
}
if(d==n-m+1)
cout <<“no”<<endl;
else cout<<endl;
}}

給你n個整數,求他們中所有奇數的乘積。
先判斷一個數字是否為奇數,將奇數篩選,如果是奇數就用s乘以那個數,前提s為1,如果不是奇數不做處理。
#include<stdio.h>
#include
using namespace std;
int main()
{
int i,n,s,p;
while(cin>>n)
{
s=1;
for(i=0;i<n;i++)
{
cin>>p;
if(p%2==1)
s=s*p;
}
cout<<s<<endl;
}
return 0;
}

對於表示式n^2+n+41,當n在(x,y)範圍內取整數值時(包括x,y)(-39<=x<y<=50),判定該表示式的值是否都為素數。
先輸入兩個不同的數,從小的數開始迴圈,將從m開始的每一個數代入公式中,再去判斷該數值是否為素數,需在用另一個迴圈,去判斷是否為素數,如果是則輸出ok,否則輸出sorry。
#include
#include<math.h>
using namespace std;
int main()
{
int m,n,a,b,j,i;
while(cin>>m>>n)
{
if(m0&&n0)
break;
b=0;
for(i=m;i<=n;i++)
{
a=i*i+i+41;
for(j=2;j<=sqrt(a);j++)
{
if(a%j0)
b++;
}}
if(b
0)
cout<<“OK”<<endl;
else cout<<“Sorry”<<endl;
}}

多項式的描述如下:
1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + …
現在請你求出該多項式的前n項的和。
根據題目不難看出每一項分母上的數字依次加一,可利用迴圈來實現,而符號可用(-1)的n次冪來實現,用1去除以每一個迴圈的數,然後加和即可,注意結果須保留兩位數字,所以定義sum時須定義為double,而不能用int來定義sum。
#include
#include
#include
#include
using namespace std;
int main()
{
int m,n,i,j;
double sum=0,s;
cin>>m;
for(i=1;i<=m;i++)
{
cin>>n;
sum=0;
for(j=1;j<=n;j++)
{
s=pow(-1,j+1);
sum=sum+s*1/j;
}
cout<<fixed<<setprecision(2)<<sum<<endl;
}
return 0;
}

青年歌手大獎賽中,評委會給參賽選手打分。選手得分規則為去掉一個最高分和一個最低分,然後計算平均得分,請程式設計輸出某選手的得分。
將所有分數輸入後,將所有數字按從小到大的順序排序,利用迴圈將第一個數和最後一個數去掉,將剩餘的數加和後除以總數減二,輸出即可。
#include<stdio.h>
#include
#include<math.h>
#include
using namespace std;
int main()
{
int n,i;
double sum=0,m[110],s;
while (cin>>n)
{
sum=0;
for (i=0;i<n;i++)
{
cin>>m[i];
}
sort(m,m+n);
for (i=1;i<n-1;i++)
{
sum=sum+m[i];
}
s=sum/(n-2);
cout<<fixed<<setprecision(2)<<s<<endl;
}
return 0;
}

有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請程式設計實現在第n年的時候,共有多少頭母牛?
分情況去做,如果n小於等於4,直接輸出n,如果n大於4,重新去定義n為1,第二年出生的牛在第五年生一頭牛,利用迴圈求的所有牛。
#include
#include
#include
using namespace std;
int main()
{
int n,a,b,c,d,i;
while(cin>>n)
{
if(n==0)
break;
if(n<=4)
cout<<n<<endl;
else
{
n=n-4;
a=b=c=d=1;
for(i=1;i<=n;i++)
{
d=c+d;
c=b;
b=a;
a=d;
}
cout<<a+b+c+d<<endl;
}
}
return 0;
}

輸入n(n<=100)個整數,按照絕對值從大到小排序後輸出。題目保證對於每一個測試例項,所有的數的絕對值都不相等。
輸入一個數字,先取其數字的絕對值,將其絕對值賦值給另一個字母,然後將數字從大到小進行排序,輸出即可。
#include
#include
using namespace std;
int main()
{
int a,i,j,t;
while(cin>>a&&a)
{
i=0;
int b[a];
while(i<a)
cin>>b[i++];
for(i=0;i<a;i++)
for (j=0;j<a-i-1;j++)
{
if(abs(b[j])<abs(b[j+1]))
{
t=b[j];
b[j]=b[j+1];
b[j+1]=t;
}
}
for(i=0;i<a-1;i++)
cout<<b[i]<<" “;
cout<<b[i]<<’\n’;
}
return 0;
}
有n(n<=100)個整數,已經按照從小到大順序排列好,現在另外給一個整數x,請將該數插入到序列中,並使新的序列仍然有序。
輸入一個數字,判斷其與後輸入數字的大小,如果比前一個數字大,將其插入到這個數字後面,後面的數字依次往後推一個,輸出所有數字即可。
#include
using namespace std;
int main()
{
int n,a[110],m,i,j,s=0;
while(cin>>n>>m)
{
if(m0&&n0)
return 0;
for(i=1;i<=n;i++)
{
cin>>a[i];
}
a[n+1]=m;
for(j=1;j<=n;j++)
for(i=1;i<=n+1-j;i++)
{
if(a[i]>a[i+1])
{s=a[i];
a[i]=a[i+1];
a[i+1]=s;}
}s=0;
cout<<a[1];
for(i=2;i<=n+1;i++)
{
cout<<” "<<a[i];
}cout<<endl;}}
每個老師的工資額都知道,最少需要準備多少張人民幣,才能在給每位老師發工資的時候都不用老師找零呢?這裡假設老師的工資都是正整數,單位元,人民幣一共有100元、50元、10元、5元、2元和1元六種。
輸入一個數值,將sum加上x除以100,將其去除以100後取餘,然後將sum加上x除以50,將其除以50,以此類推,最後輸出sum即可。
#include
#include
using namespace std;
int main()
{
int n,sum,i,x;
while(cin>>n)
{
if(n==0)
break;
else
sum=0;
for(i=1;i<=n;i++)
{
cin>>x;
sum=sum+x/100;
x=x%100;
sum=sum+x/50;
x=x%50;
sum=sum+x/10;
x=x%10;
sum=sum+x/5;
x=x%5;
sum=sum+x/2;
x=x%2;
sum=sum+x;
}
cout<<sum<<endl;
}
return 0;
}

A和B不是簡單的整數,而是兩個時間,A和B 都是由3個整陣列成,分別表示時分秒,比如,假設A為34 45 56,就表示A所表示的時間是34小時 45分鐘 56秒。將A和B對應相加。
輸入集合A和B,從第二組數字開始,如果相加數字大於60,則前一組加1,如果小於60,直接輸出即可,
#include
#include
using namespace std;
int main()
{
int n,i,j,s,l,m,a[10];
while(cin>>n)
{
for(i=0;i<n;i++)
{
for(j=0;j<6;j++)
cin>>a[j];
s=a[0]+a[3];
l=a[1]+a[4];
m=a[2]+a[5];
if(m>=60)
{
l=l+m/60;
m=m%60;}
if(l>=60)
{
s=s+l/60;
l=l%60;}
cout<<s<<" “<<l<<” "<<m<<endl;}}
return 0;
}

求A^B的最後三位數表示的整數。
說明:A^B的含義是“A的B次方”
輸入x和y,x為數值,y為次冪,先將x除以1000後取餘賦值給z,因為只需輸出後三位,利用迴圈實現次冪,輸出結果即可。
#include<stdio.h>
#include
using namespace std;
int main()
{
int i,x,y,z;
while(cin>>x>>y)
{
if(x0&&y0)
break;
z=x%1000;
for(i=1;i<y;i++)
{
z=z*(x%1000);
z=z%1000;
}
cout<<z<<endl;
}
return 0;
}

有一樓梯共M級,剛開始時你在第一級,若每次只能跨上一級或二級,要走上第M級,共有多少種走法?
輸入m從第一級開始走,不難看出第一級時共有0種,第二級時共有1種,第三級時共有兩種,當n大於等於四時,尋找起規律,發現從第四級開始一共有前兩級的和種,相加輸出即可。
#include<stdio.h>
#include
using namespace std;
int f[41];
int main()
{
int n,m,i;
f[1]=0;
f[2]=1;
f[3]=2;
for(i=4;i<41;i++)
f[i]=f[i-1]+f[i-2];
cin>>n;
while(n–)
{
cin>>m;
cout<<f[m]<<endl;
}
return 0;
}

假設所有的短號都是是 6+手機號的後5位,比如號碼為13512345678的手機,對應的短號就是645678。
現在,如果給你一個11位長的手機號碼,你能找出對應的短號嗎?
將所輸入的一串數字定義為字元,首先需輸出6,
然後再利用迴圈將a[6]以後的數字輸出即可,所輸出的即為校園短號。
#include
#include
using namespace std;
int main()
{
int n,i;
char a[11];
cin>>n;
while(n–)
{
for(i=0;i<11;i++)
{
cin>>a[i];
}
cout<<“6”;
for(i=6;i<11;i++)
{
cout<<a[i];
}
cout<<endl;
}
return 0;
}

第一天悟空吃掉桃子總數一半多一個,第二天又將剩下的桃子吃掉一半多一個,以後每天吃掉前一天剩下的一半多一個,到第n天準備吃的時候只剩下一個桃子。聰明的你,請幫悟空算一下,他第一天開始吃的時候桃子一共有多少個呢?
尋找其中的規律,可以將其倒著算,不難尋找到其中的規律,從1開始,倒數第n天時,一共有z=(1+1)*2個需計算n次即可,到最後輸出其z的值即可。
#include
#include
using namespace std;
int main()
{
int n,m,i;
while(cin>>n)
{
m=1;
for(i=1;i<n;i++)
{
m=(m+1)*2;}
{
cout<<m<<endl;}
}
return 0;
}

總體來說我感覺杭電的這些題有點難,幾乎每一個題都需要用while語句來實現多組資料的輸入,有些題目中的規律也比較難尋找,題目中的規律成了這個題的核心關鍵,而課程設計這門課也比較的難,這一個學期的課程設計也沒有學到什麼東西,總是在會與不會之間徘徊,說懂也不懂,說不懂也懂那麼一點,這一次課程設計不僅檢驗了我所學習的知識,也培養了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設計過程中,和同學們相互探討,相互學習,相互監督。學會了合作,學會了運籌帷幄,學會了寬容,學會了理解,也學會了做人與處世。掌握了一些基本的學習c語言的方法,一步步的熟悉了規範和標準,體會了學以致用、突出自己勞動成果的喜悅心情,從中發現自己平時學習的不足和薄弱環節,從而加以彌補。
感謝老師,老師嚴謹細緻、一絲不苟的作風一直是我工作、學習中的榜樣;老師循循善誘的教導和不拘一格的思路給予我無盡的啟迪;每一次題目的完成,離不開老師的細心教導,而您開朗的個性和寬容的態度,幫助我能夠很順利的完成了這次課程設計。同時感謝對我幫助過的同學們,謝謝你們對我的幫助和支援,讓我感受到同學的友誼。由於本人的設計能力有限,在設計過程中難免出現錯誤,懇請老師們多多指教,我十分樂意接受你們的批評與指正,本人將萬分感謝。