2024年2月14日
1.请编程实现二维数组的杨慧三角
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void Yanghui(int n,int (*p)[n])
{for(int i=0;i<n;i++){for(int j=0;j<=i;j++){if(j==0||i==j){*(*(p+i)+j)=1;}else{*(*(p+i)+j)=*(*(p+i-1)+j-1)+*(*(p+i-1)+j);}}}
}
int main(int argc, const char *argv[])
{int n;printf("pleasee enter n:");scanf("%d",&n);int arr[n][n];Yanghui(n,arr);for(int i=0;i<n;i++){for(int j=0;j<=i;j++){printf("%d ",arr[i][j]);}printf("\n");}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++){printf("please enter arr[%d][%d]:",i,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++){printf("please enter arr[%d][%d]:",i,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;
}