注: 数据来源网学天地,如有侵权,告知删除。 练习程序用!
问题
思想
本质上其实就是计算矩阵四周元素的元素和
需要注意的几个点是:
- 考虑只有一行与一列的情况
- 注意每个元素相加的时候计算参与计算元素的总个数
- 最后
答案
#include
#include
using namespace std;
// 处理函数声明
float chuLi(int data[][5], int hang, int lie) {
int len;
lie=5;
len=0;
float sum=0;
if(hang==1) {
// 只有一行的情况
for(int i=0; i<lie; i++) {
sum+=data[0][i];
len++;
}
}else if(lie==1) {
// 只有一列的情况
for(int i=0; i<hang; i++) {
sum+=data[i][0];
len++;
}
}else {
// 多行多列的情况
// 加两行的元素
for(int i=0; i<lie; i++) {
sum= sum + data[0][i] + data[hang-1][i];
len+=2;
}
// 中间的两列相加
for(int i=1; i<hang-1; i++) {
sum= sum + data[i][0] + data[i][lie-1];
len+=2;
}
}
cout<<sum<<"--"<<len<<endl;
return sum/len ;
}
int main() {
int a[5][5] = {
{0,1,2,7,9},
{1,9,7,4,5},
{2,3,8,3,1},
{4,5,6,8,2},
{5,9,1,4,1}
};
// 调用处理函数
cout<<chuLi(a, sizeof(a)/sizeof(a[0]), 5);
return 0;
}
运行结果:
问题
答案
#include
using namespace std;
int main() {
int a,b,c;
cout<<"请输入a,b的值:";
cin>>a>>b;
c = (b%10)*1000 + (a%10) *100 + (b/10)*10 +(a/10);
cout<<c;
}
运行结果:
问题
答案
#include
#include
using namespace std;
// 处理素数函数声明
int suShu(int data[], int lim);
int main() {
int lim,k;
cout<<"请输入lim:";
cin>>lim;
int data[lim/2];
// 记录素数
k = suShu(data, lim);
cout<<"个数:"<<k<<endl;
for(int i=0; i<k; i++) {
cout<<data[i]<<ends;
}
}
// 计算素数
int suShu(int data[], int lim) {
int k=0;
for(int i=2; i<=lim; i++) {
// 判断i是不是素数
// 默认是
bool flag = true;
for(int j=2; j<sqrt(i); j++) {
if(i%j==0) {
flag = false;
break;
}
}
if(flag)
data[k++] = i;
}
return k;
}
运行结果:
问题
答案
#include
using namespace std;
typedef struct stu {
string sno;
int score;
} stu;
// 处理函数声明
int chuLi(stu data[], stu b[]);
int main() {
stu data[5] = {
{"asd",55},
{"dsc",59},
{"cvf",95},
{"fza",55},
{"gfv",55}
};
stu b[5];
// 调用处理函数
int len = chuLi(data,b);
// 输出查看
for(int i=0; i<len; i++) {
cout<<b[i].sno<<":"<<b[i].score<<endl;
}
}
// 处理函数实现
int chuLi(stu data[], stu b[]) {
int num=0, min_score;
min_score = data[0].score;
// 先找出最小的
for(int i=1; i<5; i++) {
if(data[i].score<min_score) {
min_score = data[i].score;
}
}
// 在判断与最小的相等的放入b数组
for(int i=0; i<5; i++) {
if(data[i].score==min_score) {
b[num++] = data[i];
}
}
return num;
}
运行结果:
问题
答案
#include
using namespace std;
// 处理函数声明
void chuLi(string str, char t[]);
int main() {
string str;
cout<<"请输入一个字符串:";
cin>>str;
char t[str.length()];
// 调用处理函数
chuLi(str, t);
// 输出展示
for(int i=0; t[i]; i++) {
cout<<t[i];
}
}
//处理函数实现
void chuLi(string str, char t[]) {
int k=0;
for(int i=0; i<str.length(); i++) {
if(str[i] % 2!=0) {
t[k++] = str[i];
}
}
}
运行结果:
问题
答案
#include
using namespace std;
// 处理函数声明
int fun(int m, int data[]);
int main() {
int m, n;
cout<<"请输入m:";
cin>>m;
int data[m];
// 调用处理函数
n = fun(m,data);
// 输出查看
for(int i=0; i<n; i++) {
cout<<data[i]<<ends;
}
}
// 处理函数实现
int fun(int m, int data[]){
int n=0;
for(int i=1; i<m; i++) {
if(i%7 == 0|| i%11 == 0) {
data[n++] = i;
}
}
return n;
}
运行结果:
问题
答案
#include
using namespace std;
// 求pai函数声明
double getPi(double jd);
int main() {
double pi, jd;
cout<<"请输入精度:";
cin>>jd;
//获取pi
pi = getPi(jd);
cout<<"pi:"<<pi;
}
// 求pi函数实现
double getPi(double jd){
// t用于累加
double pi=0, t=1, tsum=0;
int zf = 1;
while(1.0/t>jd) {
tsum += 1.0/t * zf;
t+=2;
zf*=-1;
}
pi = 4 * tsum;
return pi;
}
运行结果:
问题
答案
#include
using namespace std;
// 处理函数声明
int chuLi(int data[], int low, int high);
int main() {
int low,high,len;
cout<<"请输入low,high:";
cin>>low>>high;
int data[(high-low)/2];
// 调用处理函数
len = chuLi(data, low, high);
// 输出查看
for(int i=0; i<len; i++) {
cout<<data[i]<<ends;
}
}
// 处理函数实现
int chuLi(int data[], int low, int high) {
int len=0;
for(int i=low; i<=high; i++) {
if((i%7==0 || i%11==0) && !(i%7==0 && i%11==0)) {
data[len++] = i;
}
}
return len;
}
运行结果:
问题
答案
#include
using namespace std;
typedef struct stu{
string sno;
int score;
} stu;
// 处理函数声明
int chuli(stu data[],int n, stu data_t[]);
int main() {
stu data[5] = {
{"dsada",25},
{"dfddf",56},
{"bgbx",85},
{"dbgssa",46},
{"dvsd",77}
};
stu data_t[5];
int sum;
// 调用处理函数
sum = chuli(data,sizeof(data)/sizeof(data[0]), data_t);
// 输出查看
for(int i=0; i<sum; i++) {
cout<<data_t[i].sno<<":"<<data_t[i].score<<endl;
}
}
// 处理函数实现
int chuli(stu data[],int n, stu data_t[]) {
// 获取到平均数
float avg=0;
int len=0;// 统计
for(int i;i<n; i++){
avg+=data[i].score;
}
avg/=n;
// 统计大于平均分的
for(int i=0; i<n; i++) {
if(data[i].score>avg){
data_t[len++] = data[i];
}
}
return len;
}
运行结果:
问题
答案
#include
#include
using namespace std;
// 我们采用反转的思想
void fanzhuan(char c[], int low, int high);
int main() {
char c[15];
cout<<"请输入一组字符";
cin>>c;
int num=0;
// 统计前面星星数量
while(c[num++]=='*');
num--;
// 调用反转函数
// 1.整体反转(传下标)
fanzhuan(c,0,strlen(c));
// 前部分反转
fanzhuan(c,0,strlen(c)-num);
// 后部分反转
fanzhuan(c, strlen(c)-num, strlen(c));
// 输出查看
cout<<c;
}
// 反转函数实现
void fanzhuan(char c[], int low, int high) {
int mid = (high-low)/2;
for(int i=0; i<mid; i++) {
char t = c[low+i];
c[low+i] = c[high-i-1];
c[high-i-1] = t;
}
}
运行结果: