求三角形面积
给出三角形的边长,求三角形的面积。
利用海伦公式求三角形面积
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; }