作业1:编程实现二维数组的杨辉三角
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{int n;printf("please enter n:");scanf("%d",&n);int arr[n][n];for(int i=0;i<n;i++){for(int j=0;j<=i;j++){if(j==0 || j==i){arr[i][j]=1;}else{arr[i][j]=arr[i-1][j-1]+arr[i-1][j];}printf("%-4d",arr[i][j]);}puts("");}return 0;
}
效果图:
作业2:编程实现二维数组计算每一行的和以及列和
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{int arr[2][3];//循环输入二维数组for(int i=0;i<2;i++){for(int j=0;j<3;j++){scanf("%d",&arr[i][j]);}}//计算每一行的和for(int i=0;i<2;i++){int sum1=0;for(int j=0;j<3;j++){sum1+=arr[i][j];}printf("第%d行 sum1=%d\n",i+1,sum1);}//计算每一列的和for(int j=0;j<3;j++){int sum2=0;for(int i=0;i<2;i++){sum2+=arr[i][j];}printf("第%d列 sum2=%d\n",j+1,sum2);}return 0;
}
效果图:
作业3:编程实现二维数组计算第二大值
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{int arr[2][3];//循环输入数组for(int i=0;i<2;i++){for(int j=0;j<3;j++){scanf("%d",&arr[i][j]);}}int max=arr[0][0],second_max=arr[0][0];for(int i=0;i<2;i++){for(int j=0;j<3;j++){if(max<arr[i][j]){max=arr[i][j];//找出最大值}if(second_max>arr[i][j]){second_max=arr[i][j];//用第二大值存储最小值}}}//再次遍历数组for(int i=0;i<2;i++){for(int j=0;j<3;j++){if(max==arr[i][j]){continue;//最大值则跳过}if(second_max<arr[i][j]){second_max=arr[i][j];//大于最小值则赋值给第二大值}}}printf("second_max=%d\n",second_max);return 0;
}
效果图:
作业4:非函数实现系统函数strcat,strcmp,strcpy,strlen
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void my_strcat(char *dest,char *src);
int my_strcmp(char *dest,char *src);
void my_strcpy(char *dest,char *src);
int my_strlen(char *dest);
int main(int argc, const char *argv[])
{char dest[20]="";char src[20]="";printf("please enter dest:");gets(dest);printf("please enter src:");gets(src);my_strcat(dest,src);puts(dest);int a=my_strcmp(dest,src);if(a>0){puts("dest>src");}else if(a<0){puts("dest<src");}else{puts("dest=src");}my_strcpy(dest,src);puts(dest);int len=my_strlen(dest);printf("strlen=%d\n",len);return 0;
}
void my_strcat(char *dest,char *src)
{int i,j;for(i=0;*(dest+i)!='\0';i++);for(j=0;*(src+j)!='\0';j++){*(dest+i+j)=*(src+j);}*(dest+i+j)='\0';
}
int my_strcmp(char *dest,char *src)
{int i=0;while(*(dest+i)==*(src+i)){if(*(dest+i)=='\0'){break;}i++;}int a=*(dest+i)-*(src+i);return a;
}
void my_strcpy(char *dest,char *src)
{int i;for(i=0;*(src+i)!='\0';i++){*(dest+i)=*(src+i);}*(dest+i)='\0';
}
int my_strlen(char *dest)
{int i;for(i=0;*(dest+i)!='\0';i++);return i;
}
效果图: