当前位置:网站首页>1. Preliminary exercises of C language (1)

1. Preliminary exercises of C language (1)

2022-07-06 13:42:00 It's Wang Jiujiu

Catalog

TEXT 1( Functions and ternary operators )

TEXT 2( The ginseng )

TEXT 3(return)

TEXT 4( Quotient and mold taking )

TEXT 5(ASCII code )

TEXT 6( Set the domain width )

TEXT 7( Escape character )

TEXT 8(for loop )

TEXT 9( Find the maximum number )

TEXT 10( Bubble sort )


TEXT 1( Functions and ternary operators )

Write a function , Enter two different integers , Ask the larger one .

int max(int x, int y)// A return value is required , So set it to int, If no return value is required , You can set void
{
	return (x > y ? x:y);// ternary operators ( Conditional operators )
}


#include<stdio.h>
int main()
{
	int a = 0, b = 0;
	scanf("%d%d", &a, &b);
	printf(" The larger number is %d\n", max(a, b));

	return 0;
}

Introduce the trinocular operator :

  • Format of ternary operator ( expression 1? expression 2: expression 3)
  • expression 1 It's true , Execute expression 2; If the expression 1 For false , Execute expression 3.
  •  (x > y ? x:y) It means : if x>y It's true , Then return to x; if x<y For false , Then return to y.

When a function needs to return a value , Set the function type to int, Again return One integer is enough . If the function doesn't need a return value , Set the function type to void that will do .

because a、b All integer variables , So will a、b The parameters of are passed to max Function time ,max Functions also need to use integers to receive , here a and b Is the argument ,x and y It's a parameter , A formal parameter is a temporary copy of an argument , Changing parameters does not change arguments , How to change arguments through formal parameters ? see TEXT 2.

TEXT 2( The ginseng )

Write a function , Exchange the values of two variables .

void change(int* px, int* py)// Because I'm wearing an address , So use a pointer to receive ,px、py Is a pointer variable 
{
	int i = 0;
	i = *px;    // Find... By address a、b Value , Indirect change a、b
	*px = *py;
	*py = i;
}

int main()
{
	int a = 10, b = 20;
	printf(" Exchange before :a=%d,b=%d\n", a, b);
	change(&a, &b);// Use the address symbol , take a、b Pass the address of to the function 
	printf(" After exchanging :a=%d,b=%d\n", a, b);
	return 0;
}

You can change the arguments through the address , Here we take the address symbol to a、b Send the address of to px、py, Because the parameter passed is an integer , Here we use integer pointer int* receive ,px、py It's a pointer variable , Stored a、b The address of .

hypothesis a The address for 0x0012ff40,b The address for 0x0012ff44, When we take the address symbol, we will a、b Send the address of to px、py after ,px、py What's in it is a and b The address of , By changing the data stored in the address , And then indirectly change a、b Value . Array parameter transfer , It's the address of the first element .

TEXT 3(return)

A function is known y=f(x), When x < 0 when ,y = 10; When x = 0 when ,y = 0; When x > 0 when ,y = -10

Enter an integer x(-10000<x<10000), Find the output value y.

#include<stdio.h>

int fun(int x)
{
	if (x > 0)
		return -10;
	else if (x < 0)
		return 10;
	else
		return 0;
}

int main()
{
	int x = 0;
	scanf("%d", &x);
	printf(" When x=%d when ,y=%d", x, fun(x));
	return 0;
}

In the defined function , If it contains multiple nesting , It can be used return Jump out of function , Go straight back to .

TEXT 4( Quotient and mold taking )

Given two integers a and b (0 < a,b < 10,000), Calculation a Divide b The integer quotient and remainder of .

#include<stdio.h>
int main()
{
	int a = 0, b = 0;
	scanf("%d%d", &a, &b);
	printf("a/b=%d,a%%b=%d\n", a / b, a % b);// Want to print % need %%
	return 0;
}

%% For escape characters , The function is to show %.

TEXT 5(ASCII code )

Characters represented by character constants or character variables are stored in memory as ASCII Code storage . Convert below ASCII Code for the corresponding characters and output them .73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33

#include<stdio.h>
int main()
{
	char arr[13] = { 73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33 };
	printf("%s\n", arr);
	return 0;
}

putchar It can also be used. ASCII Code output corresponding characters , however putchar Only one character can be output at a time , It is troublesome to output strings .

TEXT 6( Set the domain width )

Enter a person's date of birth ( Including mm / DD / yyyy ), There is no separator between the number of year, year and day , Put the year in the birthday 、 month 、 Each day is exported separately .

#include<stdio.h>

int main()
{
	int year = 0, month = 0, day = 0;
	scanf("%4d%2d%2d", &year, &month, &day);// Intercept data by setting the domain width 

	printf("year=%d\nmonth=%d\nday=%d\n", year, month, day);
	return 0;
}

By setting the domain allowance scanf Intercept data , for example %4d It means : Domain width is 4, The data in it will be stored in year in .

TEXT 7( Escape character )

Print... On the screen

printf("Hello world!\n");

cout << "Hello world!" << endl;

#include<stdio.h>

int main()
{
	printf("printf\(\"Hello world!\\n\"\)\;\n");
	printf("cout << \"Hello world!\" << endl;\n");
	return 0;
}

When the content you want to print is confused with escape characters , Add a \ that will do , For example, I want to print a “\n”, It only needs “\\n” that will do .

TEXT 8(for loop )

Print 1-100 Between all 3 The number of multiples of


#include<stdio.h>

int main()
{
	int num = 0;

	for (num = 1; num <= 100; num++)
	{
		if (num % 3 == 0)
		{
			printf("%d ", num);
		}
	}
	printf("\n");
	return 0;
}

The code can also be written as :

#include<stdio.h>

int main()
{
	int num = 0;
	for (num = 3; num <= 100; num+=3)
	{
			printf("%d ", num);
	}
	printf("\n");
	return 0;
}

Based on our understanding of Mathematics , You can directly set each print 3 Multiple , Omit the part of judgment .

TEXT 9( Find the maximum number )

get 4 Students' grades , Programming to find the highest score .

#include<stdio.h>
int main()
{
	int arr[5] = { 0 };
	int i = 0;
	int max = 0;
	for (i = 0; i < 4; i++)
	{
		scanf("%d", &arr[i]);
		if (arr[i] > max)
		{
			max = arr[i];
		}
	}
	printf(" The highest score is %d\n", max);
	return 0;
}

Because the result can't be negative , So suppose the highest score is 0 branch , Judge every time you enter your grades , If it is higher than the current highest score , Then update the highest score .( The advantage of this method is that every time you input data, you will judge , When the input is completed, the result is also judged , Very simple and fast )

TEXT 10( Bubble sort )

Writing code will give 5 An integer number is output from small to large .

#include<stdio.h>

void change(int* px, int* py)// Exchange two numbers 
{
	int i = 0;
	i = *px;    
	*px = *py;
	*py = i;
}

int main()
{
	int arr[6] = {7,8,1,2,6};
	int i = 0;
	int j = 0;
	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 5-1-i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				change(&arr[j], &arr[j + 1]);
			}
		}
	}
	for (j = 0; j < 5; j++)
	{
		printf("%d ", arr[j]);
	}
	return 0;
}

The core idea of bubble sorting is the ratio of two adjacent numbers , Big stand back . The maximum value can be found in the first round of sorting , The second round of sorting can find the second largest value , When sorting goes to n-1 Wheel time , The order has been arranged .

原网站

版权声明
本文为[It's Wang Jiujiu]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060916177130.html