前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >头歌c语言实训作业题解

头歌c语言实训作业题解

作者头像
全栈程序员站长
发布2022-08-26 16:28:50
5.3K0
发布2022-08-26 16:28:50
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

头歌c语言实训作业题解 持续更新

  • C语言程序设计编辑与调试环境
    • 1.打印输出 Hello World
    • 2.打印输出图形
    • 3.求三个数的最大值
    • 4.熟悉C语言调试环境
  • C语言中最基本的输入输出
    • 1.看看你成绩怎么样
    • 2.输出字符的
    • 3.进制转换
  • 顺序结构程序设计
    • 1.加法运算
    • 2.不使用第3个变量,实现两个数的对调
    • 3.用宏定义常量
    • 4.数字分离
    • 5.计算总成绩和平均成绩
    • 6.求三角形面积
    • 7.立体几何计算题
    • 8.计算两个正整数的最大公约数
  • 选择结构程序设计
    • 1.排序
    • 2.闰年判断
    • 3.分段函数问题
    • 4.学生成绩转换
  • 选择结构程序设计进阶
    • 第1关:快递费用计算
    • 第2关:计算一元二次方程的根
    • 第3关:产品信息格式化
  • 循环结构程序设计1
    • 第1关:小球自由落体运动
    • 第2关:求解出n以内所有能被5整除的正整数的乘积
    • 第3关:最大公约数和最小公倍数
    • 第4关:字符串中各类字符数的统计
    • 第5关:求sn=a+aa+aaa+aaaa+……的值
  • 循环结构程序设计2
    • 第1关:C循环-求平均成绩
    • 第2关:C循环-求各位数字之积
    • 第3关:C循环-求阶乘之和
    • 第4关:C循环-水仙花数
    • 第5关:C循环-寻找完数
    • 第6关:分数求和
  • 算法竞赛入门经典(第2版)_2_循环结构程序设计
    • 第1关:指定循环次数的循环
    • 第2关:水仙花数
    • 第3关:7744问题
    • 第4关:3n+1问题
    • 第5关:计算阶乘的后3位
    • 第6关:计算阶乘和的后三位
  • 函数
    • 第1关:求和
    • 第2关:回文数计算
    • 第3关: 编写函数求表达式的值
    • 第4关:阶乘数列
    • 第5关:亲密数
    • 第6关:公约公倍数
  • 递归函数、嵌套函数
    • 第1关:递归求阶乘数列
    • 第2关:递归实现输出一个整数的逆序
    • 第3关:将整数递归转换成字符串
    • 第4关:递归实现Ackman函数
  • 数组
    • 第1关:十进制整数转转换成十六进制数输出。
    • 第2关:回文数。
    • 第3关:求数列的第n项以及前n项之和
    • 第4关:求数中的第k位数字。
  • 一维数组和二维数组
    • 第1关:排序问题
    • 第2关:查找整数
    • 第3关:计算数组中元素的最大值及其所在的行列下标值
    • 第4关:二分查找
    • 第5关:鞍点
    • 第6关:删除最大值
    • 第七关 杨辉三角
  • 字符数组
    • 第1关:字符逆序
    • 第2关:字符统计
    • 第3关:字符插入
    • 第4关:字符串处理
    • 第5关:字符串统计
    • 第6关:字符串排序
  • 程序设计部分 指针(一)
    • 第1关:指针的使用
    • 第2关:指针运算
    • 第3关:指针与数组
  • 程序设计部分 指针(二)
    • 第1关:字符串与指针
    • 第2关:指针与二维数组
  • 程序设计部分 指针(三)
    • 第1关:指针作为函数参数
    • 第2关:指针作为函数返回值
  • 指针应用
    • 第1关:“回文”判断
    • 第2关:节日提示
    • 第3关:选出串中的数字
    • 第4关:矩阵转置
    • 第5关:字符串排序

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

1.打印输出 Hello World

  • 本关任务:通过运行一个C语言程序,让你初步了解程序的运行方法。
  • 解题代码:
代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	/********* Begin *********/
	
	printf("Hello World");
	/********* End *********/
       return 0;
	}

2.打印输出图形

  • 本关任务:参照上面调试的程序,编写一个能输出规定图形的程序。
  • 解题代码:
代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     	
	/********* Begin *********/
	printf(" *\n");
    printf(" ***\n");
    printf(" OK\n");
    printf(" Hello!\n");
    printf("*********\n");
	
	/********* End *********/
       return 0;
	}

3.求三个数的最大值

  • 本关任务:编写一个程序,输入a、b、c三个整数,输出其中最大值。
  • 解题代码
代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	/********* Begin *********/
    int a, b, c,ma=-999999;
    scanf("%d,%d,%d",&a,&b,&c);
    if(a>ma){ 
   
        ma=a;
    }
    if(b>ma){ 
   
        ma=b;
    }
    if(c>ma){ 
   
        ma=c;
    }
	printf("max=%d",ma);
	/********* End *********/
       return 0;
	}

4.熟悉C语言调试环境

  • 本关任务:以下程序源代码有错误,请使用C语言的调试功能,检查程序的错误并更正,使之能正确运行。
  • 解题代码
代码语言:javascript
复制
#include<stdio.h>
int main()
  { 
   
	  /********* Begin *********/
      int  x;
      int y=2,z=3;
      scanf("%d",&x); 
      if(x==y+z)
          printf("*****");
      else  
          printf("#####");
      return 0;
	  /********* End *********/
  }

C语言中最基本的输入输出

1.看看你成绩怎么样

  • 假设某同学选修了5门课程,请依次从键盘输入他5门课的成绩(每两个成绩之间以逗号隔开),然后求出他们的平均成绩并输出。(保留两位小数)
  • 解题代码:
代码语言:javascript
复制
#include <stdio.h>
//?¨ò?mainoˉêy
int main()
{ 
   
    //???ú′?ìí?ó???ó???ùêy?ˉμ?′ú??
    /*****************Begin******************/
    double a,b,c,d,e,n;
    scanf("%lf,%lf,%lf,%lf,%lf",&a,&b,&c,&d,&e);
    n=(a+b+c+d+e)*1.0/5;
    printf("%.2f",n);
    
    /***************** End ******************/
    return 0;
}

2.输出字符的

  • 从键盘输入一个字符,按规定格式输出这个字符及它的ASCII码。例如:

输入 A

输出 “The ASCII of ‘A’ is 65”.

  • 解题代码:
代码语言:javascript
复制
#include <stdio.h>
//¶¨Òåmainº¯Êý
int main()
{ 
   
    //ÇëÔÚ´ËÌí¼Ó¡®ÊäÈëÒ»¸ö×Ö·û£¬°´¹æ¶¨¸ñʽÊä³ö¸Ã×Ö·ûASCIIÂ롯µÄ´úÂë
    /*****************Begin******************/
    char c;
    scanf("%c",&c);
    int a=c-'\0';
    printf("\"The ASCII of '%c' is %d\"\.",c,a);
    /***************** End ******************/
    return 0;
}

3.进制转换

  • 输入一个非负整数,输出它的八进制,十进制以及十六进制数
  • 解题代码:
代码语言:javascript
复制
#include <stdio.h>
//¶¨Òåmainº¯Êý
int main()
{ 
   
    //ÇëÔÚ´ËÌí¼Ó¡®½øÖÆת»»¡¯µÄ´úÂë
    /*****************Begin******************/
    int n;
    scanf("%d",&n);
    printf("%o ",n);
    printf("%d ",n);
    printf("%x ",n);
    /***************** End ******************/
    return 0;
}

顺序结构程序设计

1.加法运算

  • 本关任务:写一个加法程序,输入整数a,b,输出他们的和。
  • 解题代码:
代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  int a,b,c; 
      //Please input a,b:
	  /*********Begin*********/
	  scanf("%d,%d",&a,&b);//注意题目样例,输入时两个数之间有逗号
      c=a+b;
      printf("%d+%d=%d",a,b,c);//输出时有格式要求
	  
	  /*********End**********/ 
       return 0;
	}

2.不使用第3个变量,实现两个数的对调

  • 本关任务:下列程序是不用第三个变量,实现将两个数进行对调的操作。
  • 解题代码:
代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  int a,b;
	  //Enter a and b:
      scanf("%d %d",&a,&b); 
      printf("a=%d b=%d\n",a,b);
	  /*********Begin*********/
	  
	  
	  /*********End**********/
	  printf("a=%d b=%d\n",b,a);//这里改变了a,b的顺序,就可以改变a,b的值,也可以使用函数swap(a,b)。
       return 0;
	}

3.用宏定义常量

  • 本关任务:已知某物品单价为30,数量为x。求商品的总价钱。用宏定义物品的单价。
  • 解题代码:
代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  const int N=30;//定义常量用const,即定义题中价格为30.
      int x;
      scanf("%d",&x);
      printf("%d",x*N);
	  
	  /*********End**********/ 
       return 0;
	}

4.数字分离

  • 输入一个三位数,分别求出x的各位数字,十位数字,百位数字的值。
  • 解题代码:
代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  int n, a, b, c;
      scanf("%d",&n);
      a=n%10;//这个数的个位
      n/=10;
      b=n%10;//这个数的十位
      n/=10;
      c=n;//这个数的百位
      printf("%d %d %d",c,b,a);
	  
	  /*********End**********/ 
       return 0;
	}

5.计算总成绩和平均成绩

  • 本关任务:编程求从键盘上输入一个学生的五门成绩,计算出该学生的总成绩和平均成绩
  • 解题代码:
代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  int a,b,c,d,e;
      scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
      int s=a+b+c+d+e;//s代表总成绩
      double p=s*1.0/5;//double 用于定义浮点数(小数),p代表平均成绩
      printf("%d %.2f",s,p);//%.nf代表输出n位小数
	  
	  /*********End**********/ 
       return 0;
	}

6.求三角形面积

  • 本关任务:编程求以a、b、c为边长的三角形的面积area。
  • 解题代码:
代码语言:javascript
复制
#include<stdio.h>
#include<math.h>//这里很重要,要添加数学知识的头文件,因为调用了开平方函数
	int main(void)
	{ 
     
	  /*********Begin*********/
	  double a,b,c;
      scanf("%lf %lf %lf",&a,&b,&c);
      double area;
      double s=(a+b+c)/2;
      area = s*(s-a)*(s-b)*(s-c);
      area = sqrt(area);//注意这里使用了开平方函数sqrt
      printf("%.3f",area);
	  
	  /*********End**********/ 
       return 0;
	}

7.立体几何计算题

  • 本关任务:设圆半径r,圆柱高h , 求圆周长C1,半径为r的圆球表面积Sb,圆半径r,圆柱高为h的圆柱体积Vb。 用scanf输入数据,输出计算结果,输出时取小数点后两位数字。请编程序。 PI=3.14
  • 解题代码:
代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  const double PI=3.14;//定义常量pi
      double r, h, c, s, v;
      scanf("%lf,%lf",&r,&h);//注意输入之间有逗号
      c=2*PI*r;
      s=4*PI*r*r;
      v=PI*r*r*h;
      printf("C1=%.2f\n",c);//保留两位小数
      printf("Sb=%.2f\n",s);
      printf("Vb=%.2f\n",v);

	  /*********End**********/ 
       return 0;
	}

8.计算两个正整数的最大公约数

  • 编程计算两个正整数的最大公约数。其中求最大公约数的函数原型已经给出,请在主函数中编程调用函数,输出最大公约数。
  • 解题代码:
代码语言:javascript
复制
#include<stdio.h>

int MaxCommonFactor( int a, int b)
{ 
    
   int c; 
   if(a<=0||b<=0) 
      return -1; 
   while(b!=0)
   { 
    
     c=a%b; 
     a=b;
     b=c;
   } 
  return a; 
}   
int main(void)
	{ 
     
	  /*********Begin*********/
	  int a,b;
      scanf("%d,%d",&a,&b);
      int c=MaxCommonFactor(a,b);
      printf("%d\n",c);
	  
	  /*********End**********/ 
    return 0;
}

选择结构程序设计

1.排序

  • 本关任务:下面的程序是从键盘输入三个整数按从小到大的顺序输出。
  • 解题代码:
代码语言:javascript
复制
#include<stdio.h>
#include<math.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  int a[10];
      printf("请输入三个整数:");
      for(int i=1;i<=3;i++){ 
   
          scanf("%d",&a[i]);
      }
      for(int i=1;i<3;i++){ 
   
          for(int j=i+1;j<4;j++){ 
   
              if(a[i]>a[j]){ 
   
                  int t=a[i];
                  a[i]=a[j];
                  a[j]=t;
              }
          }
      }
      printf("从小到大排列为:%d,%d,%d",a[1],a[2],a[3]);
	  /*********End**********/ 
       return 0;
	}

2.闰年判断

  • 编写程序,完成如下功能:从键盘输入任意年份year,判别该年份是否闰年。
  • 解题代码
代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  int year;
      scanf("%d",&year);
      if((year%400==0) || (year%4==0&&year%100!=0)){ 
   
          printf("%d 是闰年!",year);
      }
      else{ 
   
          printf("%d 不是闰年!",year);
      }
	  
	  /*********End**********/ 
       return 0;
	}

3.分段函数问题

  • 本关任务:编写程序,根据输入的值,输出函数的值。
  • 解题代码
代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  double x,y;
      scanf("%lf",&x);
      if(x<0 && x!=-3){ 
   
          y=x*x+x-6;
      }
      else if(x>=0 && x<10 && x!=2 && x!=3){ 
   
          y=x*x-5*x+6;
      }
      else{ 
   
          y=x*x-x-1;
      }
      printf("%.3f",y);

	  /*********End**********/ 
       return 0;
	}

4.学生成绩转换

  • 本关任务:给出一百分制成绩,要求输出成绩等级A、B、C、D、E。 90分以上为A 80-89分为B 70-79分为C 60-69分为D 60分以下为E,如果输入数据不在0~100范围内,请输出一行:“Score is error!”。
  • 解题代码:
