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