西安工程大学绿皮书c语言课后作业

第三章:

1、四门成绩:

#include<stdio.h>

#include<stdlib.h>

int main() {

 double grade[4],sum=0,avg;

 int i=0;

 printf("请输入你的四门成绩:\n");

 for(i=0;i<4;i++){

  scanf("%lf",&grade[i]);

 }

 for(i=0;i<4;i++){

  sum+=grade[i];

  //printf("%f",sum); 

 }

 avg=sum/4.0;

 printf("你的总成绩为:%.2f\n你的平均成绩为:%.2f",sum,avg); 

 return;

}

 

2、五位数倒叙

#include<stdio.h>

#include<stdlib.h>

int main() {

 int a=1;//用来判断输入是否为五位数的标志

 int num;

 printf("请输入一个五位数:");

 scanf("%d",&num);

 while(num>99999||num<10000) {

  printf("错误,请重新输入一个5位数:\n");

  scanf("%d",&num);

 }

 int i;

 for(i=0; i<5; i++) {

  printf("%d",num%10);

  //a=num%10;

  num/=10;

 }

 return;

}

 

3、圆的系列输出:

 

#include<stdio.h>

#include<stdlib.h>

#define pi 3.1415926 

int main(){

 double r,h;

 printf("请输入圆半径:\n");

 scanf("%lf",&r);

 printf("请输入圆柱体高:\n");

 scanf("%lf",&h);

 printf("圆的周长:2*pi*%f=%.2f",r,2*pi*r);//这里输出两个公式作为示例

 printf("\n圆的面积:pi*%f*%f=%.2f",r,r,pi*r*r);

 printf("\n圆球表面积:%.2f",4*pi*r*r);

 printf("\n圆球的体积:%.2f",4*pi*r*r*r/3.0);

 printf("\n圆柱的表面积:%.2f",2*pi*r*h+2*pi*r*r);

 printf("\n圆柱的体积:%.2f",pi*r*r*h);

 return 0 ;

}

 

第四章

1、三个数找最大数

 

源代码:

#include<stdio.h>

#include<stdlib.h>

int main() {

 int i;

 int a[3]= {0};

 printf("请输入你的三个数;\n");

 for(i=0; i<3; i++) {

  scanf("%d",&a[i]);

 }

 int max;

 if(a[0]>a[1]&&a[0]>a[2])

  printf("你输入的最大值为:%d",a[0]);

 else if(a[1]>a[0]&&a[1]>a[2])

  printf("你输入的最大值为:%d",a[1]);

 else

  printf("你输入的最大值为:%d",a[2]);

}

 

2、分段线性函数求解:

 

#include<stdio.h>

#include<stdlib.h>

int main(){

 double x,y;

 printf("请输入x坐标:\n");

 scanf("%lf",&x);

 if(x<=(-10))

 printf("进入函数y=x中 y=%.2f",x);

 else if (x>-10&&x<=0)

 printf("进入函数y=2.0*x+3中 y=%.2f",2.0*x+3);

 else if (x>0&&x<=10)

 printf("进入函数y=3.0*x-11中 y=%.2f",3.0*x-11);

 else

 printf("进入函数y=x/10.0+1中 y=%.2f",x/10.0+1);

}

 

3、一元二次方程求解:

 

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

int main() {

 int a,b,c,d;

 double x1,x2;

 printf("请依次输入a,b,c:\n");

 scanf("%d%d%d",&a,&b,&c);

 printf("当前a=%d,b=%d,c=%d\n",a,b,c);

 d=b*b-4*a*c;

 //printf("%d",d);

 if(d<0) {

  printf("该方程无解");

 } else if(d>0) {

  x1=(-b+sqrt(d))/2*a*1.0;//防止出现1/2=0的情况。

  x2=(-b-sqrt(d))/2*a*1.0;

  printf("有两个解:\nx1=%.2f,x2=%.2f",x1,x2);

 } else if(d==0) {

  printf("有一个解:\nx=%.2f",((-b)*1.0)/2*a*1.0);

 }

}

一个根情况:

 

 

两个根情况:

 

无根情况:

 

第五章

1、输入若干成绩,负数结束。成绩排序求最值问题:

 

程序源代码:

#include<stdio.h>

#include<stdlib.h>

