The C Programming Handbook for Beginners

Dionysia Lemonaki

C is one of the oldest, most widely known, and most influential programming languages.

It is used in many industries because it is a highly flexible and powerful language.

Learning C is a worthwhile endeavor – no matter your starting point or aspirations – because it builds a solid foundation in the skills you will need for the rest of your programming career.

It helps you understand how a computer works underneath the hood, such as how it stores and retrieves information and what the internal architecture looks like.

With that said, C can be a difficult language to learn, especially for beginners, as it can be cryptic.

This handbook aims to teach you C programming fundamentals and is written with the beginner programmer in mind.

There are no prerequisites, and no previous knowledge of any programming concepts is assumed.

If you have never programmed before and are a complete beginner, you have come to the right place.

Here is what you are going to learn in this handbook:

Chapter 1: Introduction to C Programming

  • Chapter 2: Variables and Data Types in C
  • Chapter 3: Operators in C
  • Chapter 4: Conditional Statements in C
  • Chapter 5: Loops in C
  • Chapter 6: Arrays in C
  • Chapter 7: Strings in C

Further learning: Advanced C Topics

Without further ado, let’s get started with learning C!

In this introductory chapter, you will learn the main characteristics and use cases of the C programming language.

You will also learn the basics of C syntax and familiarize yourself with the general structure of all C programs.

By the end of the chapter, you will have set up a development environment for C programming so you can follow along with the coding examples in this book on your local machine.

You will have successfully written, compiled, and executed your first simple C program that prints the text "Hello, world!" to the screen.

You will have also learned some core C language features, such as comments for documenting and explaining your code and escape sequences for representing nonprintable characters in text.

What Is Programming?

Computers are not that smart.

Even though they can process data tirelessly and can perform operations at a very high speed, they cannot think for themselves. They need someone to tell them what to do next.

Humans tell computers what to do and exactly how to do it by giving them detailed and step-by-step instructions to follow.

A collection of detailed instructions is known as a program.

Programming is the process of writing the collection of instructions that a computer can understand and execute to perform a specific task and solve a particular problem.

A programming language is used to write the instructions.

And the humans who write the instructions and supply them to the computer are known as programmers.

Low-level VS High-Level VS Middle-level Programming Languages – What's The Difference?

There are three types of programming languages: low-level languages, high-level languages, and middle-level languages.

Low-level languages include machine language (also known as binary) and assembly language.

Both languages provide little to no abstraction from the computer's hardware. The language instructions are closely related to or correspond directly to specific machine instructions.

This 'closeness to the machine' allows for speed, efficiency, less consumption of memory, and fine-grained control over the computer's hardware.

Machine language is the lowest level of programming languages.

The instructions consist of series of 0 s and 1 s that correspond directly to a particular computer’s instructions and locations memory.

Instructions are also directly executed by the computer’s processor.

Even though machine language was the language of choice for writing programs in the early days of computing, it is not a human-readable language and is time-consuming to write.

Assembly language allows the programmer to work closely with the machine on a slightly higher level.

It uses mnemonics and symbols that correspond directly to a particular machine’s instruction set instead of using sequences of 0 s and 1 s.

Next, high-level languages, like Python and JavaScript, are far removed from the instruction set of a particular machine architecture.

Their syntax resembles the English language, making them easier to work with and understand.

Programs written in high-level languages are also portable and machine-independent. That is, a program can run on any system that supports that language.

With that said, they tend to be slower, consume more memory, and make it harder to work with low-level hardware and systems because of how abstract they are.

Lastly, middle-level languages, like C and C++, act as a bridge between low-level and high-level programming languages.

They allow for closeness and a level of control over computer hardware. At the same time, they also offer a level of abstraction with instructions that are more human-readable and understandable for programmers to write.

What Is the C Programming Language?

C is a general-purpose and procedural programming language.

A procedural language is a type of programming language that follows a step-by-step approach to solving a problem.

It uses a series of instructions, otherwise known as procedures or functions, that are executed in a specific order to perform tasks and accomplish goals. These intructions tell the computer step by step what to do and in what order.

So, C programs are divided into smaller, more specific functions that accomplish a certain task and get executed sequentially, one after another, following a top-down approach.

This promotes code readability and maintainability.

A Brief History of the C Programming Language

C was developed in the early 1970s by Dennis Ritchie at AT&T Bell Laboratories.

The development of C was closely tied to the development of the Unix operating system at Bell Labs.

Historically, operating systems were typically written in Assembly language and without portability in mind.

During the development of Unix, there was a need for a more efficient and portable programming language for writing operating systems.

Dennis Ritchie went on to create a language called B, which was an evolution from an earlier language called BCPL (Basic Combined Programming Language).

It aimed to bridge the gap between the low-level capabilities of Assembly and the high-level languages used at the time, such as Fortran.

B was not powerful enough to support Unix development, so Dennis Ritchie developed a new language that took inspiration from B and BCPL and had some additional features. He named this language C.

C’s simple design, speed, efficiency, performance, and close relationship with a computer’s hardware made it an attractive choice for systems programming. This led to the Unix operating system being rewritten in C.

C Language Characteristics and Use Cases

Despite C being a relatively old language (compared to other, more modern, programming languages in use today), it has stood the test of time and still remains popular.

According to the TIOBE index , which measures the popularity of programming languages each month, C is the second most popular programming language as of August 2023.

This is because C is considered the "mother of programming languages" and is one of the most foundational languages of computer science.

Most modern and popular languages used today either use C under the hood or are inspired by it.

For example, Python’s default implementation and interpreter, CPython, is written in C. And languages such as C++ and C# are extensions of C and provide additional functionality.

Even though C was originally designed with systems programming in mind, it is widely used in many other areas of computing.

C programs are portable and easy to implement, meaning they can be executed across different platforms with minimal changes.

C also allows for efficient and direct memory manipulation and management, making it an ideal language for performance-critical applications.

And C provides higher-level abstractions along with low-level capabilities, which allows programmers to have fine-grained control over hardware resources when they need to.

These characteristics make C an ideal language for creating operating systems, embedded systems, system utilities, Internet of things (IoT) devices, database systems, and various other applications.

C is used pretty much everywhere today.

How to Set Up a Development Environment for C Programming on Your Local Machine

To start writing C programs on your local machine, you will need the following:

  • A C Compiler
  • An Integrated Development Environment (IDE)

C is a compiled programming language, like Go, Java, Swift, and Rust.

Compiled languages are different from interpeted languages, such as PHP, Ruby, Python, and JavaScript.

The difference between compiled and interpeted languages is that a compiled language is directly translated to machine code all at once.

This process is done by a special program called a compiler.

The compiler reads the entire source code, checks it for errors, and then translates the entire program into machine code. This is a language the computer can understand and it's directly associated with the particular instructions of the computer.

This process creates a standalone binary executable file containing sequences of 0 s and 1 s which is a more computer-friendly form of the initial source code. This file contains instructions that the computer can understand and run directly.

An interpeted language, on the other hand, doesn’t get translated into machine code all at once and doesn’t produce a binary executable file.

Instead, an interpreter reads and executes the source code one instruction at a time, line by line. The interpreter reads each line, translates it into machine code, and then immediately runs it.

If you are using a Unix or a Unix-like system such as macOS or Linux, you probably have the popular GNU Compiler Collection (GCC) already installed on your machine.

If you are running either of those operating systems, open the terminal application and type the following command:

If you're using macOS and have not installed the command line developer tools, a dialog box will pop-up asking you to install them – so if you see that, go ahead and do so.

If you have already installed the command line tools, you will see an output with the version of the compiler, which will look similar to the following:

If you are using Windows, you can check out Code::Blocks or look into installing Linux on Windows with WSL . Feel free to pick whatever programming environment works best for you.

An IDE is where you write, edit, save, run, and debug your C programs. You can think of it like a word processor but for writing code.

Visual Studio Code is a great editor for writing code, and offers many IDE-like features.

It is free, open-source, supports many programming languages, and is available for all operating systems.

Once you have downloaded Visual Studio Code, install the C/C++ extension .

It’s also a good idea to enable auto-saving by selecting: "File" -> "Auto Save".

If you want to learn more, you can look through the Visual Studio Code documentation for C/C++ .

With your local machine all set up, you are ready to write your first C program!

How to Write Your First C Program

To get started, open Visual Studio Code and create a new folder for your C program by navigating to "File" -> "Open" -> "New Folder".

Give this folder a name, for example, c-practice , and then select "Create" -> “Open".

You should now have the c-practice folder open in Visual Studio Code.

Inside the folder you just created, create a new C file.

Hold down the Command key and press N on macOS or hold down the Control and press N for Windows/Linux to create an Untitled-1 file.

Hold down the Command key and press S on macOS or hold down the Control key and press S for Windows/Linux, and save the file as a main.c file.

Finally, click "Save".

Make sure that you save the file you created with a .c extension, or it won’t be a valid C file.

You should now have the main.c file you just created open in Visual Studio Code.

Next, add the following code:

Let’s go over each line and explain what is happening in the program.

What Are Header Files in C?

Let’s start with the first line, #include <stdio.h> .

The #include part of #include <stdio.h> is a preprocessor command that tells the C compiler to include a file.

Specifically, it tells the compiler to include the stdio.h header file.

Header files are external libraries.

This means that some developers have written some functionality and features that are not included at the core of the C language.

By adding header files to your code, you get additional functionality that you can use in your programs without having to write the code from scratch.

The stdio.h header file stands for standard input-output.

It contains function definitions for input and output operations, such as functions for gathering user data and printing data to the console.

Specifically, it provides functions such as printf() and scanf() .

So, this line is necessary for the function we have later on in our program, printf() , to work.

If you don't include the stdio.h file at the top of your code, the compiler will not understand what the printf() function is.

What is the main() function in C?

Next, int main(void) {} is the main function and starting point of every C program.

It is the first thing that is called when the program is executed.

Every C program must include a main() function.

The int keyword in int main(void) {} indicates the return value of the main() function.

In this case, the function will return an integer number.

And the void keyword inside the main() function indicates that the function receives no arguments.

Anything inside the curly braces, {} , is considered the body of the function – here is where you include the code you want to write. Any code written here will always run first.

This line acts as a boilerplate and starting point for all C programs. It lets the computer know where to begin reading the code when it executes your programs.

What Are Comments in C?

In C programming, comments are lines of text that get ignored by the compiler.

Writing comments is a way to provide additional information and describe the logic, purpose, and functionality of your code.

Comments provide a way to document your code and make it more readable and understandable for anyone who will read and work with it.

Having comments in your source code is also helpful for your future self. So when you come back to the code in a few months and don't remember how the code works, these comments can help.

Comments are also helpful for debugging and troubleshooting. You can temporarily comment out lines of code to isolate problems.

This will allow you to ignore a section of code and concentrate on the piece of code you are testing and working on without having to delete anything.

There are two types of comments in C:

  • Single-line comments
  • Multi-line comments

Single-line comments start with two forward slashes, // , and continue until the end of the line.

Here is the syntax for creating a single-line comment in C:

Any text written after the forward slashes and on the same line gets ignored by the compiler.

Multi-line comments start with a forward slash, / , followed by an asterisk, * , and end with an asterisk, followed by a forward slash.

As the name suggests, they span multiple lines.

They offer a way to write slightly longer explanations or notes within your code and explain in more detail how it works.

Here is the syntax for creating a multi-line comment in C:

What is the printf() function in C?

Inside the function's body, the line printf("Hello, World!\n"); prints the text Hello, World! to the console (this text is also known as a string).

Whenever you want to display something, use the printf() function.

Surround the text you want to display in double quotation marks, "" , and make sure it is inside the parentheses of the printf() function.

The semicolon, ; , terminates the statement. All statements need to end with a semicolon in C, as it identifies the end of the statement.

You can think of a semicolon similar to how a full stop/period ends a sentence.

What Are Escape Sequences in C?

Did you notice the \n at the end of printf("Hello, World!\n"); ?

It's called an escape sequence, which means that it is a character that creates a newline and tells the cursor to move to the next line when it sees it.

In programming, an escape sequence is a combination of characters that represents a special character within a string.

They provide a way to include special characters that are difficult to represent directly in a string.

They consist of a backslash, \ , also known as the escape character, followed by one or more additional characters.

The escape sequence for a newline character is \n .

Another escape sequence is \t . The \t represrents a tab character, and will insert a space within a string.

How to Compile and Run Your first C Program

In the previous section, you wrote your first C program:

Any code you write in the C programming language is called source code.

Your computer doesn’t understand any of the C statements you have written, so this source code needs to be translated into a different format that the computer can understand. Here is where the compiler you installed earlier comes in handy.

The compiler will read the program and translate it into a format closer to the computer’s native language and make your program suitable for execution.

You will be able to see the output of your program, which should be Hello, world! .

The compilation of a C program consists of four steps: preprocessing, compilation, assembling, and linking.

The first step is preprocessing.

The preprocessor scans through the source code to find preprocessor directives, which are any lines that start with a # symbol, such as #include .

Once the preprocessor finds these lines, it substitutes them with something else.

For example, when the preprocessor finds the line #include <stdio.h> , the #include tells the preprocessor to include all the code from the stdio.h header file.

So, it replaces the #include <stdio.h> line with the actual contents of the stdio.h file.

The output of this phase is a modified version of the source code.

After preprocessing, the next step is the compilation phase, where the modified source code gets translated into the corresponding assembly code.

If there are any errors, compilation will fail, and you will need to fix the errors to continue.

The next step is the assembly phase, where the assembler converts the generated assembly code statements into machine code instructions.

The output of this phase is an object file, which contains the machine code instructions.

The last step is the linking phase.

Linking is the process of combining the object file generated from the assembly phase with any necessary libraries to create the final executable binary file.

Now, let’s go over the commands you need to enter to compile your main.c file.

In Visual Studio Code, open the built-in terminal by selecting "Terminal" -> "New Terminal".

Inside the terminal, enter the following command:

The gcc part of the command refers to the C compiler, and main.c is the file that contains the C code that you want to compile.

Next, enter the following command:

The ls command lists the contents of the current directory.

The output of this command shows an a.out file – this is the executable file containing the source code statements in their corresponding binary instructions.

The a.out is the default name of the executable file created during the compilation process.

To run this file, enter the following command:

This command tells the computer to look in the current directory, ./ , for a file named a.out .

The above command generates the following output:

You also have the option to name the executable file instead of leaving it with the default a.out name.

Say you wanted to name the executable file helloWorld .

If you wanted to do this, you would need to enter the following command:

This command with the -o option (which stands for output) tells the gcc compiler to create an executable file named helloWorld .

To run the new executable file that you just created, enter the following command:

This is the output of the above command:

Note that whenever you make a change to your source code file, you have to repeat the process of compiling and running your program from the beginning to see the changes you made.

Chapter 2: Variables and Data Types

In this chapter, you will learn the basics of variables and data types – the fundamental storage units that allow you to preserve and manipulate data in your programs.

By the end of this chapter, you will know how to declare and initialize variables.

You will also have learned about various data types available in C, such as integers, floating-point numbers, and characters, which dictate how information is processed and stored within a program's memory.

Finally, you'll have learned how to receive user input in your programs, and how to use constants to store values that you don't want to be changed.

What Is a Variable in C?

Variables store different kind of data in the computer's memory, and take up a certain amount of space.

By storing information in a variable, you can retrieve and manipule it, perform various calculations, or even use it to make decisions in your program.

The stored data is given a name, and that is how you are able to access it when you need it.

How to Declare Variables in C

Before you can use a variable, you need to declare it – this step lets the compiler know that it should allocate some memory for it.

C is a strongly typed language, so to declare a variable in C, you first need to specify the type of data the variable will hold, such as an integer to store a whole number, a floating-point number for numbers with decimal places, or a char for a single character.

That way, during compilation time, the compiler knows if the variable is able to perform the actions it was set out to do.

Once you have specified the data type, you give the variable a name.

The general syntax for declaring variables looks something like this:

Let's take the following example:

In the example above, I declared a variable named age that will hold integer values.

What Are the Naming Conventions for Variables in C?

When it comes to variable names, they must begin either with a letter or an underscore.

For example, age and _age are valid variable names.

Also, they can contain any uppercase or lowercase letters, numbers, or an underscore character. There can be no other special symbols besides an underscore.

Lastly, variable names are case-sensitive. For example, age is different from Age .

How to Initialize Variables in C

Once you've declared a variable, it is a good practice to intialize it, which involves assigning an initial value to the variable.

The general syntax for initialzing a variable looks like this:

The assignment operator, = , is used to assign the value to the variable_name .

Let's take the previous example and assign age a value:

I initialized the variable age by assigning it an integer value of 29 .

With that said, you can combine the initialization and declaration steps instead of performing them separately:

How to Update Variable Values in C

The values of variables can change.

For example, you can change the value of age without having to specify its type again.

Here is how you would change its value from 29 to 30 :

Note that the data type of the new value being assigned must match the declared data type of the variable.

If it doesn't, the program will not run as expected. The compiler will raise an error during compilation time.

What Are the Basic Data Types in C?

Data types specify the type of form that information can have in C programs. And they determine what kind of operations can be performed on that information.

There are various built-in data types in C such as char , int , and float .

Each of the data types requires different allocation of memory.

Before exploring each one in more detail, let’s first go over the difference between signed and unsigned data types in C.

Signed data types can represent both positive and negative values.

On the other hand, unsigned data types can represent only non-negative values (zero and positive values).

Wondering when to use signed and when to use unsigned data types?

Use signed data types when you need to represent both positive and negative values, such as when working with numbers that can have positive and negative variations.

And use unsigned data types when you want to ensure that a variable can only hold non-negative values, such as when dealing with quantities.

Now, let's look at C data types in more detail.

What Is the char Data Type in C?

The most basic data type in C is char .

It stands for "character" and it is one of the simplest and most fundamental data types in the C programming language.

You use it to store a single individual character such as an uppercase and lowercase letter of the ASCII (American Standard Code for Information Interchange) chart.

Some examples of char s are 'a' and 'Z' .

It can also store symbols such as '!' , and digits such as '7' .

Here is an example of how to create a variable that will hold a char value:

Notice how I used single quotation marks around the single character.

This is because you can't use double quotes when working with char s.

Double quotes are used for strings.

Regarding memory allocation, a signed char lets you store numbers ranging from [-128 to 127 ], and uses at least 1 byte (or 8 bits) of memory.

An unsigned char stores numbers ranging from [0 to 255] .

What Is the int Data Type in C?

An int is a an integer, which is also known as a whole number.

It can hold a positive or negative value or 0 , but it can't hold numbers that contain decimal points (like 3.5 ).

Some examples of integers are 0 , -3 ,and 9 .

Here is how you create a variable that will hold an int value:

When you declare an int , the computer allocates at least 2 bytes (or 16 bits) of memory.

With that said, on most modern systems, an int typically allocates 4 bytes (or 32 bits) of memory.

The range of available numbers for a signed int is [-32,768 to 32,767] when it takes up 2 bytes and [-2,147,483,648 to 2,147,483,647] when it takes up 4 bytes of memory.

The range of numbers for an unsigned int doesn't include any of the negative numbers in the range mentioned for signed int s.

So, the range of numbers for unsigned ints that take up 2 bytes of memory is [0 to 65,535] and the range is [0 to 4,294,967,295] for those that take up 4 bytes.

To represent smaller numbers, you can use another data type – the short int . It typically takes up 2 bytes (or 16 bits) of memory.

A signed short int allows for numbers in a range from [-32,768 to 32,767] .

An unsigned short int allows for numbers in a range from [0 to 65,535] .

Use a short when you want to work with smaller integers, or when memory optimisation is critically important.

If you need to work with larger integers, you can also use other data types like long int or long long int , which provide a larger range and higher precision.

A long int typically takes up at least 4 bytes of memory (or 32 bits).

The values for a signed long int range from [-2,147,483,648 to 2,147,483,647] .

And the values for an unsigned long int range from [0 to 4,294,967,295] .

The long long int data type is able to use even larger numbers than a long int . It usually takes up 8 bytes (or 64 bits) of memory.

A signed long long int allows for a range from [-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807]

And an unsigned long long int has a range of numbers from [0 to 18,446,744,073,709,551,615] .

What Is The float Data Type in C?

The float data type is used to hold numbers with a decimal value (which are also known as real numbers).

It holds 4 bytes (or 32 bits) of memory and it is a single-precision floating-point type.

Here is how you create a variable that will hold a float value:

A double is a floating point value and is the most commonly used floating-point data type in C.

It holds 8 bytes (or 64 bits) of memory, and it is a double-precision floating-point type.

Here is how you create a variable that will hold a double value:

When choosing which floating-point data type to use, consider the trade-off between memory usage and precision.

A float has less precision that a double but consumes less memory.

Use a float when memory usage is a concern (such as when working with a system with limited resources) or when you need to perform calculations where high precision is not critical.

If you require higher precision and accuracy for your calculations and memory usage is not critical, you can use a double .

What Are Format Codes in C?

Format codes are used in input and output functions, such as scanf() and printf() , respectively.

They act as placeholders and substitutes for variables.

Specifically, they specify the expected format of input and output.

They tell the program how to format or interpret the data being passed to or read from the scanf() and printf() functions.

The syntax for format codes is the % character and the format specifier for the data type of the variable.

In the example above, age is the variable in the program. It is of type int .

The format code – or placeholder – for integer values is %i . This indicates that an integer should be printed.

In the program's output, %i is replaced with the value of age , which is 29 .

Here is a table with the format specifiers for each data type:

How to Recieve User Input Using the scanf() Function

Earlier you saw how to print something to the console using the printf() function.

But what happens when you want to receive user input? This is where the scanf() function comes in.

The scanf() function reads user input, which is typically entered via a keyboard.

The user enters a value, presses the Enter key, and the value is saved in a variable.

The general syntax for using scanf() looks something similar to the following:

Let's break it down:

  • format_string is the string that lets the computer know what to expect. It specifies the expected format of the input. For example, is it a word, a number, or something else?
  • &variable is the pointer to the variable where you want to store the value gathered from the user input.

Let's take a look at an example of scanf() in action:

In the example above, I first have to include the stdio.h header file, which provides input and output functions in C.

Then, in the main() function, I declare a variable named number that will hold integer values. This variable will store the user input.

Then, I prompt the user to enter a number using the printf() function.

Next, I use scanf() to read and save the value that the user enters.

The format specifier %i lets the computer known that it should expect an integer input.

Note also the & symbol before the variable name. Forgetting to add it will cause an error.

Lastly, after receiving the input, I display the received value to the console using another printf() function.

What are Constants in C?

As you saw earlier on, variable values can be changed throughout the life of a program.

With that said, there may be times when you don’t want a value to be changed. This is where constants come in handy.

In C, a constant is a variable with a value that cannot be changed after declaration and during the program's execution.

You can create a constant in a similar way to how you create variables.

The differences between constants and variables is that with constants you have to use the const keyword before mentioning the data type.

And when working with constants, you should always specify a value.

The general syntax for declaring constants in C looks like this:

Here, data_type represents the data type of the constant, constant_name is the name you choose for the constant, and value is the value of the constant.

It is also best practice to use all upper case letters when declaring a constant’s name.

Let’s see an example of how to create a constant in C:

In this example, LUCKY_NUM is defined as a constant with a value of 7 .

The constant's name, LUCKY_NUM , is in uppercase letters, as this is a best practice and convention that improves the readability of your code and distinguishes constants from variables.

Once defined, it cannot be modified in the program.

If you try to change its value, the C compiler will generate an error indicating that you are attempting to modify a constant.

Chapter 3: Operators

Operators are essential building blocks in all programming languages.

They let you perform various operations on variables and values using symbols.

And they let you compare variables and values against each other for decision-making computatons.

In this chapter, you will learn about the most common operators in C programming.

You will first learn about arithmetic operators, which allow you to perform basic mathematical calculations.

You will then learn about relational (also known as comparisson operators), which help you compare values.

And you will learn about logical operators, which allow you to make decisions based on conditions.

After understanding these fundamental operators, you'll learn about some additional operators, such as assignment operators, and increment and decrement operators.

By the end of this chapter, you will have a solid grasp of how to use different operators to manipulate data.

What Are the Arithmetic Operators in C?

Arithmetic operators are used to perform basic arithmetic operations on numeric data types.

Operations include addition, subtraction, multiplication, division, and calculating the remainder after division.

These are the main arithmetic operators in C:

Let's see examples of each one in action.

How to Use the Addition ( + ) Operator

The addition operator adds two operands together and returns their sum.

How to Use the Subtraction ( - ) Operator

The subtraction operator subtracts the second operand from the first operand and returns their difference.

How to Use the Multiplication ( * ) Operator

The multiplication operator multiplies two operands and returns their product.

How to Use the Division ( / ) Operator

The division operator divides the first operand by the second operand and returns their quotient.

How to Use the Modulo ( % ) Operator

The modulo operator returns the remainder of the first operand when divided by the second operand.

The modulo operator is commonly used to determine whether an integer is even or odd.

If the remainder of the operation is 1 , then the integer is odd. If there is no remainder, then the integer is even.

What Are The Relational Operators in C?

Relational operators are used to compare values and return a result.

The result is a Boolean value. A Boolean value is either true (represented by 1 ) or false (represented by 0 ).

