C语言代码编程200个例题(上)2

简介: C语言代码编程200个例题(上)

25.

#include "stdafx.h"
#include "stdio.h"
#include<math.h>
int main()
{
    double y;
    int x, m;
    for (y = 1; y >=  - 1; y -= 0.1)            /*0到π,π到2π分别绘制21个点*/
    {
        m = acos(y) *10;              /*求出对应的横坐标位置*/
        for (x = 1; x < m; x++)
            printf(" ");              /*画*前画空格数*/
        printf("*");                /*画**/
        for (; x < 62-m; x++)           /*画出对称面的**/
            printf(" ");
        printf("*\n");
    }
    getchar();
    return 0;
}

26.

#include "stdafx.h"
#include "stdio.h"
main()
{
  int a, b, c, x, sum;
  for (x = 1; x <= 5; x++)                  /*x的取值范围从1到5*/
  {
    if (10605 % (28-5 * x) == 0)              /*满足条件的x值即为所求*/
    {
      sum = 10605 / (28-5 * x);           /*计算出邮票总数*/
      a = 2 * sum / 10;               /*计算a集邮册中的邮票数*/
      b = 5 * sum / 7;                /*计算b集邮册中的邮票数*/
      c = 303;                    /*c集邮册中的有票数*/
      printf("total is %d\n", sum);           /*输出邮票的总数*/
      printf("A:%d\n", a);              /*输出A集邮册中的邮票数*/
      printf("B:%d\n", b);              /*输出B集邮册中的邮票数*/
      printf("C:%d\n", c);                /*输出C集邮册中的邮票数*/
    }
  }
}

27.

#include "stdafx.h"
#include "stdio.h"
main()
{
  int i, j, count;
  puts("the result is:\n");
  printf("time  red ball  white ball  black ball\n");
  count = 1;
  for (i = 0; i <= 3; i++)                    /*红球数量范围0到3之间*/
  {
    for (j = 0; j <= 3; j++)                  /*白球的数量范围0到3之间*/
    {
      if ((8-i - j) <= 6)                   /*判断要取黑色球的数量是否在6个以内*/
        printf("%3d%8d%9d%10d\n", count++, i, j, 8-i - j);  /*输出各种颜色球的数量*/
    }
  }
  return 0;
}

28.

#include "stdafx.h"
#include "stdio.h"
main()
{
  int n = 1, m, sum, i;                 /*定义变量为基本整形*/
  while (1)
  {
    m = n;                    /*m存储一楼灯的数量*/
    sum = 0;
    for (i = 1; i < 8; i++)
    {
      m = m * 2;                /*每层楼灯的数量是上一层的2倍*/
      sum += m;                 /*计算出除一楼外灯的总数*/
    }
    sum += n;                   /*加上一楼灯的数量*/
    if (sum == 765)               /*判断灯的总数量是否达到765*/
    {
      printf("the first floor has %d\n", n);      /*输出一楼灯的数量*/
      printf("the eight floor has %d\n", m);      /*输出八楼灯的数量*/
      break;                  /*跳出循环*/
    }
    n++;                    /*灯的数量加1,继续下次循环*/
  }
  return 0;
}

29.

#include "stdafx.h"
#include "stdio.h"
#include <math.h>
#include <stdlib.h>
main()
{
  int i, j, n = 0;                    /*定义变量为基本整型*/
  system("cls");
  printf("10-100之间的素数:\n");
  for (i = 10; i <= 100; i++)
  {
    for (j = 2; j <= sqrt(i); j++)
    {
      if (i % j == 0)               /*判断是否能被整除*/
        break;                /*如果能被整除,就不需要接着判断,跳出循环*/
      else
      {
        if (j > sqrt(i) - 1) 
        {
          printf("%d,", i);
          n++;                /*记录次数*/
          if (n % 5 == 0)           /*5个一换行*/
            printf("\n");
        }
        else
          continue;
      }
    }
  }
  printf("\n");
}

30.

