C语言_SDUST_OJ(6)

▼魔方 西西 提交于 2020-02-12 17:42:51

突然发现还有一篇去年期末复习时的草稿没写完,好长时间过去了,直接发了吧

这次是前年期末重现,这几天四套期末重现下来,有点感触。
一是一些细枝末节,比如赋初值,归零,==和=,单个字符处理时注意读掉换行符(不是每次都要的),输出格式,还有更多待细心之处

二是做题的流程,先要完全理解题意,知道大概的方向,明确程序结构,后面的题甚至可以先写写汉语

三是关于字符处理的题,一是上边说的换行符处理,二是整体的思路结构,有时候就是走不通,应当一开始就选择较简单的结构,减少嵌套与分支。

亏本了吗?

Description
有一家公司,财务把今年的收支表做出来了,总经理请人编写一个程序算一算,今年是否亏本了?
公司的收支表中有一列是金额。这一列的第一行是公司上年的结余(不算作收入或支出)。后面每行的数据都代表一笔收入或支出。依照会计记账规定,应该是收入记为+,支出记为-。比如,收入10元,应该计入+10,支出10元,应该计入-10。但是粗心的会计有时会把+漏掉了,也就是收入10元,有可能记为+10,也有可能记为10,但绝不会是-10。
你来试一试,能解决这个问题吗?

Input
输入有多行,每行一个整数,至EOF结束。第一个整数是上年的结余,后面每行一个整数,整数前有可能有+或-。整数前标记为-的为支出,标记为+或不标记的为收入。
输入可以保证至少会有一个整数。所有的运算都在int范围内。

Output
若公司今年亏本(收入小于支出)则输出“Yes”,否则输出“No”。
Sample Input

10
5
+5
-10

Sample Output

No

这个题一开始不知道怎么处理,其实就是首字符的操作不同,最后有点恍惚哪个是yes哪个是no

#include<stdio.h>
#include<string.h>

int main()
{
    int n;
    scanf("%d",&n);
    char s[100];
    int sum=0;
    char ch;
    while(scanf("%s",&s)!=EOF)
    {
        int len=strlen(s);
        int i,a=0,flag=1;
        for(i=0;i<=len-1;i++)
        {
            if(i==0&&s[i]=='+')
            {
                flag=1;
            }
            else if(i==0&&s[i]=='-')
            {
                flag=-1;
            }
            else
                a=a*10+s[i]-'0';
        }
        a=a*flag;
        sum+=a;
    }
    if(sum>=0)
    {
        printf("No");
    }
    else
        printf("Yes");
    return 0;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!