Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 09.03.2012
Сообщений: 5
1

Определить точный вывод программы

09.03.2012, 10:32. Показов 770. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задали решить задачи по Си. Компилятора под рукой нет. Помогите, пожалуйста, кто чем сможет.
Первая задача: Определить точный вывод программы:
C
1
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
int fun1(void){
    printf("Fun1 is not fun\n");
    return 45%54/5;
}
void fun2(int b, char ch1){
    if ( b > 10 && ch1 = = 'y' )
        printf("Hello, from fun2\n");
    else if ( b < 10 || ch1 = = 'y')
        printf("Hi, from fun2\n");
    else
        printf("Huh?\n");
}
char fun3(char ch, int c){
    char ch1 = 'a';
    int i = 0;
 
    if( ch != ch1 )
        c ++;
    else {
        for(i = c - 2; i < c; c--){
            if ( c < 5 )
ch1 = 'b';
            else if ( c == 5 )
                ch1 = 'd';
            else
                ch1 = 'm';
}
printf("Finally, at the end of fun3!\n");
    }
    return ch1;
}
int fun4(int a){
    int b = a;
    printf("How about fun5?\n");
    a = fun1();
    return ( b - 67%61 ) + a / 2 ;
}
main(){
    int a = 4, b = 16, c;
    char ch1 = 'y', ch2;
 
    c = fun1( );
    do{
        ch2 = fun3(ch1, a);
        fun2(c, ch2);
        b = fun4(b);
        ch1 = ch2;
        a *= c++;
        c = --a;
    } while ( b > 12 );
}
Вторая: Написать программу, которая будет выводить на экран следующее:
**************************************************************
* This is your first command *
**************************************************************


Проблема в том, что я пол семестра проболел и теперь с трудом разбираюсь в коде.
Если не сложно, не могли бы вы объяснить что такое int fun1(void) затем return 45%54/5 и наконец void fun2(int b, char ch1). И ещё, там вконце непонятное a *= c++
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2012, 10:32
Ответы с готовыми решениями:

Определить каким будет вывод программы, если ввести число 60.
Приветствую всех кто в теме и сразу к делу вот собственно моя программа! Она работает без...

Как определить точный возраст?
Добрый день! помогите найти точный возраст если есть дата рождения и текущая дата.

Как определить точный размер оперативной памяти?
Приветствую. Есть функция: function GetMem: String; var MyMem: TMemoryStatus; begin...

Определить вывод программы
Дана программа class A { String name; public A() { name = &quot;Anton&quot;; } public String print() ...

8
277 / 150 / 25
Регистрация: 05.11.2011
Сообщений: 429
Записей в блоге: 1
09.03.2012, 14:47 2
Цитата Сообщение от Travich Посмотреть сообщение
Компилятора под рукой нет.
Сегодня такой текст уже неактуален! Пользуйтесь http://liveworkspace.org, http://ideone.com/ и т. п.

Здесь в 2 и 4,
C
1
2
3
4
void fun2(int b, char ch1){
        if ( b > 10 && ch1 = = 'y' )
                printf("Hello, from fun2\n");
        else if ( b < 10 || ch1 = = 'y')
равенство нужно записывать так
Код
==
Первая задача: Определить точный вывод программы:
Вывод такой
Код
Fun1 is not fun
Hi, from fun2
How about fun5?
Fun1 is not fun
Finally, at the end of fun3!
Huh?
How about fun5?
Fun1 is not fun
См. http://liveworkspace.org/code/... 7d7241ad56

Вторая: Написать программу, которая будет выводить на экран следующее:
**************************************************************
* This is your first command *
**************************************************************
C
1
2
3
4
5
6
7
int main(void)
{
   puts("**************************************************************");
   puts("* This is your first command *");
   puts("**************************************************************");
   return 0;
}
См. http://liveworkspace.org/code/... bfe4c00c0e

не могли бы вы объяснить что такое int fun1(void)
Описание функции с названием fun1, которая возвращает целочисленное значение типа int, и которая никаких параметров не принимает, что и говорит нам void
затем return 45%54/5
указывает возвращаемое значение. в этом случае значение получается из выражения. 45 по модулю деленное на 54 и поделено на 5. результат возвращается во внешнюю функцию

наконец void fun2(int b, char ch1).
Функция ничего не возвращает, она имеет два параметра, одни принимает целочисленные значения типа int, а второй целочисленное значение типа char или один символ.

И ещё, там вконце непонятное a *= c++
это можно развернуть в
C
1
2
a = a * c;
c = c + 1;
0
0 / 0 / 0
Регистрация: 09.03.2012
Сообщений: 5
09.03.2012, 16:20  [ТС] 3
Спасибо большое! Огромное!
На счет компиляторов, буду знать.

На счет второй программы. А как её написать используя loop?
0
277 / 150 / 25
Регистрация: 05.11.2011
Сообщений: 429
Записей в блоге: 1
09.03.2012, 16:33 4
Цитата Сообщение от Travich Посмотреть сообщение
На счет второй программы. А как её написать используя loop?
Так?
C
1
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
#include <stdio.h>
#include <string.h>
 
#define N 80
 
int main(void)
{
   int i;
   const char* str = "This is your first command";
   int len = strlen(str) - 1;
   
   for (i = 0; i < N; i++)
   {
      putchar('*');
   }
   putchar('\n');
   
   putchar('*');
   for (i = 0; i < (N - len+2) / 2; i++)
   {
      putchar(' ');
   }
   
   printf("%s", str);
   for (i = 0; i < (N - len+2) / 2; i++)
   {
      putchar(' ');
   }
   putchar('*');
   putchar('\n');
   for (i = 0; i < N; i++)
   {
      putchar('*');
   }
   putchar('\n');
   return 0;
}
0
0 / 0 / 0
Регистрация: 09.03.2012
Сообщений: 5
09.03.2012, 16:38  [ТС] 5
Цитата Сообщение от Xind Посмотреть сообщение
Так?
Не совсем. Я может не правильно выразился. Используя do и while. Это возможно?
Аж обидно. Такую программу написали.
0
277 / 150 / 25
Регистрация: 05.11.2011
Сообщений: 429
Записей в блоге: 1
09.03.2012, 16:51 6
Цитата Сообщение от Travich Посмотреть сообщение
Используя do и while. Это возможно?
Да, возможно. Вот пример:
C
1
2
3
4
5
6
i = 0;
do
{
// вывод
i++;
} while (i < (N - len+2) / 2);
0
0 / 0 / 0
Регистрация: 09.03.2012
Сообщений: 5
09.03.2012, 17:13  [ТС] 7
Спасибо Большое!
Единственное не совсем понял, что означает: N - len+2
0
277 / 150 / 25
Регистрация: 05.11.2011
Сообщений: 429
Записей в блоге: 1
09.03.2012, 17:17 8
Цитата Сообщение от Travich Посмотреть сообщение
Единственное не совсем понял, что означает: N - len+2
N - ширина консольного окна, len - длина строки в центре, 2 - две звездочки по бокам, а выражение вычисляет количество пробелов ("пустую" длину) по левую сторону строки и правую, их две, поэтому оно поделено на 2.
0
0 / 0 / 0
Регистрация: 09.03.2012
Сообщений: 5
09.03.2012, 17:29  [ТС] 9
Вы меня спасли. Огромное, человеческое Вам спасибо!
0
09.03.2012, 17:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2012, 17:29
Помогаю со студенческими работами здесь

Точный поиск
Здравствуйте! Работаю над веб словарем. Проблема в том, что такой запрос : -- Region...

Точный секундомер
Доброго времени суток. Я занимаюсь спидкубингом и мне нужен таймер для замера результатов. Вообще,...

Точный квадрат
Натуральное число N является точным квадратом и не является двузначным. program Project1_3; ...

Точный вольтметр
Так исторически сложилось, что все мои измерительные приборы показывают разные значения одного и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru