#include <stdio.h>
#include <string.h>
void reverse (char* str)
{
int len=strlen(str);//求字符串的长度
if(str==NULL)//字符串是空的就直接返回
return;
char t;
for(int i=0,j=len-1;i<j;i++,j--)//双指针遍历
{
t=str[i]; //将初始位置的字符存到t中
str[i]=str[j]; //将最后一个字符赋值给初始初始位置
str[j]=t; //将t赋值给最后一个字符
//以此类推 第二个位置和倒数第二个位置,第三个位置和倒数第三个位置等等,
//直到中间位置 判断条件(i<j)
}
}
int main() {
char str[100];
printf("请输入一个字符串:");
fgets(str,100,stdin);
reverse(str);
printf("逆序后的字符串为:%s", str);
return 0;
}
优化之后
#include <stdio.h>
double index(double x, int n) {
double result = 1.0;
if (n == 0)
return 1.0;
else if (n > 0) {
for (int i = 1; i <= n; i++)
result *= x;
return result;
} else { // 负指数情况
for (int i = 1; i <= -n; i++) // 取绝对值
result *= (1.0 / x); // 将底数取倒数
//result /= x; 这样写也行
}
return result;
}
int main()
{
double x;
int n;
scanf("%lf %d",&x,&n);
double result = index(x,n);
printf("%lf",result);
return 0;
}
拓展(公式题)
#include <iostream>
using namespace std;
int main()
{
int n;
while( cin >> n,n)//当读到n=0的时候停止
{
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
int v=1;
for (int k=0;k<i+j;k++) v*=2;
cout << v <<' ';
}
cout << endl;
}
cout << endl;
}
return 0;
}
#include <stdio.h>
int main() {
int a[60];
int len = 0;
// 读取输入并存储在数组a中
for(int i = 0; i < 60; i++) {
if(scanf("%d", &a[i]) != EOF) //文件终止
{
len++;
}
}
// 逆序输出数组a中的元素
int *k;
for (k = len - 1+a; k >= a; k--) {
printf("%d ", *k);
}
return 0;
}
写法一:
#include<stdio.h>
int main(){
int i,n;
scanf("%d",&n);
double a[1000];
for(i=0;i<n;i++){
scanf("%lf ",&a[i]);
}
double max,min,ave,sum;
max=a[0],min=a[0],sum=0;
for(i=0;i<n;i++){
if(a[i]<min)
min=a[i];
if(a[i]>max)
max=a[i];
sum+=a[i];
}
ave=sum*1.0/n;
printf("ave=%.2lf\n",ave);
printf("max=%.2lf\n",max);
printf("min=%.2lf\n",min);
return 0;
}
写法二:(并非本人所创,取自好友)
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
cin>>n;
vector<double>arr(n);
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
double min=arr[0];
double max=arr[0];
double sum=0;
for(int i=0;i<n;i++)
{
sum+=arr[i];
if(min>arr[i])
min=arr[i];
if(max<arr[i])
max=arr[i];
}
double ave=sum*1.0/n;
printf("average = %.2f\n",ave);
printf("max = %.2f\n",max);
printf("min = %.2f\n",min);
return 0;
}
使用 vector
有几个好处:
-
动态大小:
vector
允许你在运行时动态地改变容器的大小,这意味着你不需要提前知道数组的大小,可以根据输入的n
动态分配空间。 -
容易使用:
vector
提供了很多方便的方法来管理元素,如push_back
、pop_back
等,这些方法可以简化代码,减少出错的可能性。 -
自动内存管理: 使用
vector
不需要手动管理内存,它会自动处理内存的分配和释放,避免了内存泄漏和段错误等问题。 -
安全性:
vector
提供了边界检查,可以防止访问越界导致的错误,这可以增加代码的健壮性。
综上所述,使用 vector
能够使代码更加简洁、安全和灵活,特别是在需要动态管理数组大小的情况下。