4、字符串分割
题目描述
•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(输入2次,每个字符串长度小于100)
输出描述:
输出到长度为8的新字符串数组
示例1
输出
复制abc00000 12345678 90000000
代码:
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; #define MAX_INPUT_SIZE 100 int main() { int nInputLine = 0; int nStrLen = 8; char szInput[MAX_INPUT_SIZE] = {0}; while(cin >> szInput && nInputLine < 2) { nInputLine++; int nLen = strlen(szInput); int nLine = nLen / 8; for(int j = 0; j < nLen / 8; j++) { for(int k = 0; k < 8; k++) { printf("%c", szInput[j * 8 + k]); } printf(" "); } if(nLen % 8 > 0) { for(int k = 0; k < nLen % 8; k++) { printf("%c", szInput[nLine * 8 + k]); } for(int k = nLen % 8; k < 8; k++) { printf("0"); } printf(" "); } } return 0; }
这道题我竟然一次就通过了。。
5、进制转换
题目描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 )
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。
示例1
输出
复制10
代码:
#include <iostream> #include <stdio.h> #include <string.h> #define MAX_SIZE 0x100 int main() { char szInput[MAX_SIZE] = {0}; //scanf("%s", szInput); while(scanf("%s", szInput) != EOF) { int nRes = 0; int nLen = strlen(szInput); for(int nIndex = 2; nIndex <= nLen; nIndex++) { if(('A' <= szInput[nIndex] && szInput[nIndex] <= 'F') || ('0' <= szInput[nIndex] && szInput[nIndex] <= '9')) { int nTmp = 0; switch(szInput[nIndex]) { case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': nTmp = szInput[nIndex] - 'A' + 10; break; default: nTmp = szInput[nIndex] - '0'; break; } nRes = nRes * 16 + nTmp; } } printf("%d ", nRes); memset(szInput, 0, MAX_SIZE * sizeof(char)); } //system("pause"); return 0; }
6、质数因子
题目描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
最后一个数后面也要有空格
详细描述:
函数接口说明:
public String getResult(long ulDataInput)
输入参数:
long ulDataInput:输入的正整数
返回值:
String
输入描述:
输入一个long型整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。
示例1
输出
复制2 2 3 3 5
代码:
#include <iostream> #include <stdio.h> #include <string.h> #include <math.h> #define MAX_SIZE 0x100 int IsPrimeNum(long lNum) { if(1 == lNum || 2 == lNum) { return 1; } int nFlag = 1; //for(long i = 2; i <= lNum / 2; i++) for(long i = 2; i <= sqrt((double)lNum); i++) { if(lNum % i == 0) { nFlag = 0; } } return nFlag; } int GetPrimeNum(long lNum) { if(IsPrimeNum(lNum)) { printf("%ld ", lNum); return 1; } for(long i = 2; i < lNum / 2; i++) { if(IsPrimeNum(i) && lNum % i == 0) { printf("%ld ", i); GetPrimeNum(lNum / i); break; } //递归 } } int main() { long lInput = 0; scanf("%ld", &lInput); if(lInput <= 0) { return 0; } if(1 == lInput) { printf("1 "); return 0; } if(2 == lInput) { printf("2 "); return 0; } if(IsPrimeNum(lInput)) { printf("%ld ", lInput); return 0; } //for(long i = 2; i < lInput / 2;) for(long i = 2; i < sqrt((double)lInput);) { if(IsPrimeNum(i) && lInput % i == 0) { printf("%ld ", i); lInput /= i; if(IsPrimeNum(lInput)) { printf("%ld ", lInput); break; } continue; } i++; } //GetPrimeNum(lInput); system("pause"); return 0; }