2016-11-11 2 views
0

Это программа для подготовки простого студента marklist:Печати со структурой

#include <stdio.h> 
#include <conio.h> 
#define SIZE 50 

struct mark { 
    char name[50]; 
    float marks[5]; 
}; 

int main() { 

    int sn, subn, i, j; 

    printf ("\n Enter Number of Students : "); 
    scanf ("%d",&sn); 

    printf ("\n"); 

    struct mark n[SIZE]; 

    for (i = 1; i < sn + 1; ++i){ 
    printf (" Enter Name of Student %d : ",i); 
    scanf ("%s",&n[i - 1].name); 

    for (j = 1; j < 6; ++j){ 
     printf (" Enter Marks of Subject %d : ",j); 
     scanf ("%f",&n[i - 1].marks[j - 1]); 
    } 
    } 

    printf ("\n\n ------------------------------------------------------------------- \n\n"); 

    printf (" Student Name \t\t Sub 1\t Sub 2\t Sub 3\t Sub 4\t Sub 5"); 

    printf ("\n --------------------------------------------------------------------\n"); 

    for (i = 0; i < sn; ++i) { 
    printf ("\n %s \t\t ",n[i].name); 

    for (j = 0; j < subn; ++j){ 
     printf ("%d \t",n[i].marks[j]); /* Problem with this line. Prints integers like -24611 etc.*/ 
    } 
    } 

    getch(); 
    return 0; 
} 

Когда я доберусь до отмеченной линии, программа печатает некоторые числа как -241563 и т.д.

Что случилось? Это что-то со структурой? Сначала он печатает пять 0, когда он печатает метки. А затем печатает целые числа, такие как -241563. Пожалуйста помоги.

+0

'marks' является массивом' float's. Используйте% f. –

ответ

0

Строка формата в printf не соответствует списку аргументов

Изменения:

printf("%d \t", n[i].marks[j]); 

в

printf("%f \t", n[i].marks[j]); 
+0

Исправлено. Проблема заключалась в том, что я поставил% d вместо% f, а также использовал «subn», который не работал в этой программе. –

+0

@AnikShahriar фактически 'subn' никогда не был инициализирован. Разве ваш собеседник не предупредил вас? –

+0

Нет, это не так. –

Смежные вопросы