task 1-1
#include <stdio.h> 
#define N 4 
int main() 
{ 
    int a[N] = {2, 0, 2, 2}; 
    char b[N] = {'2', '0', '2', '2'};
    int i; 
    printf("sizeof(int) = %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); 
    return 0; 
}

 

 

1.是连续存放的, 每个元素占4个内存字节单元

2.是连续存放的,每个元素占1个内存字节单元

3.是一样的,是一样的

 

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; 
}

 

 

1.是,4个

2.是,1个

 

task 2

#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 i;
    int mon[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int s=0;
    for(i=1;i<month;++i)
        s=s+mon[i];
    s=s+day;
    if((year%4==0&&year%100!=0||year%400==0)&&month>=3)
        s++;
    return s;
}

 

 

 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; 
}
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)
{
    int i;
    double s,ave;
    for(i=0; i<n; ++i) 
        s+=x[i]; 
    ave=s/n;
    return ave;
}
void sort(int x[], int n)
{
    int i,j,t;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if(x[j]<x[j+1])
            {
                t=x[j];
                x[j]=x[j+1];
                x[j+1]=t;
            }
        }
            
    }
}

 

 

 task 4

#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, a[32],b[32],c[32];
    char t;
    if(n==2)
    {
          while (x > 0) 
        {
            a[i] = x % 2;
            i = i + 1;
            x = x / 2;
        }
    for (i--; i >= 0; i--)
        printf("%d", a[i]);
    printf("\n");
    }
    else if(n==8)
    {
        while (x > 0) 
        {
            b[i] = x % 8;
            i = i + 1;
            x = x / 8;
        }
    for (i--; i >= 0; i--)
        printf("%d", b[i]);    
    printf("\n");
    } 
    else if (n==16)
    {
        while (x > 0) 
        {
            c[i] = x % 16;
            i = i + 1;
            x = x / 16;
        }
        for (i--; i >= 0; i--)
        {
            if(c[i]>=10)
            {
                t = 'A'+c[i]-10;
                printf("%c",t);
            }
            else
            printf("%d", c[i]);
        }   
    printf("\n");     
    }
}

 

 

 task 5

#include<stdio.h>
#include<stdlib.h>
#define N 100
void fun(int x[N][N],int n);
int main() 
{
    int n,i,j,a[N][N];
    printf("Enter n:");
    while(scanf("%d",&n)!=EOF)
    {
        fun(a,n);
        for(i=1;i<=n;i++) 
        {
            for(j=1;j<=n;j++)
                printf("%d ",a[i][j]);
            printf("\n");
        }
        printf("\nEnter n:");
    }
} 
void fun(int x[N][N],int n)  
{
    int i,j;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            if( i<=j )
                x[i][j]=i;
            else
                x[i][j]= j ;
}

 

 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,t;
    printf("views1:");
    for (i=0; i<=N; i++)
        printf("%c", views1[i]);
        printf("\n");
    printf("views2:");
    for (i=0; i<=N; i++)
        printf("%c", views2[i]);
        printf("\n");
    printf("swapping...\n");    
    for(i=0;i<=N;i++)
    {
        t=views1[i];
        views1[i]=views2[i];
        views2[i]=t;
    }
    printf("views1:");
    for (i=0; i<=N; i++)
        printf("%c", views1[i]);
        printf("\n");
    printf("views2:");
    for (i=0; i<=N; i++)
        printf("%c", views2[i]);
        printf("\n");        
    return 0;
}

 

 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 t[M];
    for(j=1;j<n;j++)
    {
        for(i=0;i<n-1;i++)
        {
            if(strcmp(str[i],str[i+1])>0)
            {
                strcpy(t,str[i]);
                strcpy(str[i],str[i+1]);
                strcpy(str[i+1],t);
            }
        }        
    }
}

 

posted on 2022-05-03 17:33  wangyfan  阅读(20)  评论(2)    收藏  举报