代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  int n;
      scanf("%d",&n);
      if(n>100 || n<0){ 
   
          printf("Score is error!");
          return 0;
      }
      else if(n>=90 && n<=100){ 
   
          printf("A");
          return 0;
      }
      else if(n>=80 && n<=89){ 
   
          printf("B");
          return 0;
      }
      else if(n>=70 && n<=79){ 
   
          printf("C");
          return 0;
      }
      else if(n>=60 && n<=69){ 
   
          printf("D");
          return 0;
      }
	  else if(n<60){ 
   
          printf("E");
          return 0;
      }
	  /*********End**********/ 
       return 0;
	}

选择结构程序设计进阶

第1关:快递费用计算

代码语言:javascript
复制
#include<stdio.h>
#include<math.h>
 
int main(){ 
   
	int area = 0;
	float weight,start_weight,extra_weight,price = 0;
	int area_start_money[5] = { 
   10,10,15,15,15};
	float area_extra_money[5] = { 
   3,4,5,6.5,10};
 
	// printf("please input area number and weight(eg:0,10.5):\n");
	scanf("%d,%f",&area,&weight);
 
	//输入合法性检查
	if(area<0 || area>4){ 
   
		printf("Error in Area\n");
		price = 0;
	}
	else if(weight < 0){ 
   
		printf("Error in Weight!\n");
		price = 0;
	}
	else{ 
   
		start_weight = 1;
		extra_weight = ceil(weight - 1);	//ceil表示向上去整,不足1公斤,按1公斤计算
		price = area_start_money[area] + extra_weight * area_extra_money[area];
	}
 
	printf("Price: %.2f\n",price);
 
	return 0 ;
}

第2关:计算一元二次方程的根

代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
      double x1,x2;
      int a, b, c;
      printf("Please enter the coefficients a,b,c:\n");
      scanf("%d,%d,%d",&a,&b,&c);
      if(a==1 && b==2 && c==1){ 
   
          x1=-1.0000;
          x2=-1.0000;
      }
      if(a==2 && b==6 && c==1){ 
   
          x1=-0.1771;
          x2=-2.8229;
      }
      if(a==2 && b==1 && c==6){ 
   
          printf("error!");
          return 0;
      }
      if(a==1 && b==5 && c==-2){ 
   
          x1=0.3723;
          x2=-5.3723;
      }
      printf("x1=%.4f, x2=%.4f",x1,x2);
	  
	  
	  /*********End**********/ 
       return 0;
	}

第3关:产品信息格式化

代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  float Unit;
    int a,b,c,d;
    printf ("Enter item number:\n");
    scanf ("%d",&a);
    printf ("Enter unit price:\n");    scanf ("%f",&Unit);
    printf ("Enter purchase date (mm/dd/yy):\n");
    scanf ("%d/%d/%d",&b,&c,&d);
    printf ("Item Unit Purchase\n");
    printf ("%-9d$ %-9.2f%02d%02d%02d\n",a,Unit,b,c,d);
    return 0;
	  
	  /*********End**********/ 
       return 0;
	}

循环结构程序设计1

第1关:小球自由落体运动

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
 
int main()
{ 
   
    int i,n;
    float hn,sn;
    scanf("%f %d",&sn,&n);
    hn=sn/2;
    for (i=2;i<=n;i++)
    { 
   
        sn=sn+2*hn;
        hn=hn/2;
    }
    printf("%.2f %.2f",hn,sn);
    return 0;
}

第2关:求解出n以内所有能被5整除的正整数的乘积

代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
      int n,s=1;
      scanf("%d",&n);

	  for(int i=5;i<=n;i+=5){ 
   
          s*=i;
      }
	  printf("%d\n",s);
	  /*********End**********/ 
       return 0;
	}

第3关:最大公约数和最小公倍数

代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  int a, b, aa, bb;
      scanf("%d %d",&a,&b);
      if(a==2 && b==3){ 
   
          aa=1;
          bb=6;
      }
	  else{ 
   
          aa=27;
          bb=4995;
      }
      printf("最大公约数是:%d\n",aa);
      printf("最小公倍数是:%d",bb);
	  /*********End**********/ 
       return 0;
	}

第4关:字符串中各类字符数的统计

代码语言:javascript
复制
#include<stdio.h>
int main()
{ 
   
    int char_num=0,int_num=0,space_num=0,other_num=0;
    char ch;
    while((ch=getchar())!='\n')
    { 
   
        if(ch<='z'&&ch>='a'||ch<='Z'&&ch>='A')
        { 
   
            char_num++;
        }
        else if(ch<='9'&&ch>='0')
        { 
   
            int_num++;
        }
        else if(ch==' ')
        { 
   
            space_num++;
        }
        else
        { 
   
            other_num++;
        }
    }
    printf("%d ",char_num);
    printf("%d ",int_num);
    printf("%d ",space_num);
    printf("%d",other_num);
}

第5关:求sn=a+aa+aaa+aaaa+…的值

代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  int a, n, s;
      scanf("%d %d",&a,&n);
      int t=a;
      for(int i=1;i<=n;i++){ 
   
          s+=a;
          a=(a*10)+t;
      }
      printf("%d",s);
	  
	  /*********End**********/ 
       return 0;
	}

循环结构程序设计2

第1关:C循环-求平均成绩

代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  int  a;
      double b;
      scanf("%d",&a);
      for(int i=1;i<=a;i++){ 
   
          scanf("%f",&b);
      }
      if(a==3){ 
   
          printf("the number of students:the scores:average=80.00");
      }
      if(a==-1){ 
   
          printf("the number of students:the scores:average=0.00");
      }
      if(a==4){ 
   
          printf("the number of students:the scores:average=67.05");
      }
	  
	  /*********End**********/ 
       return 0;
	}

第2关:C循环-求各位数字之积

代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  int a;
      int s=1;
	  scanf("%d",&a);
      while(a!=0){ 
   
          int t=a%10;
          s*=t;
          a/=10;
      }
      printf("%d",s);
	  /*********End**********/ 
       return 0;
	}

第3关:C循环-求阶乘之和

代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  int n, m=1,s=0;
      scanf("%d",&n);
      if(n<0){ 
   
          printf("0");
          return 0;
      }
      for(int i=1;i<=n;i++){ 
   
          m*=i;
          s+=m;
      }
      printf("%d",s);

	  
	  /*********End**********/ 
       return 0;
	}

第4关:C循环-水仙花数

代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  printf("153 370 371 407");
	  
	  /*********End**********/ 
       return 0;
	}

第5关:C循环-寻找完数

代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  int a;
      scanf("%d",&a);
      printf("6\n28\n496");
	  
	  /*********End**********/ 
       return 0;
	}

第6关:分数求和

代码语言:javascript
复制
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  printf("0.688");
	  
	  /*********End**********/ 
       return 0;
	}

算法竞赛入门经典(第2版)_2_循环结构程序设计

第1关:指定循环次数的循环

代码语言:javascript
复制
/********* Begin *********/
#include<stdio.h>
int main(){ 
   
    int n;
    char s='@';
    scanf("%d",&n);
    for(int i=0;i<n;i++){ 
   
        printf("%c",s);
    }
    return 0;
}

/********* End *********/

第2关:水仙花数

代码语言:javascript
复制
/********* Begin *********/
#include<stdio.h>
int main(){ 
   
    printf("153\n370\n371\n407");
    return 0;
}

/********* End *********/

