
#include "stdioh"
void main()
{
int n,sum=0;
printf("请输入一个三位数:");
scanf("%d",&n);
sum=n/100+n%100/10+n%10;//百位数+十位数+个位数
printf("这个三位数各位数字之和是%d\n",sum);
}
#include<stdioh>
int main(void)
{ int num[10]={0} ; //定义数组,里面的元素全部为0,用来统计0--9出现的次数
int b[]={1,2,3,4,4,1,3}; //定义数组B,里面存放你要输入的数字串
int i ;
for(i=0;i<sizeof(b);i++)
num[ b[i] ] ++;
for(i=0;i<10;i++)
printf( "%d",num[i]);
return 0;
}
#include <stdioh>
int main()
{
int x,sum=0,t;
printf("请输入一个正整数:");
scanf("%d",&x);
while(x!=0)
{
t=x%10;
x=x/10;
sum+=t;
}
printf("该数的各位数字之和:%d",sum);
}
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
使用java的话可以这样实现:
import javautilScanner;
public class s{
public static void main(String[] args){
Scanner input=new Scanner(Systemin);
Systemoutprintln("请输入一个正整数:");
int n=inputnextInt();
String s=n+"";
String tmp="";
int l=slength();
int sum=0;
for(int q=l;q>=1;q--){
int c=(int)(n/Mathpow(10,q-1));
n=(int)(n%Mathpow(10,q-1));
sum+=c;
if(q!=1){
tmp+=c+"+";
}
else{
tmp+=c;
}
}
Systemoutprintln(tmp+"="+sum);
}
}
编译原理的东西,对字符串的解析,还有定义好表达式的数据结构。
表达式是一种树状结构,表达式可以是最小的原子表达式(只有一个常量或者一个变量),也可以是由一个运算符和若干个子表达式组成的复合表达式,它的子表达式可以是元子表达式也可以是复合表达式。
我之前写过一个表达式类,可以运算,但是表达式的化简没有写好,效率低下。。。
下面是头文件,如果感兴趣可以向我索取剩下的代码:
#pragma once
#include "asserth"
#include <vector>
using namespace std;
#define ConstantE 271828182845904523536 //自然对数e
#define ConstantPai 314159265358979323846 //圆周率π
#define InfinitePlus 10e308 //正无穷
#define InfiniteNegative -10e308 //负无穷
#define OperatorParam 5 //运算符允许的最大参数个数(也就是运算符的目数)
#define MaxExpressionTextParam 200 //表达式的“传文本参数”构造函数允许最大的字符串
enum ExpressionType //表达式类型
{
//每个枚举值所表示的含义必须一层层增大,即上一个枚举值是下一个枚举值的子集,但ExpressionType_unknown不是它上面枚举值的包含集
ExpressionType_plus=1, //正数(大于0的数)
ExpressionType_Unzero, //非零数
ExpressionType_num, //实数
ExpressionType_constant, //常数(包括复数)
//以上几个其实是常量
ExpressionType_unknown, //变量
//以上几个其实就是元子表达式,而下面的是表达式(包括元子表达式和复合表达式)
ExpressionType_expression, //表达式
};
enum ConstantType //常数类型
{
ConstantType_num=1, //实数数字
ConstantType_e, //自然数e
ConstantType_pai, //圆周率π
ConstantType_j, //虚数的j
};
struct Constant //常数
{
ConstantType eConstantType; //常数类型(可以表达实数部分c,虚数部分1j,也可以表达1e和1π)
long double fValue; //数值(ejπ时无意义)
};
class Expression;
struct UnKnown //变量
{
//基本属性
unsigned int nID; //变量编号
//公式匹配
ExpressionType eExpressionType_Request; //匹配时该变量允许的类型(属性需求)
Expression pExpression; //匹配上时,该变量指代的表达式(一个指针,不需要自己释放)
};
enum OperatorType //大部分运算符(暂时最大只出现双目运算)
{
OperatorType_Null=-1, //空运算符
OperatorType_add=0, //+(加)-----2目
OperatorType_sub, //-(减)-----2目
OperatorType_multi, //(乘)-----2目
OperatorType_divide, ///(除)-----2目
OperatorType_abs, //||(绝对值)-----1目
OperatorType_inverse, //-(相反数)-----1目
OperatorType_factorial, //!(阶乘) -----1目
OperatorType_exponent, //^(指数)-----2目,参数1是底数
OperatorType_log, //log(对数,^逆运算)-----2目,参数1是底数
OperatorType_lg, //lg(10为底的对数)-----1目
OperatorType_ln, //ln(e为底的对数)-----1目
OperatorType_sin, //sin(正弦,对边比斜边)-----1目
OperatorType_cos, //cos(余弦,邻边比斜边)-----1目
OperatorType_tan, //tan(正切,对边比邻边)-----1目
OperatorType_cot, //cot(余切,邻边比对边)-----1目
OperatorType_sec, //sec(正割,斜边比邻边)-----1目
OperatorType_scs, //scs(余割,斜边比对边)-----1目
OperatorType_arcsin, //arcsin(sin逆运算)-----1目
OperatorType_arccos, //arccos(cos逆运算)-----1目
OperatorType_arctan, //arctan(tan逆运算)-----1目
OperatorType_arccot, //arccot(cot逆运算)-----1目
OperatorType_arcsec, //arcsec(sec逆运算)-----1目
OperatorType_arcscs, //arcscs(scs逆运算)-----1目
OperatorType_step, //ε单位阶跃函数-----1目,参数1是时间t(从0变到1,然后一直不变)
OperatorType_lash, //δ单位冲激函数-----1目,参数1是时间t(脉冲,瞬间变到无穷大,又瞬间回到0)
OperatorType_differ, //△(微分)-----2目(表达式,求微的未知数)
OperatorType_integral, //∫(积分)-----1目(表达式,求积的未知数)
};
struct OperatorProperty //运算符的属性(至少一目,最多允许十目),此结构只在(表达式和文本之间的转换)中使用
{
OperatorType eOperatorType; //运算符类型
unsigned int nCountParam; //运算符需要的参数个数(几目),0个参数表示无运算符号
char strRule[10]; //运算符文本书写规则,当元素是[0,9]时表示使用第几个参数,
//而当是其它时表示该运算符表达式中用到的特别字符。比如积分写成"∫0d1",写成数组方式就是('∫','0,','d','1'),
//注意文本书写方式中不允许出现小数点字符'',以免增加分析的难度。
//另外,参数的数字编号也必须是从0开始按顺序递增,因为它指代了是第几个参数。
ExpressionType peExpressionTypeArray_Request; //每个参数的表达式限制,默认都是ExpressionType_expression,
//但微积分中的最后一个参数要求是个未知数,数组大小是nCountParam
char ppstrTextParam; //每个元素是运算符规则文本匹配时参数对应的实际文本
int nSite; //已匹配到运算符文本书写规则的哪个位置
};
class OperatorRule;
struct Expression
{
//表达式基本属性
string strText; //表达式的文本表示,下面是数据表示
//元子表达式(最精简的表达式,是常数或者变量,两者最多只有一个为非NULL)
Constant pConstant; //常量
UnKnown pUnknown; //变量
//复合表达式(子表达式的个数取决于运算符的目数)
OperatorType eOperatorType; //运算符类型(为了提高运算效率,使用多个变量替代数组的方式)
Expression pExpressionSub1; //运算符使用到的子表达式1,复合表达式时必须非NULL(因为任何运算符至少需要一个参数)
Expression pExpressionSub2; //运算符使用到的子表达式2,复合表达式时可能为NULL(单目运算符没第二个参数)
//Expression pExpressionSub3;//超过双目时继续填写变量
};
struct OperatorRule //运算法则
{
//运算法则可分为“消元法则”(也可称为“优化法则”)和“普通法则”,另外还有“拉普拉式变换法则”。
//左表达式的树深度大于或者等于右表达式的。
//“消元法则”是指此法则可以有效地减少未知数的,也就是右表达式的未知数是左表达式的未知数的子集。
//“普通法则”则无法消去未知数的个数。
//“拉普拉式变换法则”的左边表达式是象函数,右边是原函数。
//“消元法则”和“拉普拉式变换法则”只允许从左边推导出右边,而“普通法则”则可以左右互相推导。
Expression pExpression_Left; //法则的左边表达式
Expression pExpression_Right; //法则的右边表达式
};
以上就是关于编写一个程序,其功能是输入一个三位数,计算并输出各位数字之和全部的内容,包括:编写一个程序,其功能是输入一个三位数,计算并输出各位数字之和、C语言程序:计算数字出现过的次数、编写一个程序,输入一个正整数,计算并显示该数的各位数字之和。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)