int main() {

 int temp,i,j,len;

 double grade[1000]= {0};

 double min=0,max=0,avg=0,sum=0;

 printf("请输入你的各科成绩,并以负数结束:\n");

 for(i=0;;i++) {

  scanf("%lf",&grade[i]);

  if(grade[i]>=0) 

  sum+=grade[i];//输入时求总成绩方便求平均成绩

  if(grade[i]<0) //负数结束

   break; //跳出循环后当前i的数值就是数组长度

 }

 printf("您共输入了%d门成绩\n",i);

 len=i;//长度传送给len

 for(i=0; i<len-1; i++) { //冒泡,控制次数循环

  for(j=0; j<len; j++) {//前后交换循环 

   if (grade[j]>grade[j+1]) {

    temp=grade[j+1];

    grade[j+1]=grade[j];

    grade[j]=temp;

   }

  }

 }

 printf("最高成绩为:%.2f\n",grade[len-1]);

 printf("最低成绩为:%.2f\n",grade[0]);

 printf("平均成绩:%.2f\n",sum*1.0/len);

}

 

2、整数转换为字符,再逆序输出

 

#include<stdio.h>

#include<stdlib.h>

int main() {

 int i,temp,num,len=0;

 char str[100];

 printf("请输入一个整数:\n");

 scanf("%d",&num);

 temp=num;

 while(temp!=0) {//求当前数字位数

  temp/=10;

  len++;

 }

 for(i=0; i<len; i++) {

  str[i]=num%10+0x30;

  //将数字加上0x30,就会转换为他的字符类型

  num/=10;

 }

 for(i=0; i<len; i++) {

  printf("%c",str[i]);

 }

}

 

3、输出由*号组成的一个三角形

核心控制语句:

 

#include<stdio.h>

#include<stdlib.h>

int main() {

 //共9行5列

 int h=9,l=5,choice;

 int i,j,tem=5;

 for(i=1; i<=9; i++) {

  if(i<=5)//控制前5行输出

   choice=i;

  if(i>5) {//控制后4行输出

   j=9;

   choice=j-tem;

   tem++;

   j--;

   //printf("\n%d\n",choice);

   if(choice==4)

    printf("\n");

  }

  switch(choice) {

   case 1:

    for (j=1; j<5; j++)

     printf(" ");//两个空格

    printf("*\n");

    continue;

   case 2:

    for (j=1; j<4; j++)

     printf(" ");//两个空格

    printf("* *\n");

    continue;

   case 3:

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

     printf(" ");//两个空格

    printf("* * *\n");

    continue;

   case 4:

    printf(" ");//两个空格

    printf("* * * *\n");

    continue;

   case 5:

    printf("* * * * *");

    continue;

  }

 }

}

与书上的答案做对比:

 

第六章

1、10个整数排序问题:

 

#include<stdio.h>

#include<stdlib.h>

int main() {

 int temp,i,j;

 int num[10]= {0};

 printf("请输入10个整数\n");

 for(i=0; i<10; i++) {

  scanf("%d",&num[i]);

 }

 for(i=0; i<9; i++) { //冒泡,控制次数循环

  for(j=0; j<9; j++) {//前后交换循环

   if (num[j]<num[j+1]) {

    temp=num[j+1];

    num[j+1]=num[j];

    num[j]=temp;

   }

  }

 }

 printf("从大到小依次为:\n");

 for(i=0; i<10; i++) {

  printf("%d ",num[i]);

 }

}

 

2、输入n,打印斐波那契数列:

 

#include<stdio.h>

#include<stdlib.h>

int main(){

 /*Fibonacci数列需要用到迭代

 采用数组来储存,第一步需要对前两

 个数组元素初始化,后面的元素是他

 前两个数组元素之和,例如3=1+2*/

 int i,n;

 printf("请输入n的数值:\n"); 

 scanf("%d",&n) ;

 int Fib[1000]={0} ;

 Fib[0]=1;

 Fib[1]=2;

 for(i=2;i<n;i++){

  Fib[i]=Fib[i-1]+Fib[i-2];

  //迭代产生新的数据存入数组 

 }

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

  printf("%d ",Fib[i]) ;

 }

}

 

2、杨辉三角的前10行

 

#include<stdio.h>

#include<stdlib.h>

int main() {

 int n,i,j,a[100];

 n=10;//可以改为手动输入

 printf("1");//直接输出第一行

 a[1]=a[2]=1;//初始化前两行

 printf("\n");//控制格式

 for(i=3; i<=n; i++) {//因为迭代后数据会覆盖

  a[1]=a[i]=1;//所以采用倒推法

  for(j=i-1; j>1; j--)

   a[j]=a[j]+a[j-1];

  for(j=1; j<=i; j++)

   printf("%d ",a[j]);

  printf("\n");

 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值