These operators are commonly used in decision-making statements such as if statements, and while loops.

These are the relational operators in C:

Let’s see an example of each one in action.

How to Use the Equal to ( == ) Operator

The equal to operator checks if two values are equal.

It essentially asks the question, "Are these two values equal?"

Note that you use the comparisson operator (two equal signs – == ) and not the assignment operator ( = ) which is used for assigning a value to a variable.

The result is 1 (true), because a and b are equal.

How to Use the Not equal to ( != ) Operator

The not equal to operator checks if two values are NOT equal.

The result is 1 (true), because a and b are not equal.

How to Use the Greater than ( > ) Operator

This operator compares two values to check if one is greater than the other.

The result is 1 (true), because a is greater than b .

How to Use the Less than ( < ) Operator

This operator compares two values to check if one is less than the other.

The result is 0 (false), because a is not less than b .

How to Use the Greater than or Equal to ( >= ) Operator

This operator compares two values to check if one is greater than or equal to the other.

The result is 1 (true), because a is equal to b .

How to Use the Less than or equal to ( <= ) Operator

This operator compares two values to check if one is less than or equal the other.

The result is 1 (true), because a is less than b .

Logical Operators

Logical operators operate on Boolean values and return a Boolean value.

Here are the logical operators used in C:

Let's go into more detail on each one in the following sections.

How to Use the AND ( && ) Operator

The logical AND ( && ) operator checks whether all operands are true .

The result is true only when all operands are true .

Here is the truth table for the AND ( && ) operator when you are working with two operands:

The result of (10 == 10) && (20 == 20) is true because both operands are true .

Let's look at another example:

The result of (10 == 20) && (20 == 20) is false because one of the operands is false .

When the first operand is false , the second operand is not evaluated (since there's no point - it's already determined that the first operand is false, so the result can only be false ).

How to Use the OR ( || ) Operator

The logical OR ( || ) operator checks if at least one of the operands is true .

The result is true only when at least one of the operands is true .

Here is the truth table for the OR ( || ) operator when you are working with two operands:

Let's look at an example:

The result of (10 == 20) || (20 == 20) is true because one of the operands is true .

The result of (20 == 20) || (10 == 20) is true because one of the operands is true

If the first operand is true , then the second operator is not evaluated.

How to Use the NOT ( ! ) Operator

The logical NOT ( ! ) operator negates the operand.

If the operand is true , it returns false .

And if it is false , it returns true .

You may want to use the NOT operator when when you want to flip the value of a condition and return the opposite of what the condition evaluates to.

Here is the truth table for the NOT( ! ) operator:

The result of !(10 == 10) is false .

The condition 10 == 10 is true , but the ! operator negates it so the result is false .

And let's look at another example:

The result of !(10 == 20) is true .

The condition 10 == 20 is false, but the ! operator negates it.

What Is the Assignement Operator in C?

The assignment operator is used to assign a value to a variable.

In the example above, the value 10 is assigned to the variable num using the assignment operator.

The assignment operator works by evaluating the expression on the right-hand side and then storing its result in the variable on the left-hand side.

The type of data assigned should match the data type of the variable.

How to Use Compound Assignment Operators

Compound assignment operators are shorthand notations.

They allow you to modify a variable by performing an operation on it and then storing the result of the operation back into the same variable in a single step.

This can make your code more concise and easier to read.

Some common compound assignment operators in C include:

  • += : Addition and assignment
  • = : Subtraction and assignment
  • = : Multiplication and assignment
  • /= : Division and assignment
  • %= : Modulo and assignment

Let’s see an example of how the += operator works:

In the example above, I created a variable named num and assigned it an initial value of 10 .

I then wanted to increment the variable by 5 . To do this, I used the += compound operator.

The line num += 5 increments the value of num by 5, and the result (15) is stored back into num in one step.

Note that the num += 5; line works exactly the same as doing num = num + 5 , which would mean num = 10 + 5 , but with fewer lines of code.

What Are the Increment and Decrement Operators in C?

The increment ++ and decrement -- operators increment and decrement a variable by one, respectively.

Let’s look at an example of how to use the ++ operator:

The initial value of the variable num is 10 .

By using the ++ increment operator, the value of num is set to 11 .

This is like perfoming num = num + 1 but with less code.

The shorthand for decrementing a variable by one is -- .

If you wanted to decrement num by one, you would do the following:

By using the -- increment operator, the value of num is now set to 9 . This is like perfoming num = num - 1 .

Chapter 4: Conditional Statements

The examples you have seen so far all execute line by line, from top to bottom.

They are not flexible and dynamic and do not adapt according to user behavior or specific situations.

In this chapter, you will learn how to make decisions and control the flow of a program.

You get to set the rules on what happens next in your programs by setting conditions using conditional statements.

Conditional statements take a specific action based on the result of a comparisson that takes place.

The program will decide what the next steps should be based on whether the conditions are met or not.

Certain parts of the program may not run depending on the results or depending on certain user input. The user can go down different paths depending on the various forks in the road that come up during a program's life.

First, you will learn about the if statement – the foundational building block of decision-making in C.

You will also learn about the else if and else statements that are added to the if statement to provide additional flexibility to the program.

You will then learn about the ternary operator which allows you to condense decision-making logic into a single line of code and improve the readability of your program.

How to Create an if statement in C

The most basic conditional statement in C is the if statement.

It makes a decision based on a condition.

If the given condition evaluates to true only then is the code inside the if block executed.

If the given condition evaluates to false , the code inside the if block is ignored and skipped.

The general syntax for an if statement in C is the following:

In the above code, I created a variable named age that holds an integer value.

I then prompted the user to enter their age and stored the answer in the variable age .

Then, I created a condition that checks whether the value contained in the variable age is less than 18.

If so, I want a message printed to the console letting the user know that to proceed, the user should be at least 18 years of age.

When asked for my age and I enter 16 , I'd get the following output:

The condition ( age < 18 ) evaluates to true so the code in the if block executes.

Then, I re-compile and re-run the program.

This time, when asked for my age, say I enter 28 , but I don't get any output:

This is because the condition evaluates to false and therefore the body of the if block is skipped.

I have also not specified what should happen in the case that the user's age is greater than 18.

To specify what happens in case the user's age is greater than 18, I can use an if else statement.

How to Create an if else statement in C

You can add an else clause to an if statement to provide code that will execute only when the if statement evaluates to false .

The if else statement essentially means that " if this condition is true do the following thing, else do this thing instead".

If the condition inside the parentheses evaluates to true , the code inside the if block will execute.

But if that condition evaluates to false , the code inside the else block will execute.

The else keyword is the solution for when the if condition is false and the code inside the if block doesn't run. It provides an alternative.

The general syntax looks like this:

Now, let's revisit the example from the previous section, and specify what should happen if the user's age is greater than 18:

If the condition is true the code in the if block runs:

If the condition is false the code in the if block is skipped and the code in the else block runs instead:

How to Create an else if statement in C

But what happens when you want to have more than one condition to choose from?

If you wish to chose between more than one option you can introduce an else if statement.

An else if statement essentially means that "If this condition is true, do the following. If it isn't, do this instead. However, if none of the above are true and all else fails, finally do this."

The general syntax looks something like the following:

Let's see how an else if statement works.

Say you have the following example:

If the first if statement is true, the rest of the block will not run:

If the first if statement is false, then the program moves on to the next condition.

If that is true the code inside the else if block executes and the rest of the block doesn't run:

If both of the previous conditions are all false, then the last resort is the else block which is the one to execute:

How to Use the Ternary Operator in C

The ternary operator (also known as the conditional operator) allows you to write an if else statement with fewer lines of code.

It can provide a way of writing more readable and concise code and comes in handy when writing simple conditional expressions.

You would want to use it when you are making making simple decisions and want to keep your code concise and on one line.

However, it's best to stick to a regular if-else statement when you are dealing with more complex decisions as the ternary operator could make your code hard to read.

The general syntax for the ternary operator looks something similar to the following:

  • condition is the condition you want to evaluate. This condition will evaluate to either true of false
  • ? separates the condition from the two possible expressions
  • expression_if_true is executed if the condition evaluates to true
  • : separates the expression_if_true from the expression_if_false
  • expression_if_false is executed if the condition evaluates to false .

Let's take a look at an example:

In the example above, the condition is (x > 5) .

If x is greater than 5, the condition evaluates to true . And when the condition is true , the value assigned to y will be 100 .

If the condition evaluates to false , the value assigned to y will be 200 .

So, since x is greater than 5 ( x = 10 ), y is assigned the value 100 .

Chapter 5: Loops

In this chapter you will learn about loops, which are essential for automating repetitive tasks without having to write the same code multiple times.

Loops allow you to execute a specific block of code instructions repeatedly over and over again until a certain condition is met.

You will learn about the different types of loops, such as the for , while and do-while loops, and understand their syntax and when you should use each one.

You will also learn about the break statement, which allows you to control the execution flow within loops in specific ways.

How to Create a for Loop in C

A for loop allows you to execute a block of code repeatedly based on a specified condition.

It's useful when you know how many times you want to repeat a certain action.

The general syntax for a for loop looks like this:

  • initialization is the step where you initialize a loop control variable. It's typically used to set the starting point for your loop.
  • condition is the condition that is evaluated before each iteration. If the condition is true , the loop continues. If it's false , the loop terminates. The loop will run as long as the condition remains true.
  • increment/decrement is the part responsible for changing the loop control variable after each iteration. It can be an increment ( ++ ), a decrement ( -- ), or any other modification.
  • Code to be executed in each iteration is the block of code inside the for loop's body that gets executed in each iteration if the condition is true .

Let's see an example of how a for loop works.

Say you want to print the numbers from 1 to 5 to the console:

In the example above, I first initialize the loop control variable i with a value of 1 .

The condition i <= 5 is true, so the loop's body is executed and "Iteration 1" is printed.

After each iteration, the value of i is incremented by 1 . So, i is incremented to 2 .

The condition is still true , so "Iteration 2" is printed.

The loop will continue as long as i is less than or equal to 5 .

When i becomes 6 , the condition evaluates to false and the loop terminates.

How to Create a while Loop in C

As you saw in the previous section, a for loop is used when you know the exact number of iterations you want the loop to perform.

The while loop is useful when you want to repeat an action based on a condition but don't know the exact number of iterations beforehand.

Here is the general syntax of a while loop:

With a while loop, the condition is evaluated before each iteration. If the condition is true , the loop continues. If it's false, the loop terminates.

The while loop will continue as long as the condition evaluates to true .

Something to note with while loops is that the code in the loop's body is not guaranteed to run even at least one time if a condition is not met.

Let's see an example of how a while loop works:

In the example above, I first initialize a variable count with a value of 1 .

Before it runs any code, the while loop checks a condition.

The condition count <= 5 is true because count is initially 1 . So, the loop's body is executed and "Iteration 1" is printed.

Then, count is incremented to 2 .

The loop will continue as long as count is less than or equal to 5.

This process continues until count becomes 6 , at which point the condition becomes false , and the loop terminates.

Something to be aware of when working with while loops is accidentally creating an infinite loop:

In this case the condition always evaluates to true .

After printing the line of code inside the curly braces, it continuously checks wether it should run the code again.

As the answer is always yes (since the condition it needs to check is always true each and every time), it runs the code again and again and again.

The way to stop the program and escape from the endless loop is running Ctrl C in the terminal.

How to Create a do-while Loop in C

As mentioned in the previous section, the code in the while loop's body is not guaranteed to run even at least one time if the condition is not met.

A do-while loop executes a block of code repeatedly for as long as a condition remains true .

However, in contrast to a while loop, it is guaranteed to run at least once, regardless of whether the condition is true or false from the beginning.

So, the do-while loop is useful when you want to ensure that the loop's body is executed at least once before the condition is checked.

The general syntax for a do-while loop looks like this:

Let's take a look at an example that demonstrates how a do-while loop works:

In the example above I initialize a variable count with a value of 1 .

A do-while loop first does something and then checks a condition.

So, the block of code inside the loop is executed at least one time.

The string "Iteration 1" is printed and then count is incremented to 2 .

The condition count <= 5 is then checked and it evaluates to true , so the loop continues.

After the iteration where count is 6 , the condition becomes false , and the loop terminates.

How to Use the break Statement in C

The break statement is used to immediately exit a loop and terminate its execution.

It's a control flow statement that allows you to interrupt the normal loop execution and move on to the code after the loop.

The break statement is especially useful when you want to exit a loop under specific conditions, even if the loop's termination condition hasn't been met.

You might use it when you encounter a certain value, or when a specific condition is met.

Here's how to use a break statement in a loop:

In the example above, a for loop is set to iterate from 1 to 10 .

Inside the loop, the current value of i is printed on each iteration.

There is also an if statement that checks if the current value of i matches the target value, which is set to 5 .

