1,编写一个程序,将从键盘输入的n个字符串保存在一个一维数组A中,在输入字符串之前,先输入n的值,要求数组A需要动态申请空间,程序运行结束前再释放掉。
2,在题目一的基础上,输出n个字符串中最长的和最短的串,计算n个串的平均长度,并输出结果。
自学的,没有老师同学,挺尴尬的,给讲详细点吧。谢谢了。
#include <iostream>
using namespace std;
int main()
{
int n,i;
string *A;
int max=0;
int min = 0;
int avg = 0;
cin>>n;
if(n>0)
{
A = new string[n];
for(i=0;i<n;i++)
{
cin>>A[i];
if(A[max].length() < A[i].length())
max = i;
if(A[min].length() > A[i].length())
min = i;
avg += A[i].length();
}
cout<<"最长的串:"<<A[max]<<endl;
cout<<"最短的串:"<<A[min]<<endl;
cout<<"平均长度:"<<avg/n<<endl;
delete []A;
}
return 0;
}
题目1代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
char* A=0;
printf("请输入n的值:");
scanf("%d",&n);
A = (char*)malloc(n+1);
printf("请输入字符串:");
scanf("%s",A);
A[n] = '\0';
printf("字符串为:%s\n",A);
free(A);
return 0;
}
题目2代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i,n;
int max,min;
int maxindex,minindex;
float avg;
char** A=0;
printf("请输入n的值:");
scanf("%d",&n);
A = (char**)malloc(n*sizeof(char*));
printf("请输入%d个字符串:",n);
for (i=0;i<n;i++)
{
A[i] = (char*)malloc(100);
scanf("%s",A[i]);
if(i==0)
{
max = strlen(A[i]);
min = max;
maxindex=0;
minindex = 0;
}else
{
if(strlen(A[i]) > max)
{
maxindex = i;
max = strlen(A[i]);
}
if(strlen(A[i]) < min)
{
minindex = i;
min = strlen(A[i]);
}
}
avg += strlen(A[i]);
}
avg /= n;
printf("最长的串%s\n",A[maxindex]);
printf("最短的串%s\n",A[minindex]);
printf("平均长度:%f\n",avg);
for (i=0;i<n;i++)
{
free(A[i]);
}
free(A);
return 0;
}