C语言基础与算法-课后作业

与C语言打个招呼

// ¹§Ï²Ä㣬¿ªÊ¼ÄãµÄ±à³Ì֮·£¡£¡£¡
// ÇëÔÚÏÂÃæµÄÄÚÈÝÖа´×ó²àÌáʾÍê³É³ÌÐò±àд£¡£¡£¡
#include<stdio.h>
int main()
{
   //在此编写功能代码
   printf("*****\n");
   printf("Hello C program, I am coming!\n");
   printf("*****");
    return 0;
};//以上为主函数

C语言程序设计编辑与调试环境

打印输出 Hello World

#include<stdio.h>
    int main(void)
    {  
    /********* Begin *********/
    
    printf("Hello World");
    /********* End *********/
       return 0;
    }

打印输出图形

#include<stdio.h>
    int main(void)
    {      
    /********* Begin *********/
    printf("    *\n");
    printf("   ***\n");
    printf("  OK\n");
    printf(" Hello!\n");
    printf("*********\n");
    /********* End *********/
       return 0;
    }

求3个数的最大值

#include<stdio.h>
    int main(void)
    {  
    /********* Begin *********/
    int a,b,c,max;
    scanf("%d,%d,%d",&a,&b,&c);
    if(a>b&&a>c)
    max=a;
    if(b>a&&b>c)
    max=b;
    if(c>a&&c>b)
    max=c;
    printf("max=%d",max);
    /********* End *********/
       return 0;
    }

熟悉C语言调试过程

#include<stdio.h>
int main(void)
  {
      /********* Begin *********/
      int  x,y,z;
      y=2;z=3;
      scanf("%d",&x); 
      if (x==y+z)
          printf("*****");
      else  
          printf("#####" );
      return 0;
      /********* End *********/
  }

第2讲-变量常量运算符-课后作业

第2关 你的活动面积有多大?

// ÇëÔÚÏÂÃæµÄÄÚÈÝÖа´×ó²àÌáʾÍê³É³ÌÐò±àд£¡£¡£¡
#include <stdio.h>
#define PI 3.14
int main(){
    // 输入代码段
    float r,s;

    scanf("%f", &r);
    s = PI * r * r;
    printf("活动面积为:%g平方千米", s);
    return 0;
}

实验2-变量常量运算符

圆的面积及周长

#include <stdio.h>
int main()
{
  float r,s,c;
  /*********begin*********/
  scanf("%f",&r);
  s=3.14*r*r;
  c=2*3.14*r;
  printf("请输入圆半径r:圆面积S=%f,圆周长C=%f",s,c);
  /*********end*********/
  return 0;
}

计算速度和位移

#include<stdio.h>
int main()
{
   float t,a,v0,v,s;
   /*********begin*********/
   scanf("%f %f %f",&t,&a,&v0);
   v=v0+a*t;
   s=v0*t+0.5*a*t*t;
   printf("当初始速度为%f时\n",v0);
   printf("%fs时的速度为%f\n",t,v);
   printf("%fs时的位移为%f\n",t,s);
  /*********end*********/
  return 0;
}

两点间的距离

# include<stdio.h>
# include<math.h>
int main()
{
    /*********begin*********/
    float x1,x2,y1,y2,distance;
    scanf("%f %f %f %f",&x1,&y1,&x2,&y2);
    distance = sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
    printf("%.2f",distance);

    /*********end*********/
    return 0;
}

第3讲-输入输出-课后作业

两点间的距离

#include <stdio.h>

void main()
{
    float  a,b,c,d,e;
    
    /************************************/
    // 请在此补充输入语句
    scanf("%f%f",&a,&b);

    c = a+b;
    d = a-b;
    e = a*b;
    printf("两个数的和为%.3f,差为%.3f,积为%.3f",c,d,e);
    /************************************/
    // 请在此补充输出语句
}

实验3-输入输出

字符输入输出

#include <stdio.h>

void main()
{
    char  a,b;

    /************************************/
    // 请在此补充输入语句
    scanf("%c%c",&a,&b);
    printf("%c:%d\n",a,a);
    printf("%c:%d",b,b);
    
    /************************************/
    // 请在此补充输出语句,输出字符及对应ASCII值

}

