突然发现还有一篇去年期末复习时的草稿没写完,好长时间过去了,直接发了吧
这次是前年期末重现,这几天四套期末重现下来,有点感触。
一是一些细枝末节,比如赋初值,归零,==和=,单个字符处理时注意读掉换行符(不是每次都要的),输出格式,还有更多待细心之处
二是做题的流程,先要完全理解题意,知道大概的方向,明确程序结构,后面的题甚至可以先写写汉语
三是关于字符处理的题,一是上边说的换行符处理,二是整体的思路结构,有时候就是走不通,应当一开始就选择较简单的结构,减少嵌套与分支。
亏本了吗?
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;
}