第一题,给一个整数,求这个整数加1后的整数。整数多长不知,用string
#include <iostream>
#include <string>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
int main()
{
string str;
cin >> str;
int len = str.length();
int flag = 0;
if(str[len - 1] == '9')
{
str[len - 1] = '0';
for(int i = len - 2;i >= 0;i--)
{
if(str[i] != '9')
break;
else
str[i] = '0';
//cout << str[i] << endl;
}
if(str[0] == '0')
flag = 1;
}
else
str[len - 1] = str[len - 1] + 1;
if(flag)
cout << flag;
for (int i = 0; i < len; ++i)
{
cout << str[i];
}
cout << endl;
}
第二题,还没有搞清楚怎么转……貌似我的理解和题目意思不同
第三题,怀疑用gets不给过,比赛后换了一种输入方法
#include <stdio.h>
#include <string.h>
#include <string>
#include <iostream>
using namespace std;
const int maxn = 1000000;
char p[maxn][maxn];
void ReverseWoords(char *str)
{
int k = 0;
scanf("%[^\n]]",str);
char *s;
s = strtok(str," ");
int len = strlen(s);
for(int i=0;i<len;i++)
p[k][i] = s[i];
k++;
while(s != NULL)
{
s = strtok(NULL," ");
if(s != NULL)
{
len = strlen(s);
for(int i=0;i<len;i++)
p[k][i] = s[i];
k++;
}
}
for (int i = k - 1; i > 0 ; --i)
{
for (int j = 0; p[i][j] ; ++j)
{
printf("%c",p[i][j]);
}
printf(" ");
}
for (int j = 0; p[0][j] ; ++j)
{
printf("%c",p[0][j]);
}
printf("\n");
}
int main()
{
char str[maxn];
ReverseWoords(str);
}