格式化输入输出

#include <stdio.h>

void main()
{
    int  a,b;
    float x,y;
    char c1,c2;

    scanf("%d %d %f %f%c%c",&a,&b,&x,&y,&c1,&c2);
    printf("%d, %d\n",a,b);
    printf("%f, %f\n",x,y);
    printf("%c, %c",c1,c2);

}

输出到文件

#include <stdio.h>

void main()
{
    int  a;
    float b;
    char c;
    FILE *fp;

    /************************************/
    // 请在此补充输入语句
    
    
    fp = fopen("step3/result/output.txt", "w");
    scanf("%d%f%c",&a,&b,&c);
    fprintf(fp,"%d, %.2f, %c",a,b,c);
    /************************************/
    // 请在此补充输出语句,将整数、浮点数、字母输出到文件中


    fclose(fp);
    printf("%d,%.3f,%c", a,b,c);
}

从文件输入

#include <stdio.h>

void main()
{
    int  a;
    float b;
    char c;
    FILE *fp;    
    fp = fopen("step4/output.txt", "r");
    /************************************/
    // 请在此补充从文件读取数据语句
    fscanf(fp,"%d,%f,%c",&a,&b,&c);
    printf("%d\n",a);
    printf("%f\n",b);
    printf("%c\n",c);

    fclose(fp);

    /************************************/
    // 请在此补充输出语句

}

第3讲-输入输出-强化练习(供学有余力同学提升练习)

输出字符的ASCII码

#include <stdio.h>
int main()
{
    /*****************Begin******************/
    char a;
   scanf("%c",&a);
   printf("\"The ASCII of \'%c\' is %d\".",a,a);
}

看看你的成绩

#include <stdio.h>
#include <stdlib.h>

int main()
{
    float a,b,c,d,e,average;
    /*****************Begin******************/
    scanf("%f,%f,%f,%f,%f",&a,&b,&c,&d,&e);
    average = (a + b + c + d + e)/5;
    printf("average score = %.2f\n",average);
    /***************** End ******************/

}

相反次序重新组合

#include <stdio.h>
#include <stdlib.h>

int main()
{
    /*****************Begin******************/
    int a,b,c,d,e;
    scanf("%d",&a);
    b = a % 10;
    c = (a / 10) % 10;
    d = (a / 100) % 10;
    e = (a / 1000) % 10;
    printf("重新组合后:%d%d%d%d\n",b,c,d,e);
    /***************** End ******************/
}

存款预算

#include <stdio.h>
#define YEAR 5
#define MONTHS 12

int main()
{
    double rate;    //读入月利率,double型
    double capital,deposite=0; //每年年底预期取出的存款
    int i = 0;
    double a;
    scanf("%lf%%,%lf",&rate,&capital);
    a =(1+rate/100)*(1+rate/100)*(1+rate/100)*(1+rate/100)*(1+rate/100)*(1+rate/100)*(1+rate/100)*(1+rate/100)*(1+rate/100)*(1+rate/100)*(1+rate/100)*(1+rate/100);
    while(i<YEAR){
        deposite = (deposite + capital) /(a);
        i++;
    }
    printf("At the first of the first year, you need deposit:%.2lf",deposite);
}

第4讲-选择结构-课后作业

你今天安全了吗?

#include<stdio.h>
int main()
{
    float a;
    scanf("%f",&a);
    if( a > 37.3) printf("您的体温超过正常范围,请您尽快就诊!");
    else printf("您的体温正常,恭喜您今天平安!");
}

实验4-选择结构

求三个数的最小数

#include<stdio.h>
    int main(void)
    {

      /*********Begin*********/
          int a,b,c,min;
        scanf("%d,%d,%d",&a,&b,&c);
        if(a < b) min = a;
        else  min = b;
        if(min < c) printf("min=%d",min);
        else {min = c; printf("min=%d",min);};    
      
      /*********End**********/ 
       return 0;
    }

求平方根

