五十铃皮卡dmax报价:求助 C语言的问题

来源:百度文库 编辑:神马品牌网 时间:2024/05/04 20:09:18
(1)输入20个数,将他们从小到大排序后输出。并给出每个元素对应的原来的次序。例 输入 27.2.25.14.39
输出:
3 2
14 4
25 3
26 1
39 5

(2)
定义一个函数 int check(n,d) , 它返回一个逻辑值,如果数字d在整数n的某位中出现,返回 1 , 否则返回 0 , 例如 check (3256,2)=1 : check(1725,3)=0:

就这两个程序,谢谢~

wq 你看下相关的资料吧去网是就找到了啊

(1) 太繁琐了,没那么多时间写代码,思路说一下:
可用 int [20][2] 来存放输入的数,第二维的第一个元素放数字的值,第二个记录输入时的顺序。排序时根据数字大小排。但记住交换要连输入时的顺序一起交换,这样排好序,每个数原来的顺序还有记录。

(2) 代码还是要给的,这个没这么麻烦
int check(int n, int d)
{
do if (d == n%10) return 1; while (n/=10);
return 0;
}
---------------
完整程序如下:
#include <stdio.h>

int check(int n, int d)
{
do if (d == n%10) return 1; while (n/=10);
return 0;
}

int main()
{
printf("%d %d\n", check(12345, 1), check(12345, 6));
return 0;
}

第一题:
//--
typedef struct
{
int index;
int num;
}TNode;

int main()
{
TNode array[20];
int i,j;
for(i=0;i<20;i++)
{
scanf("%d",&array[i].num);
array[i].index=i;
}
for(i=0;i<20;i++)
for(j=0;j<i-1;j++)
{
if(array[j].num>array[j+1].num)
{
temp=array[j].num;
array[j].num=array[j+1].num;
array[j+1].num=temp;
}
}
for(i=0;i<20;i++)
{
printf("%d\t%d\n",array[i].num,array[i].index);
}
return 0;
}

第二题:
int check(int n,int d)
{
int i;
while(n/10>1)
{
if((n%10)==d)
return 1;
n/=10;
}
return 0;
}

我的电脑上暂时没装编程软件,我随便写的,可能有一些很基本的错误。改改看。