实验任务4
实验任务1
#include<stdlib.h>
#include<stdio.h>
#define N 4
int main(){
int a[N]={'1','9','8','4'};
char b[N]={'1','9','8','4'};
int i;
printf("sizeof(ing)=%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);
system("pause");
return 0;
}
1)连续存放,每个元素占用4个字节单元
2)连续存放,每个元素占用1个字节单元
3)是的
Task1_2
#include<stdlib.h>
#include<stdio.h>
#define N 2
#define M 4
int main(){
int a[N][M]={{1,9,8,4},{2,0,2,2}};
char b[N][M]={{'1','9','8','4'},{'2','0','2','2'}};
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]);
system("pause");
return 0;
}
1) 是的,每个元素占用4个字节单元
2) 是的,每个元素占用1个字节单元
实验任务2
#include<stdio.h>
#include<stdlib.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);
}
system("pause");
return 0;
}
int days_of_year(int year,int month,int day){
int jud=0,ans=0;
if((year%4==0&&year%100!=0)||year%400==0)jud=1;
switch(month){
case 1:ans=day;break;
case 2:ans=31+day;break;
case 3:ans=31+28+day;break;
case 4:ans=31*2+28+day;break;
case 5:ans=31*2+28+30+day;break;
case 6:ans=31*3+28+30+day;break;
case 7:ans=31*3+28+30*2+day;break;
case 8:ans=31*4+28+30*2+day;break;
case 9:ans=31*5+28+30*2+day;break;
case 10:ans=31*5+28+30*3+day;break;
case 11:ans=31*6+28+30*3+day;break;
case 12:ans=31*6+28+30*4+day;break;
}
if(jud)ans++;
return ans;
}
#include<stdio.h>
#include<stdlib.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);
}
system("pause");
return 0;
}
int days_of_year(int year,int month,int day){
int jud=0,ans=0;
if((year%4==0&&year%100!=0)||year%400==0)jud=1;
switch(month){
case 1:ans=day;break;
case 2:ans=31+day;break;
case 3:ans=31+28+day;break;
case 4:ans=31*2+28+day;break;
case 5:ans=31*2+28+30+day;break;
case 6:ans=31*3+28+30+day;break;
case 7:ans=31*3+28+30*2+day;break;
case 8:ans=31*4+28+30*2+day;break;
case 9:ans=31*5+28+30*2+day;break;
case 10:ans=31*5+28+30*3+day;break;
case 11:ans=31*6+28+30*3+day;break;
case 12:ans=31*6+28+30*4+day;break;
}
if(jud)ans++;
return ans;
}
实验任务3
#include<stdio.h>
#include<stdlib.h>
#define N 5
void input(int x[],int n);
void output(int x[],int n);
double average(int x[],int n);
void bubble_sort(int x[],int n);
int main(){
int scores[N];
double ave;
printf("Enter %d scores:\n",N);
input(scores,N);
printf("\nprint the scores:\n");
output(scores,N);
printf("\nProcessing:average,sort...\n");
ave=average(scores,N);
bubble_sort(scores,N);
printf("\nprint the average grades:%.2f\n",ave);
printf("\nprint the scores(from high to low):\n");
output(scores,N);
system("pause");
return 0;
}
//defined functions:
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){
double ans=0.0;int i=0;
for(;i<N;++i) ans+=x[i];
ans=ans*1.0/n;
return ans;
}
void bubble_sort(int x[],int n){
int jud=1,i=1,mid;
while(jud){
jud=0;
for(i=1;i<=N;++i)
if(x[i-1]<x[i]){mid=x[i-1];x[i-1]=x[i];x[i]=mid;jud=1;}
}
}
实验任务4
#include<stdio.h>
#include<stdlib.h>
#define N 100
void dec2n(int x,int n);
int main(){
int x;
printf("Enter:(number)10 ");
while(scanf("%d",&x)!=EOF){
dec2n(x,2);
dec2n(x,8);
dec2n(x,16);
printf("\nEnter:(number)10 ");
}
return 0;
}
void dec2n(int x,int n){
int a[20]={0},i=0;
while(x>0){
a[i]=x%n;
x/=n;
++i;
}
for(;i>0;--i){
if(n==16)
switch (a[i-1]){
case 10:printf("A");break;
case 11:printf("B");break;
case 12:printf("C");break;
case 13:printf("D");break;
case 14:printf("E");break;
case 15:printf("F");break;
default: printf("%d",a[i-1]);break;
}
else printf("%d",a[i-1]);
}
printf("\n");
}
实验任务5
#include<stdio.h>
#include<stdlib.h>
#define N 100
void func(int x[][N],int n);
void output(int x[][N],int n);
int main(){
int x[N][N];
int i,j,n;
printf("Enter n:");
while(scanf("%d",&n)!=EOF){
func(x,n);
output(x,n);
printf("\nEnter n:");
}
system("pause");
return 0;
}
void output(int x[][N],int n){
int i,j;
for(i=0;i<n;++i){
for(j=0;j<n;++j)
printf("%5d",x[i][j]);
printf("\n");
}
}
void func(int x[][N],int n){
int i,j;
for(i=0;i<=n;++i){
for(j=0;j<=n;++j){
if(i<=j){x[i][j]=1+i;}
else x[i][j]=1+j;
}
}
}
实验任务6
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 80
int main(){
char views1[N]="hey,c,i have not love u yet.";
char views2[N]="hey,c,how can i love u?";
char t[N];
printf("Before the change:\n");
printf("views1:%s\n",views1);
printf("views2:%s\n",views2);
//change
strcpy(t,views1);
strcpy(views1,views2);
strcpy(views2,t);
printf("After the change:\n");
printf("views1:%s\n",views1);
printf("views2:%s\n",views2);
system("pause");
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 80
int main(){
char views[2][N] = {"hey,c, i have not love u yet.","hey,c, how can i love u?"};
char t[N];
printf("Before the change: \n");
printf("views1: %s\n", views[0]);
printf("views2: %s\n", views[1]);
strcpy(t, views[0]);
strcpy(views[0], views[1]);
strcpy(views[1], t);
//change
printf("After the change: \n");
printf("views1: %s\n", views[0]);
printf("views2: %s\n", views[1]);
system("pause");
return 0;
}
不同:6.1为两个一维数组间的交换,6.2为一个两维数组内行的交换
实验任务7
#include<stdio.h>
#include<stdlib.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("print the original menu:\n");
for (i = 0; i < N; i++)
printf("%s\n", name[i]);
printf("\nsorting...\n");
bubble_sort(name, N);
printf("\nprint like the dictionary:\n");
for (i = 0; i < N; i++)
printf("%s\n", name[i]);
system("pause");
return 0;
}
void bubble_sort(char str[][M], int n){
int i,j;
char x[100];
for(j=0;j<N-1;++j){
for(i=0;i<N-j-1;++i){
if(strcmp(str[i],str[i+1])>0){
strcpy(x,str[i]);
strcpy(str[i],str[i+1]);
strcpy(str[i+1],x);
}
}
}
}