
void
main()
{
int
ls/*定义整形
结合字符判断*/
float
as,ss/*定义浮点数*/
char
bs[2],c/*定义字符用于收符号*/
for(int
i=0i++)
/*定察拍携义i=0
建立死循环
每次循环自加1*/
{
printf("请输入数字\n:")
scanf("%f",&as)/*得到一个数*/
if(i!=0&&ls==1)
{as=as+ssprintf("=%f\n",as)}/*判断并非输入的第一个数
并由ls的值判断进行何种运算*/
if(i!=0&&ls==2)
{as=ss-asprintf("=%f\n",as)}
if(i!=0&&ls==3)
{as=as*ssprintf("=%f\n",as)}
if(i!=0&&ls==4)
{as=ss/asprintf("=%f\n",as)}
getchar(c)/*收scanf的回车*/
for()
{
printf("请输入运算符号\n:")
gets(bs)/*得到一个符号*/
if(bs[0]=='=')
printf("%f\n",as)/*如果bs所得是等号
输出as
并要求用户重新输入符号败伏*/
if(bs[0]!='=')
break/*如果不是
跳出死循环*/
}
if(bs[0]=='+')
{ls=1ss=as}/*对符号贺液进行判断
并对ls赋值
新循环会用到*/
if(bs[0]=='-')
{ls=2ss=as}
if(bs[0]=='*')
{ls=3ss=as}
if(bs[0]=='/')
{ls=4ss=as}
}
}
#include<stdio.h>void main() { int a,n,s,t,i
scanf("%d%d",&a,&n)s=0t=0
for ( i=0i<ni++ ) {
t*=10t+=as-=t
}
s+=ts+=tprintf("%d\n",s)
}
首先这是一个累和的题目,完成方法就是循环做握粗n次,向求和变量s上边加n项,一般循环变量i
其次,观察每项取值之间的关系,这题是每项都是前一项乘以10再加a得到
这题纯镇也没有项顺序关系,每项都是减法,因此可以简化成求累减
每项用一个变量t来算,一开始初值为0,当前项就是t乘以10然后加a,于是第1项为a,第2项为a*10+a=aa,...,循环n次得到最大那个数
具皮迟体到程序,为简单起见,求累减,得到的是-aaa...aaa-...-aaa-aa-a,因此加上两次最大值得到aaa...aaa-...-aaa-aa-a的值输出.
这种多项式求和,一般是要分析每项与前项的关系,或者与循环变量取值之间的关系,每项的符号如果需要的话可以单用一个变量来控制,比较关键的是各变量的初值要赋值正确.
#include <stdio.h>main (void)
{
int a,b,c
char op
scanf ("%d%c%d",&a,&op,&b)//最好空格去掉,这样就可以直接写成a+b或者a-b。如果有空格的话要记得空格也要打a + b。要不会出现错误 ,而且输入的时候需要用地址枯野唯符&····
if(op=='+')
{c=a+b}
if(op=='-')
{c=a-b}
printf("%d%c%d=%d\n",a,op,b,c)//楼主这句应该放在脊厅数据处理完后。。要不你输出的a,op,b都是在没处理过的数,也就是原来的值,而且最好是把,去掉,这样更美观 ,而且printf后面不需要&。没培。。切记。而且没必要那样输出。请楼主看我的printf```
}
还不清楚 来hi我
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)