【前記】
大一時,貪玩,沒有認真地跟着忠孝教授好好學習C語言。後來雖然又花了些時間查閱,但總歸沒有花一段連續的時間來研讀這本教材《高級語言程序設計》(廈門大學出版社·黃翠蘭主編),趁着實習前的這段空閒時間,重新拿起學習,並認真做好課後的習題,做到每題都弄懂,打好基礎!有閒暇了,數據結構和C++也每題必做!發到自己的博客上監督自己完成!
【第三章】
1.把任意的三個數按大小順序排列。
#include <stdio.h>
int _max(int a,int b)
{
if (a>b) return a;
else return b;
}
void main(){
int a,b,c,max;
scanf("%d,%d,%d",&a,&b,&c);
max = _max(_max(a,b),_max(b,c));
printf("max=%d\n",max);
getch();
}
2.計算1-1/2+1/3-1/4+...+1/99-1/100的值。
#include <stdio.h>
void main(){
float i=1.000;
float a=0.000,b=0.000,c=0.000;
for (i;i<=50;i+=2.000)
{
a = a+(1.000/i);
b = b+(-1.000)*(1.000/(i+1));
printf("i:%f\n",i);
printf("a=%f b=%f\n",a,b);
}
c = a+b;
printf("a=%f,b=%f,c=%f\n",a,b,c);
getch();
}
這代碼,我看了都蛋疼!
3.編程判斷輸入整數的正負性和奇偶性。
#include <stdio.h>
void main()
{
int a;
scanf("%d",&a);
if (a >= 0) { printf("整數!\n");}
else { printf("負數!\n");}
if (a%2 == 0) { printf("偶數!\n");}
else { printf("奇數!\n");}
getch();
}
4.編寫解一元二次方程ax^2+bx+c=0的完整程序。
#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c;
float temp,x1,x2;
scanf("%f,%f,%f",&a,&b,&c);
temp = b*b-4.0*a*c;
printf("temp:%f\n",temp);
if (temp<0)
{
printf("無解!");
}
if (temp>=0)
{
printf("有二個解!");
x1 = ((-b)+sqrt(temp))/(2.0*a);
x2 = ((-b)-sqrt(temp))/(2.0*a);
printf("x1:%f x2:%f\n",x1,x2);
}
getch();
}
5.輸入4個整數,要求按從小到大的順序輸出。
#include <stdio.h>
void insertsort(int a[],int n)
{
int i,j,temp;
for (i = 1;i < n; ++i)
{
temp = a[i];
for (j = i;j>0 && temp<a[j-1];--j)
{
a[j] = a[j-1];
}
a[j] = temp;
}
}
void main()
{
int a[4]={4,2,1,3};
insertsort(a,4);
getch();
}
6.輸入一個不多於5位的正整數,編寫程序,完成以下功能:
(1)求出它是幾位數;
(2)分別打印出每一位數字;
(3)按逆序打印出各位數字,例如原數爲321,應輸出123。
#include <stdio.h>
void fun(long i)
{ int w,q,b,s,g;
long t;
w = i/10000;
if (w == 0)
{
q = (i/1000);
if (q == 0)
{
b = (i/100);
if (b == 0)
{
s = (i/10);
if (s == 0)
{
printf("該數爲1位數!\n");
g = i;
t = g;
}
printf("該數爲2位數!\n");
g = i-s*10;
t = g*10+s;
}
printf("該數爲3位數!\n");
s = (i-b*100)/10;
g = i-b*100-s*10;
t = g*100+s*10+b;
}
printf("該數爲4位數!\n");
b = (i-q*1000)/100;
s = (i-q*1000-b*100)/10;
g = i-q*1000-b*100-s*10;
t = g*1000+s*100+b*10+q;
}
printf("該數爲5位數!\n");
q = (i-w*10000)/1000;
b = (i-w*10000-q*1000)/100;
s = (i-w*10000-q*1000-b*100)/10;
g = i-w*10000-q*1000-b*100-s*10;
t = g*10000+s*1000+b*100+q*10+w;
printf("萬位:%d",w);
printf("千位:%d",q);
printf("百位:%d",b);
printf("十位:%d",s);
printf("個位:%d",g);
printf("\n逆序後爲:%ld",t);
}
void main()
{
long i;
scanf("%ld",&i);
fun(i);
getch();
}
7.在屏幕上顯示一張如下所示的時間表:
*********time********
1 morning
2 afternoon
3 night
Please erter your choice:
要求:輸入,輸出,其他則提示“Selection error!”,用switch語句編程實現!
#include <stdio.h>
void fun()
{
int choice;
printf("****Time****\n");
printf("1 morning\n");
printf("2 afternoon\n");
printf("3 night\n");
printf("Please enter your choice");
scanf("%d",&choice);
switch (choice)
{
case 1:printf("Good morning!\n");
break;
case 2:printf("Good afternoon!\n");
break;
case 3:printf("Good night!\n");
break;
default:printf("Selection error!\n");
break;
}
}
void main(){
fun();
getch();
}
8.讀入一個年份和月份,打印出該月有多少天(考慮閏年),用 switch 語句編程實現。
#include <stdio.h>
void main()
{
int year,month,leap=0; //leap=1爲閏年
printf("year:");
scanf("%d",&year);
printf("month:");
scanf("%d",&month);
if ((year%4 == 0)&&(year%100 != 0)||(year%400 == 0)) leap = 1;
switch (month)
{
case 1:printf("31days\n");
break;
case 2:if (leap == 0) { printf("28days\n");}
else { printf("29days\n");}
break;
case 3:printf("31days\n");
break;
case 4:printf("30days\n");
break;
case 5:printf("31days\n");
break;
case 6:printf("30days\n");
break;
case 7:printf("31days\n");
break;
case 8:printf("31days\n");
break;
case 9:printf("30days\n");
break;
case 10:printf("31days\n");
break;
case 11:printf("30days\n");
break;
case 12:printf("31days\n");
break;
default:printf("error!");
break;
}
getch();
}
9.同樣switch的題目,略,時間寶貴!
10.編程計算1*2*3+3*4*5+...+99*100*101的值。
#include <stdio.h>
void main()
{
int i;
long s=0;
for (i=0;i<=99;i+=2)
{
s = s+(i*(i+1)*(i+2));
}
printf("%ld",s);
getch();
}
11.編程計算1!+2!+3!+4!+...+10!的值。
調用子函數!
12.編程計算a+aa+aaa+aaaa+...+aa..a(n個a)的值,n和a的值由鍵盤輸入。
注意溢出!
13.韓信點兵!
#include <stdio.h>
void main(){
int i,s=1;
for (i=1;i<65535;i++)
{
s = i;
if ((s%5==1)&&(s%6==5)&&(s%7==4)&&(s%11==10))
{
printf("%d",s);
break;
}
}
getch();
}
14.一個數如果恰好等於它的因子之和,這個數就稱爲“完數”。例如,6的因子爲1、2、3,而6=1+2+3,因此6是“完數”。編程序找出1000以內的所有完數,並按下面的格式輸出因子:
6 its factors are 1,2,3
#include <stdio.h>
void main()
{
int sum,k,j;
sum = 0;
for (k=2;k<=1000;k++)
{
sum=0;
for (j=1;j<k;j++)
{
if (k%j==0)
{
sum=sum+j;
}
if (sum==k)
{
printf("%d\n",k);
break;
}
}
}
getch();
}