1,八进制
-
题目描述:
-
输入一个整数,将其转换成八进制数输出。
-
输入:
-
输入包括一个整数N(0<=N<=100000)。
-
输出:
-
可能有多组测试数据,对于每组数据,
输出N的八进制表示数。
-
样例输入:
-
7 8 9
-
样例输出:
-
7 10 11
总结:模8就是取低3位,然后右移三位;没必要翻转,放在数组中,从后向前输出即可。
#include<iostream>
using namespace std;
int main(){
int n,i,j;
int num[10000];
while(cin>>n){
i=0;
while(n){
num[i++] = n%8;
n = n>>3;
}
for(j = i-1;j>0;j--){
cout<<num[j];
}
cout<<num[0]<<endl;
}
return 0;
}
2,最长&最短文本
-
题目描述:
-
输入多行字符串,请按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。
-
输入:
-
输入包括多行字符串,字符串的长度len,(1<=len<=1000)。
-
输出:
-
按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。
-
样例输入:
-
hello she sorry he
-
样例输出:
-
he hello sorry
总结:这个是自己想出来的,有些。。。。。。
#include<stdio.h>
#include<string.h>
int main(){
int i=0;
int h=0;
int max[200];
int k=0;
int min[200];
int len;
char str[1000][1001];
while(scanf("%s",str[i]) != EOF){
len=strlen(str[i]);
if(k==0){
min[199] = len;
min[k++] = i;
i++;
continue;
}
if(min[199]==len){
min[k++] = i;
}
if(min[199] > len){
k=0;
min[k++] = i;
min[199] = len;
}
if(min[199] < len){
if(h==0){
max[199] = len;
max[h++] = i;
i++;
continue;
}
if(max[199] == len){
max[h++] =i;
}
if(max[199] < len){
h=0;
max[h++] =i;
max[199] = len;
}
}
i++;
}
for(i=0;i<k;i++){
printf("%s\n",str[min[i]]);
}
for(i=0;i<k;i++){
printf("%s\n",str[max[i]]);
}
return 0;
}
总结:这个是参考的,结构体不是需要的,感觉还是有些问题:如果输入的都是一样的字符串,会输出两遍,会不会题目就是这样要求的,操,上面的代码我还单步调试了,没发现错误,就是没有accepted。
#include <stdio.h>
#include <string.h>
typedef struct
{
char str[1001];
int len;
}CharString;
int main()
{
CharString arr[1000];
int cnt = 0;
int i,max,min;
while(scanf("%s",arr[cnt].str) != EOF)
{
arr[cnt].len = strlen(arr[cnt].str);
cnt++;
}
max = min = arr[0].len;
for(i = 0;i < cnt;i++)
{
if(min > arr[i].len)
{
min = arr[i].len;
}
if(max < arr[i].len)
{
max = arr[i].len;
}
}
for(i = 0;i < cnt;i++)
{
if(arr[i].len == min)
{
printf("%s\n",arr[i].str);
}
}
for(i = 0;i < cnt;i++)
{
if(arr[i].len == max)
{
printf("%s\n",arr[i].str);
}
}
return 0;
}