2、输入一个由5位数字组成的字符串,将其每一位数字经过函数𝐟(𝐱)=(𝐱−𝟑)𝟐−𝟏后,使用直接选择排序法从小到大排序后输出。(10分)程序示例:请输入5位数字字符串:97146 转换并排序后是:0 3 8 15 35
```c
#include<stdio.h>
int main()
{
char a[5];
int i,j;
int temp;
scanf("%d",a);
for(i=0;i<5;i++)
{
a[i]=(a[i]-3)*(a[i]-3)-1;
}
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i<5;i++)
printf("%d ",a[i]);
return 0;
}
```
a[i]算出来就是不对
#include <stdio.h>
int main()
{
int a[5];
int i, j;
int temp;
for(i = 0;i < 5;i++){
char c = getchar();
a[i] = c - '0';
}
for (i = 0; i < 5; i++)
{
a[i] = (a[i] - 3) * (a[i] - 3) - 1;
}
for (i = 0; i < 5; i++)
{
for (j = 0; j < 4; j++)
{
if (a[j] > a[j + 1])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for (i = 0; i < 5; i++)
printf("%d ", a[i]);
return 0;
}
#include<stdio.h>
int main()
{
int a[5];
char b[6];
int i,j;
int temp;
//字符串接收
scanf("%s",b);
for(i=0;i<5;i++)
{
//字符串每一位转成数字存到数字数组中
a[i]=(b[i]-'0'-3)*(b[i]-'0'-3)-1;
}
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i<5;i++)
printf("%d ",a[i]);
return 0;
}
#include<stdio.h>
int main()
{
char a[5] = {};
int b[5];
int i, j;
int temp;
for (i = 0; i < 5; i++)
{
scanf("%c", &a[i]);
b[i] = (a[i] - '0' - 3) * (a[i]- '0' - 3) - 1;
}
for (i = 0; i < 5; i++)
{
for (j = 0; j < 4; j++)
{
if (b[j] > b[j + 1])
{
temp = b[j];
b[j] = b[j + 1];
b[j + 1] = temp;
}
}
}
for (i = 0; i < 5; i++)
printf("%d ", b[i]);
return 0;
}