实验四的作业

task 1-1:

#include<stdio.h>
#defineN4
intmain()
{
inta[N]={2,0,2,2};
charb[N]={'2','0','2','2'};
inti;
printf("sizeof(int)=%d\n",sizeof(int));
printf("sizeof(char)=%d\n",sizeof(char));
printf("\n");
//输出数组a中每个元素的地址、值
for(i=0;i<N;++i)
printf("%p:%d\n",&a[i],a[i]);
printf("\n");
//输出数组b中每个元素的地址、值
for(i=0;i<N;++i)
printf("%p:%c\n",&b[i],b[i]);
printf("\n");
//输出数组名a和b对应的值
printf("a=%p\n",a);
printf("b=%p\n",b);
return0;
}
连续 4连续 1不一样

 

 

task 1-2:

#include<stdio.h>
#define N 2
#define M 3
int main()
{
    int a[N][M] = { {1,2,3},{4,5,6} };
    char b[N][M] = { {'1','2','3'},{'4','5','6'} };
    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]);
    return 0;
}
//问题一:是;每个元素占4个
//问题二:是;每个元素占1个

 



task 2:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.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);
    }
    return 0;
}
int days_of_year(int year, int month, int day)
{
    int yuefen[13], i,j,s=0;
    for (i = 1; i < 13; i++)
    {
        if (i == 2)
        {
            if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
                yuefen[i] = 29;
            else
                yuefen[i] = 28;
        }
        if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)
            yuefen[i] = 31;
        if (i == 4 || i == 6 || i == 9 || i == 11)
            yuefen[i] = 30;
    }
    for (j = 1; j < month; j++)
    {
        s = s + yuefen[j];
    }
    s = s + day;
    return s;
}

 

 

 



 task 3:

//task.3//
#include<stdio.h>
#define N 5

//函数声明
void input(int x[],int n);
void output(int x[],int n);
double average(int x[],int n);
void sort(int x[],int n);

int main()
{
    int scores[N];
    double ave;
    
    printf("录入%d个分数:\n",N);
    input(scores,N);
    
    printf("\n输出课程分数:\n");
    output(scores,N);
    
    printf("\n课程分数处理:计算均分、排序...\n");
    ave = average(scores,N);
    sort(scores,N);
    
    printf("\n输出课程平均分:%.2f\n",ave);
    printf("\n输出课程分数(高->低):\n");
    output(scores,N);
    
    return 0;
 } 
 
 //函数定义
 //输入n个整数保存到整型数组x中
 void input(int x[],int n)
 {
     int i;
     
     for(i=0;i<n;++i)
         scanf("%d",&x[i]);
  } 
  
  //输出整型数组x中n个元素
  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)
{
    int i;
    double s=0,average;
    for(i=0;i<n;++i)
    {
        s+=x[i];
    }
    average=s/n;
    return average;
}
void sort(int x[],int n)
{
    int i,j,t;
    for(i=0;i<n-1;++i)
     {
        for(j=0;j<n-i-1;++j)
        if(x[j]<x[j+1])
        {
            t=x[j];
            x[j]=x[j+1];
            x[j+1]=t;
        }
    }
}

 

 

task 4:

//task.4.c//
#include<stdio.h>
void dec2n(int x,int n);

int main()
{
    int x;
    
    printf("输入一个十进制整数; ");
    scanf("%d",&x);
    
    dec2n(x,2);
    dec2n(x,8);
    dec2n(x,16);
    return 0; 
}
void dec2n(int x,int n)
{
    int i=0,j,a[100];
    char b[100];
    if(n==16)
    {
        for(i=0;x!=0;i++,j++)
        {
            if(x%16==10) b[i]='A';
            else if(x%16==11) b[i]='B';
            else if(x%16==12) b[i]='C';
            else if(x%16==13) b[i]='D';
            else if(x%16==14) b[i]='E';
            else if(x%16==15) b[i]='F';
            else b[i]=x%16+'0';
            x=x/16;
        }
      for(j=i-1;j>=0;j--)
      printf("%c",b[j]);
      printf("\n");
    }
    else 
    {
      do{
        a[i] = x%n;
        x =x/n;
        i++;
        j++;    
        }while(x!=0);
    
    for(j=i-1;j>=0;j--)
      printf("%d",a[j]);
      
    printf("\n");
    }
}

 

 

 

task 5:

//task.5//
#include<stdio.h>
int main()
{
    
    int n,i,j;
    printf("Enter n:");
    while (scanf("%d",&n)!=EOF)
    {
    int a[n][n];
    for(i=0;i<n;i++)
    {
        for(j=i;j<n;j++)
        {a[i][j]=i+1;}
     } 
    for(j=0;j<n;j++)
    {
        for(i=j;i<n;i++)
        {a[i][j]=j+1;}
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("%d  ",a[i][j]);
        }
        printf("\n");
    }
    printf("\n\nEnter n:");
}
    return 0;
}

 

 

task 6:

//task.6//
#include<stdio.h>
#define N 80

int main()
{
    char views1[N]="hey,c,i hate u.";
    char views2[N]="hey,c,i love u.";
    int i,j;
    char t;
    
    printf("original views:\n");
    printf("views1:\n");
    for(j=0;j<N;j++)
        printf("%c",views1[j]);
    printf("\n");
    printf("views2:\n"); 
    for(j=0;j<N;j++)
        printf("%c",views2[j]);
    printf("\n");  
    printf("swapping...\n");
    
    for(i=0;i<N;i++)
    {
        
    t=views1[i];
    views1[i]=views2[i];
    views2[i]=t;
    }
    
    printf("views1:");
    for(j=0;j<N;j++)
        printf("%c",views1[j]);
    printf("\n");
       
    printf("views2:"); 
    for(j=0;j<N;j++)
        printf("%c",views2[j]);
}

 

 

task 7:

//task.7//
#include<stdio.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("输出初始名单:\n");
    for(i=0;i<N;i++)
    printf("%s\n",name[i]);
    
    printf("\n排序中...\n");
    bubble_sort(name,N);
    
    printf("\n按字典输出名单:\n");
    for(i=0;i<N;i++)
    printf("%s\n",name[i]);
    
    return 0;
}
void bubble_sort(char str[][M],int n)
{
    int i,j;
    char temp[M];
    for(i=0;i<n-1;i++)
    {
    
        for(j=i+1;j<n;j++)
        if(strcmp(str[j],str[i])<0)
        {
        strcpy(temp,str[i]);
        strcpy(str[i],str[j]);
        strcpy(str[j],temp);
        }
    }
}

 

 

 

posted @ 2022-05-06 10:52  次仁曲珍  阅读(34)  评论(0)    收藏  举报