实验4

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

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

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

③是一样的,是一样的

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

①int型在内存中是按行连续存放的,每个元素占用4个内存单元字节

②char型在内存中是按行连续存放的,每个元素占用1个内存单元字节

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

#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"); 
 }
 // 计算整型数组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;
            }
        }
     }
 }
 

#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");
    
 }

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

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

#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-03 16:47  酒酿鸭不想思考  阅读(39)  评论(1)    收藏  举报