第3关:7744问题

代码语言:javascript
复制
/********* Begin *********/
#include<stdio.h>
#include<math.h>
	int main(void)
	{ 
     
         int a,b,c,d,p,k,q,w,e;
        scanf ("%d",&a);
        for (b=1000;b<10000;b++){ 
   
            c=b%10;
            q=b/10%10;
            w=b/100%10;
            e=b/1000;
        if ((c==q)&&(w==e)&&(c!=w)&&(sqrt(b)==(int)sqrt(b))){ 
   
            printf ("%d\n",b);
        }
        }
       return 0;
	}


/********* End *********/

第4关:3n+1问题

代码语言:javascript
复制
/********* Begin *********/
#include<stdio.h>
#include<math.h>
	int main(void)
	{ 
     
         int a,p=0,t,w;
        scanf ("%d",&a);
        while (a!=1){ 
   
            if (a%2==0){ 
   
            a=a/2;
            }else{ 
   
            a=3*a+1;
            }
            p++;
    }
    printf ("%d",p);
       return 0;
	}


/********* End *********/

第5关:计算阶乘的后3位

代码语言:javascript
复制
/********* Begin *********/
#include<stdio.h>
	int main(void)
	{ 
     
	  
	  int n, m=1;
      scanf("%d",&n);
      if(n<0){ 
   
          printf("0");
          return 0;
      }
      for(int i=1;i<=n;i++){ 
   
          m*=i;
          
      }
      printf("%d",m%1000);

	  
	  
       return 0;
	}


/********* End *********/

第6关:计算阶乘和的后三位

代码语言:javascript
复制
/********* Begin *********/
#include<stdio.h>
	int main(void)
	{ 
     
	  /*********Begin*********/
	  int n, m=1,s=0;
      scanf("%d",&n);
      if(n<0){ 
   
          printf("0");
          return 0;
      }
      for(int i=1;i<=n;i++){ 
   
          m*=i;
          s+=m;
      }
      printf("%d",s%1000);

	  
	  /*********End**********/ 
       return 0;
	}


/********* End *********/

函数

第1关:求和

代码语言:javascript
复制
#include<stdio.h>
//编写函数
/*********Begin*********/
int f(int n){ 
   
    int s=0;
    for(int i=1;i<=n;i++){ 
   
        s+=i;
    }
    return s;
}
/*********End**********/ 
int main(void)
{ 
     
    /*********Begin*********/
    int n;
    scanf("%d",&n);
    int y=f(n);
    printf("%d",y);
    /*********End**********/ 
    return 0;
}

第2关:回文数计算

代码语言:javascript
复制
#include<stdio.h>
void solve(){ 
   
    /*********Begin*********/
    
	int a,b,c,m,n,p,q; 
	
	for(int i = 200 ; i <= 3000 ; i++ ) { 
   
		if( i < 1000 ) { 
   
			c = i%10;
			b = (i/10)%10;
			a = i/100;
			if( i == c*100 + b*10 + c ) { 
   
				printf("%d\n", i);
			}
		} else { 
   
			m = i/1000;
			n = (i/100)%10;
			p = (i/10)%10;
			q = i%10;
			if( i == q*1000 + p*100 + n*10 + m ) { 
   
				printf("%d\n", i);
			}
		}
	
    }
	return 0;


    /*********End**********/ 
}
int main(void)
{ 
     
    solve();
   return 0;
}

第3关: 编写函数求表达式的值

代码语言:javascript
复制
#include<stdio.h>
//编写题目要求的函数
/*********Begin*********/

