嵌入式学习-C语言基础-Day9
一、思维导图
二、作业
1.通过指针实现单词逆置
eg: “good good study”
输出:“study good good”
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char str[30]="";
printf("输入需要逆置的字符串:\n");
gets(str);
char* i=str;
char* j=str+strlen(str)-1;
while(i<j)
{
char t=*i;
*i=*j;
*j=t;
i++;
j--;
}
//puts(str);
i=str;
j=str;
char* k=str;
while(*i!='\0')
{
while(*j!=' '&&*j!='\0')
{
j++;
}
char* k=j-1;
while(i<k)
{
char t=*i;
*i=*k;
*k=t;
i++,k--;
}
while(*j==' ')
{
j++;
}
i=j;
}
printf("逆置后的字符串是:\n");
puts(str);
return 0;
}
运行结果
2.定义有参有返函数,实现计算二维数组的第二大值
int SecondMax(int line,int row,int arr[line][row])
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int SecondMax(int line,int row,int arr[line][row]);
int main(int argc, const char *argv[])
{
int line,row;
printf("输入二维数组的行和列:");
scanf("%d %d",&line,&row);
int arr[line][row];
printf("输入数组元素\n");
for(int i=0;i<line;i++)
{
for(int j=0;j<row;j++)
{
scanf("%d",&arr[i][j]);
}
}
int num=SecondMax(line,row,arr);
printf("second num=%d\n",num);
return 0;
}
int SecondMax(int line,int row,int arr[line][row])
{
int max=arr[0][0]; //找到最大的数
for(int i=0;i<line*row;i++)
{
if(max<arr[0][i])
max=arr[0][i];
}
int second=arr[0][0]; //给second赋值最小的数
for(int i=0;i<line*row;i++)
{
if(second>arr[0][i])
second=arr[0][i];
}
for(int i=0;i<line*row;i++) //找到第二大的数
{
if(arr[0][i]>second&&arr[0][i]!=max)
second=arr[0][i];
}
return second;
}
运行结果