1. 如何让计算机生成一个各位相异的四位数(MakeDigit函数):
[方法1]
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void MakeDigit(short []);
void Show(short []);
int main()
{
short X[4];
MakeDigit(X);
Show(X);
/* */
return 0;
}
/* 随机生成一个各位相异的四位数 */
void MakeDigit(short a[])
{
srand(time(NULL));
/* 先生成个位数字 */
a[0] = rand() % 10;
/* 接着生成十位数字 */
do
{
a[1] = rand() % 10;
/* 如果生成的十位数字和个位数字相同, 须重新生成十位数字, 直到二者不相等为止 */
}while(a[0] == a[1]);
/* 然后生成百位数字 */
do
{
a[2] = rand() % 10;
/* 至此个位数字和十位数字一定不同 */
/* 须确保生成的百位数字和个位数字、十位数字都不相同 */
}while(a[0] == a[2] || a[1] == a[2]);
/* 最后生成千位数字 */
do
{
a[3] =rand() % 10;
/* 至此个位数字、十位数字和百位数字均不相同 */
/* 须确保生成的千位数字和个位数字、十位数字、百位数字均不相同 */
}while(a[0] == a[3] || a[1] == a[3] || a[2] == a[3]);
}
/* 从高位开始输出生成的4位随机数字 */
void Show(short b[])
{
short i = 3;
while(i >= 0)
{
printf("%hd", b[i]);
i --;
}
}
[方法2]
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void MakeDigit(short []);
void Swap(short *, short *);
void Show(short []);
int main()
{
short X[10];
MakeDigit(X);
Show(X);
/* */
return 0;
}
/* 随机生成一个各位相异的四位数 */
void MakeDigit(short a[])
{
short i, j;
srand(time(NULL));
/* 将0~9共十个数字顺序放入数组a中 */
for(i = 0; i < 10; i ++)
{
a[i] = i;
}
for(i = 0; i < 10; i ++)
{
/* 随机生成一个下标值j */
j = rand() % 10;
/* 交换数组元素a[i]与a[j]的值 */
Swap(a + i, a + j);
}
/* 10次循环后, 数组a中的数已打乱顺序 */
/* 接着在主函数中调用Show函数只显示数组的前四个元素, 即可达到预期效果 */
}
/* 交换两变量的值 */
void Swap(short *a, short *b)
{
short temp;
temp = *a;
*a = *b;
*b = temp;
}
/* 从高位开始输出生成的4位随机数字 */
void Show(short b[])
{
short i = 3;
while(i >= 0)
{
printf("%hd", b[i]);
i --;
}
}
2. 如何判断用户输入的数据是否合法(InputG