1

Тема: Программы на языке C#

Программы на языке C#

№ 1   test.c[

   На программе test.c вы можете потренироваться вводить,    редактировать, компилировать, связывать и выполнять    простые программы на языке Cи.



#include <stdio.h>
#include <stdlib.h>
#define MAX_ARRAY_SIZE 4
void ViewArrayElements( int ArrayOfIntegers[MAX_ARRAY_SIZE] );
void main( void )
{
  int  offset;
  int  ArrayOfIntegers[ MAX_ARRAY_SIZE ];
  char UserResponse;

  printf("\nWelcome to the fascinating world");
  printf(" of C programming!");
  printf("\nWould you like to continue (Y/N): ");
  scanf("%c",&UserResponse);
  if( UserResponse == 'Y' ) {
    printf("\nYou are about to view the ");
    printf("uninitialized contents ");
    printf("of the \"ArrayOfIntegers\":");
    ViewArrayElements( ArrayOfIntegers );
    for( offset = 0; offset < MAX_ARRAY_SIZE; offset++ ) {
      printf("\nPlease enter an integer: ");
      scanf("%d",&ArrayOfIntegers[ offset ]);
    }
    printf("\nYou are about to view the ");
    printf("initialized contents");
    printf(" of the \"ArrayOfIntegers\"");
    ViewArrayElements( ArrayOfIntegers );
  }
  else
    exit( 1 );
}
void ViewArrayElements( int ArrayOfIntegers[MAX_ARRAY_SIZE] )
{
  int offset;
  for( offset = 0; offset < MAX_ARRAY_SIZE; offset++ )
    printf("\n%d",ArrayOfIntegers[ offset ]);
  printf("\n\n");
}

Поделиться

2

Re: Программы на языке C#

№ 2. debug.c[

Эта программа на языке Cи предназначена для  знакомства с отладчиком вашего компилятора. Если вы введете  программу точно, как она написана здесь, при компиляции и  выполнении вам встретятся ошибки. Следуя пошаговым  инструкциям в тексте, вы сможете исправить все синтаксические  и логические ошибки, что необходимо для выполнения программы.
******************************************************************************

#define TEN 10
void ViewArrayElements( float float_Array[ TEN ] );
void main ( void )
{
 int continue = 0;
 int element_offset;
 float float_Array[ TEN ];
 Printf("Welcome to the Find-All-The-Bugs Algorithm!");
 printf(\n\nWould you like to continue? ");
 scanf("%d",continue);
 if( continue = 1 ) {
 printf("\nUninitialized ");
 ViewArrayElements( float_Array );

 for( element_offset = 0; element_offset < TEN;  element_offset++  ) 
{
  printf("Enter float value [%2d] - ", element_offset);
  scanf("%f",float_Array[ element_offset ]);
 }
 printf("\nInitialized ");
 printf("\n\nThank You and Have a Nice Day!");
 }
 else {
 printf("=== >>> Program Termination <<< ===");
 printf("\n\nThank You and Have a Nice Day!")
 }
}
void ViewArrayElements( float float_Array[ TEN ] )
{
 int element_offset;
 printf("\"float_Array\" contents:");
 for( element_offset = 0; element_offset < TEN, element_offset++  )
 printf(" %f -",float_Array[ element_offset ] );
 printf("\n\n");
}

Поделиться

3

Re: Программы на языке C#

№ 3.  usesfile.c

  Эта программа на языке Си показывает, как объявлять и   использовать файлы ввода и вывода. Программа считывает имя   заказчика, общую цену и размер скидки заказчику, затем    подсчитывает общую сумму счета и выводит информацию во   внешний файл.
*******************************************************************************

#include <stdio.h>
#include <stdlib.h>
#define ROOM_FOR_NULL_STRING_TERMINATOR 1
#define MAX_CUSTOMER_NAME_LENGTH 35
int main( void )
{
 char customer_name[ MAX_CUSTOMER_NAME_LENGTH +  ROOM_FOR_NULL_STRING_TERMINATOR ];
 float total_sale;
 int percent_discount;
 FILE *customer_FILE_ptr, *bill_FILE_ptr;

 customer_FILE_ptr = fopen("a:\\chp06\\custinfo.dat","r");
 bill_FILE_ptr = fopen("a:\\ chp06\\bill.dat","w");
 while( fscanf(customer_FILE_ptr,"%s%f%d", customer_name, &total_sale, &percent_discount ) != EOF) 
{
  fprintf(bill_FILE_ptr,"Your order of \t\t$%8.2f\n",  total_sale);
  fprintf(bill_FILE_ptr,"is discounted to \t$%8.2f.\n\n",  total_sale * ((100 - percent_discount) * 0.01) );
 }
 fclose( customer_FILE_ptr );
 fclose( bill_FILE_ptr );
return( EXIT_SUCCESS );
}

Поделиться

4

Re: Программы на языке C#

№ 5.   enumerat.c

   Эта программа на языке Си использует    перечисляемые типы данных.
   **********************************************************************************************

#define LENGTH 10
#define TIME_TO_CELEBRATE 0
#include <stdio.h>
#include <string.h>
main()
{
  enum DayDefinitions { Saturday, Sunday, Monday, Tuesday,  Wednesday, Thursday, Friday = 0,
                        DayUnderflow = -1,DayOverflow = 7 }
                        Today;
  enum DayDefinitions   CurrentDaysCalculation = Monday;
  char DayString[LENGTH];
  printf("Please enter today's name, i.e. Monday: ");
  scanf("%s",DayString);
  if( strcmp(DayString, "Monday") == 0 )
    Today = Monday;
  switch( Today ) {
    case Monday : printf("Today is Monday\n");   break;
      /* здесь должны идти другие случаи DayDefinitions */
      default:;
  }
  if( (Today <= DayUnderflow) || (Today >= DayOverflow) )
    printf("Invalid Day Specification\n");
  printf("The integral value of Monday is %d", Monday);
  Today = 2;
  Today = (enum DayDefinitions) 3;
  if( Today == TIME_TO_CELEBRATE )
    printf("\n\n >> Have an enjoyable evening,"  "you've earned it! <<");
  return(0);
}

Поделиться

5

Re: Программы на языке C#

№ 10.  calendar.c

  Эта программа, написанная на языке C, использует простой   оператор switch для генерирования   и печати календаря любого года.
**********************************************************************************************

#include <stdio.h>
#include <stdlib.h>

enum months { JAN = 1, FEB, MAR, APR, MAY, JUN, JLY, AUG, SEP, OCT, NOV, DEC,
                       M_MIN =  1,
                       M_MAX = 12                    };

int main( void )
{
  int J1SD,/* Хранит день недели 1 января */
      NDPM,/* Хранит число дней определенного месяца */
      D,                               /* Хранит дату  */
      LY; /* Указывает, является ли год високосным */

  enum months M;                       /* Хранит месяц */
  printf("You first need to tell the program "
          "\nwhat day of the week January 1st is on.");
  printf("\n\nType a decimal in the range 0 to 6.");
  printf("\n0 represents Monday, with 6 representing "
         "Sunday: ");
  scanf("%d",&J1SD);
  printf("\nCalendar Year? ");
  scanf("%d",&LY);
  printf("\n\n\n\t\t Calendar Year %d", LY);
  LY=LY % 4;
  for ( M = M_MIN; M <= M_MAX; M++ ) {
    switch( M ) {
     case JAN: printf("\n\n\n January \n");
               NDPM = 31;
               break;
     case FEB: printf("\n\n\n February \n");
               NDPM = LY ? 28 : 29;
               break;
     case MAR: printf("\n\n\n  March \n");
               NDPM = 31;
               break;
     case APR: printf("\n\n\n  April \n");
               NDPM = 30;
               break;
     case MAY: printf("\n\n\n   May  \n");
               NDPM = 31;
               break;
     case JUN: printf("\n\n\n  June  \n");
               NDPM = 30;
               break;
     case JLY: printf("\n\n\n  July  \n");
               NDPM = 31;
               break;
     case AUG: printf("\n\n\n August \n");
               NDPM = 31;
               break;
     case SEP: printf("\n\n\nSeptember\n");
               NDPM = 30;
               break;
     case OCT: printf("\n\n\n October \n");
               NDPM = 31;
               break;
     case NOV: printf("\n\n\nNovember \n");
               NDPM = 30;
               break;
     case DEC: printf("\n\n\nDecember \n");
               NDPM = 31;
               break;
    }

    printf("\nSUN  MON  TUE  WED  THU  FRI  SAT\n");
    printf("---  ---  ---  ---  ---  ---  ---\n");
    for ( D = 1; D <= 1 + J1SD * 5; D++ )
      printf( " ");

    for ( D = 1; D <= NDPM; D++ ) {
     printf("%2d",D);
        printf("%s",(D + J1SD) % 7 > 0 ? "   " : "\n ");
    }
    J1SD=(J1SD + NDPM) % 7;
  }
  return( EXIT_SUCCESS );
}

Поделиться

6

Re: Программы на языке C#

№ 13.   dowhil.c

Эта программа на Си показывает использование оператора    do while, цикла с постпроверкой, для дублирования    входного файла.
   *********************************************************************************************

#include <stdio.h>
#include <stdlib.h>

#define NUMBER_OF_VALID_LETTERS 16
#define ROOM_FOR_NULL_TERMINATOR 1
typedef char FILE_NAME[ NUMBER_OF_VALID_LETTERS +  ROOM_FOR_NULL_TERMINATOR ];
main()
{
  FILE  *in_FILE_struc_ptr, *ot_FILE_struc_ptr;
  int int_CHARACTER;
  FILE_NAME input_file_name, output_file_name;
  fputs( "Input File: ",stdout );
  gets( input_file_name );
  if( (in_FILE_struc_ptr = fopen(input_file_name,"r"))  == NULL) {
    printf( "\nFile Open Failure ( %s ).",input_file_name );
    exit( EXIT_FAILURE );
  }
  fputs( "Output File: ",stdout );
  gets( output_file_name );
  if( (ot_FILE_struc_ptr= fopen( output_file_name,"w"))  == NULL) {
    printf("\nFile Open Failure ( %s )",output_file_name);
    exit( EXIT_FAILURE);
  }
  while( !feof(in_FILE_struc_ptr) ) {
    int_CHARACTER = fgetc( in_FILE_struc_ptr );
    fputc( int_CHARACTER,ot_FILE_struc_ptr );
  }
  return EXIT_SUCCESS ;
}

Поделиться

7

Re: Программы на языке C#

№ 14.   fnswitch.c

   Эта программа на Си иллюстрирует использование оператора   switch для выбора требуемой функции.
******************************************************************************************

#include <stdio.h>
#define EXIT '1'
#define MAX_STRING 80
#define NULL_TERMINATOR 1
void convert_to_POSTFIX( float operand_A,
                         char  Operator,
                         float operand_B,
                         char  INFIX_expression[] );
void convert_to_PREFIX ( float operand_A,
                         char  Operator,
                         float operand_B,
                         char INFIX_expression[] );
void main( void )
{
  char Operator = ' ',        // Строчное o не годится
       space,
       WhichCONVERSION,   INFIX_expression[ MAX_STRING + NULL_TERMINATOR ];
  float operand_A, operand_B;
  while( Operator != EXIT ) {
    printf("\n\n\nEnter an INFIX expression, "   "i.e. 4.567 + 12.9: ");
    scanf("%f%c%c%f",&operand_A,&space,   &Operator,&operand_B);
    printf("\nType O for pOstfix, R for pRefix: ",    &WhichCONVERSION);
    scanf(" %c",&WhichCONVERSION);

    switch( WhichCONVERSION ) {
      case 'o' :
      case 'O' : convert_to_POSTFIX( operand_A, Operator,   operand_B,   INFIX_expression     );
                 break;
      case 'r' :
      case 'R' : convert_to_PREFIX ( operand_A, Operator,
                                     operand_B,
                                     INFIX_expression     );
                 break;
      default  : printf("\n\n >>> Conversion "
                        "NOT implemented");
                 Operator = '1';
    }
  }
}
void convert_to_POSTFIX( float operand_A,
                         char  Operator,
                         float operand_B,
                         char INFIX_expression[] )
{
  sprintf(INFIX_expression,"%5.2f %5.2f %c%c", operand_A,
          operand_B, Operator, '\0');
  printf("\nThe POSTFIX expression is %s",INFIX_expression);
}
void convert_to_PREFIX ( float operand_A,
                         char  Operator,
                         float operand_B,
                         char INFIX_expression[] )
{
  sprintf(INFIX_expression,"%c %5.2f %5.2f%c", Operator, operand_A, operand_B, '\0');
  printf("\nThe PREFIX expression is %s",INFIX_expression);
}

Поделиться

8

Re: Программы на языке C#

№ 20. argvf.c

Эта программа на языке Си использует argc и argv для чтения из командной строки и преобразования в
плавающее.
*********************************************************************************************8

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void main(int argc, char *argv[])
{
  int AngleOffset;
  double CurrentDegree; const double PI = 3.14159;

  if( argc<2 ) {
     printf("After typing argvf on the command line.\n");
     printf("You need to type the angles to be converted \n");
     printf("separated by blank spaces.\n");
     exit(EXIT_FAILURE);
  }
  for( AngleOffset = 1; AngleOffset < argc; AngleOffset++) {
     CurrentDegree = (double) atof( argv[AngleOffset] );
     printf("The cosine of %f is %10.101lf\n", CurrentDegree, cos((PI/180.0) * CurrentDegree));
  }
}

Поделиться

9

Re: Программы на языке C#

№ 22.   argvs.c

   Эта программа на языке Си показывает использование двух  параметров функции main(), argc и argv. Кроме того, в  примере показано, что все параметры внутри функции  представляются как строки, требующие при необходимости    преобразования в данные нужного типа.
   *******************************************************************************************

#include <stdlib.h>
#include <stdio.h>
main(int argc, char *argv[])
{
  int ArrayOffsetAddress;
  if( argc < 2 ) {
    printf("To run this program, after entering the "
           "\n\nprogram name, argvs, type one each of: "
           "\n\ncharacter, integer, float, and string "
           "\n\ndata types. ");
    exit( EXIT_FAILURE );
  }

  for( ArrayOffsetAddress = 0; ArrayOffsetAddress < argc; ArrayOffsetAddress++ )
    printf("The string pointed to by " "argv[%d] is %s, \n\n",
            ArrayOffsetAddress,argv[ArrayOffsetAddress]);
  return (0);
}

Поделиться

10

Re: Программы на языке C#

№ 24   ellipsis.c

   Эта программа на языке Си показывает применение прототипов   функций и включает в себя функцию с переменным числом   аргументов, использующую макровызовы va_arg, va_start и  va_end.
   *******************************************************************************************

#include <stdio.h>
#include <stdarg.h>
void Var_ArgFunction( char *DefiningString, ...);
void main( void )
{
  Var_ArgFunction( "dde", -1, 23, 5.239099881 );
  Var_ArgFunction( "d", 57 );
}
void Var_ArgFunction( char *DefiningString, ...)
{
  va_list VarParmList;
  char *CommandPtr;

  va_start( VarParmList, DefiningString );
  for( CommandPtr = DefiningString; *CommandPtr; CommandPtr++ )
    switch( *CommandPtr ) {
      case 'd' : printf("The integer entered is %d\n",va_arg( VarParmList, int ));
                 break;
      case 'e' : printf("The double entered is %e\n",  va_arg( VarParmList, double ));
                 break;
      default  : break;
    }
  va_end( VarParmList );
}

Поделиться

11

Re: Программы на языке C#

№ 31.  intfunc.c

Эта программа на языке Си демонстрирует функцию, возвращающую  значение типа void и выводящую двоичное представление целого числа.
*************************************************************/

#include <stdio.h>
void Convert_to_Binary( int Value_To_Convert );
main()
{
  int Value_To_Convert;
  printf("Enter an integer value: \n");
  scanf("%d",&Value_To_Convert);
  Convert_to_Binary( Value_To_Convert );
  return (0);
}
void Convert_to_Binary( int Value_To_Convert )
{
  int offset = 0;
  int Hold_Bit_Conversion[50];
  while( Value_To_Convert != 0 ) {
    Hold_Bit_Conversion[ offset ]=( Value_To_Convert % 2);
    Value_To_Convert /= 2;
    offset++;
  }
  offset--;
  for(; offset >= 9; offset--)
    printf("%1d",Hold_Bit_Conversion[ offset ]);
    printf("\n");
}

Поделиться

12

Re: Программы на языке C#

№ 33.   recurs.c

   Данная программа на языке Си демонстрирует  использование рекурсивной функции (функции,
   вызывающей саму себя). Программа подразумевает,   что operandB >= 1
   ***********************************************************/

#include <stdio.h>
int RecursiveMultiply( int operandA, int operandB );
void main()
{
  int result;
  result = RecursiveMultiply( 3, 5 );
  printf("The result of the recursive multiplication " "is %d.", result);
}
int RecursiveMultiply( int operandA, int operandB )
{
  if( operandB == 1 )
    return( operandA );
  else
    return( (operandA + RecursiveMultiply(operandA, operandB - 1)) );
}

Поделиться

13

Re: Программы на языке C#

№ 35.  scopef.c

  Эта программа на языке Си показывает действие правил видимости. Переменная FLOAT_trouble объявлена локальной.
  ***********************************************************/

#include <stdlib.h>
#include <stdio.h>
float CalculateSum( float FLOAT_var1, float FLOAT_var2 );
int main( void )
{
  float x = 10.0, y = 5.8, sum, FLOAT_trouble = 1.1;
  sum = CalculateSum( x, y );
  printf("The sum of %.2f + %.2f + local 1.1 is: %.2f",   x, y, sum);
  return EXIT_SUCCESS;
}
float CalculateSum( float FLOAT_var1,float FLOAT_var2 )
{
  return( FLOAT_var1 + FLOAT_var2 + FLOAT_trouble );
}

Поделиться

14

Re: Программы на языке C#

* aray2d2.c работает ТОЛЬКО под Borland C/C++!
* Эта программа на языке Си демонстрирует использование двухмерного массива, каждый элемент которого сам по себе является массивом.
***********************************************************/

#include <stdio.h>
#include <math.h>
#define MAX_POLYS  5
#define THREEcolumns 3
#define RESULT    0
#define X      1
#define DEGREE    2
#define MAX_DEGREES 6

void main ( void )
{
 double PolyArray  [ MAX_POLYS ] [ THREEcolumns ] =
           { 0, 5, 4,
            0, 2, 3,
            0, 9, 1,
            0, 1, 5,
            0, 4, 2 };
 double Coefficients [ MAX_POLYS ] [ MAX_DEGREES ] =
           { 1, 1, 3, 2, 10, 0,
            7, 1, 2, 4, 0, 0,
            3, 0, 0, 0, 0, 0,
            6, 3, 8, 2, 9, 14,
            0, 3, 7, 0, 0, 0 };
 int RowOffset, CoefOffset;

 for( RowOffset = 0; RowOffset < MAX_POLYS; RowOffset++ ) PolyArray[ RowOffset ] [ RESULT ] =  poly( PolyArray  [ RowOffset ] [   X ],  PolyArray  [ RowOffset ] [ DEGREE ], Coefficients[ RowOffset ]     );

 for( RowOffset = 0; RowOffset < MAX_POLYS; RowOffset++ ) {
  for( CoefOffset = PolyArray[ RowOffset ] [ DEGREE ];
     CoefOffset > 0; CoefOffset -- ) {

     printf("%.1lf*%.1lf^%d + ", Coefficients[ RowOffset ] [ CoefOffset ], PolyArray  [ RowOffset ] [     X ],
         CoefOffset );
  }

  printf("%.1lf", Coefficients[ RowOffset ] [ 0 ]);
  printf(" = %.1lf\n\n\n",  PolyArray[ RowOffset ] [ RESULT ] );
 }
}

Поделиться

15

Re: Программы на языке C#

* araypass.c
* Эта программа на языке Си демонстрирует передачу массивов  в качестве параметров функций.
***********************************************************/

#include <stdio.h>
#include <string.h>
#define SUCCESSFUL_MATCH 0
#define TEST_STRING "INTEL"
void UnsizedArrayArgFunction  ( char test_string[  ] );
void DimensionedArrayArgFunction( char test_string[ 6 ] );
void PointerArrayArgFunction  ( char* test_string   );
void main( void )
{
 char test_1[ ] = "Motorola", test_2[6] = "IBM";
 char *test_3  = "INTEL";
 UnsizedArrayArgFunction  ( test_1 ); /* or &test_1[0] */
 DimensionedArrayArgFunction( test_2 ); /* or &test_2[0] */
 PointerArrayArgFunction  ( test_3 );
}
void UnsizedArrayArgFunction  ( char test_string[  ] )
{
 if(stricmp(test_string, TEST_STRING) == SUCCESSFUL_MATCH)
  printf("The string was found in 1st function call.");
}
void DimensionedArrayArgFunction( char test_string[ 6 ] )
{
 if(stricmp(test_string, TEST_STRING) == SUCCESSFUL_MATCH)
  printf("The string was found in 2nd function call.");
}
void PointerArrayArgFunction  ( char* test_string   )
{
 if(stricmp(test_string, TEST_STRING) == SUCCESSFUL_MATCH)
  printf("The string was found in 3rd function call.");
}

Поделиться

16

Re: Программы на языке C#

string.c
* Эта программа на языке Си демонстрирует различные способы использования массивов символов для хранения строк. Строка по определению представляет собой массив символов, заканчивающийся нулевым символом-ограничителем, \0.
***********************************************************/

#include <stdio.h>
#define SIX 6
void main( void )
{
 char letter_by_letter_string[ SIX ], scanf_string      [ SIX ], init_as_built_string  [ SIX ] = "80586";
 letter_by_letter_string[0] = '8' ;
 letter_by_letter_string[1] = '0' ;
 letter_by_letter_string[2] = '3' ;
 letter_by_letter_string[3] = '8' ;
 letter_by_letter_string[4] = '6' ;
 letter_by_letter_string[5] = '\0';
 printf("\nWhat INTEL microprocessor followed the "  "80386? ");
 scanf("%s",scanf_string);
 printf("%s\n",letter_by_letter_string);
 printf("%s\n",scanf_string);
 printf("%s\n",init_as_built_string);

}

Поделиться

17

Re: Программы на языке C#

malloc.c
*  Эта программа на языке Cи показывает применение для   динамического размещения памяти функций malloc(), calloc()  и free(), прототипы которых находятся в файлах stdlib.h и  alloc.h.
***********************************************************/
#include <stdio.h>
#include <malloc.h>
#define HOW_MANY 5
int main( void )
{
  float *Float_Ptr_to_Garbage,  *Float_Ptr_to_Initialized_Memory;
  Float_Ptr_to_Garbage = malloc(HOW_MANY * sizeof( float ));
  if(Float_Ptr_to_Garbage == NULL)
    printf("malloc() Memory Allocation Failure\n");
  else
    printf("malloc() Memory Allocation Success\n");
  printf("Garbage contents of the first float are: %f\n",  *Float_Ptr_to_Garbage);
  Float_Ptr_to_Initialized_Memory = calloc(HOW_MANY,   sizeof( float ));
  if(Float_Ptr_to_Initialized_Memory == NULL)
    printf("calloc() Memory Allocation Failure\n");
  else
    printf("calloc() Memory Allocation Success\n");
  printf("Initialized contents of the first float are: %f\n", *Float_Ptr_to_Initialized_Memory);
  free( Float_Ptr_to_Garbage            );
  free( Float_Ptr_to_Initialized_Memory );
  return(0);
}

Поделиться

18

Re: Программы на языке C#

*  ptraray.c
*  Эта программа на языке Си использует массив указателей.
***********************************************************/

#include <stdio.h>
#include <ctype.h>
#define FOUR 4
char *ErrorMessageArray[ FOUR ] =
     {
       "\nFile Creation Error!   \n",
       "\nNot a character value! \n",
       "\nNot an octal value!    \n",
       "\nIllegal punctuation!   \n"
     };
void FileCreate             ( char *FileName );
char InputChar              ( void           );
int  InputOctal             ( void           );
int  Valid                  ( void           );

FILE *FILE_structure_ptr;
int main( void )
{
  char charData;
  int intData;
  FileCreate( "anyfile.dat" );
  charData = InputChar();
  intData  = InputOctal();
  charData = Valid();
  return 0;
}
void FileCreate( char *FileName )
{
  const FileCreationErrorMsg = 0;
  FILE_structure_ptr = fopen( FileName,"r" );
  if( !FILE_structure_ptr )
    printf("%s",ErrorMessageArray[ FileCreationErrorMsg ]);
}
char InputChar( void )
{
  char charData;
  const NotCharDataErrorMsg = 1;
  printf("\nEnter a character: ");
  scanf("%c",&charData);
  if( !isalpha( charData ) )
    printf("%s",ErrorMessageArray[ NotCharDataErrorMsg ]);
  return( charData );
}
int InputOctal( void )
{
  int intData;
  const NotOctalDataErrorMsg = 2;

  printf("\nEnter an integer between 0 and 7: ");
  scanf("%d",&intData);
  if( (intData < 0) || (intData > 7) )
    printf("%s",ErrorMessageArray[ NotOctalDataErrorMsg ]);
  return( intData );
}
int Valid( void )
{
  char charData;
  const ContainsIllegalPunctuationErrorMsg = 3;
  printf("\nEnter a punctuation symbol: ");
  scanf(" %c",&charData);
  if( !ispunct( charData ) )
    printf("%s",ErrorMessageArray
                   [ ContainsIllegalPunctuationErrorMsg ]);
  return( charData );
}

Поделиться

19

Re: Программы на языке C#

strngptr.c
*  В этой программе на языке Cи показано использование указателей на строки.
***********************************************************/

#include <stdio.h>
#include <string.h>
int main ( void )
{
  char *stack = "1 2 3 4 5 6";
  int  offset ;
  for( offset = (strlen(stack)-1); offset >= 0; offset-- )
    printf("%c", stack[ offset ]);
  printf("\n%s", stack);

  return( 0 );
}

Поделиться

20

Re: Программы на языке C#

voidptrs.c
*  Эта программа на языке Си демонстрирует применение  указателей типа void *, которые позволяют одной функции  принимать данные различных типов.
***********************************************************/
#include <malloc.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#define THIRTY 30
void AnyDataType(void *DynamicData, char DataType);
float main( void )
{
  char   *A_char_Ptr, carriage_return;
  long   *A_long_Ptr;
  double *A_double_Ptr;
  char WhichType;
  printf("This program allows the user to dynamically    \n"
         "allocate memory for one of three types of      \n"
         "variables, string, long, or double.          \n\n"
         "To run the program simply select the data type \n"
         "you would like to create by typing s, l, or d: ");
  scanf("%c%c", &WhichType, &carriage_return);
  WhichType = tolower( WhichType );
  if( (WhichType != 's') && (WhichType != 'l')  && (WhichType != 'd') )
    exit( 1 );
  switch( WhichType ) {
    case 's':   A_char_Ptr = malloc( THIRTY * sizeof( char ) );
      printf("\nEnter a string of up to 29 characters: ");
      scanf("%s", A_char_Ptr);
      AnyDataType( A_char_Ptr, WhichType );
      break;

    case 'l':   A_long_Ptr = malloc( sizeof( long ) );
      printf("\nEnter a long: ");
      scanf("%ld", A_long_Ptr);
      AnyDataType( A_long_Ptr, WhichType );
      break;

    case 'd':   A_double_Ptr = malloc( sizeof ( double ) );
      printf("\nEnter a double: ");
      scanf("%lf", A_double_Ptr);
      AnyDataType( A_double_Ptr, WhichType );
  }
  return 0;
}

void AnyDataType(void *DynamicData, char DataType)
{
  switch( DataType ) {

    case 's':    printf("\nString type output:      %s",   (char *) DynamicData);
      break;

    case 'l':   printf("\nLong type output:       %ld",    *(long *) DynamicData);
      break;

    case 'd':   printf("\nDouble type output:     %lf",   *(double *) DynamicData);
      break;
  }
  free( DynamicData );
}

Поделиться

21

Re: Программы на языке C#

strcaray.c
*  Эта программа на языке Си показывает, как описывать и  использовать массивы структур.
***********************************************************/

#include <stdio.h>
#define NULL_STRING_TERMINATOR 1
#define MAX_VALID_CHARS       65
#define MAX_HOUSES            10
struct  house_tag {
  char  owner [ MAX_VALID_CHARS + NULL_STRING_TERMINATOR ],
        street[ MAX_VALID_CHARS + NULL_STRING_TERMINATOR ],
        city  [ MAX_VALID_CHARS + NULL_STRING_TERMINATOR ];
  int   bedrooms;
  float price;
};
void main( void )
{
  struct house_tag House_Catalog[ MAX_HOUSES ];
  int Which_House;
  float float_bug_fix; /* для обхода недостатка компилятора, который не
                        * позволяет читать плавающие члены непосредственно */
  for( Which_House = 0; Which_House < MAX_HOUSES;
       Which_House++ ) {
    printf("Who currently owns the house? ");
    gets(House_Catalog[ Which_House ].owner);
    printf("\nThe house is on which street? ");
    gets(House_Catalog[ Which_House ].street);
    printf("\nThe house is in which city? ");
    gets(House_Catalog[ Which_House ].city);
    printf("\nThe house has how many bedrooms? ");
    scanf("%d", &House_Catalog[ Which_House ].bedrooms);
    printf("\nWhat is the selling price? ");
    scanf("%f", &float_bug_fix);
    House_Catalog[ Which_House ].price = float_bug_fix;
    printf("\n\n");
    flushall();
  }
  for( Which_House = 0; Which_House < MAX_HOUSES;
       Which_House++ ) {
    printf("\f");
    printf("================ HOUSE 1 ================ "
           "\nOwner:\t\t%25s"
           "\nStreet:\t\t%25s"
           "\nCity:\t\t%25s"
           "\nBedrooms:\t%25d"
           "\nPrice:\t\t%25.2f",
           House_Catalog[ Which_House ].owner,
           House_Catalog[ Which_House ].street,
           House_Catalog[ Which_House ].city,
           House_Catalog[ Which_House ].bedrooms,
           House_Catalog[ Which_House ].price);
  }
}

Поделиться

22

Re: Программы на языке C#

strucarg.c
*  Эта программа на Си показывает, как создавать и использовать   функции с аргументами-структурами.
***********************************************************/

#include <stdio.h>
#define NULL_STRING_TERMINATOR 1
#define MAX_VALID_CHARS       65
struct  house_tag {
  char  owner [ MAX_VALID_CHARS + NULL_STRING_TERMINATOR ],
        street[ MAX_VALID_CHARS + NULL_STRING_TERMINATOR ],
        city  [ MAX_VALID_CHARS + NULL_STRING_TERMINATOR ];
  int   bedrooms;
  float price;
} A_House;
void Print_A_House( struct house_tag Local_A_House );
void main( void )
{
  printf("Who currently owns the house? ");
  gets(A_House.owner);
  printf("\nThe house is on which street? ");
  gets(A_House.street);
  printf("\nThe house is in which city? ");
  gets(A_House.city);
  printf("\nThe house has how many bedrooms? ");
  scanf("%d", &A_House.bedrooms);
  printf("\nWhat is the selling price? ");
  scanf("%f", &A_House.price);
  Print_A_House( A_House  );
 }
void Print_A_House( struct house_tag Local_A_House )
{
  printf("\f");
  printf("================ HOUSE 1 ================ "
         "\nOwner:\t\t%25s"
         "\nStreet:\t\t%25s"
         "\nCity:\t\t%25s"
         "\nBedrooms:\t%25d"
         "\nPrice:\t\t%25.2f",
         Local_A_House.owner,Local_A_House.street,
         Local_A_House.city,Local_A_House.bedrooms,
         Local_A_House.price);
}

Поделиться

23

Re: Программы на языке C#

*  structur.c
*  Эта простая программа на Си показывает, как описывать и  использовать структуры.
***********************************************************/

#include <stdio.h>
#define NULL_STRING_TERMINATOR 1
#define MAX_VALID_CHARS       65
struct  house_tag {
  char  owner [ MAX_VALID_CHARS + NULL_STRING_TERMINATOR ],
        street[ MAX_VALID_CHARS + NULL_STRING_TERMINATOR ],
        city  [ MAX_VALID_CHARS + NULL_STRING_TERMINATOR ];
  int   bedrooms;
  float price;
} A_House;
void main( void )
{
  printf("Who currently owns the house? ");
  gets(A_House.owner);
  printf("\nThe house is on which street? ");
  gets(A_House.street);
  printf("\nThe house is in which city? ");
  gets(A_House.city);
  printf("\nThe house has how many bedrooms? ");
  scanf("%d", &A_House.bedrooms);
  printf("\nWhat is the selling price? ");
  scanf("%f", &A_House.price);
  printf("\f");
  printf("================ HOUSE 1 ================"
         "\nOwner:\t\t%25s"
         "\nStreet:\t\t%25s"
         "\nCity:\t\t%25s"
         "\nBedrooms:\t%25d"
         "\nPrice:\t\t%25.2f",

         A_House.owner,A_House.street,A_House.city,
         A_House.bedrooms,A_House.price);
}

Поделиться

24

Re: Программы на языке C#

*  stucptrs.c
*  Эта простая программа на Си показывает, как описывать и  использовать указатели на структуры для доступа  к структурам и массивам структур.
***********************************************************/

#include <stdio.h>
#define NULL_STRING_TERMINATOR 1
#define MAX_VALID_CHARS       65
#define MAX_HOUSES            10
struct  house_tag {
  char  owner [ MAX_VALID_CHARS + NULL_STRING_TERMINATOR ],
        street[ MAX_VALID_CHARS + NULL_STRING_TERMINATOR ],
        city  [ MAX_VALID_CHARS + NULL_STRING_TERMINATOR ];
  int   bedrooms;
  float price;
};
void main( void )
{
  struct house_tag House_Catalog[ MAX_HOUSES ],   *A_House_Ptr = House_Catalog;
  int Which_House;
  float float_bug_fix;
  for( Which_House = 0; Which_House < MAX_HOUSES;   Which_House++ ) {
    printf("Who currently owns the house? ");
    gets(A_House_Ptr->owner);
    printf("\nThe house is on which street? ");
    gets(House_Catalog[ Which_House ].street);
    printf("\nThe house is in which city? ");
    gets(A_House_Ptr->city);
    printf("\nThe house has how many bedrooms? ");
    scanf("%d", &A_House_Ptr->bedrooms);
    printf("\nWhat is the selling price? ");
    scanf("%f", &float_bug_fix);
    A_House_Ptr->price = float_bug_fix;
    A_House_Ptr++;
    printf("\n\n");
    flushall();
  }

  A_House_Ptr = House_Catalog;
  for( Which_House = 0; Which_House < MAX_HOUSES;   Which_House++ ) {
    printf("\f");
    printf("================ HOUSE 1 ================ "
           "\nOwner:\t\t%25s"
           "\nStreet:\t\t%25s"
           "\nCity:\t\t%25s"
           "\nBedrooms:\t%25d"
           "\nPrice:\t\t%25.2f",
           A_House_Ptr->owner, A_House_Ptr->street,
           A_House_Ptr->city,  A_House_Ptr->bedrooms,
           A_House_Ptr->price);
    A_House_Ptr++;
  }
}

Поделиться

25

Re: Программы на языке C#

typedef.c
*  Эта простая программа на Си использует ключевое слово  Си/Си++ typedef для создания двух новых типов whole и real.
***********************************************************/

#include <stdio.h>
typedef int   whole;
typedef float real;
void main( void )
{
  whole WholeNumber = 512;
  real  RealNumber  = 3.14159;
  printf("The whole value is %d: \n", WholeNumber);
  printf("The real value is %f : \n", RealNumber );
}

Поделиться