#include<stdio.h>
#include<math.h>
    int main(void)
    {  
      /*********Begin*********/
      
          float x;
        int a;
        printf("请输入一个小于1000的正数:");
        scanf("%f",&x);
        if(x <= 0) printf("输入数非正数,请重新输入.");
        else {
            if(x > 1000) printf("输入数大于1000,请重新输入.");
            else {
                a = sqrt(x);
                printf("平方根为:%d",a);
            }
        };
    
      /*********End**********/ 
       return 0;
    }

求分段函数

#include<stdio.h>
    int main(void)
    {  
      /*********Begin*********/
      
          float x,y;
        scanf("%f",&x);
        if(x < 1) y = x;
        else {
            if(x <= 10)y = 2*x - 1;
            else {y = 3*x -11;};
        };
        printf("%.2f",y);
      /*********End**********/ 
       return 0;
    }

学生成绩等级换算

#include<stdio.h>
int main()
{
      float x;
      char a;
      scanf("%f",&x);
      if(x < 0 || x > 100 ) printf("Score is error!");
      else {
        if(x < 60) a = 'E';
        else {
            if(x < 70) a = 'D';
            else {
                if(x < 80) a = 'C';
                else {
                    if(x < 90) a = 'B';
                    else {
                        a = 'A';
                    };
                };
            };
            
        };
        printf("%c",a);
      };
      
      
    return 0;
}

判断闰年-扩展题

#include<stdio.h>
    int main(void)
    {  
      /*********Begin*********/
      
          int year;
        scanf("%d",&year);
        if((year%4==0&&year%100)||(year%400==0))
        {
            printf("%d是闰年!",year);
        }
        else
        {
            printf("%d不是闰年!",year);
        }
        return 0;
      /*********End**********/ 
       return 0;
    }

实验5-循环结构

字符统计

#include<stdio.h>
int main()
{
    char ch;
    int letters = 0,space = 0,digit =0,other = 0;
    while((ch = getchar()) != '#')
    {
        if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) letters++;
        else if(ch == ' ') space++;
        else if(ch >= '0' && ch <='9') digit++;
        else other++;
    }
    printf("字母数:%d\n空格数:%d\n数字数:%d\n其他字符数:%d",letters,space,digit,other);
}

水仙花数

// 请在此编写完成代码!
// 直接输出所有水仙花数,数与数之间用空格隔开。
#include<stdio.h>
int main()
{
    int i,j,k,n;
    for(n = 100;n < 1000;n++)
    {
        i = n / 100;
        j = n / 10 - i * 10;
        k = n % 10;
        if(n == i*i*i + j*j*j + k*k*k)
        {
            printf("%d ",n);
        }
    }
}

猴子吃桃

// 请在此编写完成代码!
#include<stdio.h>
int main()
{
    int i,j,n;
    i = 1;
    for(n=1;n < 10;n++)
    {
        j = (i + 1) * 2;
        i = j;
    }
    printf("%d",j);
}

牛顿迭代法解方程

// 请在此编写完成代码!

#include<stdio.h>
#include<math.h>
int main()
{
    double x1,x0,f,f1;
    x1 = 1.5;
    do
    {
        x0 = x1;
        f = (2 * x0 * x0 * x0 - 4 * x0 * x0 + 3 * x0 - 6);
        f1 = (6 * x0 * x0 - 8 * x0 + 3);
        x1 = x0 -f / f1;
    }while(fabs(x1-x0) > 1e-6);
    printf("方程的根是%.2lf",x1);
}

第5讲-循环结构-课后作业

求倒数和

// 请在此编写完成代码!
#include<stdio.h>
int main()
{
    int n,i;
    double end=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        end += 1.0 /i;
    }
    printf("%lf",end);
}

第5讲-循环结构-强化练习(供学有余力同学提升练习)

C循环-求平均成绩

#include<stdio.h>
    int main(void)
    {  
      /*********Begin*********/
      int number,i;
      float average,scores=0,score;
      scanf("%d",&number);
      if(number < 0) printf("the number of students:the scores:average=0.00");
      else {for(i=0;i<number;i++)
      {
          scanf("%f",&score);
          scores += score;

      }
      average = scores / number;
      printf("the number of students:the scores:average=%.2f",average);
      }
      /*********End**********/ 
       return 0;
    }

C循环-求各位数字之积

#include<stdio.h>
    int main(void)
    {  
      /*********Begin*********/
      int n,a,mul_result=1;
      scanf("%d",&n);
      a=n%10;
      while(n!=0) 
      {
          mul_result=mul_result*a;
          n=n/10;
          a=n%10;
      }
      printf("%d",mul_result);
      /*********End**********/ 

    }

C循环-求阶乘之和

#include<stdio.h>
    int main(void)
    {  
      int i,j,sum=1,add=0,number;
      scanf("%d",&number);
      if(number == 0) add = 1;
      else if(number < 0) add = 0;
      else 
      for(i=1;i <= number;i++)
      {
          for(j=1;j <= i;j++)
          {
              sum *= j;
          }
            add += sum; 
            sum = 1;
      }
      printf("%d",add);
        
       return 0;
    }

C循环-水仙花数

#include<stdio.h>
int main()
{
    int n=1000,i,a,b,c;

    for(i=100;i<n;i++)
    {
        a = (i / 100 %10);
        b = (i / 10 %10);
        c = (i%10);
        if(i == a*a*a + b*b*b + c*c*c)
        {
            printf("%d ",i);
        }

    }
}

C循环-寻找完数

#include<stdio.h>
int main()
{
   int a;
   scanf("%d",&a);
   int i,j,sum;
   for(i=2;i<=a;i++)
   {
    sum=0;
    for(j=1;j<i;j++)
    {   
        if(i%j==0)
        sum+=j;
              
    }
    if(i==sum)
    printf("%d\n",i);
         
          
   }
    return 0;
}

分数求和

#include<stdio.h>
int main()
{
    int i;
    float sum=0;
    for(i=1;i<=100;i++)
    {
        if(i%2==0)
            sum -= (1.0 / i);
        else
            sum += (1.0 / i);
    }
    printf("%.3f",sum);
}

第6讲-循环结构应用-课后作业

素数判断

#include <stdio.h>
int main()
{
    //在这里添加你的代码
    int a,i,flag;
    scanf("%d",&a);
    for(i=2;i<a;i++)
    {

        if(a % 2 == 0) {flag=1; break;}
        else flag = 0;
    }
    if(!flag) printf("%d是素数",a);
    else printf("%d不是素数",a);
    return 0;
}

课堂作业-第6讲

编程,输出九九乘法表。

#include<stdio.h>
int main()
{
     int i, j;

     for(i=1; i<=9; i++)
         {for(j=1; j<=i; j++)
                 printf("%d*%d=%-3d", j, i, i*j);
           printf("\n");}

      return 0;
}

编程,输入正整数并显示它们

#include<stdio.h>
int main(){
      int i,a;
      for(i=0;i<=5;i++){
            scanf("%d",&a);
            if(a>=0) printf("n=%d;\n",a);
      }
}

编程,循环实现《孙子算经》中物不知数问题的求解。

#include<stdio.h>

int main( )
{
      int i;
      i=2; 
      while(1)
     {
       if(i%3==2&&i%5==3)
      {     printf("%d\n", i);
        break;    }
        i=i+7;
    }

      return 0;
}

第6讲-循环结构应用-强化练习(供学有余力同学提升练习)

输出若干个学生成绩中的最高分.要求用指针函数实现

#include<stdio.h>
/*********Begin*********/


/*********End**********/
int main(void)
{
    int n,s[110];
    int ans;
    int max,a,i;
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&s[i]);
    
    /*********Begin*********/

    
    max = s[0];
    for(a=1;a<n;a++){
        if(max < s[a]) max = s[a];
    }
    ans = max;
    /*********End**********/
    printf("%d",ans );
    return 0;
}

采用指针变量表示地址的方法输入输出数组中的个元素

#include<stdio.h>
#include<malloc.h>
int main(void)
{
    /*********Begin*********/
    int n;
    int *p;
    int i;
    scanf("%d",&n);
    p=(int*)malloc(sizeof(int)*n);
    for (i=0;i<n;i++)
    scanf("%d",&p[i]);
    for (i=0;i<n;i++)
    printf("%d ",p[i]);
 
    /*********End**********/
    return 0;
}

用指针实现数组循环移动

