實驗9+指針實驗

第八章:指針

3(1)

編寫一個程序,輸入一個整數,利用指針變量返回該數的絕對值。

#include<iostream> 
using namespace std;
void f(int *p){
	if(*p>0)
		cout<<*p;
	else
		cout<<-*p;
}
int main(){
	int n;
	int *p=&n;
	cin>>n;
	f(p);
	return 0;
}

3(2)

編寫一個函數,計算數組中的最大元素及其下標,數組以指針方式傳遞。

#include<iostream>
using namespace std;
void maxn(int *p,int n){
	int maxnn=0,target;
	for(int i=0;i<n;++i){
		if(*(p+i)>maxnn){
			maxnn=*(p+i);
			target=i;
		}
	}
	cout<<maxnn<<" "<<target<<endl;
}
int main(){
	int a[10]={5,23,89,456,12,32,78,98,0,1};
	maxn(a,10);
	return 0;
} 

實驗9+指針實驗

1.

#include<iostream>
using namespace std;
swap(int *p1,int *p2){
	int temp;
	temp=*p1;
	*p1=*p2;
	*p2=temp;
}
int main(){
	int a=100,b=10;
	int *p1=&a,*p2=&b;
	cout<<a<<" "<<b<<endl;
	swap(p1,p2);
	cout<<a<<" "<<b<<endl;
	return 0;
} 

2.

#include<iostream>
using namespace std;
bool cmp(char *str1,char *str2){
	for(int i=0;*(str1+i)||*(str2+i);++i){
		if(*(str1+i)!='\0'&&*(str2+i)=='\0')
			return false;
		if(*(str1+i)=='\0'&&*(str2+i)!='\0')
			return false;
		if(*(str1+i)==*(str2+i)){
			continue;
		}else{
			return false;
		}
	}
	return true;
}
int main(){
	char *str1="abcdefg",*str2="abcdefg",*str3="abcdefghijklmn";

	cout<<"str1:"<<str1<<endl;
	cout<<"str2:"<<str2<<endl;
	cout<<"str3:"<<str3<<endl;
	
	if(cmp(str1,str2)){
		cout<<"str1 and str2 are same!"<<endl;
	}else{
		cout<<"str1 and str2 are not same!"<<endl;
	}
	
	if(cmp(str1,str3)){
		cout<<"str1 and str3 are same!"<<endl;
	}else{
		cout<<"str1 and str3 are not same!"<<endl;
	}
	
	return 0;
}

3.

#include<iostream>
#include<cstring>
using namespace std;
void strsort(char *p[],int n){
	char *temp;
	int i,j,k;
	for(i=0;i<n-1;++i){
		k=i;
		for(j=i+1;j<n;++j){
			if(strcmp(p[k],p[j])>0){
				k=j;
			}
		}
		if(k!=i){
			temp=p[i];
			p[i]=p[k];
			p[k]=temp;
		}
	}
}
int main(){
	char *a[]={"include","define","main","if","else","for","while","switch","break","continue"};
	strsort(a,10);	
	for(int i=0;i<10;++i){
		cout<<a[i]<<endl;
	}
	return 0;
}

11.

#include<iostream>
#include<cstring>
#include<string>
using namespace std;
void ssort(char (*p)[4]){
	int i,j;
	char temp[4];
	char *t=temp;
	for(i=0;i<9;++i){
		for(j=0;j<9-i;++j){
			if(strcmp(p[j],p[j+1])>0){
				strcpy(t,p[j]);
				strcpy(p[j],p[j+1]);
				strcpy(p[j+1],t);
			}
		}
	}
}
int main(){
	char a[10][4];
	char (*p)[4];
	for(int i=0;i<10;++i){
		cin>>a[i];
	}
	p=a;
	ssort(p);
	cout<<endl;
	for(int i=0;i<10;++i){
		cout<<a[i]<<endl;
	}
	return 0;
} 

12.

#include<iostream>
#include<cstring>
using namespace std;
void ssort(char *s[]){
	int i,j;
	char *temp;
	for(i=0;i<9;++i){
		for(j=0;j<9-i;++j){
			if(strcmp(*(s+j),*(s+j+1))>0){
				temp=*(s+j);
				*(s+j)=*(s+j+1);
				*(s+j+1)=temp;
			}
		}
	}
}
int main(){
	char a[10][20];
	char *p[10];
	for(int i=0;i<10;++i){
		p[i]=a[i];
		cin>>p[i];
	};
	ssort(p);
	cout<<endl;
	for(int i=0;i<10;++i){
		cout<<p[i]<<endl;
	}
	return 0;
}

15.

#include<iostream>
using namespace std;
struct Student{
	int a,b,c,d,e;
};
double average_a(Student *stu){
	double sum=0;
	for(int i=0;i<4;++i)
		sum+=(*(stu+i)).a;
	return sum/4;	
}
bool two_under(Student stu){
	int num=0;
	if(stu.a<60)
		++num;
	if(stu.b<60)
		++num;
	if(stu.c<60)
		++num;
	if(stu.d<60)
		++num;
	if(stu.e<60)
		++num;
	if(num>=2)
		return true;
	return false;
}
bool judge(Student stu){
	double sum1=0;
	int sum2=0;
	sum1=stu.a+stu.b+stu.c+stu.d+stu.e;
	if((sum1/5)>90)
		return true;
	if(stu.a>85&&stu.b>85&&stu.c>85&&stu.d>85&&stu.e>85)
		return true;
	return false;
}
int main(){
	Student stu[4];
	for(int i=0;i<4;++i){
		cout<<"No."<<i+1<<":";
		cin>>stu[i].a>>stu[i].b>>stu[i].c>>stu[i].d>>stu[i].e;
	}
	cout<<endl<<"The average of the first subject:"<<average_a(stu)<<endl<<endl;
	cout<<"The ones are not qualified:"<<endl;
	for(int i=0;i<4;++i){
		if(two_under(stu[i])){
			double sum=stu[i].a+stu[i].b+stu[i].c+stu[i].d+stu[i].e;
			cout<<"No."<<i+1<<":"<<stu[i].a<<" "<<stu[i].b<<" "<<stu[i].c<<" "<<stu[i].d<<" "<<stu[i].e<<" "<<sum/5<<endl;
		}
	}
	cout<<endl<<"The ones are qualified:"<<endl;
	for(int i=0;i<4;++i){
		if(judge(stu[i])){
			double sum=stu[i].a+stu[i].b+stu[i].c+stu[i].d+stu[i].e;
			cout<<"No."<<i+1<<":"<<stu[i].a<<" "<<stu[i].b<<" "<<stu[i].c<<" "<<stu[i].d<<" "<<stu[i].e<<" "<<sum/5<<endl;
		}
	}
	return 0;
}

18.

#include<iostream>
using namespace std;
int main(){
	char *month[13]={"error","January","February","March","April","May","June","July","August","September","October","November","December"};
	int n;
	cin>>n;
	if(n<=0||n>=13){
		cout<<"error"<<endl;
	}else{
		cout<<*(month+n);
	}
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章