#include "stdafx.h"
#include "stdio.h"
main()
{
  int i;                          /*定义基本整型变量i*/
  for (i = 100; i < 1000; i++)                /*for循环求一百到一千内的所有三位数*/
    /*根据题意写出对应的条件*/
    if (i % 2 == 1 && i % 3 == 2 && i % 5 == 4 && i % 6 == 5 && i % 7 == 0)
      printf("the number of the stairs is %d\n", i);    /*输出阶梯数*/
  return 0;
}

31.

#include "stdafx.h"
#include "stdio.h"
void main()
{
  int i;                        /*定义整型变量*/
  float total=0;                    /*定义实型变量,并初始化*/
  for(i=0;i<5;i++)                  /*循环*/
    total=(total+1000)/(1+0.025);           /*累计存款额*/
  printf("must save %5.2f at first. \n",total);       /*输出存款额*/
}

32.

#include "stdafx.h"
#include "stdio.h"
int main()
{
  char cString[100];                  /*定义保存字符串的数组*/
  int iIndex, iWord=1;                /*iWord表示单词的个数*/
  char cBlank;                    /*表示空格*/
  gets(cString);                    /*输入字符串*/
  if(cString[0]=='\0')                  /*判断如果字符串为空的情况*/
  {
    printf("There is no char!\n");
  }
  else if(cString[0]==' ')                /*判断第一个字符为空格的情况*/
  {
    printf("First char just is a blank!\n");
  }
  else
  {
    for(iIndex=0;cString[iIndex]!='\0';iIndex++)    /*循环判断每一个字符*/
    {
      cBlank=cString[iIndex];           /*得到数组中的字符元素*/
      if(cBlank==' ')               /*判断是不是空格*/
      {
        iWord++;                /*如果是则加1*/
      }
    }
    printf("%d\n",iWord);
  }
}

33.

#include "stdafx.h"
#include "stdio.h"
main()
{
  int i, v0 = 0, v1 = 0, v2 = 0, v3 = 0, n, a[50];
  printf("please input the number of electorate:\n");
  scanf("%d", &n);                      /*输入参加选举的人数*/
  printf("please input 1or2or3\n");
  for (i = 0; i < n; i++)
  {
    scanf("%d", &a[i]);                   /*输入每个人所选的人*/
  }
  for (i = 0; i < n; i++)
  {
    if (a[i] == 1)
    {
      v1++;                     /*统计1号候选人的票数*/
    }
    else if (a[i] == 2)
    {
      v2++;                     /*统计2号候选人的票数*/
    }
    else if (a[i] == 3)
    {
      v3++;                     /*统计三号候选人的票数*/
    }
    else
    {
      v0++;                     /*统计无效票数*/
    }
  }
  printf("The Result:\n");
  printf("candidate1:%d\ncandidate2:%d\ncandidate3:%d\nonuser:%d\n",v1,v2,v3,v0);   /*将统计的结果输出*/
  return 0;
}

34.

#include "stdafx.h"
#include "stdio.h"
#define MAX 50                        /*定义MAX为常量50*/
main()
{
  int i,num;                          /*定义变量i,num为基本整型*/
  int Chinese[MAX],Math[MAX],English[MAX];        /*定义数组为基本整型*/
  long StudentID[MAX];                    /*定义StudentID为长整形*/
  float average[MAX];
  printf("please input the number of students");
  scanf("%d",&num);                   /*输入学生数*/
  printf("Please input a StudentID and three scores:\n");
  printf("    StudentID  Chinese  Math    English\n");
  for( i=0; i<num; i++ )                    /*根据输入的学生数量控制循环次数*/
  {
    printf("No.%d>",i+1);
    scanf("%ld%d%d%d",&StudentID[i],&Chinese[i],&Math[i],&English[i]);
    /*依次输入学号及语文,数学,英语成绩*/
    average[i] = (float)(Chinese[i]+Math[i]+English[i])/3;    /*计算出平均成绩*/
  }
  puts("\nStudentNum    Chinese   Math   English  Average");
  for( i=0; i<num; i++ )                    /*for循环将每个学生的成绩信息输出*/
  {
    printf("%8ld %8d %8d %8d %8.2f\n",StudentID[i],Chinese[i],Math[i],English[i],average[i]);
  }
  return 0;
}

35.

#include "stdafx.h"
#include "stdio.h"
#include <string.h>
main()
{
  int i, j = 1, n;
  float a[100], b[100], sum = 0;
  printf("\nEnter the number of players:\n");
  scanf("%d", &n);                    /*从键盘中输入选手的人数*/
  for (i = 1; i <= n; i++)
  {
    printf("now player %d\n", i);
    printf("please input score:\n");
    for (; j < 5 *n + 1; j++)
    {
      scanf("%f", &a[j]);               /*输入5个裁判每个裁判所给的分数*/
      sum += a[j];                  /*求出总份数*/
      if (j % 5 == 0)                 /*一位选手有5个裁判给打分*/
      {
        break;
      }
    }
    b[i] = sum;                     /*将每个选手的总分存到数组b中*/
    sum = 0;                    /*将总分重新置0*/
    j++;                      /*j自加*/
  }
  j = 1;
  printf("player     judgeA  judgeB  judgeC  judgeD  judgeE  total\n");
  for (i = 1; i <= n; i++)
  {
    printf("player %d", i);                 /*输出几号选手*/
    for (; j < 5 *n + 1; j++)
    {
      printf("%8.1f", a[j]);              /*输出裁判给每个选手对应的分数*/
      if (j % 5 == 0)
      {
        break;
      }
    }
    printf("%8.1f\n", b[i]);                /*输出每个选手所得的总成绩*/
    j++;
  }
  return 0;
}

36.

#include "stdafx.h"
#include <string.h>
main()
{
  int i,j,x=1,y=3,a[6][6]={0};        /*因为数组下标要用1到5,所以数组长度是6*/
  for(i=1;i<=25;i++)
  {
    a[x][y] =i;             /*将1到25所有数存到存到数组相应位置*/
    if(x==1&&y==5)
    {
      x=x+1;              /*当上一个数是第1行第五列时,下一个数放在它的下一行*/
      continue;             /*结束本次循环*/
    }
    if(x==1)              /*当上一个数是是第1行时,则下一个数行数是5*/
      x=5;
    else
      x--;                /*否则行数减1*/
    if(y==5)              /*当上一个数列数是第5列时,则下一个数列数是1*/
      y=1;
    else
      y++;              /*否则列数加1*/
    if(a[x][y]!=0)            /*判断经过上面步骤确定的位置上是否有非零数*/
    {
      x=x+2;              /*表达式为真则行数加2列数减1*/
      y=y-1;
    }
  }
  for(i=1;i<=5;i++)           /*将二维数组输出*/
  {
    for(j=1;j<=5;j++)
      printf("%4d",a[i][j]);
      printf("\n");           /*每输出一行回车*/
  }
}  

37.

#include "stdafx.h"
#include "stdio.h"
int age(int n)                      /*自定义函数age*/
{
  int f;
  if(n==1)
  f=10;                     /*当n等于1时,f等于10*/
  else
  f=age(n-1)+2;                   /*递归调用age函数*/
  return f;                     /*将f值返回*/
}
main()
{
  int i,j;                      /*定义变量i,j为基本整型*/
  printf("Do you want to know whose age?please input:\n");
  scanf("%d",&i);                 /*输入i的值*/
  j=age(i);                     /*调用函数age求年龄*/
  printf("the age is %d",j);                /*将求出的年龄输出*/
    printf("\n");
}

38.

#include "stdafx.h"
#include "stdio.h"
int sub(int n)                      /*定义函数递归求鱼的总数*/
{
  if (n == 1)                   /*当n等于1时递归结束*/
  {
    static int i = 0;
    do
    {
      i++;
    }
    while (i % 5 != 0);
    return (i + 1);                 /*5人平分后多出一条*/
  }
  else
  {
    int t;
    do
    {
      t = sub(n - 1);
    }
    while (t % 4 != 0);
    return (t / 4 * 5+1);
  }
}
main() 
{ 
  int total; 
  total=sub(5);                     /*调用递归函数*/
  printf("the total number of fish is %d\n",total); 
  return 0;
}

39.

