pat乙级第二题 第一个测试点老是通不过,是为什么?
代码写的不伦不类的不要见怪哈
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<stack>
#include<string>
using namespace std;
int main()
{
string str;
int sum=0;
int num[110];
int count = 0;
stack<int>q;
cin >> str;
char pingyin[10][10] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" };
for (int i = 0; i < str.size(); i++)
{
num[i] = str[i] - '0';
count++;
}
for (int i = 0; i < count; i++)
{
sum += num[i];
}
char str2[11];
if (sum == 0) printf("%s\n",pingyin[sum]);
while (sum % 10 != 0)
{
q.push(sum % 10);
sum /= 10;
}
while (!q.empty())
{
if (q.size() == 1) printf("%s\n", pingyin[q.top()]);
else printf("%s ", pingyin[q.top()]);
q.pop();
}
return 0;
}
可能是下面的问题
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<stack>
#include<string>
using namespace std;
int main()
{
string str; //输入数字(字符串)
int sum = 0; //计算数字和
int num[110]; //存储数字(数字)
int count = 0;
stack<int>q; //存储数字和的每一位数字
cin >> str; //输入字符串
char pingyin[10][10] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" };
for (int i = 0; i < str.size(); i++) //转化每一位数字
{
num[i] = str[i] - '0';
count++; //其实Count就是等于str.size()
}
for (int i = 0; i < count; i++)
{
sum += num[i];
}
char str2[11];
if (sum == 0) printf("%s\n", pingyin[sum]);
while (sum % 10 != 0) //这里有一点问题,如果sum==1000,那一开始就会停下
{
q.push(sum % 10); //存储最后一位
sum /= 10;
}
while (!q.empty()) //输出
{
if (q.size() == 1) printf("%s\n", pingyin[q.top()]);
else printf("%s ", pingyin[q.top()]);
q.pop();
}
return 0;
}
#include <stdlib.h> #include <stdio.h> #include <math.h> /* Created by HarvestWu on 2018/04/27. */ using namespace std; int main() { int N,count,an; char c; scanf("%d %c", &N, &c); count = (int)sqrt(((double)N+1)/2);//一个完整三角形的行数 an = 2 * count - 1;//最后一行的个数 int left = 0, right = an; for (int i = 0; i < count; i++) { for (int j = 0; j < left; j++) printf(" "); for (int m = left; m < right; m++) printf("%c", c); left += 1; right -= 1; printf("\n"); } left -= 1; right += 1; for (int i = 1; i < count; i++) { left -= 1; right += 1; for (int j = 0; j < left; j++) printf(" "); for (int m = left; m < right; m++) printf("%c", c); printf("\n"); } printf("%d\n", N-2*count*count+1); return 0; }