码图系统期末复习资料

5.实现指定函数swap
#include<stdio.h>
void swap(int*array,int n)
{
	int mid;
	if(array!=NULL&&n>0)
	{
		mid=array[0];
	    array[0]=array[n-1];
		array[n-1]=mid;
	}
		else
			printf("error");
}
int main()
{
	void swap(int*array,int n);
		int a[5],i;
	for(i=0;i<5;i++)
		scanf("%d",&a[i]);
    swap(a,5);
	return 0;
}

7. 实现指定函数printSize
#include<stdio.h>
	void printSize(int * first,int * last)
	{
		if(first==NULL||last==NULL||last<first)
			printf("error");
		else
		{
       int z=last-first+1;
	   int a=0,i;
		for(i=0;i<z;i++)
			a=a+sizeof(*first);
		first++;
	   printf("%d,%d\n",z,a);
		}
	}



8.swap
#include<stdio.h>
struct Person
{
  int age;
  int height;
};
void swap(Person * array,int n);

void swap(Person * array,int n)
{
 if(array==NULL||n<1)
 {printf("error");}
 else 
 {
  int a;
  a=array[0].height;array[0].height=array[n-1].height;array[n-1].height=a;
 }
}


15.求最小公倍数和最大公约数	
#include<stdio.h>
int main()
{
	int x,y,k,max ;
	scanf("%d %d",&x,&y);
	if(x>=y)
	{max=x;
	}
else
{max=y;
	}	
	for(k=max;;k--){
		if(x%k==0&&y%k==0)
		break;
	}
	
	
	printf("%d,%d",k,x*y/k);
	return 0;
	
}
16.求π的值
#include<stdio.h>
int main()
{
	double b,n,a,c;
	a=c=1.0;
    n=0;
		scanf("%lf",&b);
	while(n>=0)
	{
	n=n+a;
		if((a*2)<b)
			break;
		a=a*c/(2*c+1);
		c++;
	}
	printf("%lf",n*2);
	return 0;
}


18.素数
#include<stdio.h>
#include<math.h>
int main()
{
	int a,b;
	scanf("%d",&b);
	if(b<=3)
	{
	printf("error");
	scanf("%d",&b);
	}
	for(a=2;a<b;a++)
	if(b%a==0)
	printf("no");
	else printf("yes");
	return 0;

19.1-n的阶乘之和
#include<stdio.h>
int main(){
	int n,m,t;
	m=1,t=0;
	scanf("%d",&n);
	if(n<1||n>10){
		printf("error");
		
	} 
	else{
		for(int i=1;i<=n;i++){
			m=m*i;
			t=t+m;
			
		}
		printf("%d\n",t); 
	}
	return 0;
}
35.insert
#include <stdio.h>
#include <string.h>
void insert(char * s1,char * s2, int n)
{
    char a[255];
    int i, j, k, len1, len2;
    if(n<0 || s1==NULL || s2==NULL)
    {
        printf("error\n");
        return;
    }
    len1 = 0;
    while(s1[len1] != ' ')
    {
        len1++;
    }
    len2 = 0;
    while(s2[len2] != ' ')
    {
        len2++;
    }
    if(n>len1)
    {
        printf("error\n");
        return;
    }
    for(i=0; i<n; i++)
    {
        a[i] = s1[i];
    }
    for(j=0; j<len2; j++)
    {
        a[n+j] = s2[j];
    }
    for(j=i; j<len1; j++)
    {
        a[len2+j] = s1[j];
    }
    for(k=0; k<len1+len2; k++)
    {
        s1[k] = a[k];
    }
    s1[k] = ' ';
    k++;
    for(;k<strlen(s1); k++)
    {
        s1[k] = 0;
    }
}


36.del
#include<stdio.h>
void del(char * s,int n,int len)
{
    if(n<0||s==NULL||len<0)
    {
        printf("error");
        return;
    }
    int i,j;
    for(i=0;i<n;i++)
        if(s[i]==' ')
        {
            printf("error");
            return;
        }
    for(j=n;j<n+len;j++)
        if(s[j]==' ')
        {
            printf("error");
            return;
        }
    for(i=n;s[i+len]!=' ';i++)
        s[i]=s[i+len];
    for(j=i;j<i+len;j++)
        s[j]=' ';
}
37.删除字符串中连续相同字符
#include<stdio.h>
int main(){
	char a[50];char a[50]char*p=a;gets(a)while(*p!=)
	char *p=a;
	gets(a);
	while(*p!='\0'){
		if(*p==*(p+1)&&!((*p>='0'&&*p<='9')||(*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z'))){
			p++;
			 
		}
		else{
			printf("%c",*p);%c,*p
			p++;
		}
	}
	return 0;
}
40.逆序
#include<stdio.h>
void * reversememcpy ( void * destination, const void * source, int num )
{
	char *des=(char *)destination;
	char *sou=(char *)source;
	int i;
	if (num<0 || source==0|| destination==0)
	{  printf("error");return 0;}
	if(((char *)destination+num>=(char *)source) && (char *)destination<=(char *)source)
			{  printf("error");return 0;}
	if(((char *)destination-num<=(char *)source) && (char *)destination>=(char *)source)
			{  printf("error");return 0;}
	for (i=0;num>0;i++)
	{
		*((char *)destination+i)=*((char *)source+num-1);num--;
	}
   return (destination);y
}
41.对结构体进行排序
#include<stdio.h>
struct Person{
	int no;
	int age;
	int height;
}temp;
void sort(Person * array,int n){
	int i=0,j=0;
	if(n<=0||array==NULL){
		printf("error");
	}
	else{
		for(i=0;i<n-1;i++){
			for(j=0;j<n-1-i;j++){
				if(array[j].no>array[j+1].no){
					temp=array[j];
					array[j]=array[j+1];
					array[j+1]=temp;
				}
				else {
					if(array[j].no==array[j+1].no&&array[j].age>array[j+1].age){
						temp=array[j];
						array[j]=array[j+1];
						array[j+1]=temp;
					}
					else{
						if(array[j].age==array[j+1].age&&array[j].height>array[j+1].height){
							temp=array[j];
							array[j]=array[j+1];
							array[j+1]=temp;
						}
					}
				}
			}
		}
	}
}
48.冒泡排序
#include<stdio.h>
int main(void)
{
   int a[10],i,j,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++) 
for(i=0;i<9-j;i++) 
if(a[i]>a[i+1]) 
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf(" ");
}
50.颠倒输出
#include<stdio.h>
void main()
{
	char c,s[50];
	int i,j=0;
	while((s[j++]=getchar())!='\n');
	for(i=0,j-=2;i<j;i++,j--)
	{
		c=s[j];
		s[j]=s[i];
		s[i]=c;
	}
	for(i=0;s[i]!='\n';i++)
		printf("%c",s[i]);
}

52.将输入字符串变为大写
#include<stdio.h>
#include<string.h> 
int main() 
{
	char a[20];
	char *p=a;
	gets(a);
	while(*p!='\0'){
		if(*p>='a'&&*p<='z'){
			*p=*p-32;
			printf("%c",*p);
			p++;
		}
		else{
			printf("%c",*p);
			p++;
		}
	} 
	printf("\n");
	return 0;
 }
53.实现冒泡排序的函数
void bubbleSort(int data[50],int n)
{
	int a,b,c;
	for(a=0;a<50;a++)
	{
		for(b=a+1;b<50;b++)
		{
			if(data[a]<data[b])
			{
				c=data[a];
				data[a]=data[b];
				data[b]=data[a];
			}
		}
	}
}


57.统计字符串个数
#include<stdio.h>
int CalString(char *str){
	int p=0;
	for(;*str!='\0';str++){
		if(*str>='0'&&*str<='9'||*str>='a'&&*str<='z'||*str>='A'&&*str<='Z'){
			p=p;
		}
		else{
			p++;
		}
	}
	return p;
} 
int main()
{
	char a[100];
	gets(a);
	int p=CalString(a);
	printf("%d",p);
	return 0;
}
89.计算加减表达式
#include<stdio.h>

int main(){
float digit;
	int i=0;
	char sig;
	scanf("%f",&digit);
	float result=digit;
	scanf("%c",&sig);
	if(sig!='+'&&sig!='-'&&sig!=';'||sig=='\0'){
		printf("error");
		return 0;
	}
	while(sig!=';'){
		scanf("%f",&digit);
		if(sig=='+'){
			result=result+digit;
			
		}
		if(sig=='-'){
			result=result-digit;
		}
		scanf("%c",&sig);
		if(sig!='+'&&sig!='-'&&sig!=';'||sig=='\0'){
			i++;
			break;
		}
	}
	if(i==0){
		printf("%.6f",result);
		
	}
	if(i!=0){
		printf("error");
	}
	return 0;
}
91.计算e的x次方
#include<stdio.h>
#include<math.h>
int main()
{
    double a,b,c,x,d;
	int n;
	double e;
    a=b=c=e=1;
	scanf("%lf %d",&x,&n);
	if(n<0)
		printf("error");
		else
	{
		while(a<=n)
		{
			b=b*a;
			a++;
			d=pow(x,c);
			e=d/b+e;
			c++;
		}
		printf("%.6lf",e);
	}
	return 0;
}
92. #include<stdio.h>
#include<math.h>
int main()
{
	unsigned int m,k=0;
	scanf("%u",&m);
	while(pow((float)2,(float)k)<=m)
		k++;
	printf("%u\n",k-1);
	return 0;
}
107. 数组中的值逆序存放
#include<stdio.h>
	int ReverseArray(int array[], int size)
	{
		int n,m;
		if((size<=0)||(array==NULL))
		  return 0;
		else
		{
			for(n=0;n<size-n;n++)
			{
				m=array[size-n-1];
				array[size-n-1]=array[n];
				array[n]=m;
			}
	
			return 1;
		}
	}


109. 统计一行字符的单词数
#include<stdio.h>
#include<string.h>
int main()
{
   char s[256];
   int num=0,i,word=0;
   gets(s);
   int a=strlen(s);
	  for(i=0;i<a;i++)
	   {
		   if(s[i]==' ')
		   {
			   word=0;
		   }
		   else
		   {
			   if(word==0)
			   {
				   num++;
				   word=1;
			   }
			   else
			   {
				   word=1;
			   }
		   }
	   }
	   printf("%d\n",num);
	   return 0;
}
110.学生管理系统
#include <stdio.h>
#include <string.h>
struct Node{
    char name[25];
    int f;
    char str[10];
    double h;
    int l,r;
}P[100];
int main(){
    int n;
    scanf("%d",&n);
    int C_max=0,C_min=100,C_sum=0;
    int Ca_max=0,Ca_min=100,Ca_sum=0;
    for (int i=0;i<n;i++){
        scanf("%s %d %s %lf %d %d",P[i].name,&P[i].f,P[i].str,&P[i].h,&P[i].l,&P[i].r);
        if (P[i].l>C_max) C_max=P[i].l;
        if (P[i].l<C_min) C_min=P[i].l;
        if (P[i].r>Ca_max) Ca_max=P[i].r;
        if (P[i].r<Ca_min) Ca_min=P[i].r;
        C_sum+=P[i].l;
        Ca_sum+=P[i].r;
    }
    printf("C_average:%d\n",C_sum/n);
    printf("C_max:%d\n",C_max);
    for (int i=0;i<n;i++){
        if (P[i].l==C_max){
            printf("%s %d %s %.2f %d %d\n",P[i].name,P[i].f,P[i].str,P[i].h,P[i].l,P[i].r);
        }
    }
    printf("C_min:%d\n",C_min);
    printf("Calculus_average:%d\n",Ca_sum/n);
    printf("Calculus_max:%d\n",Ca_max);
    for (int i=0;i<n;i++){
        if (P[i].r==Ca_max){
            printf("%s %d %s %.2f %d %d\n",P[i].name,P[i].f,P[i].str,P[i].h,P[i].l,P[i].r);
        }
    }
    printf("Calculus_min:%d\n",Ca_min);
    return 0;
}

111.检查字符串1是否包括字符串2
#include<stdio.h>
#include<stdlib.h>
int main()  
{
	char s1[50],s2[20],*p1,*p2;
	int locat[10],posit=0,i=0,len2,j;
	gets(s1);
	gets(s2);
	p1=s1;
	p2=s2;
	for(j=0;*p2!='\0';j++,p2++)
		len2=j+1;
	p2=s2;
	do
	{
		if(*p1!=*p2)
		{
			p1++;
			posit++;
		}
		else
		{			
			while((*p1==*p2)&&(*p2!='\0'))
			{
				p1++;
				p2++;
				posit++;
			}
				if(*p2=='\0')
				{
					locat[i]=posit-len2;
					i++;
				}
		}
		p2=s2;
	}while(*p1!='\0');
	if(i<1)
		printf("NO\n");
	else
	{
		printf("%dtimes,",i);
		for(int j=0;j<i-1;j++){
			printf("%d,",locat[j]);
			}
		printf("%d",locat[i-1]);	
	}
	return 0;
}
112.统计字母和数字个数
#include<stdio.h>
int main(){
	char a[100];
	char*p=a;
	gets(a);
	int i=0,j=0;
	while(*p!='\0'){
		if(*p>='a'&&*p<='z'||*p>='A'&&*p<='Z'){
			i++;
		}
		if(*p>='0'&&*p<='9'){
			j++;
		}
		p++;
	}
	printf("letters:%d,digits:%d",i,j);
	return 0;
}
115.二维数组的行列变换
#include <stdio.h>


void tran(int array[5][3], int out_array[3][5])
{
int i,j;
if(array==NULL||out_array==NULL)
printf("error");

else for(i=0;i<3;i++)
	{
	for(j=0;j<5;j++)
		{
		out_array[i][j]=array[j][i];
		}
	}
}
114.随机数置换
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

extern int RandInt(int i,int j);

void RandomPermutation1(int n)
{
	int A[100];
	int i, j, flag, temp;

	if(n<=0)
	{
		printf("error");
		return;
	}

	
	i = 0;
	
	while(i < n)
	{
		flag = 0;
		temp = RandInt(1, n);
		
		for(j=0; j<i; j++)
		{
			if(A[j] == temp)
			{
				flag = 1;
				break;
			}
		}
		
		if(!flag)
		{
			A[i] = temp;
			i++;
		}
	}
	
	
	for(i=0; i<n; i++)
		printf("%d,", A[i]);
		
	printf("0\n");
}


void RandomPermutation2(int n)
{
	 
	int A[100], Used[101] = {0};
	int i, j, temp;
		
	if(n<=0)
	{
		printf("error");
		return;
	}
	
	
	i = 0;
		
	while(i < n)
	{
		temp = RandInt(1, n);
		
		if(Used[temp])
		{
			continue;
		}
		
		Used[temp] = 1;
		A[i] = temp;
		i++;
	
	}
		
		
	for(i=0; i<n; i++)
		printf("%d,", A[i]);
			
	printf("0\n");

}

void swap(int* a,int* b)
{
	int t;
	t= *a;
	*a = *b;
	*b = t;
}

void RandomPermutation3(int n)
{
	int A[100], i;

	if(n<=0)
	{
		printf("error");
		return;
	}

	for(i = 0; i < n; i++)
	{
		A[i] = i+1;
	}
	
	for(i = 1; i < n; i++)
	{
		swap(&A[i], &A[RandInt(0,i)]);
	}
	
	for(i = 0; i < n; i++)
		printf("%d,", A[i]);
	printf("0\n");

117. 编写函数处理相同字符
#include<stdio.h>
#include<string.h>
void del(char *str){
	int len,i,j;
	len=strlen(str);
	for(i=1;i<len;i++){
		if(*(str+i)>='a'&&*(str+i)<='z'||*(str+i)>='A'&&*(str+i)<='Z'||*(str+i)>='0'&&*(str+i)<='9'){
			
		}
		else{
			if(*(str+i-1)==*(str+i)){
				for(j=i;j<len;j++){
					*(str+j)=*(str+j+1);
				}
				i--;
				len=len-1;
			}
		}
	}
	
}
int main(){
	char a[100];
	gets(a);
	char *str=a;
	del(str);
	for(;*str!='\0';str++){
		printf("%c",*str);
	}
	return 0;
}
118.水仙花
#include<stdio.h>
int main()
{
	int find(int n);
	int m;
	scanf("%d",&m);
	return 0;
}
int find(int n)
{
	if(n<=99||n>=1000)
		return 0;
	else
	{
		int a,b,c,i,d;
		for(d=0,i=100;i<=n;i++)
		{
			a=(int)(i/100);
			c=i%10;
			b=(i-100*a-c)/10;
			if(i==a*a*a+c*c*c+b*b*b)
			{
				d++;
			}
		}
		return d;
	}
}
121. 实现函数逆序输出一组数据
#include<stdio.h>
void main()
{
	void isort(int a[], int n);
	int a[100],b,n;
	scanf("%d",&n);
	for(b=0;b<n;b++)
		scanf("%d",&a[b]);
	isort(a,n);
}

void isort(int a[], int n)
{
	int i;
	for(i=n-1;i>0;i--)
	{
		printf("%d,",a[i]);
	}
	    printf("%d",a[0]);
}


132./0’转义
#include<stdio.h>
#include<string.h>
int main(){
	char s1[100];
	char s2[100];
	gets(s1);
	int len,i,j;
	len=strlen(s1);
	for(i=0;i<len;i++){
		s2[i]=s1[i];
	}
	s1[i]='\0';
	for(j=0;j<i;j++){
		printf("%c",s2[j]);
	}
	printf("\\0");
	return 0;
}
133.矩阵乘法
#include<stdio.h>
void Matrix_Mul(int a[3][2],int b[2][4]){
	int i,j,p,q;
	int mul[3][4];
	for(i=0;i<3;i++){
		for(j=0;j<4;j++){
			mul[i][j]=(a[i][0]*b[0][j]+(a[i][1]*b[1][j]));
		}
	}
	for(p=0;p<3;p++){
		for(q=0;q<3;q++){
			printf("%d ",mul[p][q]);
		}
		printf("%d \n",mul[p][q]);
	}
	return;
}
int main(){
	int a[3][2]={{1,2},{3,4},{5,6}};
	int b[2][4]={{1,0,1,1},{0,1,0,1}};
	int mul[3][4];
	Matrix_Mul(a,b); 
	return 0;
}
134.统计字符串出现个数
#include<stdio.h>
#include<string.h>
int SubStrNum(char *str, char *substr){
	int len,i=0,j=0,sum=0;
	len=strlen(substr);
	while(*(str+i)!='\0'){
		while(*(str+i)==*(substr+j)&&*(substr+j)!='\0'&&*(str+i)!='\0'){
			i++;
			j++;
		}
		if(j==len){
			sum++;
			j=0;
		}
		else{
			j=0;
			i++;
		}
	}
	printf("match times=%d",sum);
	return 0;
}
int main(){
	char a[100];
	char b[100];
	gets(a);
	gets(b);
	char *str=a;
	char *substr=b;
	SubStrNum(str,substr);
	return 0;
}
135.计算大整数的差
#include<stdio.h>
#include<string.h>
int main(){
	char a[100];
	char b[100];
	char c[100];
	scanf("%s",&a);
	scanf("%s",&b);
	char *x=a;
	char *y=b;
	int len1,len2,lenmax,lenmin,i,j,temp,itemp;
	len1=strlen(x);
	len2=strlen(y);
	if(len1>len2){
		temp=1;
	}
	if(len1<len2){
		temp=-1;
	}
	if(len1==len2){
		temp=0;
	}
	if(temp==0){
		for(i=0;i<=len1-1&&temp==0;i++){
			if(a[i]>b[i]){
				temp=1;
			}
			if(a[i]<b[i]){
				temp=-1;
			}
			if(a[i]==b[i]){
				temp=0;
			}
		}
	}
	if(temp==1){
		lenmax=len1;
		lenmin=len2;
		for(i=lenmax-1,j=lenmin-1;j>=0;i--,j--){
			c[i]=a[i]-b[j];
		}
		for(i=lenmax-lenmin-1;i>=0;i--){
			c[i]=a[i];
		}
		printf("+");
		for(i=lenmax-1;i>=lenmax-lenmin-1;i--){
			if(c[i]<0){
				c[i]=c[i]+10;
				if(i>0){
					c[i-1]=c[i-1]-1;
				}
			}
		}
		for(i=0;i<=lenmax-lenmin-1;i++){
			printf("%c",c[i]);
		}
		for(i=lenmax-lenmin;i<=lenmax-1;i++){
			printf("%c",c[i]=c[i]+48);
		}
	}
	if(temp==-1){
		lenmax=len2;
		lenmin=len1;
		for(i=lenmax-1,j=lenmin-1;j>=0;i--,j--){
			c[i]=b[i]-a[j];
		}
		for(i=lenmax-lenmin-1;i>=0;i--){
			c[i]=b[i];
		}
		printf("-");
		for(i=lenmax-1;i>=lenmax-lenmin-1;i--){
			if(c[i]<0){
				c[i]=c[i]+10;
				if(i>0){
					c[i-1]=c[i-1]-1;
				}
			}
		}
		for(i=0;i<=lenmax-lenmin-1;i++){
			printf("%c",c[i]);
		}
		for(i=lenmax-lenmin;i<=lenmax-1;i++){
			printf("%c",c[i]=c[i]+48);
		}
	}
	if(temp==0){
		printf("0");
	}
	return 0;
}
136.输出类x和y
#include<iostream>
#include<cmath>
using namespace std;
class Location{
	private:
		int X,Y;
	public:
	void init(int initX,int initY){
		X=initX;
		Y=initY;
	}
	int GetX(){
		return X;
	}
	int GetY(){
		return Y;
	}
};
int main(){
	Location A1;
	A1.init(20,90);
	Location &rA1=A1;
	cout<<rA1.GetX()<<rA1.GetY();
	return 0;
}
137.实现三角形类
#include<iostream>
#include<cmath>
using namespace std;
class Ctriangle{
	private:
		double sa;
		double sb;
		double sc;
		public:
			Ctriangle(double a,	double b,	double c){
				sa=a;
				sb=b;
				sc=c;
			}
			double GetPerimeter(){
				return sa+sb+sc;
			}
			double Getarea(){
				double
				p=GetPerimeter()/2;
				p=p*(p-sa)*(p-sb)*(p-sc);
				return sqrt(p);
			}
			void display(){
				cout<<"Ctriangle:a="<<sa<<",b="<<sb<<",c="<<sc<<endl;
				
			}
};
int main(){
	double a,b,c;
	cin>>a>>b>>c;
	Ctriangle T(a,b,c);
	T.display();
	cout<<"Perimeter:"<<T.GetPerimeter()<<endl;
	cout<<"Area:"<<T.Getarea()<<endl;
	return 0;
}
138.实现point类
#include<iostream>
#include<cmath>
using namespace std;
class Point{
	private:
		double x;
		double y;
	public:
		Point(double x,double y){
			this->x=x;
			this->y=y;
		}
		double Distance(const Point &p){
			x-=p.x;
			y-=p.y;
			return sqrt(x*x+y*y);
		}
};
int main(){
	double a,b,c,d;
	cin>>a>>b>>c>>d;
	Point A(a,b),B(c,d);
	cout<<A.Distance(B)<<endl;
	return 0;
}
159填空base
#include <iostream>
using namespace std;
class base{
public:
	virtual int func(){return 0;}
};
class derived:public base{
public:
	int a,b,c;
	void setValue(int x,int y,int z){a =x;b=y;c= z;}
	int func(){return (a+b)*c;}
};
int main(){
	base b;
	derived d;
	int x,y,z;
	cin>>x>>y>>z;
	cout<<b.func()<<",";
	d.setValue(x,y,z);
	cout<<d.func()<<",";
	base& pb = d;
	cout <<pb.func()<<endl;
	return 0;
}
161填空题04
#include <iostream>
using namespace std;
class Base{
public:
	virtual void fun(){
	cout<<1<<endl;
	}
};
class Derived:public Base{
public:
	void fun(){cout<<2<<endl;}
};
int main(){
	Base *p = new Derived;
	p->fun();
	delete p;
	return 0;
}
164完成location
#include <iostream>
using namespace std;
class Location{
public:
	Location(int xx,int yy){
		x =xx;
		y =yy;
	}
Location &operator +(Location &offset);
Location &operator -(Location &offset);

int getX(){return x;}
int getY(){return y;}
private:
	int x;
	int y;
};
Location &Location::operator +(Location &offset){
	this->x+=offset.x;
	this->y+=offset.y;
	return *this;
}
Location &Location::operator -(Location &offset){
	this->x-=offset.x;
	this->y-=offset.y;
	return *this;
}
167抽象类shape
n&(n-1)==0
#include <iostream>
#define PI 3.14
using namespace std;
class Shape{
public:
	Shape(){}
	~Shape(){}
	virtual double GetArea()=0;
	virtual double GetPerimeter()=0;
	static Shape* createRectangle(double length,double width);
	static Shape* createCircle(double radius);
};
class Rectangle:public Shape
{
	private:
		int a,b;
	public:
		Rectangle(double l,double w)
		{
			a=l,b=w;
		}
	    double GetArea()
	    {
	    	return a*b;
		}
		double GetPerimeter()
		{
			return 2*(a+b);
		}
};
class Circle:public Shape
{
	private:
		int r0;
	public:
		Circle(double r)
		{
			r0=r;
		}
		double GetArea()
	    {
	    	return PI*r0*r0;
		}
		double GetPerimeter()
		{
			return 2*PI*r0;
		}
};
Shape * Shape::createRectangle(double l,double w){return new Rectangle(l,w);}
Shape * Shape::createCircle(double r){return new Circle(r);}
187.百钱百鸡
#include<stdio.h>
#include<math.h>
int main()
{
	int x,y,z;
	for(x=0;x<=20;x++)
	{
		for(y=0;y<=33;y++)
		{for(z=0;z<=99;z+=3)
		{if((5*x+3*y+z/3==100)&&(x+y+z==100&&z%3==0))
		printf("%d,%d,%d,",x,y,z);}
		
		}
	}
	return 0;
}
188.猴子摘桃
#include<stdio.h>
int main(void)
{
int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,sum=0;
 a=(1+1)*2;
 b=(a+1)*2;
 c=(b+1)*2;
 d=(c+1)*2;
 e=(d+1)*2;
 f=(e+1)*2;
 g=(f+1)*2;
 h=(g+1)*2;
 i=(h+1)*2;
 sum=i;
 printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
	 a,b,c,d,e,f,g,h,i,sum);
 return 0;
}
189.折半查找upper_bound()
sort(a+1,a+1+n)

#include<stdio.h>
int main(void)
{
	int n=0,m,i,start,mid,end,number,a[100]={0};
	scanf("%d",&n);
	for(i=0;i<n;i++)
	  scanf("%d,",&a[i]);
	scanf("%d",&number);
	start=0;
	end=n-1;
while(number==a[n-1])
{			
  printf("%d",n);
  goto there;
}
while(number==a[0])
{			
  printf("%d",1);
 goto there;
}
	while(start+1<end)
	{
		mid=(end+start)/2;
		if(number>a[mid])
			start=mid;
		else if(number<a[mid])
			end=mid;
		else 
		{
			printf("%d",mid+1);
			break;
		}
	}
there:return 0;
}

230. 指针练习之最值问题 
#include<stdio.h>
int main()
{
    int i,n,a[100],p1,p2,max,min,*p;
	scanf("%d",&n);
	if(n<=0)
		printf("error");
	else
	{
		p=a;
		for(i=0;i<n;i++)
			scanf("%d",p+i);
		max=a[0];
		min=a[0];
		p1=1;
		p2=1;
		for(i=1;i<n;i++)
		{
			if(max<*(p+i))
			{
				max=*(p+i);
				p1=i+1;
			}
		}
        for(i=1;i<n;i++)
		{
			if(min>*(p+i))
			{
				min=*(p+i);
				p2=i+1;
			}
		}
	}
		printf("max:%d,position:%d\n",max,p1);
		printf("min:%d,position:%d\n",min,p2);
		return 0;
}

231. 指针练习之学号转换
#include<stdio.h>
#include<string.h>
int fun(const char *p, int result[])
{
	int num[13]={0},i;
	if(p==NULL||strlen(p)!=13)
		return 0;
	else
	{
	   while(*p!='\0')
	   {
		 if((*p)>='0'&&(*p)<='9');
		 else
			 return 0;  
		  p++;
	   }
       for(i=0;i<13;i++)
		 num[i]=(int)(*((p-13)+i)-'0');
       result[0]=num[0]*1000+num[1]*100+num[2]*10+num[3];
	   result[1]=num[4]*10+num[5];
	   result[2]=num[6]*1000+num[7]*100+num[8]*10+num[9];
	   result[3]=num[10]*100+num[11]*10+num[12];
	   return 1;
	 }
}

232.字符串拷贝
#include<stdio.h>
int main()
{
    char a[100]={'\0'},d[100]={'\0'},*b;
	int i=0,c=0;
		scanf("%s",a);
	b=a;
	while(*(b+1)!='\0'&&*(b+2)!='\0')
	{
		d[i]=*b;
		d[i+1]=*(b+1);
		d[i+2]='*';
		b+=2;
		i+=3;
		c+=2;
	}
	if(a[c+1]!='\0')
		printf("%s%c%c\n",d,a[c],a[c+1]);
	else
		printf("%s%c\n",d,a[c]);
	return 0;
}

233.
#include<stdio.h>
extern int max_val, min_val, ave_val;
extern int cal( int *pData, int iLen )
{
    int i,sum=0;
    if(iLen<0||pData==NULL)
    {return 0;}
    
    max_val=pData[0];
    for(i=0;i<iLen;i++)
    {
        if(max_val<pData[i])
        {max_val=pData[i];}
    }
    
    min_val=pData[0];
    for(i=0;i<iLen;i++)
    {
        if(min_val>pData[i])
        {min_val=pData[i];}
    }
    
    for(i=0;i<iLen;i++)
    {
        sum=sum+pData[i];
    }
    ave_val=sum/iLen;
    return 1;
234.宏定义和使用
#include<stdio.h>
#define MAX(a,b) (a>b)? a : b
int main(void)
{
 int a,b,c;
 scanf("%d,%d,%d",&a,&b,&c);
 a=MAX(a,b);
 c=MAX(a,c);
 printf("%d",c);
}

235.动态内存分部
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    int n,i,j,temp;
    scanf("%d",&n);
    int *array=(int *)malloc(n*sizeof(int));
    for(i=0;i<n;i++)
    {scanf("%d",array+i);}
    for(j=0;j<n-1;j++)
    {
     for(i=0;i<n-1-j;i++)
      {
         if(array[i]>array[i+1])
            {
                temp=array[i+1];
                array[i+1]=array[i];
                array[i]=temp;
            }
        }
    }
    for(i=0;i<n-1;i++)
    {printf("%d,",array[i]);}
    printf("%d\n",array[n-1]);
    return 0;
}
275.证明哥德巴赫猜想
#include<stdio.h>
#include<math.h>
int main(){
	int n,x,fir,i,s=1,sec;
	scanf("%d",&n);
	if(n>=4&&n<2000&&n%2==0){
		if(n==4){
			printf("2 2 ");
		}
		else{
			for(x=2;x<=(n/2);x++){
				fir=x;
				for(i=2;i<=(sqrt((float)fir)+1);i++){
					if(fir%i==0){
						fir=0;
					}
				}
				sec=n-x;
				for(i=2;i<=(sqrt((float)sec)+1);i++){
					if(sec%i==0){
						sec=0;
						
					}
				}
				if(fir!=0&&sec!=0){
					printf("%d %d ",fir,sec);
				}
			}}
		}
		else{
			printf("error");
		}
		return 0;
	}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值