#include<stdio.h>
#include<malloc.h>
int *solve(int *s,int n,int m){
    /*********Begin*********/
    int i,t;
        int b[110];
        for (i=0;i<n;i++)
        {
            b[i]=s[i];
        }
    for(i=0;i<n;i++)
    {  
        if(i-m<0)
        s[i]=b[i-m+n];
        else 
        s[i]=b[i-m];
    }
 
    return s;
 
    /*********End**********/
}
int main(void)
{
    int n,m,s[110];
    int *ans;
    int i;
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++)
        scanf("%d",&s[i]);
    
    ans = (int *)malloc(sizeof(int)*n);
    /*********Begin*********/
    solve(s,n,m);
    ans = s;
    /*********End**********/
    for(i=0;i<n;i++){
        if(i==0)    printf("%d",*ans++ );
        else    printf(" %d",*ans++ );
    }
    return 0;
}

第七讲 课后作业-函数

函数初级编程练习

#include<stdio.h>
#include<math.h>
//在下面添加函数

float distance(float x1,float y1,float x2,float y2){
    float dis;
    dis = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
    return dis
}
//

int main()
{
float x1,y1,x2,y2;
scanf("%f %f %f %f",&x1,&y1,&x2,&y2);
float d;
d=distance(x1,y1,x2,y2);
printf("%.1f",d);
return 0;
}

实验七 函数编程练习

求解三角形的面积

#include<stdio.h>
#include<math.h>
//完善以下函数
float distance(float x1,float y1,float x2,float y2)

{
  float dis;
  dis = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
  return dis;
};

//完善以下函数
float triangleArea(float x1,float y1,float x2,float y2,float x3,float y3)
{
   float a,b,c,p,s;
   a = distance(x1,y1,x2,y2);
   b = distance(x1,y1,x3,y3);
   c = distance(x2,y2,x3,y3);
   p = (a + b + c) / 2;
   s = sqrt(p * (p-a) * (p-b) * (p-c));
   return s;
   };

int main()
{
    float x1,y1,x2,y2,x3,y3;
    
    float s;
    scanf("%f%f%f%f%f%f",&x1,&y1,&x2,&y2,&x3,&y3);
    s = triangleArea (x1,y1,x2,y2,x3,y3);
    printf("%.1f",s);
}

利用函数交换变量的值

#include <stdio.h> 
// 完善以下代码
void exchange(int *a,int *b)
{
    int x;
    x = *a;
    *a = *b;
    *b = x;
}

//完善以下代码
void main()
{
    int m,n;
    scanf("%d %d",&m,&n);     
    exchange(&m,&n);
    printf("%d %d",m,n);
}

求素数函数

#include <stdio.h>
int prime(int n)
{
    int i,flag=1;
    for(i=2;i < n;i++){
        if(n % 2 ==0){
        flag = 0;
        break;
        }
    }
    return flag;
}
int main(void)
{                    // prime函数的声明,可以不写形参的名字
     int n;

     //printf("input an integer:");
     scanf("%d",&n);
     if (prime(n))
           printf("%d is a prime.\n",n);
     else
           printf("%d is not a prime.\n",n);

     return 0;
}

统计字符类别个数

#include <stdio.h>

int main()
{
    void count(int *,int *,int *,int *);
    int letter=0,space=0,digit=0,others=0;
    count(&letter,&space,&digit,&others);
    printf("\n字母数 %d\n空格数 %d\n数字数 %d\n其他字符数 %d\n",letter,space,digit,others);
    return 0;
}

void count(int *l,int *d,int *s,int *t)
{
    char ch;
    /**********************************************************/
    // 此处添加代码
    while((ch = getchar()) != '#')
    {
        if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {*l = *l + 1;
        }
        else if(ch == 32) *d = *d + 1;
        else if(ch >= '0' && ch <='9') *s = *s + 1;
        else *t = *t + 1;
    }
    /**********************************************************/
};

第7讲-函数-强化练习(供学有余力同学提升练习)

计算三角形的面积和周长。

#include<stdio.h>
#include<math.h>
//完善以下函数
float distance(float x1,float y1,float x2,float y2)

{
  float dis;
  dis = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
  return dis;
};