If i matches the target value, the if statement is triggered and a message is printed.

As a result, the break statement exits the current loop immediately and prematurely.

The program will continue executing the code that is after the loop.

Chapter 6: Arrays

Arrays offer a versatile and organized way to store multiple pieces of related data that are arranged in an ordered sequence.

They allow you to store multiple values of the same data type under a single identifier and perform repetitive tasks on each element.

In this chapter, you will learn how to declare and initialize arrays. You will also learn how to access individual elements within an array using index notation and modify them.

In addition, you will learn how to use loops to iterate through array elements and perform operations on each element.

How to Declare and Initialize an Array in C

To declare an array in C, you first specify the data type of the elements the array will store.

This means you can create arrays of type int , float , char , and so on.

You then specify the array's name, followed by the array's size in square brackets.

The size of the array is the number of elements that it can hold. This number must be a positive integer.

Keep in mind that arrays have a fixed size, and once declared, you cannot change it later on.

Here is the general syntax for declaring an array:

Here is how to declare an array of integers:

In the example above, I created an array named grades that can store 5 int numbers.

After declaring an array, you can initialize it with initial values.

To do this, use the assignment operator, = , followed by curly braces, {} .

The curly braces will enclose the values, and each value needs to be separated by a comma.

Here is how to initialize the grades array:

Keep in mind that the number of values should match the array size, otherwise you will encounter errors.

Something to note here is that you can also partially initialize the array:

In this case, the remaining two elements will be set to 0 .

Another way to initialize arrays is to omit the array's length inside the square brackets and only assign the initial values, like so:

In this example, the array's size is 5 because I assigned it 5 values.

How to Find the Length of an Array in C Using the sizeof() Operator

The sizeof operator comes in handy when you need to calculate the size of an array.

Let's see an example of the sizeof operator in action:

In the example above, sizeof(grades) calculates the total size of the array in bytes.

In this case, the array has five integers.

As mentioned in a previous chapter, on most modern systems an int typically occupies 4 bytes of memory. Therefore, the total size is 5 x 4 = 20 bytes of memory for the entire array.

Here is how you can check how much memory each int occupies using the sizeof operator:

The sizeof(grades[0]) calculates the size of a single element in bytes.

By dividing the total size of the array by the size of a single element, you can calculate the number of elements in the array, which is equal to the array's length:

How to Access Array Elements in C

You can access each element in an array by specifying its index or its position in the array.

Note that in C, indexing starts at 0 instead of 1 .

So, the index of the first element is 0 , the index of the second element is 1 , and so on.

The last element in an array has an index of array_size - 1 .

To access individual elements in the array, you specify the array's name followed by the element's index number inside square brackets ( [] ).

Let's take a look at the following example:

In the example above, to access each item from the integer array grades , I have to specify the array's name along with the item's position in the array inside square brackets.

Remember that the index starts from 0 , so grades[0] gives you the first element, grades[1] gives you the second element, and so on.

Note that if you try to access an element with an index number that is higher than array_size - 1 , the compiler will return a random number:

How to Modify Array Elements in C

Once you know how to access array elements, you can then modify them.

The general syntax for modifying an array element looks like this:

You can change the value of an element by assigning a new value to it using its index.

Let's take the grades array from earlier on:

Here is how you would change the value 75 to 85 :

When modifying arrays, keep in mind that the new value must match the declared data type of the array.

How to Loop Through an Array in C

By looping through an array, you can access and perform operations on each element sequentially.

The for loop is commonly used to iterate through arrays.

When using a for loop to loop through an array, you have to specify the index as the loop variable, and then use the index to access each array element.

The %i placeholders are replaced with the current index i and the value at that index in the grades array, respectively.

You can also use a while loop to iterate through an array:

When using a while loop to loop through an array, you will need an index variable, int i = 0 , to keep track of the current position in the array.

The loop checks the condition (i < 5) and prints the index of the grade as well as the actual grade value.

After each grade is shown, the variable i is increased by one, and the loop continues until it has shown all the grades in the list.

A do-while works in a similar way to the while loop, but it is useful when you want to ensure that the loop body is executed at least once before checking the condition:

You can also use the sizeof operator to loop through an array.

This method is particularly useful to ensure your loop doesn't exceed the array's length:

The line int length = sizeof(grades) / sizeof(grades[0]); calculates the length of the grades array.

The length is calculated by dividing the total size (in bytes) of the array by the size of a single element grades[0] . The result is stored in the length variable.

The loop then iterates through the array using this length value.

For each iteration, it prints the index i and the value of the grade at that index grades[i] .

Chapter 7: Strings

In the previous chapter, you learned the basics of arrays in C.

Now, it's time to learn about strings – a special kind of array.

Strings are everywhere in programming. They are used to represent names, messages, passwords, and more.

In this chapter, you will learn about strings in C and how they are stored as arrays of characters.

You'll also learn the fundamentals of string manipulation.

Specifically, you will learn how to find a string's length and how to copy, concatenate, and compare strings in C.

What Are Strings in C?

A string is a sequence of characters, like letters, numbers, or symbols, that are used to represent text.

In C, strings are actually arrays of characters. And each character in the string has a specific position within the array.

Another unique characteristic of strings in C is that at the end of every one, there is a hidden \0 character called the 'null terminator'.

This terminator lets the computer know where the string ends.

So, the string ' Hello ' in C is stored as ' Hello\0 ' in memory.

How to Create Strings in C

One way to create a string in C is to initialize an array of characters.

The array will contain the characters that make up the string.

Here is how you would initialize an array to create the string 'Hello':

Note how I specified that the array should store 6 characters despite Hello being only 5 characters long. This is due to the null operator.

Make sure to include the null terminator, \0 , as the last character to signify the end of the string.

Let's look at how you would create the string 'Hello world':

In this example, there is a space between the word 'Hello' and the word 'world'.

So, the array must include a blank space character.

To print the string, you use the printf() function, the %s format code and the name of the array:

Another way to create a string in C is to use a string literal.

In this case, you create an array of characters and then assign the string by enclosing it in double quotes:

With string literals, the null terminator ( \0 ) is implied.

Creating strings with string literals is easier, as you don't need to add the null terminator at the end. This method is also much more readable and requires less code.

However, you may want to use character arrays when you want to modify the string's content. String literals are read-only, meaning the content is fixed.

How to Manipulate Strings in C

C provides functions that allow you to perform operations on strings, such as copying, concatenating, and comparing, to name a few.

To use these functions, you first need to include the string.h header file by adding the line #include <string.h> at the top of your file.

How to Find the Length of a String in C

To calculate the length of a string, use the strlen() function:

The strlen() function will return the number of characters that make up the string.

Note that the result does not include the null terminator, \0 .

How to Copy a String in C

To copy one string into another one, you can use the strcpy() function.

You may want to copy a string in C when you need to make changes to it without modifying it. It comes in handy when you need to keep the original string's content intact.

The general syntax for the strcpy() function looks like this:

The strcpy() function copies original_string into destination_string , including the null terminator ( '\0' ).

One thing to note here is that you need to make sure the destination array has enough space for the original string:

The strcpy() function copies the original string into an empty array and returns the copied string, which also includes the null terminator character ( '\0' ).

How to Concatenate Strings in C

You can concatenate (add) two strings together by using the strcat() function.

The general syntax for the strcat() function looks something like the following:

The strcat() function takes the original string and adds it to the end of destination string.

Make sure that the destination_string has enough memory for the original_string .

Something to note here is that strcat() does not create a new string.

Instead, it modifies the original destination_string , by including the original_string at the end.

Let's see an example of how strcat() works:

How to Compare Strings in C

To compare two strings for equality, you can use the strcmp() function.

The general syntax for the strcmp() function looks like this:

The strcmp() function compares string1 with string2 and returns an integer.

If the return value of strcmp() is 0 , then it means the two strings are the same:

If the return value of strcmp() is less than 0 , then it means the first word comes before the second:

And if the return value of strcmp() is greater than 0 , then it means the first word comes after the second one:

While this handbook has covered a wide range of topics, there is still so much to learn, as programming is so vast.

Once you have built a solid foundation with the basics of C programming, you may want to explore more advanced concepts.

You may want to move on to learning about functions, for example. They allow you to write instructions for a specific task and reuse that code throughout your program.

You may also want to learn about pointers. Pointers in C are like arrows that show you where a specific piece of information is stored in the computer's memory.

Then, you may want to move on to learning about structures. They're like custom data containers that allow you to group different types of information under one name.

Lastly, you may want to learn how to work with files. Working with files in C allows you to read from and write to files. This is useful for tasks like saving user data, reading configuration settings, or sharing data between different programs.

These suggestions are not a definitive guide – just a few ideas for you to continue your C programming learning journey.

If you are interested in learning more, you can check out the following freeCodeCamp resources:

  • C Programming Tutorial for Beginners
  • Learn C Programming Using the Classic Book by Kernighan and Ritchie
  • Unlock the Mysteries of Pointers in C

This marks the end of this introduction to the C programming language.

Thank you so much for sticking with it and making it until the end.

You learned how to work with variables, various data types, and operators.

You also learned how to write conditional statements and loops. And you learned the basics of working with arrays and strings.

Hopefully, you have gained a good understanding of some of the fundamentals of C programming, got some inspiration on what to learn next, and are excited to continue your programming journey.

Happy coding!

Read more posts .

If this article was helpful, share it .

Learn to code for free. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. Get started

Welcome to the learn-c.org free interactive C tutorial.

Whether you are an experienced programmer or not, this website is intended for everyone who wishes to learn the C programming language.

There is no need to download anything - Just click on the chapter you wish to begin from, and follow the instructions. Good luck!

learn-c.org is still under construction - If you wish to contribute tutorials, please click on Contributing Tutorials down below.

Learn the Basics

  • Hello, World!
  • Variables and Types
  • Multidimensional Arrays
  • While loops
  • Function arguments by reference
  • Dynamic allocation
  • Arrays and Pointers
  • Linked lists
  • Binary trees
  • Pointer Arithmetics
  • Function Pointers

Contributing Tutorials

Read more here: Contributing Tutorials

Sphere Engine

Coding for Kids is an online interactive tutorial that teaches your kids how to code while playing!

Receive a 50% discount code by using the promo code:

Start now and play the first chapter for free, without signing up.

coursework in c

  • Social Sciences

CS50x

CS50: Introduction to Computer Science

An introduction to the intellectual enterprises of computer science and the art of programming.

Learn C practically and Get Certified .

Popular Tutorials

Popular examples, reference materials, learn c interactively.

The best way to learn C programming is by practicing examples. The page contains examples on basic concepts of C programming. You are advised to take the references from these examples and try them on your own.

All the programs on this page are tested and should work on all platforms.

Want to learn C Programming by writing code yourself? Enroll in our Interactive C Course for FREE.

  • C Program to Create Pyramids and Patterns
  • C Program to Check Prime Number
  • C Program to Check Palindrome Number
  • C Program to Print Hello World
  • C "Hello, World!" Program
  • C Program to Print an Integer (Entered by the User)
  • C Program to Add Two Integers
  • C Program to Multiply Two Floating-Point Numbers
  • C Program to Find ASCII Value of a Character
  • C Program to Compute Quotient and Remainder
  • C Program to Find the Size of int, float, double and char
  • C Program to Demonstrate the Working of Keyword long
  • C Program to Swap Two Numbers
  • C Program to Check Whether a Number is Even or Odd
  • C Program to Check Whether a Character is a Vowel or Consonant
  • C Program to Find the Largest Number Among Three Numbers
  • C Program to Find the Roots of a Quadratic Equation
  • C Program to Check Leap Year
  • C Program to Check Whether a Number is Positive or Negative
  • C Program to Check Whether a Character is an Alphabet or not
  • C Program to Calculate the Sum of Natural Numbers
  • C Program to Find Factorial of a Number
  • C Program to Generate Multiplication Table
  • C Program to Display Fibonacci Sequence
  • C Program to Find GCD of two Numbers
  • C Program to Find LCM of two Numbers
  • C Program to Display Characters from A to Z Using Loop
  • C Program to Count Number of Digits in an Integer
  • C Program to Reverse a Number
  • C Program to Calculate the Power of a Number
  • C Program to Check Whether a Number is Palindrome or Not
  • C Program to Check Whether a Number is Prime or Not
  • C Program to Display Prime Numbers Between Two Intervals
  • C Program to Check Armstrong Number
  • C Program to Display Armstrong Number Between Two Intervals
  • C Program to Display Factors of a Number
  • C Program to Make a Simple Calculator Using switch...case
  • C Program to Display Prime Numbers Between Intervals Using Function
  • C Program to Check Prime or Armstrong Number Using User-defined Function
  • C Program to Check Whether a Number can be Expressed as Sum of Two Prime Numbers
  • C Program to Find the Sum of Natural Numbers using Recursion
  • C Program to Find Factorial of a Number Using Recursion
  • C Program to Find G.C.D Using Recursion
  • C Program to Convert Binary Number to Decimal and vice-versa
  • C Program to Convert Octal Number to Decimal and vice-versa
  • C Program to Convert Binary Number to Octal and vice-versa
  • C Program to Reverse a Sentence Using Recursion
  • C program to calculate the power using recursion
  • C Program to Calculate Average Using Arrays
  • C Program to Find Largest Element in an Array
  • C Program to Calculate Standard Deviation
  • C Program to Add Two Matrices Using Multi-dimensional Arrays
  • C Program to Multiply Two Matrices Using Multi-dimensional Arrays
  • C Program to Find Transpose of a Matrix
  • C Program to Multiply two Matrices by Passing Matrix to a Function
  • C Program to Access Array Elements Using Pointer
  • C Program Swap Numbers in Cyclic Order Using Call by Reference
  • C Program to Find Largest Number Using Dynamic Memory Allocation
  • C Program to Find the Frequency of Characters in a String
  • C Program to Count the Number of Vowels, Consonants and so on
  • C Program to Remove all Characters in a String Except Alphabets
  • C Program to Find the Length of a String
  • C Program to Concatenate Two Strings
  • C Program to Copy String Without Using strcpy()
  • C Program to Sort Elements in Lexicographical Order (Dictionary Order)
  • C Program to Store Information of a Student Using Structure
  • C Program to Add Two Distances (in inch-feet system) using Structures
  • C Program to Add Two Complex Numbers by Passing Structure to a Function
  • C Program to Calculate Difference Between Two Time Periods
  • C Program to Store Information of Students Using Structure
  • C Program to Store Data in Structures Dynamically
  • C Program to Write a Sentence to a File
  • C Program to Read the First Line From a File
  • C Program to Display its own Source Code as Output
  • C Program to Print Pyramids and Patterns

