1
2
#include <iostream>
#include <cstring>
#include <string>
const int ArSize = 10;
void strcount(std::string str);
int main()
{
using namespace std;
string input;
char next;
cout<<"Enter a line:\n";
getline(cin,input);
while(input!=""){
strcount(input);
cout<<"Enter next line (empty line to quit):\n";
getline(cin,input);
}
cout<<"Bye\n";
getchar();
getchar();
return 0;
}
void strcount(std::string str){
using namespace std;
static int total = 0;
int count = 0;
int i = 0;
while(str[i]!='\0' && i<ArSize)if(isalpha(str[i++]))count++;
total += count;
i=0;
cout<<"\"";
while(i<ArSize && str[i]!='\0')cout<<str[i++]; //输出全部或前ArSize个字符。
cout<<"\" contains "<<count<<" characters\n"<<total<<" characters total\n";
}
3
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
const int RANGE = 1024;
const int SIZE = 2;
char zone[RANGE];
struct charff{
char dross[20];
int slag;
};
int main(){
charff *p1 = new (zone) charff[SIZE];
// charff *p1 = new (zone+SIZE*sizeof(charff)) charff[SIZE];
charff *p2 = new charff[SIZE];
strcpy(p1->dross,"apex"); // 存储在静态数组缓冲区
p1->slag = 1;
strcpy((p1+1)->dross,"legends");
(p1+1)->slag = 5;
for(int i=0;i<SIZE;i++){
cout<<(p1+i)->dross<<'\t'<<(p1+i)->slag<<endl;
}
cout<<(void*)zone<<'\t'<<p1<<endl; // 验证地址
strcpy(p2->dross,"ikun"); // 由new自动分配
p2->slag = 2;
strcpy((p2+1)->dross,"igang");
(p2+1)->slag = 0;
for(int i=0;i<SIZE;i++){
cout<<(p2+i)->dross<<'\t'<<(p2+i)->slag<<endl;
}
cout<<p2<<endl; // 验证地址
getchar();
return 0;
}
4
sale.h
namespace SALES{
const int QUARTERS = 4;
struct Sales{
double sales[QUARTERS];
double average;
double max;
double min;
};
void setSales(Sales & s,const double ar[],int n);
void setSales(Sales &s);
void showSales(const Sales & s);
}
sale.cpp
#include <iostream>
#include <algorithm>
#include "sale.h"
namespace SALES
{
using std::cin;
using std::cout;
using std::endl;
using std::max;
using std::min;
void setSales(Sales &s, const double ar[], int n)
{
// 初始化
for(int i=0;i<QUARTERS;i++)s.sales[i]=0;
s.average = 0;
// 数组为空时
if(n==0){
s.max = 0;
s.min = 0;
return ;
}
// 数组非空时
s.max = ar[0];
s.min = ar[0];
int less = min(QUARTERS, n);
for (int i = 0; i < less; i++)
{
s.sales[i] = ar[i];
s.max = max(ar[i],s.max);
s.min = min(ar[i],s.min);
s.average+=ar[i];
}
s.average/=less;
}
void setSales(Sales &s) {
// 初始化
int i=0,n=0;
s.average = 0;
while(n<QUARTERS){
cout<<"enter sale#"<<n+1<<" : ";
cin>>s.sales[n];
n++;
}
s.max = s.sales[0];
s.min = s.sales[0];
for (i = 0; i < QUARTERS; i++)
{
s.max = max(s.sales[i],s.max);
s.min = min(s.sales[i],s.min);
s.average+=s.sales[i];
}
s.average/=QUARTERS;
}
void showSales(const Sales &s) {
for(int i=0;i<QUARTERS;i++){
if(s.sales[i]==0)break;
cout<<"sale #"<<i+1<<" : "<<s.sales[i]<<endl;
}
cout<<"max : "<<s.max<<endl;
cout<<"min : "<<s.min<<endl;
cout<<"average : "<<s.average<<endl;
}
}
main.cpp
#include<iostream>
#include "sale.h"
int main(){
using namespace SALES;
Sales sales1,sales2;
const double arr[5] = {1.1,2.2,3.3,4.4,5.5};
setSales(sales1,arr,5);
showSales(sales1);
setSales(sales2);
showSales(sales2);
return 0;
}