【C语言】经典题目(二)

简介: 【C语言】经典题目(二)

求三角形面积

给出三角形的边长,求三角形的面积。

利用海伦公式求三角形面积

area=根号下 s*(s-a)*(s-b)(s-c)

其中s=(a+b+c)/2

#include <stdio.h>
#include <math.h>
int main (void)
{
  float a,b,c,s,area;
  printf("Please input a,b,c:\n");
  scanf("%f%f%f",&a,&b,&c);
  if (a+b<=c || a+c<=b || b+c<=a)
    printf("不能构成三角形\n");
  else
  {
    s=(a+b+c)/2;
    area=sqrt(s*(s-a)*(s-b)*(s-c));
    printf("三角形的面积为%.2f\n",area);
  }
  return 0;
}

判断某一年是否为闰年

判断是否为闰年:

  • 能被400整除
  • 能被4整除但不能被100整除
  • 设置标志量leap进行判断,若leap为1,则为闰年,若为0,则不是闰年。
#include <stdio.h>
int main (void)
{
  int year,leap;//leap标志变量
  printf("请输入年份:\n");
  scanf("%d",&year);
  if (year%400==0) //能被400整除是闰年
    leap=1;
  else if (year%4==0 && year%100!=0)//能被4整除但不能被100整除是闰年
    leap=1;
  else 
    leap=0;
  if (leap)
    printf("该年份为闰年\n");
  else
    printf("该年份不是闰年\n");
  return 0;
}

根据三角形类型输出

编写程序,要求程序运行时,从键盘输入三角形的三边长(整型)输出三角形的类型代码。

若三角形为等边三角形,输出1;若三角形为等腰三角形,输出2其他三角形,输出0;若输出的三条边不能构成三角形,输出error!

#include <stdio.h>
int main (void)
{
  int a,b,c;
  printf("请输入三角形的三边长:\n");
  scanf("%d%d%d",&a,&b,&c);
  if (a==b && a==c )  //等边三角形
    printf("1\n");
  else if ((a==b && a!=c) || (a==c && a!=b) || (b==c && b!=a)) //等腰三角形
   //逻辑与运算符11级
    printf("2\n");
  else if (a+b<=c || a+c<=b || b+c<=a) //不能构成三角形
   //逻辑或运算符12级
    printf("error!\n");
  else 
    printf("0\n");
  return 0;
}

求S=a+aa+aaa+ …… 的值

求S=a+aa+aaa+ …… 的值,其中a是一个数字,n表示a的位数,例如2+22+222+2222+22222(此时n为5)n由键盘输入。

定义变量:

sum表示总和,记得初始化为0

term表示当前项的值

找规律:

后一项是前一项的10倍+a

#include <stdio.h>
int main (void)
{
  int a,n,term,sum,i;
  printf("请输入一个数字a:\n");
  scanf ("%d",&a);
  printf("请输入a的位数:\n");
  scanf("%d",&n);
  term=a;  //term代表当前项的值
  sum=0;  //sum表示总和
  for (i=1;i<=n;i++)
  {
    sum+=term;  //把当前项的值累加到sum中
    term=term*10+a;
  }
  printf("S的值为%d\n",sum);
  return 0;
}

回文字

所谓回文串,就是反转以后和原串相同,如abba和madam。

样例输入

ISAPALINILAPASI

样例输出

ISAPALINILAPASI – is a regular palindrome.

分析:对输入的字符串,利用双指针,,判断第一个是否等于最后一个,第二个是否等于倒数第二个……直到i<k

设置标志量,若在字符串中有对称元素不相等的,则将标志量改为0。根据标志量判断,若flag为0,(则不用进行进一步的判断),退出循环。

根据标志量进行输出:若标志量为0,则说明不是回文字。若标志量为1,则说明是回文字。

#include<stdio.h>
#include<string.h>
int main (void)
{
    int i,k,n;
    int flag=1;//标志量
    char s[128]={0};
    gets(s);
    n=strlen(s);//字符串长度
    for (i=0,k=n-1;i<k;i++,k--)
    {
        if (s[i]!=s[k])
        {
            flag=0;
            break;
        }       
    }
    if (flag==1)
    printf("%s --is a regular palindrome.\n",s);
    else
    printf("%s --is not a regular palindrome.\n",s);
}

镜像串

所谓镜像串,就是左右镜像之后和原串相同,如2S和3AIAE。

镜像字符如下:


分析:镜像字符是固定的一些常量,我们需要使用常量数组来存放一些存在的镜像字符。

与判断回文字一样,镜像串同样首尾判断,利用双指针进行同时移动,直到一个小于另一个即可。

可以定义两个常量字符数组a和b,b中存放与a对应的镜像字符。

设置标志量,若在字符串中有对称元素不相等的,则将标志量改为0。并在外层循环中,根据标志量判断,若flag为0,(则不用进行进一步的判断),退出循环。

根据标志量进行输出:若标志量为0,则说明不是镜像串。若标志量为1,则说明是镜像串。

#include <stdio.h>
#include<string.h>
int main(void)
{
    const char a[80]="AEHIJLMOSTUVWXYZ12358";
    const char b[80]="A3HILJMO2TUVWXY51SEZ8";
    char s[80];
    int i,k,n,j;
    int flag=1;//设标志量
    gets(s);
    n=strlen(s);
    for (i=0,k=n-1;i<k;i++,k--)//对字符数组s进行遍历
    {
        for(j=0;a[j]!='\0';j++)
        {
            if (s[i]==a[j])//在数组a中查找s[i]
            {
                if(s[k]!=b[j])//判断与s[i]对应的s[k]是否是是[i]的镜像
                {
                    flag=0;
                }
            }
        }
        if (flag==0) break;
    }
    //根据标志量判断输出
    if(flag==0)
    printf("%s--is a not mirrored string.\n",s);
    if (flag==1)
    printf("%s--is a mirrored string.\n",s);
    return 0;
}


相关文章
|
5月前
|
C语言
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
|
5月前
|
存储 C语言 C++
C语言------------指针笔试题目深度剖析
C语言------------指针笔试题目深度剖析
42 1
|
10月前
2.C语言题目---字符串左旋
2.C语言题目---字符串左旋
71 1
|
10月前
|
存储
1.C语言题目---指针类(基础)
1.C语言题目---指针类(基础)
53 1
|
2月前
|
存储 编译器 C语言
【C语言】指针练习题目
【C语言】指针练习题目
|
4月前
|
测试技术 C语言
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
41 1
|
5月前
|
算法 编译器 API
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-1
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
4月前
|
C语言
c语言循环题目
c语言循环题目
|
5月前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
|
5月前
|
C语言
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)