Power Rankings: THE CJ CUP Byron Nelson

Power Rankings

Change Text Size

Editor's note: Will Zalatoris, who was originally leading this week's edition of Power Rankings, withdrew from THE CJ CUP Byron Nelson on Tuesday, April 30th.

The last lap of any race should feature an all-out sprint or pedals to the floor. In more ways than one, that describes the expectation at THE CJ CUP Byron Nelson.

A full field of 156 is ready to go at TPC Craig Ranch in McKinney, Texas. For what’s at stake, how the course will test in its fourth year as the host and more can be found beneath the ranking of those projected to contend for the title.

Of course, winning opens the most doors, but the lunge for the latest tape will require a scorer’s mentality throughout the tournament.

After its first two editions as one of the easiest par 72s on the schedule, TPC Craig Ranch transitioned into one of the easiest par 71s last year when the 12th hole was shortened and modified to a par 4. While it evolved from the easiest hole on the course in 2022 to the second-hardest in relation to par a year later, it still didn’t register as among the toughest 20 percent of par 4s played all season. Overall, the field averaged 68.913 on the 7,414-yard test.

As is the case with every shootout, leading the field in scoring opportunities isn’t enough. The putts need to drop as well. TPC Craig Ranch sets a stage for guys to find a groove and ride it across multiple rounds. Decent-sized putting surfaces blanketed with bentgrass are governed to just 11 ½ feet on the Stimpmeter – they need to prepare to withstand quintessential Texas wind – so flagsticks will be in crosshairs more than usual.

Breezes do a fair job of inflating measurements from holes on approach, but the ground game at TPC Craig Ranch is rewarded. Last year, the field’s average in salvaging pars from off greens nearly two-thirds of the time, ranking second-easiest among 58 courses played.

Storms are almost as guaranteed as the wind this week. There’s a reasonable threat during every round. Because the invisible force will flex at times, native Texans always have an edge because they find the strongest pulse. Daytime highs might not touch 80 degrees, so these will not be sweltering conditions. (Wednesday’s Golfbet Insider will include a revisit of the weather.)

ROB BOLTON’S SCHEDULE

MONDAY: Power Rankings TUESDAY*: Sleepers WEDNESDAY: Golfbet Insider SUNDAY: Points and Payouts; Medical Extensions; Qualifiers; Reshuffle

* Rob is a member of the panel for PGATOUR.COM’s Expert Picks for PGA TOUR Fantasy Golf, which also publishes on Tuesday.

Rob Bolton is a Golfbet columnist for the PGA TOUR. The Chicagoland native has been playing fantasy golf since 1994, so he was just waiting for the Internet to catch up with him. Follow Rob Bolton on Twitter .

Government of B.C.

  • Skip to main content
  • Skip to main navigation
  • Skip to site search
  • Skip to side bar
  • Skip to footer

BC Gov News

  • News Archive
  • Live Webcast

Office of the Premier

  • Agriculture and Food
  • Attorney General
  • Children and Family Development
  • Citizens' Services
  • Education and Child Care
  • Emergency Management and Climate Readiness
  • Energy, Mines and Low Carbon Innovation
  • Environment and Climate Change Strategy
  • Indigenous Relations and Reconciliation
  • Intergovernmental Relations Secretariat
  • Jobs, Economic Development and Innovation
  • Mental Health and Addictions
  • Municipal Affairs
  • Post-Secondary Education and Future Skills
  • Public Safety and Solicitor General
  • Social Development and Poverty Reduction
  • Tourism, Arts, Culture and Sport
  • Transportation and Infrastructure
  • Water, Land and Resource Stewardship

Secondary suite program launches, creating thousands of more affordable homes for people

Unlocking more below-market rentals in BC

B.C. moves to ban drug use in public spaces, taking more steps to keep people safe

More from the premier.

  • Factsheets & Opinion Editorials
  • Search News
  • Premier's Bio

Province strengthens drought preparedness

B.C. strengthens drought preparedness

B.C. vineyards, orchards receive help to replant for changing climate

More from this ministry.

  • Minister's Bio

Joint statement on Asian Heritage Month

Happy Asian Heritage Month!

Premier’s, minister’s, parliamentary secretary’s statements on Jewish Heritage Month

Expanded eligibility, new supports available for current, former youth in care.

Expanded eligibility, new supports available for current, former youth in care

New position expedites progress on Indigenous child welfare

Governments of canada and british columbia working together to bring high-speed internet to more than 7,500 households.

Working together to bring high-speed Internet to more than 7,500 households

Michael McEvoy to serve as interim information and privacy commissioner

B.c. takes action to improve literacy for students.

B.C. takes action to improve literacy for students

More spaces coming for elementary students in Burnaby

Stronger local-disaster response will keep people safer.

Three emergency responders in yellow vests working at computers in a control room with a banner reading "building stronger local emergency response"

More than $26 million invested in disaster mitigation infrastructure improvements across British Columbia

Bc hydro issues call for new clean electricity to power b.c.’s future.

Graphic with image showing adult and child walking into home, and an EV plugged in in the foreground.

New legislation ensures B.C. benefits from clean, affordable electricity

Working together to preserve the natural beauty of pipi7íyekw/joffre lakes park.

Lilwat – B.C. – N’Quatqua logos

More climate-action funding coming to communities throughout B.C.

Budget 2024: taking action for people, families in b.c..

Budget 2024: Taking action for people, families in B.C.

Climate action tax credit helps people with everyday costs

B.c. plants its 10-billionth tree.

B.C. plants its 10-billionth tree

B.C. continues investments to support forest sector

B.C. moves to ban drug use in public spaces, taking more steps to keep people safe

Urgent and primary care centre opens in Chilliwack

Indigenous people in sooke get access to 170 below-market homes, historic b.c. legislation introduced recognizing haida aboriginal title.

Historic B.C. legislation introduced recognizing Haida Aboriginal title

Throne speech lays out vision of a stronger B.C. that works better for people

Lieutenant Governor Janet Austin opened the final session of the 42nd Parliament by delivering the speech from the throne

Province honours people providing extraordinary community service

New agritech plant anchors b.c.’s industrial blueprint.

New agritech plant anchors B.C.’s industrial blueprint. Photo credit: Vitalus

Funding will strengthen rural Kootenay economies

2024 minimum wage increases confirmed, minister’s and parliamentary secretary’s statement on construction and skilled trades month, expanded mental-health, addictions support coming for south asian community, expanding multi-language support, services for newcomers, construction underway on cowichan sportsplex field house, new legislation recognizes work of first nations post-secondary institutes.

New legislation supports First Nations post-secondary education

TradeUpBC builds, enhances tradespeoples’ skills

Province reaches major milestone in surrey police transition plan, budget 2024 supports improvements to treatment, recovery services.

Image: A man talks to a doctor in a treatment room. Graphic text: New funding enhances care for mental health and addiction recovery.

Changes aim to help people out of poverty

Province provides updates for fifa world cup 26.

Province provides updates for FIFA World Cup 26

Province moves ahead on a safer amateur sport system

Province, yvr work together to support good jobs, fight pollution.

Province, YVR work together to support good jobs, fight pollution

Airport improvements support services, growth for communities

Province supports new weir to keep cowichan river flowing.

Province supports new weir to keep Cowichan River flowing

Province strengthens flood defences, protecting people, communities

Premier David Eby

Premier David Eby

Email: [email protected]

Translations

News release, media contacts, jimmy smith, ministry of public safety and solicitor general, ministry of health, ministry of mental health and addictions, meet the team.

  • Cabinet Ministers
  • Deputy Ministers
  • Cabinet Committees

coursework in c

B.C. is taking action to make illicit drug use illegal in all public spaces, including inside hospitals, on transit and in parks.

It’s part of several new measures introduced by the Province, focused on providing police with more tools to address public safety while offering support and access to treatment for people living with addictions.

“Keeping people safe is our highest priority. While we are caring and compassionate for those struggling with addiction, we do not accept street disorder that makes communities feel unsafe,” said Premier David Eby. “We’re taking action to make sure police have the tools they need to ensure safe and comfortable communities for everyone as we expand treatment options so people can stay alive and get better.”

The Province is working with the federal government to make changes to the legality of possessing drugs in B.C. This will provide police with the power to enforce against drug use in all public places, including hospitals, restaurants, transit, parks and beaches. Guidance will be given to police to only arrest for simple possession of illicit drugs in exceptional circumstances.

When police are called to a scene where illegal and dangerous drug use is taking place, they will have the ability to compel the person to leave the area, seize the drugs when necessary or arrest the person, if required.

This change would not recriminalize drug possession in a private residence or place where someone is legally sheltering, or at overdose prevention sites and drug checking locations.

“Our communities are facing big challenges. People are dying from deadly street drugs and we see the issues with public use and disorder on our streets,” said Mike Farnworth, Minister of Public Safety and Solicitor General. “As we continue to go after the gangs and organized criminals who are making and trafficking toxic drugs, we’re taking action now to make it illegal to use drugs in public spaces, and to expand access to treatment to help people who need it most.”  

The government will also improve safety and security for patients, visitors and health-care workers in hospitals. This includes a single policy prohibiting street-drug possession or use and additional measures to increase enforcement, support patients with addictions, and encourage them toward treatment and recovery.

Going forward, when patients are admitted to hospital, they will be asked if they experience any substance-use challenges. Patients will receive active support and medical oversight for addiction care to ensure people with addictions receive personalized care while their medical issues are being treated in hospital.

“Today, we are taking immediate action to make hospitals safer and ensuring policies are consistent and strictly enforced through additional security, public communication and staff supports,” said Adrian Dix, Minister of Health. “The action plan launching today will improve how patients with addictions are supported while they need hospital care, while preventing others from being exposed to the second-hand effects of illicit drug use.”

The Province is also expanding access to treatment for people struggling with addiction, including those who are most at risk of overdose by:

  • increasing the availability and accessibility of opioid-agonist treatment (OAT), a medication-assisted treatment for people who have an opioid-use disorder, by implementing a provincewide virtual system;
  • integrating addictions services with health care, housing and related services; and
  • working with experts to develop methods to track prescribed alternatives with the aim of identifying and preventing diversion.

“People across the country are dying from poisoned drugs and B.C. is no exception,” said Jennifer Whiteside, Minister of Mental Health and Addictions.  “Addiction is a health-care issue, not a criminal one, and we’re going to keep doing everything we can to save lives and connect people to treatment.”

Government is also investing $25 million to support and expand the Hope to Health Research and Innovation Centre located in Vancouver’s Downtown Eastside, to provide intensive primary care and other services to more people with highly complex medical and psychosocial needs. The innovative Hope to Health model of care is led by Dr. Julio Montaner, a world-recognized physician and researcher in HIV, and in the provision of comprehensive care to vulnerable and marginalized populations. This initiative will lay the foundation for potential expansion to other communities in B.C.

Quick Facts:

  • B.C.’s three-year exemption under section 56(1) of the Controlled Drugs and Substances Act to decriminalize people who use drugs was first requested on Nov. 1, 2021, and enacted on Jan. 31, 2023.
  • Since 2017, the Province has opened 600 publicly funded substance-use treatment beds throughout B.C.
  • Since 2019, the Province has invested $35 million to support 49 community counselling agencies provincewide, and more than 250,000 free or low-cost counselling sessions have been delivered to individuals, couples and families.
  • There are currently 50 overdose prevention sites around the province to provide people who use drugs with the tools and supports they need to use safely and connect to care. 
  • Almost half (24) of these sites provide inhalation services.

Three backgrounders follow.

Backgrounders

Stopping illegal drug use in all public places.

The B.C. government is currently working with Health Canada to urgently change the decriminalization policy to stop drug use in public and has requested an amendment to its s.56 exemption to exclude all public places. That includes a place to which the public has access as a right or by invitation, express or implied, whether or not a fee is charged for entry, and on public transit.

Importantly, the Province is working to ensure the exemption continues to apply to private residences, healthcare clinics that provide outpatient addictions services such as Rapid Access Addictions Clinics, sanctioned overdose prevention sites, including those operated by housing providers, as well as drug checking sites and to people lawfully sheltering overnight.  

The Province is also working with police on guidance to ensure that people who merely possess drugs but are not threatening public safety, their own safety or causing a disturbance, will not be subject to arrest or charge.  

In November 2023, the B.C. government passed the Restricting Public Consumption of Illegal Substances Act (RPCISA). The intention of the act was to provide law enforcement with more tools to address instances of inappropriate drug use in a variety of public places, such as parks, beaches, sports fields and community recreation areas, as well as near business and residential building entrances and bus stops. This legislation is currently being challenged in court.

Opioid agonist treatment

Opioid agonist treatment (OAT) is a medication-assisted treatment for people who have an opioid-use disorder. OAT uses medications, such as Suboxone and methadone, to treat opioid addiction, reduce drug-related harms and support long-term recovery.

The treatment helps people who live with opioid addiction stabilize their lives, manage withdrawal symptoms and work toward recovery. It can lower the risk of drug-related harms, including hepatitis C and HIV transmission as well as fatal overdose. It can also help people stay in treatment and engage in their care.

Since 2017, the Province has been taking action to reduce barriers and expand access to OAT:

  • There are approximately 2,000 clinicians prescribing OAT in the province, an increase from 773 in June 2017.
  • In 2021, BC allowed registered nurses and registered psychiatric nurses to be trained to prescribe this treatment – a first in Canada. More than 280 nurses have enrolled in this training and to date, more than 170 have completed their training and are qualified to be OAT prescribers.
  • In 2023, the Province made OAT free for B.C. residents with MSP coverage by adding OAT medications to Plan Z, the Province’s universal coverage plan.

As of December 2023, 24,232 people were receiving OAT – this is just over 30% of the people with a diagnosed opioid use disorder in B.C. Barriers continue to exist for some people to access OAT, including a lack of prescribers in many rural communities.

Creating a provincewide system to provide virtual access to OAT will reduce barriers for people no matter where in B.C. they live.

Taking action to make hospitals safer, better manage addictions for patients

The Ministry of Health is developing a consistent approach to prevent illicit drug use in B.C. hospitals through universal policies, practice requirements, and appropriate enforcement approaches. Working in partnership and consultation with First Nation and Indigenous partners, health-care providers, professional associations, health-care unions, patients and communities, the actions below outline elements of a policy framework that will be implemented across all hospitals: Action 1. Take consistent action across B.C. to prohibit drug possession, use, and purchasing of illicit drugs in hospitals or hospital sites:   

  • This will be made explicit to all patients and visitors in outpatient clinics, emergency departments, and during admission to inpatient care through a single policy prohibiting street drug possession or use, along with a no tolerance policy for drug trafficking in hospitals.  
  • Non-compliance will be addressed by hospital security and through an escalation process that could include discharge (with support) from the hospital and/or police involvement.  

Action 2. Improve how patients with substance or opioid-use illnesses are supported toward treatment and recovery services:

  • Hospitals will expand and develop active medical oversight and addictions support to better manage patient addictions while the patient is in hospital, and improve discharge planning for post-discharge treatment in the community.
  • Patients will be provided with post-discharge care and ongoing support and treatment. Hospitals will establish expedited referral pathways to community-based addictions care and treatment.

Action 3. Add in-person addiction specialists to large hospitals and virtual clinical consultation in smaller regional and rural hospitals.

  • Addiction and mental-health support teams will be added in major hospital sites for immediate response and engagement with patients with severe addictions or mental-health issues. 
  • These teams will also provide inpatient care management services related to managing addiction and/or mental-health illnesses while in care and be responsible for post-discharge care co-ordination related to severe addiction and or mental-health issues.

Action 4. Remain focused on a culturally safe approach to implementing change.

  • Transitioning to a universal policy will be undertaken in partnership and consultation with local and regional First Nations and Métis leadership to ensure clear plans, processes and pathways are established to prevent Indigenous people from further harm and marginalization, while ensuring critical supports for Indigenous patients accessing and receiving quality and culturally safe care throughout their recovery journey.
  • Treatment services rooted in Indigenous ways of knowing, being and doing are critical, alongside harm reduction and mental-health services that support individuals where they are at. The integration of cultural safety and humility and Indigenous-specific anti-racism into hospitals or hospital sites will be essential to ensure Indigenous patients receive the care and wraparound supports needed and is reflective of the region and work underway with Indigenous partners and local/regional communities since the In Plain Sight report was released. 

Action 5. Actively address unacceptable behaviour such as aggression, noncompliance with the policy, and drug dealing in hospitals through additional security.

  • The safety of staff and patients is of the utmost importance. Security capacity reviews will be completed at all hospital sites to ensure adequate security capacity is available for rapid response and ensuring the safety of patients and health workers.
  • Where it is deemed necessary, additional security will be added to quickly respond to any incidents involving possession or use of drugs, aggressive or violent behavior.  

Action 6. Introduce improved education and awareness efforts to better equip and support staff facing unsafe situations.

  • While the intention of the work above is to eliminate exposure to illicit substances, health-care workers will have improved training and access to the necessary protective equipment in the event of suspected exposure to the secondhand effect of drug use.
  • Increased staff education will include: enhanced understanding of addictions and addiction treatment, trauma-informed care, cultural safety supports for Indigenous patients, training to manage difficult conversations, and de-escalation strategies when confronted with aggressive behaviour.

Action 7. Ensure existing overdose prevention (OPS) sites are working for people

  • Existing overdose prevention sites will continue to operate.
  • Use of an OPS by an inpatient will be restricted to only when expressly stated that it is permissible to do so as part of an addiction’s treatment care plan.
  • The Province is currently taking action to establish minimum service standards for overdose prevention sites, as recommended recently by the auditor general to support consistent, quality care for people and a safe environment for workers. These standards will establish baseline operational and facility requirements for all provincially funded, fixed and mobile, overdose prevention services in B.C.
  • PublicDrugUse._Korean.pdf
  • PublicDrugUse_Chinese(simplified).pdf
  • PublicDrugUse_Chinese(traditional).pdf
  • PublicDrugUse_French.pdf
  • PublicDrugUse_Punjabi.pdf
  • PublicDrugUse_Vietnamese.pdf

Related Articles

Premier’s, minister’s statements on international workers’ day.

BC Gov News

Connect with the Office of the Premier

View the Office of the Premier's latest photos on Flickr.

Watch the Office of the Premier's latest videos on YouTube.

Acknowledgment

The B.C. Public Service acknowledges the territories of First Nations around B.C. and is grateful to carry out our work on these lands. We acknowledge the rights, interests, priorities, and concerns of all Indigenous Peoples - First Nations, Métis, and Inuit - respecting and acknowledging their distinct cultures, histories, rights, laws, and governments.

Connect with Us:

  • Newsletters
  • Accessibility

Advertisement

Supported by

‘Staff Meal’ Review: The Last Course for Doomsday Diners and Dates

Restaurant patrons and staff members are oblivious to the impending apocalypse in Abe Koogler’s new show at Playwrights Horizons.

  • Share full article

Two people wearing napkin bibs are seated closely at small, separate dining tables. Each holds a fork and knife aloft as they smile pleasantly at each other.

By Naveen Kumar

A woman in the audience started grumbling around 30 minutes into a recent performance of “Staff Meal” at Playwrights Horizons in Manhattan. “What is this play about ?” she hissed. A few uncomfortable seconds after she stood up and repeated her gripe for everyone to hear, it was clear that she was part of the show, which opened on Sunday.

The disgruntled audience member, played with relatable side-eye by Stephanie Berry, goes on to summarize the setup so far: Two strangers buried behind their laptops, Ben (Greg Keller) and Mina (Susannah Flood), strike up an awkward flirtation at an anodyne cafe. (“Singles in the city? I’ve kinda seen it before,” Berry’s heckler says.) They head to a restaurant where, just outside the kitchen, two veteran servers (Jess Barbagallo and Carmen M. Herlihy) are schooling a new waiter (Hampton Fluker) on his first day. (“Is this a play about restaurants or the people who work there?” the heckler asks.)

She goes on to bemoan the frivolity of “emerging writers” who keep “doodling on the walls” as the world burns. “Take a stand! Inspire action!” she pleads. She’s not alone in that sentiment.

Embedding self-conscious commentary about the worthiness of a new play, as the writer Abe Koogler does here, is an increasingly common trope. (Alexandra Tatarsky did it with unhinged gusto in “ Sad Boys in Harpy Land ,” presented at this theater in November.) Blame it on the world being in flames, and the playwrights who can’t help but notice.

But preemptively asking what the point is raises the expectation of a satisfactory answer, or at least one that responds to the provocation.

There is no one else to object when Berry’s character does what she has just harangued others for doing: relaying a bit of autobiography — she’s a widow and onetime aspiring dancer — that has no obvious plot significance. Back at the restaurant, the chef, Christina (Erin Markey), unveils her own surprising origins: a fantastical tale of class, opportunity and reinvention.

Koogler’s previous plays — “ Fulfillment Center ” premiered Off Broadway in 2017, and “ Kill Floor ” in 2015 — set up uneasy contrasts between wounded characters and their dystopian workplaces. “Staff Meal” is more loosely constructed and absurdist. Though Ben and Mina eventually forge an incidental unity, and the unnamed restaurant servers bond over industry expertise, the dialogue is less concerned with human connection than with exploring the circumstances that generally necessitate it: proximity in public, collaboration on the job, sitting down in a theater.

The production, directed by Morgan Green, gathers an air of foreboding as it goes. The walls of Jian Jung’s set shift with glacial heft, hemming the action into tight corners or separating to suggest a looming void; scarlet lighting (by Masha Tsimring) and industrial sound (Tei Blow) do much of the heavy lifting to summon a shadowy and menacing atmosphere.

As it appears that an apocalypse may be underway, the characters hardly seem to notice. Keller and Flood play Ben and Mina’s doomsday first date with a warm and unfazed naïveté, as their seasoned servers, Barbagallo and Herlihy, demonstrate an unwavering devotion to hospitality.

If these are gestures toward satirizing modern complacency, they lack the sting of force or surprise. The play’s narrative components — a meet-cute, a culinary cult of personality — are familiar parts soldered together with an inventiveness that doesn’t hold. You can imagine another audience skeptic getting up to complain that even Armageddon has been done to death.

“Someone, at some point, must have established the rules,” Markey’s character says of how the restaurant is supposed to work. That’s a wink at the play’s own upending of narrative conventions; the challenge is figuring out what to serve instead.

Staff Meal Through May 19 at Playwrights Horizons, Manhattan; playwrightshorizons.org . Running time: 1 hour 40 minutes.

  • C Data Types
  • C Operators
  • C Input and Output
  • C Control Flow
  • C Functions
  • C Preprocessors
  • C File Handling
  • C Cheatsheet
  • C Interview Questions

Top 25 C Projects with Source Code in 2023

C projects for beginners with source code, 1. rock paper scissors, 2. hangman game, 3. simple calculator, 4. snakes and ladder game, 5. bank management system, 6. school management system, 7. library management system, 8. employee management system, 9. hospital management system, 10. bus reservation system, 11. cricket score board, 12. online voting system, 13. number system conversion, 14. quiz game, intermediate c projects with source code, 15. telecom billing system, 16. snake game, 17. calendar, 18. tic-tac-toe game, 19. pacman game, advanced c projects with source code, 20. dino game, 21. virtual piano, 22. syntax checker, 23. lexical analyser, 24. typing tutor, 25. 2048 game in c programming.