//完善以下函数
float triangleArea(float a,float b,float c)
{
    float p,s;
   p = (a + b + c) / 2;
   s = sqrt(p * (p-a) * (p-b) * (p-c));
   return s;
   };

int main()
{
    float a,b,c,area;
    int s;
    scanf("%f%f%f",&a,&b,&c);
    if((a + b > c)&&( a + c > b)&&( b + c > a)){
        s = a + b + c;
        area = triangleArea(a,b,c);
        printf("area=%.2f,s=%d",area,s);
    }else printf("Not triangle");
}

用函数求解级数。

#include<stdio.h>
int circle(int n,int x){
    int m,result=x;
    for(m=1;m<n;m++){
        result *=x ;
    }
    return result;
}
int main()
{
    double x,z,result=1,i=1,c;
    scanf("%lf%lf",&x,&z);
    do{
        if(i >= 12) break;
        c = (1.0/circle(i,x));
        result += c;
        i++;
        
    }while((1.0/circle(i,x)) >= z);
    printf("%.15lf",result);
}

求正整数n内的所有素数。

#include <stdio.h>
int prime(int n)
{
    int i,flag=1;
    for(i=2;i < n;i++){
        if(n % i ==0){
        flag = 0;
        break;
        }
    }
    return flag;
}
int main(void)
{                
     int n,m;

     //printf("input an integer:");
     scanf("%d",&n);
     for(m=2;m <= n;m++){
        if (prime(m))
           printf("%d ",m);
     }
     

     return 0;
}

正整数n转换成十六进制字符串逆序输出

#include<stdio.h>
#include<string.h>
int main(){
     int num;
    char buff1[10];
    char buff2[10];
    scanf("%d",&num);
    sprintf(buff1,"%X",num);
    int len = strlen(buff1);
    for (int i = 0;i<len ;i++){
        buff2[i] = buff1[len-i-1];
    }
    buff2[len] = '\0';
    printf("%s",buff2);
}

实验8-数组(一)

打印直方图

/*请完善程序使实现功能:打印直方图。*/
#include <stdio.h>
#include <math.h>
int main( )
 {   int a[5];
     int i,n;
     for(i=0;i<5; i++)
         scanf("%d",&a[i]);
   /*****代码开始*****/
    for(i=0;i<5;i++)
    {
        for(n=1;n<=a[i];n++)
        {
        printf("*");
        };
        n=1;
        printf("\n");
    }


     
  /*****代码结束*****/
     
     return 0;
  }

计算数组的平均值

#include "stdio.h"
//参数x[]表示要查找的数组,n表示该数组的元素数目。
float fun(int x[],int n)
{
    // 请在此添加你的代码
    /********** Begin *********/
    float sum=0;
    for(int i=0;i < n;i++){
        sum += x[i];
    }
    return sum / n;

    /**********  End  **********/
}

int main()
{
    int a[10],i;
    float ave;
    for(i=0;i<10;i++)
    scanf("%d",&a[i]);
    ave=fun(a,10);
    printf("%f\n",ave);
    return 0;
}

计算数组的最大值

#include<stdio.h>
int fun(int x[])
{
    int max,b,c;
    b = x[0];
    for(c = 1;c < 10;c++)
    {
        if(b < x[c])b=x[c];
    }
    return b;
}
int main()
{
    int a[10],i,max;
    for(i = 0;i < 10;i++)
    {
        scanf("%d",&a[i]);
    }
    max = fun(a);
    printf("%d",max);
}

按大小排序

#include <stdio.h>
int main()
{
    /********** Begin *********/

    int x[10];
    int i,j,k,m;
    for(i = 0;i < 10;i++)
    {
        scanf("%d",&x[i]);
    }
    for(j = 0;j < 9;j++){
        for(k = 0;k < 9 - j;k++)
        {
            if( x[k] > x[k + 1] ){
                m = x[k];
                x[k] = x[k + 1];
                x[k + 1] = m;
            }
            
        }
    }
    for(i = 0;i < 10;i++){
        printf("%d ",x[i]);
    }
    /********** End **********/


}

C语言基础与算法-课后作业

数组插入元素

