您的位置:首页 > 其它

【打基础】高级语言程序设计·厦大出版社 课后习题个人记录2

2012-09-23 00:32 423 查看
【前记】

大一时,贪玩

,没有认真地跟着忠孝教授好好学习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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: