Некорректный вывод char - C (СИ)

  1. Подскажите пожалуйста, почему при выводе char у меня всегда выводит "и" не смотря на то, что я ввожу не её??C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include<stdio.h> #include<conio.h>   int main() {    float F;    long int I;    double D;    char C;    printf("Vvedite dannie float, long int, double, char :\n");    scanf("%f %i %d %c", &F, &I, &D, &C);    printf("\n Float: %-14.3f \n Int: %-i \n Double: %-14.3d \n Char: %-c",F,I,D,C);    getch();    return 0; }Добавлено через 1 минуту задание здесь просто ввести и вывести


textual

Код:

#include <stdio.h>
 
int main(void)
{
   float F = 100.500f;
   long int I = 100500;
   double D = 100.500;
   char C = '0';
//   printf("Vvedite dannie float, long int, double, char :\n");
//   scanf("%f %i %d %c", &F, &I, &D, &C);
   printf("\n Float: %-14.3f \n Int: %-li \n Double: %-14.3lf \n Char: %-c", F, I, D, C);
   return 0;
}


Похожие ответы
  1. Собственно, вопрос следующий: Необходимо считать строку и изменить её. Проделать это с N строками. Затем вывести результат изменения всех строк. Грубо говоря, мы узнаём у пользователя сколько строк будет вводиться, считываем поочерёдно строки, параллельно изменяя их определённым образом, а затем у меня загвоздка: не знаю, как лучше поступить... Наверное, куда-то и как-то сохранить. Но как создать нужное кол-во массивов типа char с разными именами под изменённые строки - не знаю. Подскажите, пожалуйста. Обрыл весь форум... Прикладываю код.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 #include #include #include   int main() {    int ai,a;    char str0[BUFSIZ];    printf("Input number of strings: ");    scanf("%d",&a);    for(ai=0;ai

  1. Дорогие знатоки, проблема следующая: при выводе строки на экран появляется символ переноса строки появление которого моему уму не постижимо (в программировании слабоват). Надеюсь на вашу помощь) Собственно проблема на скрине.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 #include #include #include #include #include   #define N 3   char predmet1[20]; char predmet2[20]; char predmet3[20];   char shif_stud[] = "Шифр студента"; char shif_grup[] = "Шифр группы"; char FIO[] = "Ф.И.О. студента"; char sred[] = "Средний балл";   float alg_1(float a, float b, float c) //Вычесление среднего балла студента {     float res = (a + b + c)/3;     return res; }   struct student {       int shif_stud; //Шифр студента     char FIO[20];     int shif_grup; //Шифр Группы     float ocenka1;     float ocenka2;     float ocenka3;     float sred; //Средний балл студента } stud[N];   int main(void) {     SetConsoleCP(1251);     SetConsoleOutputCP(1251);     setlocale(LC_ALL, "rus");     int i, vibor1, vibor2;     printf("Пожалуйста, введите дисциплины обучения студентов (предметы):\n");     printf("Введите название 1 - ого предмета (до 20-ти знаков):");     gets (predmet1);     printf("Введите название 2 - ого предмета (до 20-ти знаков):");     gets (predmet2);     printf("Введите название 3 - ого предмета (до 20-ти знаков):");     gets (predmet3);     printf("Как вы хотите получить информацию о студентах?\n");     printf("1. - Из файла\n");     printf("2. - Вручную\n");     scanf("%d", &vibor1);     FILE *fp;     switch (vibor1)     {         case 1:         fp = fopen("K16-1.txt", "r");         if((fp = fopen("K16-1.txt", "r")) == NULL)         {             printf("ОШИБКА! Файла не существует!\n");             printf("Пожалуйста, введите информацию:\n");         }         else         {             for(i = 0; i < N; i++)             {             fgets(stud[i].FIO, 19, fp);             fscanf(fp, "%d\n", &stud[i].shif_stud);             fscanf(fp, "%d\n", &stud[i].shif_grup);             fscanf(fp, "%f\n", &stud[i].ocenka1);             fscanf(fp, "%f\n", &stud[i].ocenka2);             fscanf(fp, "%f\n", &stud[i].ocenka3);             fscanf(fp, "%f\n", &stud[i].sred);             }         fclose(fp);         break;          }     case 2:         fp = fopen("K16-1.txt", "w");         for (i = 1; i < N; i++)         {             printf("Введите Ф.И.О. %d-го студента (до 20-ти знаков):\n", i);             fflush(stdin);             fgets(stud[i].FIO, 20, stdin);             fputs(stud[i].FIO, fp);             printf("Введите шифр %d-го студента (6 знаков):\n", i);             scanf("%d", &stud[i].shif_stud);             fprintf(fp, "%d\n", stud[i].shif_stud);             printf("Введите шифр группы %d-го студента (6 знаков):", i);             scanf("%d", &stud[i].shif_grup);             fprintf(fp, "%d\n", stud[i].shif_grup);             printf("Введите оценку студента по дисциплине %s (1 знак):", predmet1);             scanf("%f", &stud[i].ocenka1);             fprintf(fp, "%f\n", stud[i].ocenka1);             printf("Введите оценку студента по дисциплине %s (1 знак):", predmet2);             scanf("%f", &stud[i].ocenka2);             fprintf(fp, "%f\n", stud[i].ocenka2);             printf("Введите оценку студента по дисциплине %s (1 знак):", predmet3);             scanf("%f", &stud[i].ocenka3);             fprintf(fp, "%f\n", stud[i].ocenka3);             stud[i].sred = alg_1(stud[i].ocenka1, stud[i].ocenka2, stud[i].ocenka3);             fprintf(fp, "%f\n", stud[i].sred);         }         fclose(fp);         break;     }       system("cls");     while (vibor2 != 4)     {         printf("_____________________________________________________________________________________________\n");         printf("                        |-----------Меню----------|                                 \n");         printf("                                                                    \n");         printf("                    |  Выберите пожалуйста действие  |                          \n");         printf("                                                                    \n");         printf("            1. - Вывести список студентов, получающих степендию         \n");         printf("            2. - Список студентов, умеющих неудовлетворительные оценки  \n");         printf("            3. - Вывод оценок студента по всем дисциплинам              \n");         printf("            4. - Выход                                                  \n");         printf("_____________________________________________________________________________________________\n");         scanf("%d", &vibor2);         system("cls");         switch (vibor2)         {             case 1:                 printf("%-20s%-20s%-20s%-20s\n", shif_stud, shif_grup, FIO, sred);                 for (i = 0; i < N; i++)                 {                     if (stud[i].sred >= 4)                     {                         printf("%-20d%-20d%-20s%-20f\n", stud[i].shif_stud, stud[i].shif_grup, stud[i].FIO, stud[i].sred);                     }                 }                 getch();                 system("cls");                 break;             case 2:                 printf("%-20s%-20s%-20s%-20s\n", shif_stud, shif_grup, FIO, sred);                 for (i = 0; i < N; i++)                 {                     if (stud[i].sred < 3)                     {                         printf("%-21d%-20d%-20s%-20f\n", stud[i].shif_stud, stud[i].shif_grup, stud[i].FIO, stud[i].sred);                     }                 }                 getch();                 system("cls");                 break;             case 3:                 printf("%-20s%-20s%-20s%-20s%-20s%-20s\n", FIO, shif_grup, shif_stud, predmet1, predmet2, predmet3);                 for (i = 0; i < N; i++)                 {                     printf("%-20s", stud[i].FIO);                     printf("%-20d%-20d%-20f%-20f%-20f\n", stud[i].shif_grup, stud[i].shif_stud, stud[i].ocenka1, stud[i].ocenka2, stud[i].ocenka3);                 }                 getch();                 system("cls");                 break;             case 4:                 printf("До свидания!");                 getch();                 break;             default:                 printf("Неверное действие! Повторите ввод.");                 getch();                 system("cls");                 break;         }     } }

  1. Доброго времени суток! Задача: написать программу, которая печатает содержимое своего ввода, помещая по одному слову на строке. Написал такой вариант:C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include main() {   int c, p = 0;   char n = '\n';   while ( (c = getchar()) != EOF)   {     if ((c == '\t' || c == ' ') && ( p == 0)) /* печатаем \n только если счетчик на нуле*/     {            p++;        putchar(n);     }             else       {         putchar(c); /* введен не пробел и не табуляция - обнуляем p */         p = 0;        }                  }     return 0; }Условие в if для тех случаев, когда пробелов или табуляций несколько подряд. Однако, работает только если пробелов 1 или 2 (подряд). Помогите разобраться!

  1. В теме книги обсуждались указатели, но у меня они употреблены номинально и можно было обойтись без них. Можно ли более простой способ для решения данной задачи найти с применением указателей?C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #include   void sign(char *a);   int main(void) {     char ch;     while((ch = getchar()) != EOF)     {         sign(&ch);     } return 0; }   void sign(char *a) {       int i = 0;     char m[] = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";     int k[] = {1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26};     if(*a >= 'A' && *a <= 'Z' || *a >= 'a' && *a <='z')     {         while(*a != m[i])         {             ++i;         }         printf("%c - %d буква в алфавите\n", m[i], k[i]);       }     i = 0; }

  1. Программа меняет в квадратной матрице 4*4 местами первый и 4 столбцы. Все работает, но выводится часто "Введите элементы массива:" C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 #include #include #include #define M 4 #define N 4   int main(void) {  setlocale(LC_ALL, "Russian");  int A[M][N]={0};  int K1, K2, i , j;  int temp; for (i = 0; i < 4; i = i + 1) {                              // ввод массива     for (j = 0; j < 4; j = j + 1) {         printf("Введите элементы массива: \n ");         scanf("%d", &A[i][j]);     } } for (i = 0; i < 4; i = i + 1) {                         // вывод массива         printf("\n");     for (j = 0; j < 4; j = j + 1) {         printf("%d\t",A[i][j]);     } printf("\n"); }       K1 = 1;     K2 = 4;       if (K1>=K2 || K1<1 || K2>N) {         puts("K1 or K2 incorrect!");         exit(1);     }     i = 0;     while (i < M) {         temp = A[i][K1-1];         A[i][K1-1] = A[i][K2-1];         A[i][K2-1] = temp;         ++i;     }       i = 0;     while (i < M) {         j = 0;         while (j < N)         {             printf("%i ", A[i][j]);             ++j;         }         putchar('\n');         ++i;     }     system("PAUSE");     return 0; }

  1. Написать программу вывода элементов одномерного массива при наличии чисел заглушек и с правильным порядком индексации C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include #include     int main(){     int a[10] = {-1, 7, 1, 3, 1, -1, 4, -1, 6, 5 };   int  i = 0;               for(i = 0; i < sizeof(a)/ sizeof(*a); ++i)            if (a[i] != -1 )    printf ("a[%d]= %d\n", i, a[i]);    return 0; }Помогите вывести правильную индексацию массива

  1. Сравнить 2 слова и вывести не повторяющиеся буквы.Например: бог огРезультат: бПроверить по символьно 1 слово с 2, а потом 2 с 1. Описать это в одной функции.

  1. Программа принимает аргументами текстовые файлы, содержимое которых выводит на экран.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #include #include #include #include   void printfile(char *file);   int main(int argc, char *argv[]) {     if (argc==1)     {         fprintf(stderr, "usage: printfiles file1 [file2 ...]\n    file1, file2, etc.: files to print\n");         exit(EINVAL);     }     int i;     for (int i = 1; i < argc; ++i)     {         printfile(argv[i]);     }     exit(0);     return 0; }   void printfile(char *file){     assert(file!=NULL);     FILE *fp = fopen(file, "rb");     if (!fp)     {         fprintf(stderr, "Can't open input file %s!\n", file);         exit(ENOENT);     }     char buff;     while (!feof(fp)){         buff = fgetc(fp);         printf("%c", buff);     }     printf("\n");     fclose(fp); }При выводе содержимого файла на экран, в конце всегда присутствует мусорный символ. Не могу найти причину

  1. C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 /*Используя два указателя на массив целых чисел, скопировать один массив в другой.  Использовать в программе арифметику указателей для продвижения по массиву,  а также оператор разыменования.*/   #include #include   #define SIZE  5   int mass[SIZE] = {1,2,3,4,5}; int copyMass[SIZE];   void zamenaMass (int *mass,int *copyMass, int length);   int main() {     printf("Array:%c\n", mass[SIZE]);       zamenaMass( &mass[SIZE], ©Mass[SIZE], SIZE);   }     void zamenaMass (int *mass,int *copyMass, int length) {     for (int i = 0; i < length; ++i)     {         *(mass + 1) = *(copyMass + 1);         printf("Copied array :%c\n", (unsigned char) (*copyMass + i));     } }

  1. В других проектах все работает, а тут вообще ни как. Уже сижу час, думаю что переутомился и мозг не соображает над такой ерундой. Не выводит значения C++1 2 3 4 5 6 7 8 9 10 11 12 int main()     {  setlocale (LC_ALL, "Russian");  int a,b,umn;  printf ("Введите А и Б :\n");  scanf ("%d%d", &a, &b);  umn = a * b;  printf ("Умножение равно : \n",umn); // Вот тут мы должны получить переменную umn, но она ска ни как не выводится на экране...  system ("pause");  return 0; }