实验四

任务一

连续存放, 每个元素占4个

是连续存放的,每个元素占1个

都是一样的

是按行的,4

也是按行的,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) // 按下Ctrl+Z终止
 {
 days = days_of_year(year, month, day);  // 函数调用 
 printf("%4d-%02d-%02d是这一年的第%d天.\n\n", year, month, day, days);
 }
 
 return 0;
}
// 函数定义
// 补足函数days_of_year的定义
// xxx 
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+=day;
    if(year%4==0&&year%100!=0||year%400==0)
        s++;
    return s;
}

任务三

#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 sum,ave;
    for(i=0; i<n; ++i) 
    sum+=x[i]; 
    ave=sum/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;
            }
        }
            
    }
}

任务四

#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;
}
// 函数定义
// 功能: 把十进制数x转换成n进制,打印输出
// 补足函数实现
void dec2n(int x, int n)
{
 int a[100];
 int i,j,k;
 for(i=0;x!=0;i++)
{
 j=x%n;
 a[i]=j;
 x=x/n;
}
for(k=i-1;k>=0;k--)
{
  if(a[k]>9&&a[k]<16)
    {
    printf("%c",a[k]-10+'A');
    }
  else
    {
    printf("%d",a[k]);
    }
}
 printf("\n");
 // 待补足
}

任务五

# include<stdio.h>
#define N 10
void fun(int x[N][N],int n);
int main() 
{
    int a[N][N];
    int n,i,j;
    printf("Enter n:");
    while(scanf("%d",&n)!=EOF)
    {
        
        fun(a,n); 
        printf("\nEnter n: ");
    }
    return 0;
} 
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;
        }
      printf("%d ",x[i][j]);
      }
    printf("\n");
    }
    
}

任务六

#include <stdio.h>
#define N 60
int main()
{
 char views1[N] = "hey, c, i hate u.";
 char views2[N] = "hey, c, i love u.";
 
 // 待补足
 // xxx 
printf("Original views:\n");
printf("view1:%s\n",views1);
printf("view2:%s\n",views2);
printf("\n");

    char views3[N];
    int i=0;
for(i=0;i<N;i++)
{
    views3[i]=views1[i];
    views1[i]=views2[i];
    views2[i]=views3[i];        
}
printf("swapping...\n\n");
printf("view1:%s\n",views1);
printf("view2:%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;
}
// 函数定义
// 功能:使用冒泡排序算法对二维数组str中的n个字符串按字典序排序
// 补足函数bubble_sort()实现 
// ×××
void bubble_sort(char str[][M], int n)
{
    int i,j;char mid[M];
    for(i=0;i<N;i++)
    {
        for(j=0;j<i;j++)
        {
            if(strcmp(str[j],str[j+1])>0)
            {
                strcpy(mid,str[j]);
                strcpy(str[j],str[j+1]);
                strcpy(str[j+1],mid);
            }
        }
    }
}

 

posted @ 2022-05-07 22:00  &H  阅读(119)  评论(4编辑  收藏  举报