#include "stdafx.h"
#include "stdio.h"
int gys(int x,int y)              /*定义求最大公约数函数*/
{
  return y?gys(y,x%y):x;          /*递归调用gys,利用条件语句返回最大公约数*/
}
int gbs(int x,int y)              /*定义求最小公倍数函数*/
{
  return x/gys(x,y)*y;
}
void yuefen(int fz,int fm)          /*定义约分函数*/
{
  int s=gys(fz,fm);
  fz/=s;
  fm/=s;
  printf("the result is %d/%d\n",fz,fm);
}
void add(int a,int b,int c,int d)         /*定义加法函数*/
{
  int u1,u2,v=gbs(b,d),fz1,fm1;
  u1=v/b*a;
  u2=v/d*c;
  fz1=u1+u2;
  fm1=v;
  yuefen(fz1,fm1);
}
void mul(int a,int b,int c,int d)         /*定义乘法函数*/
{
  int u1,u2;
  u1=a*c;
  u2=b*d;
  yuefen(u1,u2);
}
void sub(int a,int b,int c,int d)         /*定义减法函数*/
{
  int u1,u2,v=gbs(b,d),fz1,fm1;
  u1=v/b*a;
  u2=v/d*c;
  fz1=u1-u2;
  fm1=v;
  yuefen(fz1,fm1);
}
void div(int a,int b,int c,int d)         /*定义除法函数*/
{
  int u1,u2;
  u1=a*d;
  u2=b*c;
  yuefen(u1,u2);
}
void main()
{
  char op;
  int a,b,c,d;
  scanf("%ld,%ld,%c,%ld,%ld",&a,&b,&op,&c,&d);
  switch(op)              /*根据输入的符号选择不同函数的调用*/
  {
   case '+':add(a,b,c,d);break;       /*调用加法函数*/
   case '*':mul(a,b,c,d);break;       /*调用乘法函数*/
   case '-':sub(a,b,c,d);break;         /*调用减法函数*/
   case '/':div(a,b,c,d);break;         /*调用除法函数*/
  }
}

40.

#include "stdafx.h"
#include<stdio.h>
#include<string.h>
void main()
{
    char a[100], b[100], c[200],  *p;
    int i = 0, j = 0, k = 0;
    printf("please input string a:\n");
    scanf("%s", a);                   /*输入字符串1放入a数组中*/
    printf("please input string b:\n");
    scanf("%s", b);                   /*输入字符串2放入b数组中*/
    while (a[i] != '\0' && b[j] != '\0')
    {
        if (a[i] < b[j])                  /*判断a中字符是否小于b中字符*/
        {
            c[k] = a[i];                /*如果小于,将a中字符放到数组c中*/
            i++;                  /*i自加*/
        }
        else
        {
            c[k] = b[j];                /*如不小于,将b中字符放到c中*/
            j++;                  /*j自加*/
        }
        k++;                    /*k自加*/
    }
    c[k] = '\0';                    /*将两个字符串合并到c中后加结束符*/
    if (a[i] == '\0')                 /*判断a中字符是否全都复制到c中*/
        p = b + j;                  /*p指向数组b中未复制到c的位置*/
    else
        p = a + i;                  /*p指向数组a中未复制到c的位置*/
    strcat(c, p);                     /*将p指向位置开始的字符串连接到c中*/
    puts(c);                    /*将c输出*/
}

41.

#include "stdafx.h"
#include<stdio.h>
#include<string.h>
#include <windows.h>
char* insert (char s[],  char  t[],  int i)         /*自定义函数insert*/
{
  char string[100];               /*定义数组string作为中间变量*/
  if  ( i < 0||i > (int)strlen (s) )              /*当i超出输入字符串的长度将输出error*/
  {
    printf ( "error!!\n");
    exit (1);
  }
  if  (!strlen (s))         
    strcpy (s,  t);         /*若s数组长度为0,则直接将t数组内容复制到s中*/
    else   if (strlen (t))        /*若长度不为空,执行以下语句*/
       {
         strncpy (string,s,i);      /*将s数组中的前i个字符复制到string中*/
         string[i]='\0';        
         strcat (string,t) ;        /*将t中字符串连接到string*/
         strcat (string,(s+i));     /*将s中剩余字符串连接到string*/
         strcpy (s,string);       /*将string中字符串复制到s中*/
         return s;          /*返回值为s*/
       }
}
void main ()
{
  char str1[100],str2[100];       /*定义str1,str2两个字符型数组*/
  int position;           /*定义变量position为基本整型*/
  printf("please input str1:\n");
  gets(str1);           /*gets函数获得第一个字符串*/
  printf("please input str2:\n");
  gets(str2);           /*gets函数获得第二个字符串*/
  printf("please input position:\n");
  scanf("%d",&position);        /*输入字符串二插入字符串一的位置*/
  insert(str1,str2,position);       /*调用insert函数*/
  puts(str1);           /*输出最终得到的字符串*/
}  