#include <stdio.h>
int main()
{
    /********** Begin *********/

    int x[10] = {1,4,6,9,11,25,31,46,83,100},m,i,j;
    int n[11]=  {1,4,6,9,11,25,31,46,83,100};
    scanf("%d",&m);
    if( m > 100){
        n[10] = m;
    }
    for(i=0;i < 10;i++)
    {
        
        if(m <= x[i]){
            n[i] = m;
            for(j=i+1;j<=10;j++){
                n[j] = x[j-1];
            };
            break;
        }
    }
    for(i=0;i<=10;i++){
        printf("%d ",n[i]);
    }
    
    /********** End **********/

}

按大小排序

#include <stdio.h>
int main()
{
    /********** Begin *********/

    int x[10];
    int i,j,k,m;
    for(i = 0;i < 10;i++)
    {
        scanf("%d",&x[i]);
    }
    for(j = 0;j < 9;j++){
        for(k = 0;k < 9 - j;k++)
        {
            if( x[k] > x[k + 1] ){
                m = x[k];
                x[k] = x[k + 1];
                x[k + 1] = m;
            }
            
        }
    }
    for(i = 0;i < 10;i++){
        printf("%d ",x[i]);
    }
    /********** End **********/


}

找最小值

#include "stdio.h"
//参数x[]表示要查找的数组,n表示该数组的元素数目。
int fun(int x[],int n)
{
    // 请在此添加你的代码
    /********** Begin *********/
    int m,min,i;
    min = x[0];
    for(i=1;i<n;i++){
        if(min > x[i]) min=x[i];
    }
    return min;


    /**********  End  **********/
}

int main()
{
    int a[10],i,min;
    for(i=0;i<10;i++)
    scanf("%d",&a[i]);
    min=fun(a,10);
    printf("%d\n",min);
    return 0;
}

求二维数组的最小值

#include <stdio.h>//输入输出函数
int main()
{
    int a[5][4];
    int min,i,j;
    for(i=0;i<5;i++)
        for(j=0;j<4;j++)
            scanf("%d",&a[i][j]);
    min = a[0][0];
    for(i=0;i<5;i++)
        for(j=0;j<4;j++){
            if(a[i][j]<min){
                min=a[i][j];
            }
        }
    printf("min=%d",min);
    return 0;
 }

实验9-数组(二)

元音字符串复制

#include<stdio.h>
#include<string.h>
int main()
{
    char a[30];
    int i;
    gets(a);
    for(i=0;i<strlen(a);i++)
    {
        switch(a[i]){
        case 'a': printf("a");break;
        case 'e': printf("e");break;
        case 'i': printf("i");break;
        case 'o': printf("o");break;
        case 'u': printf("u");break;
        }
    }

    return 0;
}

求二维数组最大值和平均值

#include<stdio.h>
int main()
{
    int a[4][4];
    int i,j,max;
    float ave,sum=0;
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++){
            scanf("%d",&a[i][j]);
        }
    }
    max = a[0][0];
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++){
            if(a[i][j] > max) max = a[i][j];
            sum += a[i][j];
        }
    }
    printf("最大值:%d\n平均值:%f",max,sum/16);
    return 0;
}

回文字符串(挑战题)

//判断一个字符串是否回文字符串。

#include<stdio.h>
#include<string.h>
int main()
{
    char str[80];
    int i,j,flag=1;
    gets(str);
    j = strlen(str);
    for(i=0,j--;i<j;i++,j--){
        if(str[i] != str[j]){
            flag = 0;
            break;
        }
    }
    if(flag==1)
        printf("Yes");
    else
        printf("No");

    return 0;
}

实验10-结构体

复数运算

