实验四

#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");
    // 输出数组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);

    return 0;
}

task1.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; 
    // 输出二维数组a中每个元素的地址和值 
    for (i = 0; i < N; ++i) 
       for (j = 0; j < M; ++j) 
           printf("%p: %d\n", &a[i][j], a[i][j]); 
           printf("\n"); 
    // 输出二维数组a中每个元素的地址和值 
    for (i = 0; i < N; ++i) 
       for (j = 0; j < M; ++j) 
           printf("%p: %c\n", &b[i][j], b[i][j]); 
 
 return 0; 
 
 }

task2

#include <stdio.h> 
int days_of_year(int year, int month, int day); // 函数声明 
int main()
{
    int year, month, day;
    int days;

    while (scanf_s("%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 months[13], i, j, sum;
    for (i = 1; i < 13; i++)
    {
        if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)
            months[i] = 31;
        else if (i == 4 || i == 6 || i == 9 || i == 11)
            months[i] = 30;
        else if (i == 2)
        {
            if (year % 4 == 0 && year % 100 != 0)
                months[i] = 29;
            else
                months[i] = 28;
        }
    }
    for (j = 1, sum = 0; j < month; j++)
    {
        sum = months[j] + sum;
    }
    sum = sum + day;
    return sum;
}

task3

#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_s("%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");
}
// 计算整型数组x中n个元素均值,并返回 
double average(int x[], int n)
{
    int i;
    double sum, ave;
    for (i = 0, sum = 0; i < n; i++)
        sum = sum + x[i];
    ave = sum / n;
    return ave;
}
// 对整型数组x中的n个元素降序排序 // 
void sort(int x[], int n)
{
    int t, i, j;
    for (j = 1; j < n; j++)
    {
        for (i = 0; i < n; i++)
        {
            if (x[i] < x[i + 1])
            {
                t = x[i];
                x[i] = x[i + 1];
                x[i + 1] = t;
            }
        }
    }
}

task4

#include <stdio.h> 
void dec2n(int x, int n); // 函数声明 
 int main() 
 { 
    int x; 
    printf("输入一个十进制整数: "); 
    scanf("%d", &x); 
    dec2n(x, 2); // 函数调用: 把x转换成二进制输出 
    dec2n(x, 8); // 函数调用: 把x转换成八进制输出 
    dec2n(x, 16); // 函数调用: 把x转换成十六进制输出
    return 0;
 }
 void dec2n(int x, int n)
 {
     char a[10000];
    int i,j;
    for(i=0,j=1;x/n!=0;i++)
     {
         if(x%n==0)
        a[i] = '0';
        if(x%n==1)
        a[i] = '1';
        if(x%n==2)
        a[i] = '2';
        if(x%n==3)
        a[i] = '3';
        if(x%n==4)
        a[i] = '4';
        if(x%n==5)
        a[i] = '5';
        if(x%n==6)
        a[i] = '6';
        if(x%n==7)
        a[i] = '7';
        if(x%n==8)
        a[i] = '8';
        if(x%n==9)
        a[i] = '9';
        if(x%n==10)
         a[i] = 'A';
        if(x%n==11)
         a[i] = 'B';
         if(x%n==12)
         a[i] = 'C';
         if(x%n==13)
         a[i] = 'D';
         if(x%n==14)
         a[i] = 'E';
         if(x%n==15)
         a[i] = 'F';
            
        x = x/n;
         j = j+1;
     }
    if(x==0)
    a[j-1] = '0';
    if(x==1)
    a[j-1] = '1';
    if(x==2)
    a[j-1] = '2';
    if(x==3)
    a[j-1] = '3';
    if(x==4)
    a[j-1] = '4';
    if(x==5)
    a[j-1] = '5';
    if(x==6)
    a[j-1] = '6';
    if(x==7)
    a[j-1] = '7';
    if(x==8)
    a[j-1] = '8';
    if(x==9)
    a[j-1] = '9';
    if(x==10)
     a[j-1] = 'A';
    if(x==11)
     a[j-1] = 'B';
     if(x==12)
     a[j-1] = 'C';
     if(x==13)
     a[j-1] = 'D';
     if(x==14)
     a[j-1] = 'E';
     if(x==15)
     a[j-1] = 'F';
    
    for(i=j-1;i>=0;i--)
    printf("%c",a[i]);
     printf("\n");
    
 }

task5

#include <stdio.h>
#define N 30
int main()
{
    int n, k;
    printf("Enter n: ");
    while (scanf_s("%d", &n) != 0)
    {
        int a[N][N];
        int i, j;
        for (i = 0; i < n; i++)
        {
            for (j = 0; j < n; j++)
            {
                if (i < j)
                {
                    a[i][j] = i + 1;
                }
                else
                {
                    a[i][j] = j + 1;
                }
            }
        }
        for (i = 0; i < n; i++)
        {
            for (j = 0; j < n; j++)
            {
                printf("%-2d ", a[i][j]);
                if ((j + 1) % n == 0)
                {
                    printf("\n");
                }
            }
        }
        printf("Enter n: ");
    }
    return 0;
}

task6

#include <stdio.h> 
#define N 80 
#include <string.h>
int main()
{
    char views1[N] = "hey, c, i hate u.";
    char views2[N] = "hey, c, i love u.";
    char temp;
    int i = 0;
    printf("original views:\n");
    printf("views1: %s\n", views1);
    printf("views2: %s\n", views2);
    while (views1[i] != '\0')
    {
        temp = views1[i];
        views1[i] = views2[i];
        views2[i] = temp;
        i++;
    }
    printf("\nswapping...\n");
    printf("views1: %s\n", views1);
    printf("views2: %s\n", views2);

    return 0;
}

task7

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

 

posted @ 2022-05-10 08:58  尚黑  阅读(11)  评论(1)    收藏  举报