c - C 函数 shuffle、read_vector、display_vector
问题描述
我如何在 C 中使用read_vector
和display_vector
?我必须洗牌数组,然后使用这个函数。
void shuffle(int tab[], int size)
. 不知道read_vector
好display_vector
不好。任何帮助都会很好。(它必须是最大 100 个数字)
#include<stdio.h>
void shuffle(int tab[], int size);
int read_vector(int vec[], int size, int stop_value);
void display_vector(const int vec[], int size);
int main()
{
int i;
int tab[101], a;
printf("Podaj pierwszy wektor: ");
for(i=0; i<100; i++)
{
a = scanf("%d", &tab[i]);
if(a<1)
{
printf("Incorrect input");
return 1;
}
if(tab[0]==0)
{
printf("Not enough data available");
return 2;
}
if(tab[i]==0)
{
break;
}
}
shuffle(tab[i], i);
for(i=0; i<100; i++)
{
printf("%d", tab[i]);
}
return 0;
}
void shuffle(int tab[], int size)
{
int i, j=0, x=0;
for(i=size; i>0; i--)
{
j = rand() % size+1;
x = tab[i];
tab[i]=tab[j];
tab[j]=x;
x=0;
}
}
解决方案
以下建议的代码:
- 干净地编译
- 包含对问题的评论
- 执行所需的功能
- 正确检查错误
- 消除了“神奇”数字 100 和 101
- 由于 OPs 代码没有单独的功能,我
read_vector()
也display_vector()
没有单独实现它们,但是,它们应该很容易实现
现在建议的代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void shuffle(int tab[], int size);
//int read_vector(int vec[], int size, int stop_value);
//void display_vector(const int vec[], int size);
#define MAX_VECTOR_LENGTH 100
int main( void )
{
int i;
int tab[ MAX_VECTOR_LENGTH ];
srand( (unsigned)time( NULL ) );
printf("Podaj pierwszy wektor:\n ");
for(i=0; i<MAX_VECTOR_LENGTH; i++)
{
printf( "%s", "enter vector entry or 0 to indicate done " );
if( scanf("%d", &tab[i]) != 1)
{
fprintf( stderr, "scanf failed\n");
exit( EXIT_FAILURE );
}
// implied else, scanf successful
if(tab[i]==0)
{
break;
}
}
shuffle(tab, i-1);
for(int j = 0; j < i; j++)
{
printf("%d ", tab[j]);
}
return 0;
}
void shuffle(int tab[], int size)
{
int i;
int j;
int x;
for(i=size; i>0; i--)
{
j = rand() % size;
x = tab[i];
tab[i]=tab[j];
tab[j]=x;
}
}
程序的典型运行会导致:
Podaj pierwszy wektor:
enter vector entry or 0 to indicate done 1
enter vector entry or 0 to indicate done 2
enter vector entry or 0 to indicate done 3
enter vector entry or 0 to indicate done 4
enter vector entry or 0 to indicate done 5
enter vector entry or 0 to indicate done 6
enter vector entry or 0 to indicate done 7
enter vector entry or 0 to indicate done 0
1 6 5 3 4 7 2
推荐阅读
- python - FileNotFoundError:[Errno 2] 没有这样的文件或目录:'/env/lib/python3.7/site-packages/googlesearch/browser_agents.txt'
- python - 使用正则表达式匹配最后一次出现
- azure - Azure Blob 错误:指定的 Blob 不存在,但 Blob 存在
- reactjs - ReactJS Firebase 检索批量上传图像的 URL
- python-3.x - fetchall() 的结果是否有一些 next() 可迭代
- kubernetes - 使用客户拥有的密钥加密 kubernetes pvc 存储
- jquery-select2 - 如果我们动态附加新选项,选择 2 不起作用
- typo3 - TYPO3 bootstrap_grids - 如何修改内容元素的标题?
- reactjs - 使用 react-hooks-testing-library 测试自定义钩子
- java - 为什么它说它已经使用构造函数定义了?