If you’re looking for project ideas to boost your C Programming skills, you’re in the right spot. Programming is about problem-solving and adapting to ever-changing technology. Start with C, the foundation of many modern languages, to refine your programming abilities. Despite being introduced 50 years ago, C remains a top choice for beginners due to its widespread use and adaptability.

C-Projects-With-Source-Code

C , a general-purpose language created by Dennis Ritchie in 1972, is the cornerstone of programming education. Versatile, simple, and portable, it’s machine-independent and widely used across applications. Evolving from ‘ALGOL,’ ‘BCPL,’ and ‘B’ languages, C has stood the test of time, growing with standardized features. Dive into C programming projects to elevate your programming skills in 2023 and beyond.

We’ve designed this article in way to cater to all skill levels, C projects for beginners , intermediate learners, and those looking to challenge themselves with advanced C language projects . Engaging in these projects can significantly enhance your programming skills. Below are some noteworthy C projects, along with their source code, categorized based on skill levels.

Rock Paper Scissor in C Projects

Description : 

Rock Paper Scissor is one of the most common games played by everyone once in his childhood, where two persons use their hands and chooses random objects between rock, paper, or scissor, and their choice decides the winner between them. What if a single person can play this game? With a computer, just by using a single C application, we can design the game Rock Paper Scissor application just using basic C knowledge like if-else statements, random value generation, and input-output of values. Created application has a feature where we can play the game, and maintain the score of Person 1 and Person 2.

Source Code :: Rock Paper Scissors in C

Hangman Game in C

Description:

The hangman game is one of the most famous games played on computers. The Rules of the game are as follows: There is given a word with omitted characters and you need to guess the characters to win the game. Only 3 chances are available and if you win the Man survives or Man gets hanged. So, It is the game can be easily designed in C language with the basic knowledge of if-else statements, loops, and some other basic statements. The code of the game is easy, short, and user-friendly.

Source Code :: Hangman Game

Simple Calculator in C

Simple Calculator is a C language-based application used for performing all the simple arithmetic operations like addition, multiplication, division, and subtraction. The application can be made using basic knowledge of C like if-else statements, loops, etc. The functionalities of the application are mentioned below: Addition Subtraction Multiplication Division Logarithmic values Square roots

Source Code :: Simple Calculator in C

Snake and Ladder in C

Snakes and Ladder is the most common board game played. The rules of the game are as follows: The first person to reach 100 wins. Each player gets only one chance in a single traversing. Snakes decrease your points while the ladder increases them. So, as the rules are quite easy to understand we can easily code them using C language to create a Snake and Ladder Application. The functionality of the code will be as follows: Two players can enter a single game. Random values can be attained using dice to increase or decrease the value. Points will be maintained using variables. The game will end after any player attains 100 points.

Source Code:: Snakes and Ladder Game

Bank Management System in C

The banking sector occupies a large part of the tertiary sector because which data maintained is too much by a single application. Using C language we can create an application that can manage the data of the Bank,  we use basic knowledge of C like string, array, structures, etc. The functionality of the Bank Management System Application is mentioned below: Transfer Money to the Account Creation of Account Check Amount Login Functionality

Source Code :: Bank Management System in C

School Management System in C

School Management maintained by the school is the way they are able to find data about every single student. Using a basic C application we can manage the data of the school. The functionality of the School Management System Application is mentioned below: Add Student Details Find the student by the given roll number Find the student by the given first name Find the students registered in a course Count of Students Delete a student Update Student

Source Code :: Student Management System in C

Library Management System in C

The library is the place where we find a collection of books organized in a particular order. In the library,  we can collect book read them, and then return it. But, Managing a particular library is not an easy task. So, we can create a C language-based application using if-else statements, arrays, strings, switch cases, etc. Using this application we can easily manage the books in the library, we can get information about books, etc. The functionality of the Library Management System is mentioned below: Add book information. Display book information. To list all books of a given author. To list the count of books in the library

Source Code :: Library Management System in C

Employee Management System in C

Employee data need to be maintained in any company. Each company has an employee with a unique employee id, employee role, etc. All of this data is maintained in a system employee management system, where all the data about each employee is stored we can fetch, update and add data to this system. Using C we can create an employee management system that can perform all these tasks, using basic C knowledge like string, array, etc. The functionality of the Employee Management System is mentioned below: Built The Employee Table. Insert New Entries. Delete The Entries. Search A Record.

Source Code :: Employee Management System in C

Hospital Management System in C

Hospital Management System is an application where the hospital maintains all the data about the patients, available beds, prices, etc, Using C language we can design an application to maintain all data needed in the hospital, using certain  C concepts like string, struct, etc. The functionality of the Employee Management System is mentioned below: Printing Hospital data Print Patients data Sort by beds price Sort by available beds Sort by name Sort by rating and reviews Print hospital of any specific city

Source Code :: Hospital Management System

Bus Reservation System in C

Bus Reservation is a real-time job any person relatable getting the tension to book tickets offline is just resolved using this. Using C language we can create a Bus reservation system to help people to book tickets for their journey. It uses basic C Knowledge to create this type of system. Such as conditional statements, arrays, strings, etc. The functionality of the Bus reservation system is mentioned below: Login System Booking of tickets Cancel tickets Checking bus status

Source Code :: Bus Reservation System

Cricket Score Board in C

Cricket second most popular game in the world. Most Indians are just crazy about this sport there is multiple application to check cricket scores, it is quite a tough job to maintain a live score of cricket, but we can create a simple C application to display Cricket score, we can create using basic C knowledge . The functionality of the Cricket score display is mentioned below: Print Match Statistics Print runs scored Update score Show results

Source Code :: Cricket Score Board

Online Voting System in C

Voting is one of the biggest events that can happen in a state, a large population involves in voting, and a good Voting system is necessary for an impartial election. Using C we can develop an Online voting system, it requires basic knowledge of C like string, struct, array, etc. The functionality of the Online voting system is mentioned below: Taking input from the user Storing vote  Calculating votes Declaring  results 

Source Code :: Online Voting System

Number Base Conversion in C

Converting numbers from one base to another is a common question asked in the field of computers and electronics. Subjects like digital electronics, discrete mathematics, etc. Using C we can create an application to convert numbers from one base to another. It requires basic knowledge of C like string, arithmetic operations, etc. The functionality of the Number System Conversion is mentioned below: Decimal to Binary Binary to Decimal Decimal to Octal Octal to Decimal Hexadecimal to Binary Binary to Hexadecimal

Source Code :: Number System Conversion

Quiz in C

A quiz game is the most efficient way to check knowledge. The Functionality of the Quiz Game is mentioned below: Insert questions Check answer Get Score

Source Code :: Quiz Game

Telecom Billing System in C

Telecom is a quite busy department going today right now big companies of the world. Data managed by these companies are quite large so, we can manage these data using certain applications and huge databases. With C language we can create an application using basic knowledge of C like struct , array ,string ,etc. The Functionality of the Telecom billing system are mentioned below: Add new records  View list of records  Modify records  View payment  Search Records  Delete records

Source Code :: Telecom Billing System

Snake Game in C

Snake Game is the oldest game played on keypad phones, rules of the game are as follows: Size of the snake during the start of the game The size of the snake increases by taking points If the snake touches its own body game is over So, we can create a snake game using c language, using knowledge of C like a switch case, if-else, etc. Let us check the Functionality of the Snake Game is mentioned below: Draw the game Play the game Get score

Source Code :: Snake Game in C

Calender in C

Calendar is a thing a requirement in everyone’s life, it can be stored as a paper hardcopy or as a software application. We can create an application to check date, day, etc using an application that can be created with C using basic knowledge like arithmetic operations, strings, etc. The Functionality of the Calendar are mentioned below: Find Out the Day Print all the days of the month Add Note

Source Code :: Calender in C

Tic Tac Toe in C

The Functionality of the Tic-Tac-Toe game are mentioned below: The game is to be played between two people. One of the players chooses ‘O’ and the other ‘X’ to mark their respective cells. The game starts with one of the players and the game ends when one of the players has one whole row/ column/ diagonal filled with his/her respective character (‘O’ or ‘X’). If no one wins, then the game is said to be drawn.

Source Code :: Tic-tac-toe Game

Pacman in C

Pacman is the most famous 2D game played. Pacman is a single-player game. The rules of the game are mentioned below: This a single-player game need to collect dots to complete the level If all dots are collected level is completed Using C language game can be designed using certain knowledge of concepts like …………….. The Functionality of the game is : Play the game Calculate the score Maintain the top score

Source Code :: Pacman Game

Dino Game in C

Dino Game is the current most played game as it is available on most personal computers, as it is available in the Chrome browser. Dino game is a simple 2D game in which a dino player runs passing on all the hurdles. Dino games can be created in C language. The functionality of the game is : Play the game Calculate the score Maintain the top score

Source Code :: Dino Game

Virtual Piano in C

A piano is a musical instrument that has a number of keys that produce different sounds when pressed. In this project, we will create a program that will be able to produce sounds similar to the piano when a key is pressed on the keyboard. The functionality of the virtual piano is mentioned below: Play major sound tunes of the piano when the associated key is pressed.

Source Code :: Virtual Piano

Syntax Checker in C

Syntax Checker is an application we use to check the syntax that is written an language. A language is a collection of all strings possibly having a certain meaning. Using C we can create a syntax checker which can check the syntax if it is correct in C or not. The Functionality of the Syntax checker are mentioned below: Take input syntax Check if the syntax is correct or not.

Source Code :: Syntax Checker

Lexical Analyzer in C

Lexical Analyser is the concept of compiler design. Lexical Analyser is where a compiler converts the statements of the program into LEX tokens which further checks if the statements are correct or not. To know more about the concept of a lexical analyzer refer to Lexical Analysis . The functionality of the lexical analyzer is mentioned below: Inputs a program or statements Convert the statements into LEX tokens

Source Code : Lexical Analyser in C

Typing Tutor in C

Typing is a basic skill everyone should know there are multiple applications available to improve this skill. We can create a C-based application as a typing tutor. Using concepts of C like file handling, string stream, strings, variables, etc. The functionality of a typical tutor is mentioned below: Checks the speed of writing words Checks the accuracy of typing Maintains a score that tells your ability

Source Code : Typing Tutor

2048 Game in C

The 2048 game is a well-known mobile game. The rules of the game are mentioned below: We can put any number over another number If numbers over each other are equal then they convert into single digits which is double the number. If there is no place to put another number in a particular vertical line that is game is over Although is quite popular as an android application but using C language we can create the game with the functionality of the 2048 game in C mentioned below: Insert new elements into the game Add two same-value elements to the game Maintain the score of the game Maintain the top score

Source Code : 2048 Game in C Programming

Applications of C Language

C was used in programs that were used in making operating systems. C was known as a system development language because the code written in C runs as faster as the code written in assembly language.

The uses of C is given below:

  • Operating Systems
  • Language Compilers
  • Text Editors
  • Print Spoolers
  • Network Drivers
  • Modern Programs
  • Language Interpreters

In Conclusion, in this article, we have compiled a selection of C language projects and concepts for your consideration. As we know, GitHub, renowned as the world’s largest software development community, houses an extensive array of projects contributed by programmers who actively review and assess each other’s code. With its broad language support, GitHub offers a wealth of C project ideas, serving as an inspirational resource for developers seeking innovative avenues. As a developer, it’s up to you to think outside the box, come up with inventive solutions using available resources, and contribute to the future of software. For the benefit of clarity, the projects/software are grouped into distinct headings. So, if you’re new to project development, start by understanding and analyzing a tiny project before going on to a project with a broader scope and application.

C Programming Projects – FAQs

1. what are some essential steps to start a c programming project .

Define project requirements, create a project plan, set up a development environment, and design the program’s architecture.

2. How do I manage dependencies in a C project? 

Use a package manager like CMake or manually include necessary libraries and headers.

3. What should I do if I encounter memory leaks in my C program? 

Identify the source of the leak using debugging tools like Valgrind and free allocated memory properly.

4. How do I improve the performance of my C project? 

Optimize algorithms, use efficient data structures, and employ profiling tools to identify bottlenecks.

Please Login to comment...

Similar reads.

advertisewithusBannerImg

Improve your Coding Skills with Practice

 alt=

What kind of Experience do you want to share?

Best Data Science Courses (2024): Top Udemy Data Science Online Courses Reviewed by Compare Before Buying

Compare Before Buying, a leading online resource for in-depth product reviews and comparisons, has published a review of the best data science courses available on Udemy for 2024.

BOSTON - April 30, 2024 —

Compare Before Buying, a leading online resource for in-depth product reviews and comparisons, has published a review of the best data science courses available on Udemy for 2024. This comprehensive guide is tailored to help learners at all levels select a course that best fits their data science learning needs and career aspirations.