#include<stdio.h>
struct complex{
    float real;
    float imag;
};
struct complex com_add(struct complex a,struct complex b){
    struct complex sum;
    sum.real = a.real + b.real;
    sum.imag = a.imag + b.imag;
    return sum;
}
struct complex com_diff(struct complex a,struct complex b){
    struct complex diff;
    diff.real = a.real - b.real;
    diff.imag = a.imag - b.imag;
    return diff;
}
struct complex com_prod(struct complex a,struct complex b){
    struct complex prod;
    prod.real = a.real * b.real - a.imag * b.imag;
    prod.imag = a.real * b.imag + a.imag * b.real;
    return prod;
}
struct complex com_div(struct complex a,struct complex b){
    struct complex div;
    float num;
    div.real = a.real * b.real + a.imag * b.imag;
    div.imag = a.imag * b.real - a.real * b.imag;
    num = b.real * b.real + b.imag * b.imag;
    div.real /=num;
    div.imag /= num;
    return div;
}
struct complex input(){
    struct complex a;
    scanf("%f%f",&a.real,&a.imag);
    return a;
}
int output(struct complex a){
    printf("%.2f%+.2fi\n",a.real,a.imag);
    return 0;
}
int main()
{
    struct complex a,b,c;
    a = input();
    b = input();
    printf("两个复数分别是\n");
    output(a);
    output(b);
    printf("复数和是");
    c = com_add(a,b);
    output(c);
    printf("复数差是");

    c = com_diff(a,b);
    output(c);
    printf("复数积是");
    c = com_prod(a,b);
    output(c);
    printf("复数商是");
    c = com_div(a,b);
    output(c);
}

计算学生平均成绩

//在这里添加您的代码
struct student
{
    int num;
    char name[20];
    float score[3];
    float aver;
}stu[5];
void input(struct student stu[])
{
    int i=0;
    for(i;i<5;i++)
    {
        printf("input scores of student %d:\nNO.:name:score 1:score 2:score 3:",i+1);
        scanf("%d%s%f%f%f",&stu[i].num,&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
        stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;
    }
}
float average(struct student stu[])
{
    int i;
    float aver1,sum=0;
    for(i=0;i<5;i++)
    {
        sum=sum+stu[i].aver;
    }
    aver1=sum/5;
    return(aver1);
}
struct student max(struct student stu[])
{
    int i,m=0;
    for(i=0;i<5;i++)
    {
        if(stu[i].aver>stu[m].aver)
        m=i;
    }
    return(stu[m]);
}
int main()
{
    struct student stu[5],*p=stu;
    struct student stud;
    float a;
    input(p);
    a=average(p);
    printf("功课的平均成绩分别为:%.1f\n",a);
    stud=max(p);
    printf("最高分的同学信息是:\n");
    printf("No.: %d, name: %s, score:%.1f, %.1f, %.1f, average: %.1f",stud.num,stud.name,stud.score[0],stud.score[1],stud.score[2],stud.aver);
    return 0;
}

课后作业-结构体

水果价格计算

#include <stdio.h>
//在这里添加代码
FILE *fp;
struct prices {
    char marketName[80];
    char address[80];
    int phone;
    char name[80];
    float apple;
    float banana;
    float pineapple;
    float grape;
    float mango;
    
}price[3];
int main()
{
    int i,j;
    float max;
    fp = fopen("price.txt","r");
    for(i=0;i<3;i++){
        fscanf(fp,"%s %s %d %s %f %f %f %f %f",&price[i].marketName,&price[i].address,&price[i].phone,&price[i].name,&price[i].apple,&price[i].banana,&price[i].pineapple,&price[i].grape,&price[i].mango);
    };   
    max = price[0].apple + price[0].banana + price[0].pineapple + price[0].grape + price[0].mango;
    j=0;
    for(i=1;i<3;i++)
    {
        
        if(price[i].apple + price[i].banana + price[i].pineapple + price[i].grape + price[i].mango > max) j = i;
    }
    printf("水果价格最高的市场为:%s\n",price[j].marketName);
    printf("其地址为:%s\n",price[j].address);
    printf("其联系电话为:%d\n",price[j].phone);
    printf("其联系人为:%s\n",price[j].name);
    printf("其苹果价格为:%.2f\n",price[j].apple);
    printf("其香蕉价格为:%.2f\n",price[j].banana);
    printf("其菠萝价格为:%.2f\n",price[j].pineapple);
    printf("其葡萄价格为:%.2f\n",price[j].grape);
    printf("其芒果价格为:%.2f",price[j].mango);

    fclose(fp);
}
最后修改:2023 年 05 月 14 日
如果觉得我的文章对你有用,请随意赞赏