实验任务4

实验任务1

#include<stdlib.h>

#include<stdio.h>

#define N 4

 

int main(){

   int a[N]={'1','9','8','4'};

   char b[N]={'1','9','8','4'};

   int i;

 

   printf("sizeof(ing)=%d\n",sizeof(int));

   printf("sizeof(char)=%d\n",sizeof(char));

   printf("\n");

 

   for(i=0;i<N;i++)

     printf("%p:%d\n",&a[i],a[i]);

   printf("\n");

 

   for(i=0;i<N;i++)

     printf("%p:%c\n",&b[i],b[i]);

   printf("\n");

 

   printf("a=%p\n",a);

   printf("b= %p\n",b);

   system("pause");

   return 0;

}

 

 

1)连续存放,每个元素占用4个字节单元

2)连续存放,每个元素占用1个字节单元

3)是的

Task1_2

#include<stdlib.h>

#include<stdio.h>

#define N 2

#define M 4

 

int main(){

   int a[N][M]={{1,9,8,4},{2,0,2,2}};

   char b[N][M]={{'1','9','8','4'},{'2','0','2','2'}};

   int i,j;

 

   for(i=0;i<N;++i)

     for(j=0;j<M;++j)

        printf("%p:%d\n",&a[i][j],a[i][j]);

   printf("\n");

 

   for(i=0;i<N;++i)

     for(j=0;j<M;++j)

        printf("%p:%c\n",&b[i][j],b[i][j]);

   system("pause");

   return 0;

}

 

 

1)     是的,每个元素占用4个字节单元

2)     是的,每个元素占用1个字节单元

实验任务2

#include<stdio.h>

#include<stdlib.h>

int days_of_year(int year,int month,int day);

 

int main(){

   int year,month,day;

   int days;

 

   while(scanf("%d%d%d",&year,&month,&day)!=EOF){

     days=days_of_year(year,month,day);

     printf("%4d-%02d-%02d是这一年的第%d天\n\n",year,month,day,days);

   }

   system("pause");

   return 0;

}

 

int days_of_year(int year,int month,int day){

   int jud=0,ans=0;

   if((year%4==0&&year%100!=0)||year%400==0)jud=1;

   switch(month){

   case 1:ans=day;break;

   case 2:ans=31+day;break;

   case 3:ans=31+28+day;break;

   case 4:ans=31*2+28+day;break;

   case 5:ans=31*2+28+30+day;break;

   case 6:ans=31*3+28+30+day;break;

   case 7:ans=31*3+28+30*2+day;break;

   case 8:ans=31*4+28+30*2+day;break;

   case 9:ans=31*5+28+30*2+day;break;

   case 10:ans=31*5+28+30*3+day;break;

   case 11:ans=31*6+28+30*3+day;break;

   case 12:ans=31*6+28+30*4+day;break;

   }

   if(jud)ans++;

   return ans;

}

 

#include<stdio.h>

#include<stdlib.h>

int days_of_year(int year,int month,int day);

 

int main(){

   int year,month,day;

   int days;

 

   while(scanf("%d%d%d",&year,&month,&day)!=EOF){

     days=days_of_year(year,month,day);

     printf("%4d-%02d-%02d是这一年的第%d天\n\n",year,month,day,days);

   }

   system("pause");

   return 0;

}

 

int days_of_year(int year,int month,int day){

   int jud=0,ans=0;

   if((year%4==0&&year%100!=0)||year%400==0)jud=1;

   switch(month){

   case 1:ans=day;break;

   case 2:ans=31+day;break;

   case 3:ans=31+28+day;break;

   case 4:ans=31*2+28+day;break;

   case 5:ans=31*2+28+30+day;break;

   case 6:ans=31*3+28+30+day;break;

   case 7:ans=31*3+28+30*2+day;break;

   case 8:ans=31*4+28+30*2+day;break;

   case 9:ans=31*5+28+30*2+day;break;

   case 10:ans=31*5+28+30*3+day;break;

   case 11:ans=31*6+28+30*3+day;break;

   case 12:ans=31*6+28+30*4+day;break;

   }

   if(jud)ans++;

   return ans;

}

 

 

实验任务3

#include<stdio.h>

#include<stdlib.h>

#define N 5

void input(int x[],int n);

void output(int x[],int n);

double average(int x[],int n);

void bubble_sort(int x[],int n);

 

int main(){

   int scores[N];

   double ave;

 

   printf("Enter %d scores:\n",N);

   input(scores,N);

 

   printf("\nprint the scores:\n");

   output(scores,N);

 

   printf("\nProcessing:average,sort...\n");

   ave=average(scores,N);

   bubble_sort(scores,N);

 

   printf("\nprint the average grades:%.2f\n",ave);

   printf("\nprint the scores(from high to low):\n");

   output(scores,N);

   system("pause");

   return 0;

}

 

//defined functions:

void input(int x[],int n){

   int i;

   for(i=0;i<N;++i) scanf("%d",&x[i]);

}

void output(int x[],int n){

   int i;

   for(i=0;i<N;++i){

     printf("%d ",x[i]);

   }

   printf("\n");

}

double average(int x[],int n){

   double ans=0.0;int i=0;

   for(;i<N;++i) ans+=x[i];

   ans=ans*1.0/n;

   return ans;

}

void bubble_sort(int x[],int n){

   int jud=1,i=1,mid;

   while(jud){

   jud=0;

   for(i=1;i<=N;++i)

     if(x[i-1]<x[i]){mid=x[i-1];x[i-1]=x[i];x[i]=mid;jud=1;}

   }

}

 

 

 

 

实验任务4

#include<stdio.h>

#include<stdlib.h>

#define N 100

void dec2n(int x,int n);

 

int main(){

   int x;

 

   printf("Enter:(number)10  ");

   while(scanf("%d",&x)!=EOF){

     dec2n(x,2);

     dec2n(x,8);

     dec2n(x,16);

 

     printf("\nEnter:(number)10  ");

   }

 

   return 0;

}

 

void dec2n(int x,int n){

   int a[20]={0},i=0;

   while(x>0){

     a[i]=x%n;

     x/=n;

     ++i;

     }

   for(;i>0;--i){

     if(n==16)

        switch (a[i-1]){

        case 10:printf("A");break;

        case 11:printf("B");break;

        case 12:printf("C");break;

        case 13:printf("D");break;

        case 14:printf("E");break;

        case 15:printf("F");break;

        default: printf("%d",a[i-1]);break;

        }

     else printf("%d",a[i-1]);

   }

   printf("\n");

}

 

 

实验任务5

#include<stdio.h>

#include<stdlib.h>

#define N 100

void func(int x[][N],int n);

void output(int x[][N],int n);

 

int main(){

   int x[N][N];

   int i,j,n;

   printf("Enter n:");

   while(scanf("%d",&n)!=EOF){

     func(x,n);

     output(x,n);

     printf("\nEnter n:");

   }

   system("pause");

   return 0;

}

 

void output(int x[][N],int n){

   int i,j;

   for(i=0;i<n;++i){

     for(j=0;j<n;++j)

        printf("%5d",x[i][j]);

     printf("\n");

   }

 

}

void func(int x[][N],int n){

   int i,j;

   for(i=0;i<=n;++i){

     for(j=0;j<=n;++j){

        if(i<=j){x[i][j]=1+i;}

        else x[i][j]=1+j;

     }

   }

}

 

 

实验任务6

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

 

#define N 80

 

int main(){

   char views1[N]="hey,c,i have not love u yet.";

   char views2[N]="hey,c,how can i love u?";

   char t[N];

   printf("Before the change:\n");

   printf("views1:%s\n",views1);

   printf("views2:%s\n",views2);

 

   //change

   strcpy(t,views1);

   strcpy(views1,views2);

   strcpy(views2,t);

   printf("After the change:\n");

   printf("views1:%s\n",views1);

   printf("views2:%s\n",views2);

 

   system("pause");

   return 0;

}

 

 

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

 

#define N 80

 

int main(){

   char views[2][N] = {"hey,c, i have not love u yet.","hey,c, how can i love u?"};

   char t[N];

   printf("Before the change: \n");

   printf("views1: %s\n", views[0]);

   printf("views2: %s\n", views[1]);

 

   strcpy(t, views[0]);

   strcpy(views[0], views[1]);

   strcpy(views[1], t);

   //change

   printf("After the change: \n");

   printf("views1: %s\n", views[0]);

   printf("views2: %s\n", views[1]);

 

   system("pause");

   return 0;

}

 

 

不同:6.1为两个一维数组间的交换,6.2为一个两维数组内行的交换

实验任务7

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

 

#define N 5

#define M 20

 

void bubble_sort(char str[][M], int n);

 

int main() {

    char name[][M] = {"Bob", "Bill", "Joseph", "Taylor", "George"};

    int i;

 

    printf("print the original menu:\n");

    for (i = 0; i < N; i++)

        printf("%s\n", name[i]);

 

    printf("\nsorting...\n");

    bubble_sort(name, N);

 

    printf("\nprint like the dictionary:\n");

    for (i = 0; i < N; i++)

        printf("%s\n", name[i]);

   system("pause");

    return 0;

}

 

 void bubble_sort(char str[][M], int n){

     int i,j;

    char x[100];

    for(j=0;j<N-1;++j){

        for(i=0;i<N-j-1;++i){

            if(strcmp(str[i],str[i+1])>0){

                strcpy(x,str[i]);

                strcpy(str[i],str[i+1]);

                strcpy(str[i+1],x);

            }

        }

    } 

 }

 

posted @ 2022-11-29 22:26  墨森  阅读(14)  评论(0编辑  收藏  举报