c/c++面試程式設計題
阿新 • • 發佈:2019-02-09
2. 編寫一個c函式,將“I am from shanghai”,倒置為“shanghai from am I”,及將句子的單詞位置倒置,而不改變單詞內部結構
3. 寫一個函式找出一個整數陣列中,第二大的數//編寫一個c函式,將“I am from shanghai”倒置為“shanghai from am I”,及將句子的單詞位置倒置,而不會改變單詞內部結構 //思路:先將字串中單詞的倒置,再將字串倒置 #include <iostream> using namespace std; void change(char *p) { int n = 0; int length = strlen(p); //字串的長度 for(int i = 0;i<length+1;i++) { //判斷字串中空格的位置,和結束的位置 if((*(p+i+1) ==' ')||(*(p+i+1) == '\0')) { //*(p+i+1)是判斷當前位置後一位是否為空格或者指標結束的位置 int m = i; //*(p+n)上一個空格的後一位即當前單詞的首字母,*(p+m)當前單詞的末字母 for(;n<m;n++,m--) { char temp = *(p+m); *(p+m) = *(p+n); *(p+n) = temp; } n = i+2; } ////*(p+i)是判斷當前位置是否為空格或者指標結束的位置 //if(*(p+i) == ' '||*(p+i) == 0) //{ ////*(p+n)上一個空格的後一位即當前單詞的首字母,*(p+m)當前單詞的末字母 // int m = i-1; // for(;n<m;n++,m--) // { // char temp = *(p+m); // *(p+m) = *(p+n); // *(p+n) = temp; // } // n = i+1; // } } //將字串整體倒置 for(int i = 0;i<length; i++,length--) { char temp = *(p+length-1); *(p+length-1) = *(p+i); *(p+i) = temp; } } void main() { char str[] ="I am from shanghai"; cout<<"正序:"<<str<<endl; change(str); cout<<"倒序:"<<str<<endl; cin.get(); }
4. 通過程式設計實現輸出2的1000次方//寫一個函式找出一個整數陣列中,第二大的數 #include <iostream> using namespace std; int search(int *str) { int max = str[0]; int second = 0; int i = 0; while(str[i] != '\0') { if(second <=str[i])//比第二大 { if(max <= str[i])//比第一大 { //第二繼承第一,第一繼承str[i] second = max; max = str[i]; } else//比第一小 second = str[i]; } i++; } return second; } void main() { int str[100]={90,84,65,95,87}; int second = search(str); cout<<second<<endl; cin.get(); }
6.有一分數序列:1/2,1/4,1/6,1/8.....,用函式呼叫的方法,此數列前20項的和//通過程式設計實現輸出2的1000次方 #include<iostream> #define N 1000 using namespace std; void count(int *num) { *num = 1; int opt = 0; for(int i = 0;i<N;i++) { for(int j = 0;j<999;j++)//將數組裡面的每一位*2 { *(num+j) *= 2; } for(int j = 0;j<999;j++) { //判斷數組裡面的每一位是否大於9,進位 if(*(num + j) > 9) { *(num +j+1) += 1; *(num + j) %= 10; } } } for(int i = 998;i >= 0; i--) { if(num[i] != 0) { opt = 1; } if(opt == 1) { cout<<*(num+i); } } cout<<endl; } void main() { int num[999]; memset(num,0,sizeof(num));//將數組裡面的內容清0 count(num); cin.get(); }
//有一分數序列:1/2,1/4,1/6,1/8.....,用函式呼叫的方法,此數列前20項的和
//我用的遞迴的方法
#include <iostream>
using namespace std;
double num(double N)
{
if(N == 42)
{
return 0;
}
return 1/N + num(N+2);
}
void main()
{
double N = 2;
cout<<num(N)<<endl;
system("pause");
}