42.

#include "stdafx.h"
#include "stdio.h"
float average(float array[],int n)              /*自定义求平均身高函数*/
{
  int i;
  float aver,sum=0;
  for(i=0;i<n;i++)
  sum+=array[i];                  /*用for语句实现sum累加求和*/
  aver=sum/n;                   /*总和除以人数求出平均值*/
  return(aver);                   /*返回平均值*/
}
int main()
{
  float average(float array[],int n);           /*函数声明*/
  float height[100],aver;
  int i,n;
  printf("请输入学生的数量:\n");
  scanf("%d",&n);                 /*输入学生数量*/
  printf("请输入学生们的身高:\n");
  for(i=0;i<n;i++)
  scanf("%f",&height[i]);               /*逐个输入学生的身高*/
  printf("\n");
  aver=average(height,n);               /*调用average函数求出平均身高*/
  printf("学生的平均身高为:%6.2f\n",aver);      /*将平均身高输出*/
  return 0;
}

43.

#include "stdafx.h"
#include "stdio.h"
#define swap(a,b) {int c;c=a;a=b;b=c;}/*定义一个带参的宏swap*/
main()
{
int i,j,a[10],b[10];/*定义数组及变量为基本整型*/
printf("please input array a:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);/*输入一组数据存到数组a中*/
printf("please input array b:\n");
for(j=0;j<10;j++)
scanf("%d",&b[j]);/*输入一组数据存到数组b中*/
printf("\nthe array a is:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);/*输出数组a中的内容*/
printf("\nthe array b is:\n");
for(j=0;j<10;j++)
printf("%d,",b[j]);/*输出数组b中的内容*/
for(i=0;i<10;i++)
swap(a[i],b[i]);/*实现数组a与数组b对应值互换*/
printf("\nNow the array a is:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);/*输出互换后数组a中的内容*/
printf("\nNow the array b is:\n");
for(j=0;j<10;j++)
printf("%d,",b[j]);/*输出互换后数组b中的内容*/
}
相关文章
|
1天前
|
安全 C语言
在C语言中,正确使用运算符能提升代码的可读性和效率
在C语言中,运算符的使用需要注意优先级、结合性、自增自减的形式、逻辑运算的短路特性、位运算的类型、条件运算的可读性、类型转换以及使用括号来明确运算顺序。掌握这些注意事项可以帮助编写出更安全和高效的代码。
14 4
|
19天前
|
存储 算法 C语言
数据结构基础详解(C语言):单链表_定义_初始化_插入_删除_查找_建立操作_纯c语言代码注释讲解
本文详细介绍了单链表的理论知识,涵盖单链表的定义、优点与缺点,并通过示例代码讲解了单链表的初始化、插入、删除、查找等核心操作。文中还具体分析了按位序插入、指定节点前后插入、按位序删除及按值查找等算法实现,并提供了尾插法和头插法建立单链表的方法,帮助读者深入理解单链表的基本原理与应用技巧。
|
19天前
|
存储 C语言 C++
数据结构基础详解(C语言) 顺序表:顺序表静态分配和动态分配增删改查基本操作的基本介绍及c语言代码实现
本文介绍了顺序表的定义及其在C/C++中的实现方法。顺序表通过连续存储空间实现线性表,使逻辑上相邻的元素在物理位置上也相邻。文章详细描述了静态分配与动态分配两种方式下的顺序表定义、初始化、插入、删除、查找等基本操作,并提供了具体代码示例。静态分配方式下顺序表的长度固定,而动态分配则可根据需求调整大小。此外,还总结了顺序表的优点,如随机访问效率高、存储密度大,以及缺点,如扩展不便和插入删除操作成本高等特点。
|
19天前
|
存储 C语言
数据结构基础详解(C语言): 栈与队列的详解附完整代码
栈是一种仅允许在一端进行插入和删除操作的线性表,常用于解决括号匹配、函数调用等问题。栈分为顺序栈和链栈,顺序栈使用数组存储,链栈基于单链表实现。栈的主要操作包括初始化、销毁、入栈、出栈等。栈的应用广泛,如表达式求值、递归等场景。栈的顺序存储结构由数组和栈顶指针构成,链栈则基于单链表的头插法实现。
119 3
|
18天前
|
存储 算法 C语言
C语言手撕实战代码_二叉排序树(二叉搜索树)_构建_删除_插入操作详解
这份二叉排序树习题集涵盖了二叉搜索树(BST)的基本操作,包括构建、查找、删除等核心功能。通过多个具体示例,如构建BST、查找节点所在层数、删除特定节点及查找小于某个关键字的所有节点等,帮助读者深入理解二叉排序树的工作原理与应用技巧。此外,还介绍了如何将一棵二叉树分解为两棵满足特定条件的BST,以及删除所有关键字小于指定值的节点等高级操作。每个题目均配有详细解释与代码实现,便于学习与实践。
|
19天前
|
存储 算法 C语言
C语言手撕实战代码_二叉树_构造二叉树_层序遍历二叉树_二叉树深度的超详细代码实现
这段代码和文本介绍了一系列二叉树相关的问题及其解决方案。其中包括根据前序和中序序列构建二叉树、通过层次遍历序列和中序序列创建二叉树、计算二叉树节点数量、叶子节点数量、度为1的节点数量、二叉树高度、特定节点子树深度、判断两棵树是否相似、将叶子节点链接成双向链表、计算算术表达式的值、判断是否为完全二叉树以及求二叉树的最大宽度等。每道题目均提供了详细的算法思路及相应的C/C++代码实现,帮助读者理解和掌握二叉树的基本操作与应用。
|
19天前
|
存储 算法 C语言
C语言手撕实战代码_循环单链表和循环双链表
本文档详细介绍了用C语言实现循环单链表和循环双链表的相关算法。包括循环单链表的建立、逆转、左移、拆分及合并等操作;以及双链表的建立、遍历、排序和循环双链表的重组。通过具体示例和代码片段,展示了每种算法的实现思路与步骤,帮助读者深入理解并掌握这些数据结构的基本操作方法。
|
19天前
|
算法 C语言 开发者
C语言手撕实战代码_单链表
本文档详细介绍了使用C语言实现单链表的各种基本操作和经典算法。内容涵盖单链表的构建、插入、查找、合并及特殊操作,如头插法和尾插法构建单链表、插入元素、查找倒数第m个节点、合并两个有序链表等。每部分均配有详细的代码示例和注释,帮助读者更好地理解和掌握单链表的编程技巧。此外,还提供了判断子链、查找公共后缀等进阶题目,适合初学者和有一定基础的开发者学习参考。
|
19天前
|
存储 算法 C语言
C语言手撕数据结构代码_顺序表_静态存储_动态存储
本文介绍了基于静态和动态存储的顺序表操作实现,涵盖创建、删除、插入、合并、求交集与差集、逆置及循环移动等常见操作。通过详细的C语言代码示例,展示了如何高效地处理顺序表数据结构的各种问题。
|
24天前
|
Linux C语言
C语言 多进程编程(七)信号量
本文档详细介绍了进程间通信中的信号量机制。首先解释了资源竞争、临界资源和临界区的概念,并重点阐述了信号量如何解决这些问题。信号量作为一种协调共享资源访问的机制,包括互斥和同步两方面。文档还详细描述了无名信号量的初始化、等待、释放及销毁等操作,并提供了相应的 C 语言示例代码。此外,还介绍了如何创建信号量集合、初始化信号量以及信号量的操作方法。最后,通过实际示例展示了信号量在进程互斥和同步中的应用,包括如何使用信号量避免资源竞争,并实现了父子进程间的同步输出。附带的 `sem.h` 和 `sem.c` 文件提供了信号量操作的具体实现。