2023.6.1 作业
1.
#include <stdio.h>
int main(int argc, const char *argv[])
{
int m,n;
printf("行数");
scanf("%d",&m);
printf("列数");
scanf("%d",&n);
int arr[m][n];
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
printf("二维数组arr[%d][%d]=",i,j);
scanf("%d",&arr[i][j]);
}
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
printf("%d",arr[i][j]);
}
puts("");
}
//找最大值 最小值 次小值
int max,min,second;
max=min=arr[0][0];
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(max<arr[i][j])
{
max=max^arr[i][j];
arr[i][j]=max^arr[i][j];
max=max^arr[i][j];
}
if(min>arr[i][j])
{
min=min^arr[i][j];
arr[i][j]=min^arr[i][j];
min=min^arr[i][j];
}
}
}
second=min;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(second<arr[i][j])
{
if(arr[i][j]==max)
continue;
second=second^arr[i][j];
arr[i][j]=second^arr[i][j];
second=second^arr[i][j];
}
}
}
printf("最大值%d 次大值%d 最小值%d\n",max,second,min);
printf("二维数组arr最大和=%d,最大差=%d\n",max+second,max-min);
return 0;
}
2.#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char str1[10];
char str2[10];
gets(str1);
gets(str2);
puts("");
char str3[10];
strcpy(str3,str2);
strcpy(str2,str1);
puts(str2);
strcpy(str1,str3);
puts(str1);
return 0;
}
3.
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char str1[30],str2[10],str3[10];
gets(str1);
gets(str2);
gets(str3);
strcat(str1,str2);
strcat(str1,str3);
puts(str1);
int len=strlen(str1);
int a=0,b=0,c=0,d=0;
for(int i=0;str1[i]!='\0';i++)
{
if(str1[i]>='A'&&str1[i]<='Z') a++;
else if (str1[i]>='a'&&str1[i]<='z') b++;
else if(str1[i]>='0'&&str1[i]<='9') c++;
else d++;
}
printf("大写字母有%d个 小写字母有%d个 数字有%d个 特殊字符有%d个\n",a,b,c,d);
return 0;
}
4.
#include <stdio.h>
int main(int argc, const char *argv[])
{
char str1[]="123456";
char str2[4]="789";
//拷贝
int i=0;
for(i=0;str2[i]!='\0';i++)
{
str1[i]=str2[i];
}
str1[i]='\0';
puts(str1);
//链接
for(i=0;str1[i]!='\0';i++);
for(int j=0;str2[j]!='\0';j++)
str1[i++]=str2[j];
str1[i]='\0';
puts(str1);
return 0;
}