你是如何在世界上格式化这些东西排队,我尝试了一切,没有任何改变?!
printf("N Count\n");
printf("---- ------ \n");
for(i = 0 ; i < MAX_ELEMENTS ; i++)
{
count = getOccur(arr, MAX_ELEMENTS, arr[i]);
printf("%1d %1d\n", arr[i], count);
}
我已经尝试过Tab键,间距,那些%符号和最后一个的数字,它不会改变这个
N Count
----- ---
1 1
2 1
3 1
让我发疯!我不明白!洛尔
编辑整个计划新问题!
#include <stdio.h>
#define MAX_ELEMENTS 10
int getOccur(int a[], int num_elements, int value);
void printArr(int a[], int num_elements);
int main()
{
int arr[MAX_ELEMENTS];
int trim[MAX_ELEMENTS];
int count, target, i;
int j, k, temp;
for(i = 0 ; i < MAX_ELEMENTS ; i++)
{
printf("Enter a variable for the array: ");
scanf("%d", &arr[i]);
}
for (j = 1 ; j <= MAX_ELEMENTS-1 ; j++)
{
for(k = 0 ; k <= MAX_ELEMENTS-2 ; k++)
{
if(arr[k] > arr[k+1])
{
temp = arr[k];
arr[k] = arr[k+1];
arr[k+1] = temp;
}
}
}
printf("%4s %6s\n", " N ", "Count");
printf("%4s %6s\n", "----", "------");
for(i = 0 ; i < MAX_ELEMENTS ; i++)
{
count = getOccur(arr, MAX_ELEMENTS, arr[i]);
printf("%3d %4d\n", arr[i], count);
}
}
int getOccur(int a[], int tally, int value)
{
int i;
tally = 0;
for( i = 0 ; i < MAX_ELEMENTS ; i++)
{
if (a[i] == value)
{
++tally;
}
}
return(tally);
}
void printArr(int a[], int amount)
{
int i;
for(i = 0 ; i < amount ; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
答案 0 :(得分:1)
printf("%4s %6s\n", " N ", "Count");
printf("%4s %6s\n", "----", "------");
for(i = 0 ; i < MAX_ELEMENTS ; i++)
{
count = getOccur(arr, MAX_ELEMENTS, arr[i]);
printf("%4d %6d\n", arr[i], count);
}
应该排列所有内容。
修改强>
在回答评论中的问题时,我的方法是首先找到arr
中的所有唯一值,并将它们保存到不同的数组(称之为unique
)。然后你将遍历循环中的unique
数组:
for (i = 0; i < uniqueCount; i++)
{
count = getOccur(arr, MAX_ELEMENTS, unique[i]);
printf("%4d %6d\n", unique[i], count);
}
至于寻找独特元素,蛮力方法就像
size_t uniqueCount = 0;
int unique[MAX_SIZE]; // needs to be same size as original array in case
// all values are unique
for (i = 0; i < MAX_SIZE; i++)
{
size_t j = 0;
for (j = 0; j < uniqueCount; j++)
if (arr[i] == unique[j])
break;
if (j == uniqueCount)
unique[uniqueCount++] = arr[i];
}
对于原始数组中的每个元素,我们扫描(最初为空)unique
数组。如果我们在a[i]
数组中找不到unique
的值,我们会添加它并递增uniqueCount
。
请注意,此方法效率很低,并且在MAX_ELEMENTS变大时性能会很差。有更好的解决方案,但你听起来仍然处于学习曲线的底部,所以我会留下它。
答案 1 :(得分:0)
这就是你要找的东西。第一列有四个 - 所以最小宽度为四,下一列有大小 - 所以格式字符串中指定的最小宽度为6。见printf手册页
printf("N Count\n");
printf("---- ------ \n");
for(i = 0 ; i < MAX_ELEMENTS ; i++)
{
count = getOccur(arr, MAX_ELEMENTS, arr[i]);
printf("%4d %6d\n", arr[i], count);
}
修改强>
首先编辑printf