2016-07-05 33 views
2

這是必須從用戶處取得輸入數組並在移除重複項後輸入相同數字的代碼。但是,我不確定如何在其中包含輸入數組,現在它具有硬編碼的元素。這是我編程的第一週,所以我很抱歉如果這是一個愚蠢的問題。這是代碼:如何在此程序中包含輸入數組

#include <stdio.h> 
#include <stdbool.h> 

#define nelems 8 
int main() 
{ 
    int l[nelems] = {1,2,3,1,4,4,5,6};  

    for(int m=0;m<nelems;m++) 
    { 
     bool wase = 0; 
     for(int n=0;n<nelems && m>n;n++)   
     { 
      if (l[m] == l[n] && m != n) 
       wase = 1; 
     } 
     if (wase == 0){ 
      printf("%d\n", l[m]); 
     } 
    } 

    return 0; 
} 
+0

N'沒有在嵌套的for循環需要,只是'ñ N'是不夠,因爲'M'總是' Cherubim

+1

,是不是清楚你的問題的問題是「如果你找到重複的數據,你想對用戶數組做什麼?這是用戶數據的捕獲,是用戶在代碼運行時輸入的結果,還是可以從數據文件中讀取這些數據?如果來自用戶,則循環遍歷所有以前輸入的值,如果它是*非唯一*,則提示糾正。如果數據來自文件,則要麼拒絕整個數據集'smooth'價值以某種可接受的方式進行,以便繼續讓您的代碼執行。不知道情況, –

回答

0

這就是你需要的。

#include <stdio.h> 
#include <stdbool.h> 

#define nelems 8 
int main() 
{ 
    int i; 
    int l[nelems] ; 
    for(i=0;i<nelems;i++) 
    { 
     printf("enter %d number :",i); 
     scanf("%d",&l[i]); 
    } 

    for(int m=0;m<nelems;m++) 
    { 
     bool wase = 0; 
     for(int n=0;n<nelems && m>n;n++)   
     { 
      if (l[m] == l[n] && m != n) 
       wase = 1; 
     } 
     if (wase == 0){ 
      printf("%d\n", l[m]); 
     } 
    } 

    return 0; 
} 
1

嘗試使用for循環和scanf。

int i; 
for(i=0;i<nelems;i++){ 
    scanf("%d",&l[i]); 
} 
0

如果你喜歡INT類型的數組,你可以聲明另一個問題:

int input[nelems]; 

,並按照user968000建議,記住,當你在控制檯輸入序列你必須把每個數字之間有一個空格。 爲了避免這種情況,我寧願使用char類型數組,聲明如下:

char l[nelems] = {'1', '2', '3' /*etc.*/}; 
char input[nelems]; 

然後你做一個循環,作爲user968000建議:

int i; 
for(i=0;i<nelems;i++) 
    scanf("%c", &input[i]); 

在這種情況下,你將不需要數字之間的空白。注意scanf函數中的'&'字符:就像我所展示的那樣,你一定會知道下一課是什麼。

所以你有一個輸入數組,你可以根據需要處理它。