Best Data Science Courses

  • Deep Learning Prerequisites: Linear Regression in Python by Lazy Programmer Inc. – Perfect for beginners, this course provides a fundamental understanding of machine learning and deep learning using Python.
  • R Programming A-Z™: R For Data Science With Real Exercises! by Kirill Eremenko – Delivers hands-on R programming experience through structured exercises and real-world applications.
  • Machine Learning for Absolute Beginners - Level 1 by Idan Gabrieli – Offers a non-intimidating introduction to AI and machine learning, ideal for those new to complex programming and math.
  • Natural Language Processing with Deep Learning in Python by Lazy Programmer Inc . – Advanced course for deeper exploration into NLP, teaching how to build and understand state-of-the-art models.

In an era where data is at the forefront of technological advancement and innovation, the demand for skilled data scientists continues to soar. Udemy, as one of the pioneers in online learning, offers a plethora of courses designed to equip beginners and professionals alike with the necessary skills to excel in this dynamic field. Recognizing the need for reliable guidance among prospective learners, Compare Before Buying has meticulously reviewed and compiled a list of top-rated data science courses from Udemy's extensive catalog.

The reviewed courses cover a range of foundational and advanced topics, ensuring that there is something for everyone, regardless of their prior experience or expertise. From linear regression techniques in Python to sophisticated natural language processing with deep learning, each course has been evaluated based on content quality, instructor expertise, practical applications, and learner feedback.

Each course highlighted in the review is described in detail, focusing on what learners can expect to achieve upon completion and how each course stands out from the rest in delivering value and knowledge. In addition, practical details such as course prerequisites, duration, and specific learning outcomes are also covered, giving potential students a clear overview of what to expect.

Udemy also has offers for new customers, including top courses from $14.99 for the first visit .

What topics are typically covered by data science courses?

Data science courses typically cover a wide range of essential topics designed to equip learners with the skills to effectively analyze and utilize data. Key areas of focus include basic and advanced statistics, programming with languages like Python and R, and data wrangling techniques for cleaning and preprocessing data. Courses also delve into machine learning, from regression models and classification algorithms to more complex studies like neural networks and deep learning.

Morever, students learn data visualization techniques using tools like Matplotlib and Tableau, and explore big data technologies such as Hadoop and Spark. Other important topics include database management, predictive analytics, natural language processing (NLP), and the ethical implications related to data privacy and security. These comprehensive topics prepare learners to handle real-world data challenges across various domains.

Which online platform is best for data science courses?

Udemy is an excellent choice for anyone looking to dive into the world of data science. This platform offers a wide range of data science courses that cater to various levels of expertise, from absolute beginners to advanced practitioners. With its user-friendly interface and flexible scheduling, Udemy allows learners to progress at their own pace.

Moreover, courses on Udemy are often taught by experienced professionals and educators who bring real-world insights and practical examples into their teaching. Whether starting from scratch or looking to enhance existing skills, Udemy provides both the depth and breadth of content necessary to master data science.

Compare Before Buying’s review of the best data science courses on Udemy provides an essential resource for anyone looking to start or enhance their journey in data science. As this field continues to evolve and expand, staying updated with the most effective and impactful educational opportunities will be key to success.

About the company: Compare Before Buying provides news and reviews of consumer products and services. As an affiliate, Compare Before Buying may earn commissions from sales generated using links provided.

Contact Info: Name: Andy Mathews Email: Send Email Organization: Compare Before Buying Website: https://www.comparebeforebuying.com/

Release ID: 89128624

If there are any errors, inconsistencies, or queries arising from the content contained within this press release that require attention or if you need assistance with a press release takedown, we kindly request that you inform us immediately by contacting [email protected]. Our reliable team will be available to promptly respond within 8 hours, taking proactive measures to rectify any identified issues or providing guidance on the removal process. Ensuring accurate and dependable information is our top priority.

  • Work & Careers
  • Life & Arts

Become an FT subscriber

Try unlimited access Only $1 for 4 weeks

Then $75 per month. Complete digital access to quality FT journalism on any device. Cancel anytime during your trial.

  • Global news & analysis
  • Expert opinion
  • Special features
  • FirstFT newsletter
  • Videos & Podcasts
  • Android & iOS app
  • FT Edit app
  • 10 gift articles per month

Explore more offers.

Standard digital.

  • FT Digital Edition

Premium Digital

Print + premium digital, weekend print + standard digital, weekend print + premium digital.

Today's FT newspaper for easy reading on any device. This does not include ft.com or FT App access.

  • Global news & analysis
  • Exclusive FT analysis
  • FT App on Android & iOS
  • FirstFT: the day's biggest stories
  • 20+ curated newsletters
  • Follow topics & set alerts with myFT
  • FT Videos & Podcasts
  • 20 monthly gift articles to share
  • Lex: FT's flagship investment column
  • 15+ Premium newsletters by leading experts
  • FT Digital Edition: our digitised print edition
  • Weekday Print Edition
  • Videos & Podcasts
  • Premium newsletters
  • 10 additional gift articles per month
  • FT Weekend Print delivery
  • Everything in Standard Digital
  • Everything in Premium Digital

Essential digital access to quality FT journalism on any device. Pay a year upfront and save 20%.

  • 10 monthly gift articles to share
  • Everything in Print

Complete digital access to quality FT journalism with expert analysis from industry leaders. Pay a year upfront and save 20%.

Terms & Conditions apply

Explore our full range of subscriptions.

Why the ft.

See why over a million readers pay to read the Financial Times.

International Edition

IMAGES

  1. C Programming Coursework 2019-20

    coursework in c

  2. 01 Introduction

    coursework in c

  3. PPT

    coursework in c

  4. C++ Course: Introduction

    coursework in c

  5. [ The ULTIMATE guide in C ]

    coursework in c

  6. C# course from beginners to Experts part

    coursework in c

VIDEO

  1. UTS Vice-Chancellors International Scholarship Submission Video

  2. ECE Paris Graduate School of Engineering

  3. The Master of Science in Security and Resilience Studies

  4. Auntie PreMed : Choosing The Right Pre Med Post Bacc Program

  5. Discover the AUP Summer Program

  6. JALC

COMMENTS

  1. Programming in C Course by University of Michigan

    There are 4 modules in this course. C remains one of the most popular languages thanks to its portability and efficiency, and laying the groundwork for many programming languages like C++, Java, JavaScript, and Python. In this course, you'll dive deeper into the syntax of C, learning the functions of the language and how to properly apply ...

  2. Learn C

    The C programming language was first released in 1972, making it one of the oldest still used today. All modern operating systems are implemented with C code, which means that the C language powers almost every technological experience we have. Python's interpreter is also written in C. Get started learning C fundamentals to become a better ...

  3. Learn C: Introduction

    Learn C: Introduction course ratings and reviews. The progress I have made since starting to use codecademy is immense! I can study for short periods or long periods at my own convenience - mostly late in the evenings. I felt like I learned months in a week.

  4. Best Online C Programming Courses and Programs

    What is C programming? Written in 1972 at Bell Labs, C is the foundation for many aspects of modern software development including the UNIX operating system, Windows, macOS, databases such as MySQL, and even 3D movies. Footnote 1. C is considered a middle-level language, which means it interacts with the abstraction layer of a computer system.

  5. 1200+ C Programming Online Courses for 2024

    Writing, Running, and Fixing Code in C. 778 ratings at Coursera. Duke University offers a 4-week course on writing, testing, and debugging code in C, building on programming fundamentals and systematic problem-solving strategies. Add to list. Coursera. 20 hours 2 minutes.

  6. Learn C Programming

    Learn C Programming. C is a powerful general-purpose programming language. It can be used to develop software like operating systems, databases, compilers, and so on. C programming is an excellent language to learn to program for beginners. Our C tutorials will guide you to learn C programming one step at a time.

  7. C Programming Tutorial for Beginners

    The FreeCodeCamp C Programming Tutorial for Beginners is an excellent resource offering a comprehensive introduction to C programming. With clear explanations, practical examples, and interactive exercises, it provides a solid foundation for beginners. The tutorial's structured approach and hands-on practice make it ideal for learning ...

  8. Top C (programming language) Courses Online

    C is a general-purpose, compiled programming language. It is a procedural language and does not support object-oriented programming styles. It was first created in 1969. Unlike many old programming languages, it is still a prevalent language, making top 10 lists on places like Github. The Unix operating system was the first major program ...

  9. C Tutorial

    C is a general-purpose, procedural, high-level programming language used in the development of computer software and applications, system programming, games, and more. C language was developed by Dennis M. Ritchie at the Bell Telephone Laboratories in 1972. It is a powerful and flexible language which was first developed for the programming of ...

  10. 10 Best C Programming Courses For Beginners [2024]

    5. C Programming For Beginners - Master the C Language [Udemy] The next best course on C programming for beginners is offered by Udemy. This course will help you to increase career options and also will be able to explore other languages. You can create your first C application by understanding its fundamentals.

  11. Free C Programming Online Course for Beginners

    Free C Programming Online Course for Beginners. C is a general-purpose, procedural computer programming language developed by Dennis Ritchie between 1969 and 1973 at Bell Labs. It is one of the most widely used programming languages in the world, and is the basis for many other programming languages, including C++, Java, and JavaScript. Overview.

  12. The C Programming Handbook for Beginners

    To get started, open Visual Studio Code and create a new folder for your C program by navigating to "File" -> "Open" -> "New Folder". Give this folder a name, for example, c-practice, and then select "Create" -> "Open". You should now have the c-practice folder open in Visual Studio Code.

  13. Learn C

    Welcome. Welcome to the learn-c.org free interactive C tutorial. Whether you are an experienced programmer or not, this website is intended for everyone who wishes to learn the C programming language. There is no need to download anything - Just click on the chapter you wish to begin from, and follow the instructions. Good luck!

  14. C Programming Tutorial for Beginners

    This course will give you a full introduction into all of the core concepts in the C programming language.Want more from Mike? He's starting a coding RPG/Boo...

  15. C Courses

    CS50: Introduction to Computer Science. An introduction to the intellectual enterprises of computer science and the art of programming. Free *. 11 weeks long. Available now. Browse the latest C courses from Harvard University.

  16. C Examples

    Program. C Program to Print an Integer (Entered by the User) C Program to Add Two Integers. C Program to Multiply Two Floating-Point Numbers. C Program to Find ASCII Value of a Character. C Program to Compute Quotient and Remainder. C Program to Find the Size of int, float, double and char. C Program to Demonstrate the Working of Keyword long.

  17. Arizona House votes to overturn 1864 abortion ban, paving way to leave

    The Arizona House of Representatives voted Wednesday to overturn the state's 160-year-old abortion ban, setting the stage for a repeal that would leave the state's 15-week restriction on the ...

  18. Power Rankings: THE CJ CUP Byron Nelson

    Last year, the field's average in salvaging pars from off greens nearly two-thirds of the time, ranking second-easiest among 58 courses played. Storms are almost as guaranteed as the wind this week.

  19. B.C. moves to ban drug use in public spaces, taking more steps to keep

    B.C.'s three-year exemption under section 56 (1) of the Controlled Drugs and Substances Act to decriminalize people who use drugs was first requested on Nov. 1, 2021, and enacted on Jan. 31, 2023. Since 2017, the Province has opened 600 publicly funded substance-use treatment beds throughout B.C. Since 2019, the Province has invested $35 ...

  20. 'Staff Meal' Review: The Last Course for Doomsday Diners and Dates

    Performances in N.Y.C. Advertisement Supported by Restaurant patrons and staff members are oblivious to the impending apocalypse in Abe Koogler's new show at Playwrights Horizons. By Naveen ...

  21. Top 25 C Projects with Source Code in 2023

    Advanced C Projects With Source Code. 20. Dino Game. Description: Dino Game is the current most played game as it is available on most personal computers, as it is available in the Chrome browser. Dino game is a simple 2D game in which a dino player runs passing on all the hurdles.

  22. Best Data Science Courses (2024): Top Udemy Data Science Online Courses

    Compare Before Buying, a leading online resource for in-depth product reviews and comparisons, has published a review of the best data science courses available on Udemy for 2024. BOSTON - April ...

  23. UK universities warn of more course closures and job cuts without state

    UK universities will be forced to step up course closures and job cuts unless the government addresses a looming structural funding crisis in the sector, according to higher education leaders. The ...

  24. Best Online Business Administration Degrees Of 2024

    Best Online Bachelor's In Business Administration Options. University of Florida. George Mason University. University of Illinois Chicago. University of Wisconsin-Madison. Western Carolina ...

  25. Top undrafted rookie free agents following the 2024 NFL Draft

    The 2024 NFL Draft has wrapped -- but the team-building process continues with the signing of undrafted rookie free agents. Below is a positional ranking of the best remaining undrafted prospects ...