标签:
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;
}
标签:
原文地址:http://www.cnblogs.com/mengfanrong/p/5080037.html