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