经典C语言源代码

经典C语言源代码
经典C语言源代码

经典C语言源代码

1、(1)某年某月某日是星期几

#include

int main()

{

int year, month, day;

while (scanf_s("%d%d%d", &year, &month, &day) != EOF)

{

if (month == 1 || month == 2)//判断month是否为1或2

{

year--;

month += 12;

}

int c = year / 100;

int y = year - c * 100;

int week = (c / 4) - 2 * c + (y + y / 4) + (13 * (month + 1) / 5) + day - 1;

while (week<0) { week += 7; }

week %= 7;

switch (week)

{

case 1:printf("Monday\n"); break;

case 2:printf("Tuesday\n"); break;

case 3:printf("Wednesday\n"); break;

case 4:printf("Thursday\n"); break;

case 5:printf("Friday\n"); break;

case 6:printf("Saturday\n"); break;

case 0:printf("Sunday\n"); break;

}

}

return 0;

}

1、(2)某年某月某日是第几天(一维数组)

void main() {

int i, flag, year, month, day, dayth;

int month_day[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };

printf("请输入年/月/日:\n");

scanf_s("%d/%d/%d", &year, &month, &day);

dayth = day;

flag = (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);

if (flag)

month_day[2] = 29;

for (i = 1; i < month; i++)

dayth = dayth + month_day[i];

printf("%d/%d/%d是第%d天\n", year, month, day, dayth);

}

2、30个数中找最小的数及其位置

# define SIZE 30

void main() {

int i;

float data[SIZE];

int min;

printf("请输入%d个浮点数:\n",SIZE);

for (i = 0; i < SIZE; i++) {

//scanf_s("%f", &data[i]);

data[i] = rand() % 30 + 1;

printf("%f、", data[i]);

}

min = 0;

for (i = 1; i < SIZE; i++) {

if (data[i] < data[min])

min = i;

}

printf("最小值是%5.2f,位置是%5d\n", data[min], min); }

3、30个数从小到大排序

(1)

#include "stdio.h"

# define SIZE 30

void main() {

int i,j;

float data[SIZE],temp;

int min;

printf("请输入%d个整型数:\n",SIZE);

for (i = 0; i < SIZE; i++) {

scanf_s("%f", &data[i]);

}

for (i = 0; i < SIZE; i++) {

min = i;

for (j = i + 1; j < SIZE; j++)

if (data[j] < data[min])

min = j;

temp = data[min];

data[min] = data[i];

data[i] = temp;

}

printf("\n排序后的结果是:\n");

for (i = 0; i < SIZE; i++)

printf("%5.2f", data[i]);

}

(2)模块化程序(数组名作为函数参数)#include "stdio.h"

# define SIZE 5

void accept_array(float a[], int size);

void sort(float a[], int size);

void show_array(float a[], int size); void main() {

float score[SIZE];

accept_array(score, SIZE);

printf("排序前:");

show_array(score, SIZE);

sort(score, SIZE);

printf("排序后:");

show_array(score, SIZE);

}

void accept_array(float a[], int size) { int i;

printf("请输入%d个分数:", size);

for (i = 0; i < size; i++)

scanf_s("%f", &a[i]);

}

void show_array(float a[], int size) { int i;

for (i = 0; i < size; i++)

printf(" %5.2f", a[i]);

printf("\n");

}

void sort(float a[],int size) {

int i, min, j;

float temp;

for (i = 0; i < SIZE; i++) {

min = i;

for (j = i + 1; j < SIZE; j++)

if (a[j] < a[min])

min = j;

temp = a[min];

a[min] = a[i];

a[i] = temp;

}

4、(1)指针加减:

#include "stdio.h"

#define SIZE 10

void main() {

int a[SIZE] = { 1,2,3,4,5,6,7,8,9,10 };

int *pa, i;

pa = &a[0];

//pa=a;

printf("\n");

for (i = 0; i < SIZE; i++) {

printf(" %d", *pa);

//printf(" %d", *(pa+1));

pa++;

}

(2)指针比较:

#include "stdio.h"

#define SIZE 10

void main() {

int a[SIZE] = { 1,2,3,4,5,6,7,8,9,10 };

int *pa, i;

int *qa;

pa = qa = &a[0];

printf("请输入%d整型数:",SIZE);

for (; pa < qa + SIZE; pa++)

scanf_s("%d", pa);

for (pa--; qa <= pa; pa--)

printf(" %d", *pa);

}

5、两字符串相连:

#include "stdio.h"

#include "string.h"

void str_cat(char str1[], char str2[]); void main() {

int i, j;

char str1[160];

char str2[80];

printf("请输入第一个字符串:");

gets(str1);

printf("请输入第二个字符串:");

gets(str2);

str_cat(str1, str2);

puts(str1);

}

void str_cat(char str1[], char str2[]) {

int i, j;

i = 0;

while (str1[i] != '\0')

i++;

j = 0;

while (str2[j] != '\0') {

str1[i] = str2[j];

i++; j++;

}

str1[i] = '\0';

}

6、二维数组(a,b转置)

#include "stdio.h"

void main() {

int i, j, b[2][3];

int a[3][2] = { {1,2},{3,4},{5,6} };

for (i = 0; i < 2; i++) {

for (j = 0; j < 3; j++)

b[i][j] = a[j][i];

}

printf("\na:\n");

for (i = 0; i < 3; i++) {

for (j = 0; j < 2; j++)

printf("%5d", a[i][j]);

printf("\n");

}

printf("\nb:\n");

for(i = 0; i < 2; i++) {

for (j = 0; j < 3; j++)

printf("%5d", b[i][j]);

printf("\n");

}

}

7、输入一个二维数组并输出(指针)#include "stdio.h"

void main() {

int x[2][3];

int i, j;

for (i = 0; i < 2; i++)

for (j = 0; j < 3; j++)

scanf_s("%d", *(x + i) + j);

putchar('\n');

for (i = 0; i < 2; i++)

{

for (j = 0; j < 3; j++)

printf("%d ", *(*(x + i) + j));

putchar('\n');

}

}

8、冒泡法排序一个数组

#include "stdio.h"

#define size 10

void maopao(int a[]);

void main() {

int a[10];

int i;

printf("请输入10个整数:\n");

for (i = 0; i < 10; i++)

scanf_s("%d", &a[i]);

maopao(a);

}

void maopao(int a[]) {

int i, j, temp;

for (i = 0; i < 9; i++) {//进行9轮排序

for (j = 0; j < 9 - i; j++)//每轮进行9-i次交换

{

if (a[j] > a[j + 1])

{

temp = a[j];

a[j] = a[j + 1];//大的沉底,小的上浮

a[j + 1] = temp;

}

}

}

printf("排序结果:\n");

for (i = 0; i < 10; i++)

printf("%4d", a[i]);

}

9、两数组A,B,要求A

A:4,7,9

B:1,3,5,8,9

变换后

A:1,3,5

B:4,7,8,9,9

#include

void ReArranger(int* A, int* B, int m, int n) //A和B是各有m个和n个整数的非降序数组,本算法将B数组元素逐个插入到A中,使A中各元素均不大于B中各元素,且两数组仍保持非降序排列。

{

int x, j, i;

while (A[m - 1]>B[0])

{

x = A[m - 1];

A[m - 1] = B[0]; //交换A[m-1]和B[0]

j = 1;

while (j

B[j - 1] = B[j++]; //寻找A[m-1]的插入位置B[j - 1] = x;

x = A[m - 1];

i = m - 2;

while (i >= 0 && A[i]>x)

A[i + 1] = A[i--]; //寻找B[0]的插入位置

A[i + 1] = x;

}

}

void main() //这里主要介绍算法思想,主函数就简单写了{

int A[3], B[5], i;

printf("输入第一个数组:");

for (i = 0; i<3; i++) {

scanf_s("%d", &A[i]);

}

printf("\n输入第二个数组:");

for (i = 0; i<5; i++) {

scanf_s("%d", &B[i]);

}

ReArranger(A, B, 3, 5);

printf("\n输出第一个数组:");

for (i = 0; i<3; i++)

printf("%d ", A[i]);

printf("\n\n");

printf("输出第二个数组:");

for (i = 0; i<5; i++)

printf("%d ", B[i]);

printf("\n");

}

10、符合1+6+3=3+2+5=1+4+5有哪几组

A 1

B C 6 4

D E F到 3 2 5

#include

void main() {

int a, b, c, d, e, f;

for (a = 1; a <= 6; a++)

for (b = 1; b <= 6; b++) {

if (b == a)

continue;

for (c = 1; c <= 6; c++) {

if ((c == a) || (c == b))

continue;

相关主题
相关文档
最新文档