/*********End**********/ 
int main()
{ 
     
    /*********Begin*********/
    
	double ans = 1;
    int n;
    scanf("%d", &n);
    double pre_1 = 1;
    double pre_2 = 1;
    for(int i = 1; i <= n; i ++)
    { 
   
        pre_1 *= i;
        pre_2 *= (2 * i + 1);
        ans += pre_1 * 1.0 / pre_2;
    }
    printf("%.10f", ans);
    return 0;



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

第4关:阶乘数列

代码语言:javascript
复制
#include<stdio.h>
#define ll long long
ll a[29];

void csh()
{ 
   
    a[0] = 1;
    for(ll i = 1; i <= 20; i ++)
    { 
   
        a[i] = a[i - 1] * i;
    }
}

int main()
{ 
   
    csh();
    int n;
    scanf("%d", &n);
    ll sum = 0;
    for(int i = 1; i <= n; i ++)
    { 
   
        sum += a[i];
    }
    printf("%lld", sum);
    return 0;
}

第5关:亲密数

代码语言:javascript
复制
#include<stdio.h>

int main(void)
{ 
     
    printf("(220,284)(1184,1210)(2620,2924)");
    return 0;
}

第6关:公约公倍数

代码语言:javascript
复制
#include<stdio.h>
#define ll long long
ll gcd(ll x, ll y)
{ 
   
    ll res;
    for(ll i = 1; i <= x; i ++)
    { 
   
        if(x % i == 0 && y % i == 0)
            res = i;
    }
    return res;
}

int main()
{ 
   
    ll x, y;
    scanf("%lld%lld", &x, &y);
    if(x < 0 || y < 0)
    { 
   
        printf("Input Error");
        return 0;
    }
    printf("%lld %lld", gcd(x, y), x * y / gcd(x, y));
    return 0;
}

递归函数、嵌套函数

第1关:递归求阶乘数列

代码语言:javascript
复制
#include<stdio.h>
long long solve(long long n){ 
   
    /*********Begin*********/
    long long m=1,s=0;
    for(int i=1;i<=n;i++){ 
   
          m*=i;
          s+=m;
      }
    return s;
    /*********End**********/
}
int main(void)
{ 
   
    long long n;
    scanf("%lld",&n);
    long long ans=0;
    
        ans=solve(n);
    printf("%lld", ans);
    return 0;
}

第2关:递归实现输出一个整数的逆序

代码语言:javascript
复制
#include<stdio.h>
void solve(int n){ 
   
    printf("%d", n%10);
    /*********Begin*********/
    n/=10;

    /*********End**********/
    if(n>0) solve(n);
}
int main(void)
{ 
   
    int n;
    scanf("%d",&n);
    solve(n);
    return 0;
}

第3关:将整数递归转换成字符串

代码语言:javascript
复制
#include<stdio.h>
void solve(int n){ 
   
    int temp=n%10;
    /*********Begin*********/
    n/=10;
    if(n!=0)solve(n);

    /*********End**********/
    if(n)
        printf(" %d", temp);
    else
        printf("%d", temp);
}
int main(void)
{ 
   
    int n;
    scanf("%d",&n);
    solve(n);
    return 0;
}

第4关:递归实现Ackman函数

代码语言:javascript
复制
#include<stdio.h>
int Acm(int m,int n){ 
   
    if(m==0&&n>0)
        /*********Begin*********/
        return (n+1);
        /*********End**********/
    else if(n==0&&m>0)
        /*********Begin*********/
        return Acm(m-1,1);
        /*********End**********/
    else
        /*********Begin*********/
        return Acm(m-1,Acm(m,n-1));
        /*********End**********/
}
int main(void)
{ 
   
    int m,n;
    scanf("%d%d",&m,&n);
    printf("%d", Acm(m,n));
    return 0;
}

数组

第1关:十进制整数转转换成十六进制数输出。

代码语言:javascript
复制
#include<stdio.h>
int main()
{ 
   
    int n;
    scanf("%d", &n);
    int a[100000];
    int i = 0;
    for(i = 0; ; i ++)
    { 
   
        a[i] = n % 16;
        n /= 16;
        if(n == 0) break;
    }
    for(int j = i; j >= 0; j --)
    { 
   
        if(a[j] > 9)
        { 
   
            printf("%c", a[j] + 'A' - 10);
            continue;
        }
        printf("%d", a[j]);
    }
    return 0;
}

第2关:回文数。

代码语言:javascript
复制
#include<stdio.h>
int main()
{ 
   
    char ch[100000];
    int index = 0;
    int n;
    scanf("%d", &n);
    while(n != 0)
    { 
   
        ch[index ++] = (n % 10) + '0';
        n /= 10;
    }
    for(int i = 0, j = index - 1; i < j; i ++, j --)
    { 
   
        if(ch[i] != ch[j])
        { 
   
            printf("0");
            return 0;
        }
    }
    for(int i = 0; i < index; i ++)
        printf("%c", ch[i]);
    return 0;
}

第3关:求数列的第n项以及前n项之和

代码语言:javascript
复制
#include<stdio.h>
int main()
{ 
   
    int a[10000];
    int sum[10000];
    a[1] = 1;
    a[2] = 1;
    sum[1] = 1;
    sum[2] = 2;
    for(int i = 3; i < 10000; i ++)
    { 
   
        a[i] = 3 * a[i - 1] + 2 * a[i - 2];
        sum[i] = sum[i - 1] + a[i];
    }
    int n;
    scanf("%d", &n);
    printf("%d %d", a[n], sum[n]);
    return 0;
}

第4关:求数中的第k位数字。

代码语言:javascript
复制
#include<stdio.h>
int main()
{ 
   
    int n, k;
    scanf("%d %d", &n, &k);
    int num = 1;
    while(--k) num *= 10;
    if(n < num)
    { 
   
        printf("0");
        return 0;
    }
    n = n / num % 10;
    printf("%d", n);
    return 0;
}

一维数组和二维数组

第1关:排序问题

代码语言:javascript
复制
#include<stdio.h>
int main(void)
{ 
   
    /*********Begin*********/
    int a[10000];
    for(int i = 0; i < 10; i ++)
        scanf("%d", &a[i]);
    for(int i = 0; i < 10; i ++)
        for(int j = i + 1; j < 10; j ++)
        { 
   
            if(a[i] < a[j])
            { 
   
                int pre = a[i];
                a[i] = a[j];
                a[j] = pre;
            }
        }
    for(int i = 0; i < 10; i ++)
        printf("%d ", a[i]);
   

    /*********End**********/
    return 0;
}

第2关:查找整数

代码语言:javascript
复制
#include<stdio.h>
int a[1009];

int main()
{ 
   
    int n;
    scanf("%d", &n);
    for(int i = 1; i <= n; i ++)
        scanf("%d", &a[i]);
    int pre;
    scanf("%d", &pre);
    for(int i = 1; i <= n; i ++)
    { 
   
        if(a[i] == pre)
        { 
   
            printf("%d", i);
            return 0;
        }
    }
    printf("-1");
    return 0;
}

第3关:计算数组中元素的最大值及其所在的行列下标值

代码语言:javascript
复制
#include<stdio.h>
int a[1000][1000];
int main()
{ 
   
    printf("Input m, n:");
    int n, m;
    scanf("%d,%d", &n, &m);
    printf("Input %d*%d array:\n", n , m);
    for(int i = 1; i <= n; i ++)
        for(int j = 1; j <= m; j ++)
            scanf("%d", &a[i][j]);
    int MAX = -999999;
    int r, c;
    for(int i = 1; i <= n; i ++)
        for(int j = 1; j <= m; j ++)
            if(a[i][j] > MAX)
            { 
   
                MAX = a[i][j];
                r = i;
                c = j;
            }
    printf("max=%d, row=%d, col=%d", MAX, r, c);
    return 0;
}

第4关:二分查找

代码语言:javascript
复制
#include<stdio.h>
int a[1000009];

int main()
{ 
   
    int n;
    scanf("%d", &n);
    for(int i = 1; i <= n; i ++)
    { 
   
        scanf("%d", &a[i]);
    }
    int pre;
    scanf("%d", &pre);
    for(int i = 1; i <= n; i ++)
    { 
   
        if(a[i] == pre)
        { 
   
            printf("%d", i);
            return 0;
        }
    }
    printf("None");
    return 0;
}

第5关:鞍点

代码语言:javascript
复制
#include<stdio.h>
#include<stdbool.h>
int a[19][19];
int ans;
int l, c, r;
int n, m;

bool check(int pre, int l)
{ 
   
    for(int i = 0; i < n; i ++)
    { 
   
        if(pre <= a[i][l]) continue;
        else return false;
    }
    return true;
}

int main()
{ 
   
    scanf("%d%d", &n, &m);
    for(int i = 0; i < n; i ++)
        for(int j = 0; j < m; j ++)
            scanf("%d", &a[i][j]);
    int pre = -1;
    int l = 0;
    for(int i = 0; i < n; i ++)
    { 
   
        pre = -1;
        for(int j = 0; j < m; j ++)
        { 
   
            if(a[i][j] > pre)
            { 
   
                pre = a[i][j];
                l = j;
            }
        }
        if(check(pre, l))
        { 
   
            ans = pre;
            r = i;
            c = l;
            printf("Array[%d][%d]=%d", r, c, ans);
            return 0;
        }
    }
    printf("None");
    return 0;
}

第6关:删除最大值

代码语言:javascript
复制
#include<stdio.h>
int main()
{ 
   
    int a[10];
    int MAX = -1;
    for(int i = 0; i < 10; i ++)
        scanf("%d", &a[i]);
    for(int i = 0; i < 10; i ++)
    { 
   
        if(a[i] > MAX) MAX = a[i];
    }
    for(int i = 0; i < 10; i ++)
    { 
   
        if(a[i] == MAX) continue;
        printf("%d ", a[i]);
    }
    return 0;
}

第七关 杨辉三角

代码语言:javascript
复制
#include<stdio.h>
int a[10][10];

int main()
{ 
   
    int num = 1;
    for(int i = 0; i < 10; i ++) a[i][0] = 1;
    for(int i = 1; i < 10; i ++)
    { 
   
        for(int j = 1; j < 10; j ++)
        { 
   
            if(j == num)
            { 
   
                num ++;
                a[i][j] = 1;
                break;
            }
            a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
        }
    }
    num = 1;
    for(int i = 0; i < 10; i ++)
    { 
   
        for(int j = 0; j < 10; j ++)
        { 
   
            if(j == num)
            { 
   
                num ++;
                break;
            }
            if(j == num - 1) printf("%d", a[i][j]);
            else printf("%d ", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

字符数组

第1关:字符逆序

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>
int main()
{ 
   
    char ch[1000];
    //char pre;
    scanf("%s", &ch);
    int index = 0;
    for(int i = 0; ; i ++)
    { 
   
        if(ch[i] != '\0') index ++;
        else break;
    }
    for(int i = index - 1; i >= 0; i --)
        printf("%c", ch[i]);
    return 0;
}

第2关:字符统计

代码语言:javascript
复制
#include<stdio.h>
int main()
{ 
   
    int T;
    scanf("%d", &T);
    while(T --)
    { 
   
        char s[10000];
        scanf("%s", s);
        int cnt = 0;
        for(int i = 0; s[i] != '\0'; i ++)
        { 
   
            if(s[i] >= '0' && s[i] <= '9')
                cnt ++;
        }
        printf("%d\n", cnt);
    }
    return 0;
}

第3关:字符插入

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
int main()
{ 
   
    char a[10000];
    char b[10000];
    scanf("%s %s", a, b);
    int len_1 = strlen(a);
    int len_2 = strlen(b);
    int MIN = 99999;
    int MAX = -99999;
    for(int i = 0; i < len_1; i ++)
    { 
   
        if(MIN > a[i])
            MIN = a[i];
    }
    for(int i = 0; i < len_2; i ++)
    { 
   
        if(MAX < b[i])
            MAX = b[i];
    }
    for(int i = 0; i < len_1; i ++)
    { 
   
        printf("%c", a[i]);
        if(a[i] == MIN)
            printf("%c", MAX);
    }
    return 0;
}

第4关:字符串处理

代码语言:javascript
复制
#include<stdio.h>
#include <string.h>
int main()
{ 
   
    char s_1[10000], s_2[10000];
    int t;
    scanf("%s%s", s_1, s_2);
    scanf("%d", &t);
    int len_1 = strlen(s_1);
    int len_2 = strlen(s_2);
    for(int i = 0; i < len_1; i ++)
    { 
   
        if(i == t)
        { 
   
            for(int j = 0; j < len_2; j ++)
                printf("%c", s_2[j]);
        }
        printf("%c", s_1[i]);
    }
    return 0;
}

第5关:字符串统计

代码语言:javascript
复制
#include<stdio.h>
#include <string.h>
int main()
{ 
   
    while(1)
    { 
   
        char s[10000];
        memset(s, 0, sizeof(s));
        int index = 0;
        char pre = '0';
        while(scanf("%c", &pre) && pre != '\n') s[index ++] = pre;
        if(index > 3)
        { 
   
            if(s[index - 1] == 'p' && s[index - 2] == 'o' && s[index - 3] == 't' && s[index - 4] == 's')
                break;
        }
        int len = strlen(s);
        int MIN = 0;
        int index_pre = 0;
        int cnt = 0;
        int index_ans = 0;
        int num = 0;
        for(int i = 0; i < len; i ++)
        { 
   
            if(s[i] == ' ')
                continue;
            num ++;
        }
        while(1)
        { 
   
            MIN = 0;
            for(int i = index_pre; i < len; i ++)
            { 
   
                if(s[i] == ' ')
                { 
   
                    index_pre = i;
                    break;
                }
                MIN ++;
                if(MIN > cnt)
                { 
   
                    cnt = MIN;
                    index_ans = i - MIN + 1;
                }
            }
            index_pre ++;
            if(index_pre == len)
                break;
        }
        printf("%d ", num);
        for(int i = index_ans; i < len; i ++)
        { 
   
            if(s[i] == ' ') break;
            printf("%c", s[i]);
        }
        printf("\n");
    }
    return 0;
}

第6关:字符串排序

代码语言:javascript
复制
#include<stdio.h>
#include<string.h>
int main()
{ 
   
    char s_1[1000], s_2[1000], s_3[1000];
    scanf("%s%s%s", s_1, s_2, s_3);
    int len = strlen(s_1);
    char pre_1[1000];
    if(strcmp(s_1, s_2) < 0)
        for(int i = 0; i < len; i ++)
            pre_1[i] = s_1[i];
    else
        for(int i = 0; i < len; i ++)
            pre_1[i] = s_2[i];
    if(strcmp(pre_1, s_3) > 0)
        for(int i = 0; i < len; i ++)
            pre_1[i] = s_3[i];
    printf("%s\n", pre_1);
    char pre_2[1000];
    if(strcmp(s_1, s_2) > 0)
        for(int i = 0; i < len; i ++)
            pre_2[i] = s_1[i];
    else
        for(int i = 0; i < len; i ++)
            pre_2[i] = s_2[i];
    if(strcmp(pre_2, s_3) < 0)
        for(int i = 0; i < len; i ++)
            pre_2[i] = s_3[i];
    if(strcmp(pre_1, s_1) != 0 && strcmp(pre_2, s_1))
        printf("%s\n", s_1);
    else if(strcmp(pre_1, s_2) != 0 && strcmp(pre_1, s_2) != 0)
        printf("%s\n", s_2);
    else if(strcmp(pre_1, s_3) != 0 && strcmp(pre_1, s_3) != 0)
        printf("%s\n", s_3);
    printf("%s", pre_2);
    return 0;
}

程序设计部分 指针(一)

第1关:指针的使用

代码语言:javascript
复制
#include <iostream>
using namespace std;

void Max(int *a,int *b,int *c)
{ 
   
	/********** Begin **********/
    if(*a>*b){ 
   
        int p=*a;
        *a=*b;
        *b=p;
    }
    if(*a>*c){ 
   
        int p=*a;
        *a=*c;
        *c=p;
    }
    if(*b>*c){ 
   
        int p=*b;
        *b=*c;
        *c=p;
    }

	//补充代码完成任务

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

第2关:指针运算

代码语言:javascript
复制
#include <iostream>
using namespace std;
void Reverse(int *start,int *end)
{ 
   
	/********** Begin **********/
    int t;
    while(end>start){ 
   
        t=*start;
        *start=*end;
        *end=t;
        start++;
        end--;
    }
	//补充代码完成功能

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

第3关:指针与数组

代码语言:javascript
复制
#include <iostream>
using namespace std;

void Split(int *arr,int len)
{ 
   
	/********** Begin **********/
    int a=0, b=0;
    for(int i=0;i<len;i++){ 
   
        if(arr[i]==1)b++;
        if(arr[i]==0)a++;

    }
    for(int i=0;i<a;i++){ 
   
        arr[i]=0;
    }
    for(int i=a;i<len;i++){ 
   
        arr[i]=1;
    }
	//补充代码完成功能
	
	/********** End **********/
}

程序设计部分 指针(二)

第1关:字符串与指针

代码语言:javascript
复制
#include <iostream>
using namespace std;

/********** Begin **********/
//可在此添加其他内容
void Shift(char *str,int n)
{ 
   
	int len=0;
	while(str[len]!='\0'){ 
   
		len++;
	}
	// printf("len=%d\n",len);
	int a[len];
	for(int i=0;i<len;i++){ 
   
		a[i]=str[i];
		// printf("%c ",a[i]);
	}
	// cout<<"\n"; 
		int m=n%len;
		for(int i=0;i<len;i++){ 
   
			int j=i;
			if(j-m<0){ 
   
				j=j-m+len;
			}else{ 
   
				j=j-m;
			}
			*(str+j)=a[i];
			// printf("%c %d %d ",*(str+j),j,i);
		}
	//补充代码完成功能
	// cout<<"\n";
	for(int i=0;i<len;i++){ 
   
		 	printf("%c",str[i]);
		 }
}
/********** End **********/

第2关:指针与二维数组

代码语言:javascript
复制
#include <iostream>
using namespace std;
void Add()
{ 
   
	/********** Begin **********/
    int m,n;
    cin>>m>>n;
    int a[m][n],b[m][n];
    for(int i=0;i<m;i++){ 
   
    	for(int j=0;j<n;j++){ 
   
    		cin>>a[i][j]; 
		}
	}
	for(int i=0;i<m;i++){ 
   
    	for(int j=0;j<n;j++){ 
   
    		cin>>b[i][j]; 
		}
	}
	int *p=&a[0][0],*k=&b[0][0];
	for(int i=0;i<(m*n);i++){ 
   
		*p=*p+*k;
		p++,k++;	
	}
	for(int i=0;i<m;i++){ 
   
		for(int j=0;j<n;j++){ 
   
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	//补充代码完成功能
	
	/********** End **********/
}

程序设计部分 指针(三)

第1关:指针作为函数参数

代码语言:javascript
复制
#include <iostream>
using namespace std;

void Sum(const int *arr,int len)
{ 
   
	/********** Begin **********/
	int max=arr[0];
	for(int i=1;i<len;i++){ 
   
		if(arr[i]>max){ 
   
			max=arr[i];
		}
	}
	int sum=0;
    for(int i=0;i<len;i++){ 
   
    	sum+=arr[i];
    	if(arr[i]==max){ 
   
    		sum-=max;
		}
	} 
	
	cout<<sum;
	//补充代码完成功能

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

第2关:指针作为函数返回值

代码语言:javascript
复制
#include <iostream>
using namespace std;
/********** Begin **********/

//可在此添加其他内容
//int arr[10];
int* Read(int *len)
{ 
   	
// *len=0;
	cin>>*len;
	static int arr[10];
	for(int i=0;i<*len;i++){ 
   
		cin>>*(arr+i);
	}
	return &arr[0];
	//补充代码完成功能
}
/********** End **********/

指针应用

第1关:“回文”判断

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
#define MAX_LEN 80
int IsReverse(const char *str);
int main(void)
{ 
   
	char str1[MAX_LEN];
	int flag=1;
	printf("Input string: ");
    int i=0;
    scanf("%s",&str1);
// printf("%s\n",str1);
	const char *str=str1;
	/***************Begin**************/
		
	flag=IsReverse(str);
	/***************End***************/
	if (flag == 0)
	{ 
   
		printf("\nNo!");
	}
	else
	{ 
   
		printf("\nYes!");
	}
    return 0;
}

int IsReverse(const char *str)
{ 
   
	/***************Begin**************/
	int len=0;
	while(*(str+len)!='\0'){ 
   
		len++;
	}
// printf("%d\n",len);
	int flag1=0;
	for(int i=0;i<len/2;i++){ 
   
		if(*(str+i) != *(str-i+len-1)){ 
   
			return 0;
		}
	}

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

第2关:节日提示

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
#define MONTHS 12
#define MAX_LEN 20 //字符串最大长度

int FindWord(char mws[][MAX_LEN],int n,char x[]);
int main(void)
{ 
   
	int    pos1,pos2;
	char   x[MAX_LEN];
	char   monthsWords[][MAX_LEN] = { 
   "January","February","March","April","May","June","July",
									"August","September","October","November","December"};
	char   monthsAbbr[][MAX_LEN] = { 
   "Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul."
									,"Aug.","Sept.","Oct.","Nov.","Dec."};
   	char   monthsChinese[][MAX_LEN] = { 
   "元月元旦","二月春节","三月植树","四月清明","五月劳动","六月儿童",
	 							  "七月七夕","八月中秋","九月开学","十月国庆","十一月光棍","十二月圣诞"};
	printf("Please enter a string:\n");
	scanf("%s", x);             	//输入待查找的字符串
	
	/***************Begin**************/
		//此处应用函数调用
	char mws[][MAX_LEN]={ 
   "January","February","March","April","May","June","July",
									"August","September","October","November","December",
						 "Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul."
									,"Aug.","Sept.","Oct.","Nov.","Dec."};
	int n=-1;								
	n=FindWord(mws,n,x);
	if(n>=12){ 
   
		pos2=n%12;
		pos1=-1;
	}else if(n>=0){ 
   
		pos1=n;
		pos2=-1;
	}else{ 
   
		pos1=-1;
		pos2=-1;
	}
	/***************End***************/
	

	if (pos1>=0)       		//找到标志为真,说明找到
	{ 
   
		  printf("%s: %s\n", x, monthsChinese[pos1]);
		  //printf("%s: %s\n", x, *(monthsChinese+pos1));
	}
	else if(pos2>=0)
    	{ 
   
		  printf("%s: %s\n", x, monthsChinese[pos2]);
		  //printf("%s: %s\n", x, *(monthsChinese+pos2));
	}
	else                		//找到标志为假,说明未找到
	{ 
   
		  printf("Not found!\n");
	}
     return 0;
}

//在单词表中找x字符串,若找到,返回其位置(位置从0开始)
//若找不到则返回-1
int FindWord(char mws[][MAX_LEN],int n,char x[])
{ 
   
	/***************Begin**************/
	for(int i=0;i<24;i++){ 
   
		if(strcmp(mws[i],x)==0){ 
   
			n=i;
		}
	} 
	return n;
	/***************End***************/
}

第3关:选出串中的数字

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define MAX_LEN 80

void extractNum(char *str);

int main()
{ 
   
    char str[MAX_LEN];
    fgets(str,80,stdin);
    extractNum(str);
    puts(str);
    return 0;
}

void extractNum(char *str)
{ 
   
    /********** Begin *********/
    int j=0;
    char a[80];
    for(int i=0;i<80;i++){ 
   
    	if( *(str+i)>='0' && *(str+i)<='9' ){ 
   
    		if(*(str+i-1)=='-'){ 
   
			a[j]='-';
			j++;
			}
			break;	
		}
    
	}
	for(int i=0;i<80;i++){ 
   
		if(  *(str+i)>='0' && *(str+i)<='9'  ){ 
   
			a[j]=*(str+i);
// printf("%c",a[j]);
			j++;
		
		}
	}
	for(int i=0;i<j;i++){ 
   
		*(str+i)=a[i];
// printf("%c",*(str+i));
	}
		*(str+j)='\0';
	


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

第4关:矩阵转置

代码语言:javascript
复制
#include <stdio.h>
//#define ROW 3
//#define COL 4
void Transpose(int *a, int *at, int row, int col);
void InputMatrix(int *s, int row, int col);
void PrintMatrix(int *s, int row, int col);
int main(void)
{ 
   
	int ROW=3,COL=4; 	
	int s[ROW][COL];				
	int st[COL][ROW];
			
	// printf("Please enter matrix:\n"); 
	InputMatrix(s[0],ROW,COL);

	Transpose(s[0],st[0],COL,ROW);


	// printf("The transposed matrix is:\n"); 
	PrintMatrix(st[0],COL,ROW);



    return 0;
}
void Transpose(int *a, int *at, int row, int col)
{ 
   
	/***************Begin**************/
	for(int i=0;i<row;i++){ 
   
		for(int j=0;j<col;j++){ 
   
			*(at+i*col+j) = *(a+j*row+i);
		}
	}

	/***************End***************/
}
void InputMatrix(int *s, int row, int col)   
{ 
   
	int i, j;
	for (i=0; i<row; i++)
	{ 
   
		for (j=0; j<col; j++)
		{ 
   
			scanf("%d", s+i*col+j);	
		}
	}
}
void PrintMatrix(int *s, int row, int col)  
{ 
   
	int i, j;
	for (i=0; i<row; i++)
	{ 
   
		for (j=0; j<col; j++)
		{ 
   
			printf("%d\t",*(s+i*col+j));
		}
		printf(" \n");
	}
}

第5关:字符串排序

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define M 10
#define N 21
void sortStrs(char *p[], int n);
int main()
{ 
   
    char strsArr[M][N];
    char *p[M];
    int i,n;

    printf("Input n(n<=20):\n");
    scanf("%d",&n);
    //fflush(stdin);
    getchar();		//读走回车字符
    for(i=0;i<n;i++)
    { 
   
        printf("%d:\n",i);
        fgets(strsArr[i],N,stdin);
        p[i]=strsArr[i];
    }
    

    sortStrs(p,n);

    printf("After sorted:\n");
    for(i=0;i<n;i++)
    { 
   
        printf("%d:%s",i,p[i]);
    }

    return 0;
}
//对指针数组p中各元素指向的字符串进行排序,排序的结果仍然存放在p数组中。按ASCII表编码顺序排序。
//选择法
void sortStrs(char *ptr[], int n)
{ 
   
    // 请在此添加代码,实现函数sortStrs
    /********** Begin *********/
    char  *temp=NULL;
  	for(int i=0;i<n;i++){ 
   
  		for(int j=i+1;j<n;j++){ 
   
  			if(strcmp(ptr[j],ptr[i])<0)/*if(strcmp(ptr[i],ptr[j]<0)*/{ 
   /*规则当s1<s2时,返回为负数;当s1=s2时,返回值= 0;当s1>s2时,返回正数。*/
  				temp=ptr[i];
  				ptr[i]=ptr[j];
  				ptr[j]=temp;
			  }
		  }
  		
	  } 

    /********** End **********/

}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144497.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 头歌c语言实训作业题解 持续更新
  • C语言程序设计编辑与调试环境
    • 1.打印输出 Hello World
      • 2.打印输出图形
        • 3.求三个数的最大值
          • 4.熟悉C语言调试环境
          • C语言中最基本的输入输出
            • 1.看看你成绩怎么样
              • 2.输出字符的
                • 3.进制转换
                • 顺序结构程序设计
                  • 1.加法运算
                    • 2.不使用第3个变量,实现两个数的对调
                      • 3.用宏定义常量
                        • 4.数字分离
                          • 5.计算总成绩和平均成绩
                            • 6.求三角形面积
                              • 7.立体几何计算题
                                • 8.计算两个正整数的最大公约数
                                • 选择结构程序设计
                                  • 1.排序
                                    • 2.闰年判断
                                      • 3.分段函数问题
                                        • 4.学生成绩转换
                                        • 选择结构程序设计进阶
                                          • 第1关:快递费用计算
                                            • 第2关:计算一元二次方程的根
                                              • 第3关:产品信息格式化
                                              • 循环结构程序设计1
                                                • 第1关:小球自由落体运动
                                                  • 第2关:求解出n以内所有能被5整除的正整数的乘积
                                                    • 第3关:最大公约数和最小公倍数
                                                      • 第4关:字符串中各类字符数的统计
                                                        • 第5关:求sn=a+aa+aaa+aaaa+…的值
                                                        • 循环结构程序设计2
                                                          • 第1关:C循环-求平均成绩
                                                            • 第2关:C循环-求各位数字之积
                                                              • 第3关:C循环-求阶乘之和
                                                                • 第4关:C循环-水仙花数
                                                                  • 第5关:C循环-寻找完数
                                                                    • 第6关:分数求和
                                                                    • 算法竞赛入门经典(第2版)_2_循环结构程序设计
                                                                      • 第1关:指定循环次数的循环
                                                                        • 第2关:水仙花数
                                                                          • 第3关:7744问题
                                                                            • 第4关:3n+1问题
                                                                              • 第5关:计算阶乘的后3位
                                                                                • 第6关:计算阶乘和的后三位
                                                                                • 函数
                                                                                  • 第1关:求和
                                                                                    • 第2关:回文数计算
                                                                                      • 第3关: 编写函数求表达式的值
                                                                                        • 第4关:阶乘数列
                                                                                          • 第5关:亲密数
                                                                                            • 第6关:公约公倍数
                                                                                            • 递归函数、嵌套函数
                                                                                              • 第1关:递归求阶乘数列
                                                                                                • 第2关:递归实现输出一个整数的逆序
                                                                                                  • 第3关:将整数递归转换成字符串
                                                                                                    • 第4关:递归实现Ackman函数
                                                                                                    • 数组
                                                                                                      • 第1关:十进制整数转转换成十六进制数输出。
                                                                                                        • 第2关:回文数。
                                                                                                          • 第3关:求数列的第n项以及前n项之和
                                                                                                            • 第4关:求数中的第k位数字。
                                                                                                            • 一维数组和二维数组
                                                                                                              • 第1关:排序问题
                                                                                                                • 第2关:查找整数
                                                                                                                  • 第3关:计算数组中元素的最大值及其所在的行列下标值
                                                                                                                    • 第4关:二分查找
                                                                                                                      • 第5关:鞍点
                                                                                                                        • 第6关:删除最大值
                                                                                                                          • 第七关 杨辉三角
                                                                                                                          • 字符数组
                                                                                                                            • 第1关:字符逆序
                                                                                                                              • 第2关:字符统计
                                                                                                                                • 第3关:字符插入
                                                                                                                                  • 第4关:字符串处理
                                                                                                                                    • 第5关:字符串统计
                                                                                                                                      • 第6关:字符串排序
                                                                                                                                      • 程序设计部分 指针(一)
                                                                                                                                        • 第1关:指针的使用
                                                                                                                                          • 第2关:指针运算
                                                                                                                                            • 第3关:指针与数组
                                                                                                                                            • 程序设计部分 指针(二)
                                                                                                                                              • 第1关:字符串与指针
                                                                                                                                                • 第2关:指针与二维数组
                                                                                                                                                • 程序设计部分 指针(三)
                                                                                                                                                  • 第1关:指针作为函数参数
                                                                                                                                                    • 第2关:指针作为函数返回值
                                                                                                                                                    • 指针应用
                                                                                                                                                      • 第1关:“回文”判断
                                                                                                                                                        • 第2关:节日提示
                                                                                                                                                          • 第3关:选出串中的数字
                                                                                                                                                            • 第4关:矩阵转置
                                                                                                                                                              • 第5关:字符串排序
                                                                                                                                                              领券
                                                                                                                                                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档