Compare commits
335
Commits
ff64e126fc
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c9dd5c8c83 | ||
|
|
e7aae27f87 | ||
|
|
c097a27e34 | ||
|
|
e6afc51134 | ||
|
|
db0782e5fc | ||
|
|
d7e3a5c9d9 | ||
|
|
3d52dadba1 | ||
|
|
3fbfc647b8 | ||
|
|
2c43525475 | ||
|
|
3f9704f1a4 | ||
|
|
f725ee8c97 | ||
|
|
2c3e944e03 | ||
|
|
1918e1e1e7 | ||
|
|
c96d28c005 | ||
|
|
0ab49e8346 | ||
|
|
1725b35ac9 | ||
|
|
1a1a6c0409 | ||
|
|
39672f95cb | ||
|
|
712b37490c | ||
|
|
449f17509e | ||
|
|
cd169b4904 | ||
|
|
d31fe4ec44 | ||
|
|
dc74003746 | ||
|
|
e8fd54dc02 | ||
|
|
c573ab7540 | ||
|
|
53b34d917f | ||
|
|
4079ff9b07 | ||
|
|
fc813427c5 | ||
|
|
255a4afc97 | ||
|
|
dc8392a55c | ||
|
|
b5cc50f90d | ||
|
|
da63a1d634 | ||
|
|
fc66b14900 | ||
|
|
49499ddb60 | ||
|
|
0fca9c9a65 | ||
|
|
ad6ebb9fa2 | ||
|
|
e229bbbb5d | ||
|
|
dae819bf03 | ||
|
|
984e4b5848 | ||
|
|
2c6fa871fd | ||
|
|
4afd009240 | ||
|
|
7c1ff398ef | ||
|
|
b555d546f3 | ||
|
|
7a89b6c6bd | ||
|
|
ca908905f0 | ||
|
|
e98ec49be5 | ||
|
|
562f6156ce | ||
|
|
12172b99ca | ||
|
|
0f66c6b6d8 | ||
|
|
631b95b9a1 | ||
|
|
dba08dadf4 | ||
|
|
ee5bf925ef | ||
|
|
36a2f799e1 | ||
|
|
9050c876b1 | ||
|
|
1101eebe94 | ||
|
|
3fd783abc5 | ||
|
|
67e45ace21 | ||
|
|
05299e024a | ||
|
|
c0663bc99c | ||
|
|
4732388b07 | ||
|
|
2a43e05b5f | ||
|
|
5f169e30ac | ||
|
|
c4547a80fc | ||
|
|
d06b6fc13d | ||
|
|
195f784173 | ||
|
|
abfd593f38 | ||
|
|
542dd24e8d | ||
|
|
9aa26a9fbe | ||
|
|
cc59f1a38b | ||
|
|
947c7e78d2 | ||
|
|
0ed3a59e2c | ||
|
|
932fcc500c | ||
|
|
be5497370f | ||
|
|
ba7a5971be | ||
|
|
eaa1811ce7 | ||
|
|
0699f7825b | ||
|
|
537578994c | ||
|
|
57e8628eec | ||
|
|
6b086283b9 | ||
|
|
eb6a1ba10c | ||
|
|
85aedd7dcf | ||
|
|
4ebb1c8c83 | ||
|
|
9a03816526 | ||
|
|
1455f339be | ||
|
|
21eab878bf | ||
|
|
777fefdcef | ||
|
|
f9f35929ed | ||
|
|
03e8200eb7 | ||
|
|
7826824d2f | ||
|
|
3f10d8ce73 | ||
|
|
ce7fcd525a | ||
|
|
b42341556b | ||
|
|
04dfcd275e | ||
|
|
8333736ef2 | ||
|
|
2fd8dd0574 | ||
|
|
1697d05c41 | ||
|
|
ef57fdc6da | ||
|
|
fb7ce8d575 | ||
|
|
72d7281a50 | ||
|
|
2e57bf8a24 | ||
|
|
8da3011a4f | ||
|
|
f6f91c0fd4 | ||
|
|
92bbbfb089 | ||
|
|
281083bf85 | ||
|
|
448f49d644 | ||
|
|
727db1bb4a | ||
|
|
fbb09280fd | ||
|
|
b030ae136a | ||
|
|
a3837c3a77 | ||
|
|
ce0f22d5f5 | ||
|
|
37fccb1898 | ||
|
|
5072cd79b1 | ||
|
|
2cafec9ae9 | ||
|
|
983e28df10 | ||
|
|
37f68f467b | ||
|
|
68e4508eaf | ||
|
|
6aa71ed621 | ||
|
|
02788e2bb2 | ||
|
|
95aa201cf4 | ||
|
|
26b0159c32 | ||
|
|
6733da3ec5 | ||
|
|
1b42d49ba9 | ||
|
|
4cf78065f1 | ||
|
|
da1fcd8e75 | ||
|
|
8fa209f213 | ||
|
|
5d16a365de | ||
|
|
077f0330f5 | ||
|
|
43b718db0c | ||
|
|
a192d96e71 | ||
|
|
7e85346487 | ||
|
|
a19a2490e0 | ||
|
|
bf07420a5e | ||
|
|
d9e06991e9 | ||
|
|
49853d7338 | ||
|
|
2be46d87e0 | ||
|
|
297f2784fb | ||
|
|
2f7f806aab | ||
|
|
72b6014ddf | ||
|
|
caa10b19b2 | ||
|
|
cbf371e29d | ||
|
|
5e39adead8 | ||
|
|
6b6d78b340 | ||
|
|
525c0edd1d | ||
|
|
53224e1642 | ||
|
|
72ad4426fe | ||
|
|
df4fea3437 | ||
|
|
8b030d5a28 | ||
|
|
721a9d8fb7 | ||
|
|
f93fce1ea6 | ||
|
|
4b5e81f1b3 | ||
|
|
55230c94e4 | ||
|
|
a580bebc74 | ||
|
|
31af716c23 | ||
|
|
09d0f90697 | ||
|
|
adb07f27c5 | ||
|
|
152541650a | ||
|
|
777ac955d0 | ||
|
|
d76940406d | ||
|
|
86d4341146 | ||
|
|
d2970d183d | ||
|
|
cfdebb17f7 | ||
|
|
1843d42e7e | ||
|
|
fd10dcce9e | ||
|
|
fb31fcc8c7 | ||
|
|
4e10137543 | ||
|
|
5f5abd6f79 | ||
|
|
8a715c2f80 | ||
|
|
08685dda81 | ||
|
|
bf3450efd7 | ||
|
|
ade0d7fa4b | ||
|
|
6f7f7f2892 | ||
|
|
3fc5a99e37 | ||
|
|
f10b80e114 | ||
|
|
baf429e8a2 | ||
|
|
1ba7f30de6 | ||
|
|
88350396ba | ||
|
|
4958a07e62 | ||
|
|
c2fd89cd97 | ||
|
|
d7bb147d7f | ||
|
|
f2edb6f1f4 | ||
|
|
2ae0682fa6 | ||
|
|
ae9579fe10 | ||
|
|
4df646d4cf | ||
|
|
cd6b19e43c | ||
|
|
d198c8044c | ||
|
|
ffbffcdfc8 | ||
|
|
4549e5412c | ||
|
|
7b67a5fe21 | ||
|
|
634e5a21fb | ||
|
|
64c22c4d2f | ||
|
|
bfcf16acfa | ||
|
|
246399c0c7 | ||
|
|
116db0da21 | ||
|
|
232d23ceca | ||
|
|
70d5054036 | ||
|
|
8c0d6360a2 | ||
|
|
fe970ef1a1 | ||
|
|
13abb8ed50 | ||
|
|
eaaf651831 | ||
|
|
3dae5b6d37 | ||
|
|
533f6eabc4 | ||
|
|
d12a28496d | ||
|
|
4e21fb0e95 | ||
|
|
a86c4778f8 | ||
|
|
5deb7de5b9 | ||
|
|
fd1b4626a6 | ||
|
|
b7c041bb94 | ||
|
|
bbedce7b34 | ||
|
|
5f28bf3ec9 | ||
|
|
5626077db1 | ||
|
|
1f7190eff5 | ||
|
|
9229598107 | ||
|
|
43a25c48b0 | ||
|
|
29925804ff | ||
|
|
783148afe6 | ||
|
|
3a32020d4e | ||
|
|
c82388d6b2 | ||
|
|
506ac8cc25 | ||
|
|
b535bc9dae | ||
|
|
02627c7840 | ||
|
|
ecef67c3a5 | ||
|
|
2491d0e09c | ||
|
|
01227d38ab | ||
|
|
ec68bc0763 | ||
|
|
b6af2f583e | ||
|
|
29d62ac5fe | ||
|
|
1360a5ff09 | ||
|
|
a4ab6c3031 | ||
|
|
c05eef2b12 | ||
|
|
de4844ecad | ||
|
|
7fb72c827d | ||
|
|
1a337cdb21 | ||
|
|
77130d67f9 | ||
|
|
b66b096327 | ||
|
|
23fb17e13c | ||
|
|
5b4d574902 | ||
|
|
dcf8569b07 | ||
|
|
0b308fc718 | ||
|
|
a3a4f6edea | ||
|
|
6c863dd1ce | ||
|
|
ff53142ba1 | ||
|
|
bc252f8f6c | ||
|
|
5854a8189c | ||
|
|
ae9af0c5da | ||
|
|
3a41de0e49 | ||
|
|
ee576351d9 | ||
|
|
25cbe06f6c | ||
|
|
22b99cb301 | ||
|
|
71ea2b0d21 | ||
|
|
5859485f29 | ||
|
|
621b846797 | ||
|
|
522e2388ca | ||
|
|
53aacb1dee | ||
|
|
9219d6cc3c | ||
|
|
813d3b3be4 | ||
|
|
fe55e3aad9 | ||
|
|
04dd9290d0 | ||
|
|
a98fd5bb17 | ||
|
|
cbfc0a1669 | ||
|
|
669136154c | ||
|
|
d59764c856 | ||
|
|
a2e6ffbfde | ||
|
|
dceb62f983 | ||
|
|
854e7b4f1b | ||
|
|
5627a1c82e | ||
|
|
d44aeed220 | ||
|
|
10a4acf101 | ||
|
|
02b5667ffc | ||
|
|
c57e611d42 | ||
|
|
0c901eeaaa | ||
|
|
5e7ef30e2c | ||
|
|
0fe5855aea | ||
|
|
5d520d977f | ||
|
|
049a9c4108 | ||
|
|
7fd11e7618 | ||
|
|
e1993df158 | ||
|
|
c7ec5eb71f | ||
|
|
a546c2f47c | ||
|
|
d494b911e0 | ||
|
|
e65236340b | ||
|
|
124501634a | ||
|
|
470ff460d9 | ||
|
|
017d98f41f | ||
|
|
2b23eadf39 | ||
|
|
88a9ab7957 | ||
|
|
aac550fd91 | ||
|
|
6a22303f9a | ||
|
|
4e52aad31a | ||
|
|
e3beb59bcf | ||
|
|
dfcc6d7c50 | ||
|
|
9728c58e6b | ||
|
|
f25d1ac3e0 | ||
|
|
26cfc26beb | ||
|
|
6daef8f2f6 | ||
|
|
a4e5ecdb04 | ||
|
|
67b1d802c2 | ||
|
|
3004a37525 | ||
|
|
5c7f46be42 | ||
|
|
a800cf8ba5 | ||
|
|
cec338f3d2 | ||
|
|
66572f8aa0 | ||
|
|
f63c5070c4 | ||
|
|
67bbdeca62 | ||
|
|
d099950411 | ||
|
|
9110054b2c | ||
|
|
d7b3392f59 | ||
|
|
130450f639 | ||
|
|
ed95e210ff | ||
|
|
7396f8a08a | ||
|
|
18e2b8d571 | ||
|
|
22fa03752e | ||
|
|
0b77d04975 | ||
|
|
59d1eeaabd | ||
|
|
48bad49c40 | ||
|
|
067c331f93 | ||
|
|
48da8b8d59 | ||
|
|
167c79c70f | ||
|
|
119f3966ff | ||
|
|
9e6e566bc8 | ||
|
|
33a49723d1 | ||
|
|
87ba48dce5 | ||
|
|
64f74b12fb | ||
|
|
2695e388c8 | ||
|
|
5feafc6471 | ||
|
|
073e71187b | ||
|
|
6e3df84904 | ||
|
|
b53eef5971 | ||
|
|
08baf3be91 | ||
|
|
ca89d61d67 | ||
|
|
e22cf4129e | ||
|
|
0fd57ac979 | ||
|
|
00239a8273 | ||
|
|
28b7a8221c | ||
|
|
4818e60562 | ||
|
|
565f33dc52 |
+2
-1
@@ -2,4 +2,5 @@
|
||||
!*.*
|
||||
!*/
|
||||
!.gitignore
|
||||
.vscode
|
||||
.vscode
|
||||
*.exe
|
||||
Binary file not shown.
@@ -1,27 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
typedef struct Node{
|
||||
int id;
|
||||
char name[20];
|
||||
} student;
|
||||
|
||||
//! 结构体变量的复制 基本数据类型可以复制 数组都可以复制 而不是 只复制数组的地址
|
||||
int main(void){
|
||||
|
||||
student s1, s2;
|
||||
s1.id = 1;
|
||||
strcpy(s1.name, "LH");
|
||||
|
||||
s2 = s1;
|
||||
printf("s1:%d %s\n", s1.id, s1.name);
|
||||
printf("s2:%d %s\n", s2.id, s2.name);
|
||||
|
||||
s2.name[0] = 'A';
|
||||
|
||||
printf("s1:%d %s\n", s1.id, s1.name);
|
||||
printf("s2:%d %s\n", s2.id, s2.name);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
#include <stdio.h>
|
||||
/*
|
||||
定义结构体类型
|
||||
*/
|
||||
|
||||
typedef struct Node{
|
||||
int data;
|
||||
struct Node * pNext;
|
||||
}Node, *pNode;
|
||||
|
||||
|
||||
int main(){
|
||||
|
||||
Node node;
|
||||
pNode p;
|
||||
p = &node;
|
||||
node.data = 10;
|
||||
node.pNext = NULL;
|
||||
|
||||
printf("%d\n", p->data);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,254 +0,0 @@
|
||||
#include <stdio.h>
|
||||
|
||||
// 交换两个整数的值
|
||||
void swap(int* a, int* b) {
|
||||
int temp = *a;
|
||||
*a = *b;
|
||||
*b = temp;
|
||||
}
|
||||
|
||||
// 冒泡排序
|
||||
void bubbleSort(int arr[], int n) {
|
||||
for (int i = 0; i < n-1; i++) {
|
||||
for (int j = 0; j < n-i-1; j++) {
|
||||
if (arr[j] > arr[j+1]) {
|
||||
swap(&arr[j], &arr[j+1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 选择排序
|
||||
void selectionSort(int arr[], int n) {
|
||||
int i, j, min_idx;
|
||||
for (i = 0; i < n-1; i++) {
|
||||
min_idx = i;
|
||||
for (j = i+1; j < n; j++) {
|
||||
if (arr[j] < arr[min_idx]) {
|
||||
min_idx = j;
|
||||
}
|
||||
}
|
||||
swap(&arr[min_idx], &arr[i]);
|
||||
}
|
||||
}
|
||||
|
||||
// 插入排序
|
||||
void insertionSort(int arr[], int n) {
|
||||
int i, key, j;
|
||||
for (i = 1; i < n; i++) {
|
||||
key = arr[i];
|
||||
j = i-1;
|
||||
while (j >= 0 && arr[j] > key) {
|
||||
arr[j+1] = arr[j];
|
||||
j = j-1;
|
||||
}
|
||||
arr[j+1] = key;
|
||||
}
|
||||
}
|
||||
|
||||
// 归并排序
|
||||
void merge(int arr[], int l, int m, int r) {
|
||||
int i, j, k;
|
||||
int n1 = m - l + 1;
|
||||
int n2 = r - m;
|
||||
|
||||
int L[n1], R[n2];
|
||||
|
||||
for (i = 0; i < n1; i++) {
|
||||
L[i] = arr[l + i];
|
||||
}
|
||||
for (j = 0; j < n2; j++) {
|
||||
R[j] = arr[m + 1 + j];
|
||||
}
|
||||
|
||||
i = 0;
|
||||
j = 0;
|
||||
k = l;
|
||||
while (i < n1 && j < n2) {
|
||||
if (L[i] <= R[j]) {
|
||||
arr[k] = L[i];
|
||||
i++;
|
||||
} else {
|
||||
arr[k] = R[j];
|
||||
j++;
|
||||
}
|
||||
k++;
|
||||
}
|
||||
|
||||
while (i < n1) {
|
||||
arr[k] = L[i];
|
||||
i++;
|
||||
k++;
|
||||
}
|
||||
|
||||
while (j < n2) {
|
||||
arr[k] = R[j];
|
||||
j++;
|
||||
k++;
|
||||
}
|
||||
}
|
||||
|
||||
void mergeSort(int arr[], int l, int r) {
|
||||
if (l < r) {
|
||||
int m = l + (r - l) / 2;
|
||||
mergeSort(arr, l, m);
|
||||
mergeSort(arr, m + 1, r);
|
||||
merge(arr, l, m, r);
|
||||
}
|
||||
}
|
||||
|
||||
// 快速排序
|
||||
int partition(int arr[], int low, int high) {
|
||||
int pivot = arr[high];
|
||||
int i = (low - 1);
|
||||
|
||||
for (int j = low; j <= high - 1; j++) {
|
||||
if (arr[j] < pivot) {
|
||||
i++;
|
||||
swap(&arr[i], &arr[j]);
|
||||
}
|
||||
}
|
||||
swap(&arr[i + 1], &arr[high]);
|
||||
return (i + 1);
|
||||
}
|
||||
|
||||
void quickSort(int arr[], int low, int high) {
|
||||
if (low < high) {
|
||||
int pi = partition(arr, low, high);
|
||||
quickSort(arr, low, pi - 1);
|
||||
quickSort(arr, pi + 1, high);
|
||||
}
|
||||
}
|
||||
|
||||
// 希尔排序
|
||||
void shellSort(int arr[], int n) {
|
||||
for (int gap = n/2; gap > 0; gap /= 2) {
|
||||
for (int i = gap; i < n; i++) {
|
||||
int temp = arr[i];
|
||||
int j;
|
||||
for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) {
|
||||
arr[j] = arr[j - gap];
|
||||
}
|
||||
arr[j] = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 计数排序
|
||||
void countSort(int arr[], int n) {
|
||||
int max = arr[0];
|
||||
for (int i = 1; i < n; i++) {
|
||||
if (arr[i] > max) {
|
||||
max = arr[i];
|
||||
}
|
||||
}
|
||||
|
||||
int count[max+1];
|
||||
for (int i = 0; i <= max; i++) {
|
||||
count[i] = 0;
|
||||
}
|
||||
|
||||
for (int i = 0; i < n; i++) {
|
||||
count[arr[i]]++;
|
||||
}
|
||||
|
||||
int index = 0;
|
||||
for (int i = 0; i <= max; i++) {
|
||||
while (count[i] > 0) {
|
||||
arr[index++] = i;
|
||||
count[i]--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 基数排序
|
||||
void countingSortForRadix(int arr[], int n, int exp) {
|
||||
int output[n];
|
||||
int count[10] = {0};
|
||||
|
||||
for (int i = 0; i < n; i++) {
|
||||
count[(arr[i] / exp) % 10]++;
|
||||
}
|
||||
|
||||
for (int i = 1; i < 10; i++) {
|
||||
count[i] += count[i - 1];
|
||||
}
|
||||
|
||||
for (int i = n - 1; i >= 0; i--) {
|
||||
output[count[(arr[i] / exp) % 10] - 1] = arr[i];
|
||||
count[(arr[i] / exp) % 10]--;
|
||||
}
|
||||
|
||||
for (int i = 0; i < n; i++) {
|
||||
arr[i] = output[i];
|
||||
}
|
||||
}
|
||||
|
||||
void radixSort(int arr[], int n) {
|
||||
int max = arr[0];
|
||||
for (int i = 1; i < n; i++) {
|
||||
if (arr[i] > max) {
|
||||
max = arr[i];
|
||||
}
|
||||
}
|
||||
|
||||
for (int exp = 1; max / exp > 0; exp *= 10) {
|
||||
countingSortForRadix(arr, n, exp);
|
||||
}
|
||||
}
|
||||
|
||||
// 堆排序
|
||||
void heapify(int arr[], int n, int i) {
|
||||
int largest = i;
|
||||
int left = 2 * i + 1;
|
||||
int right = 2 * i + 2;
|
||||
|
||||
if (left < n && arr[left] > arr[largest]) {
|
||||
largest = left;
|
||||
}
|
||||
|
||||
if (right < n && arr[right] > arr[largest]) {
|
||||
largest = right;
|
||||
}
|
||||
|
||||
if (largest != i) {
|
||||
swap(&arr[i], &arr[largest]);
|
||||
heapify(arr, n, largest);
|
||||
}
|
||||
}
|
||||
|
||||
void heapSort(int arr[], int n) {
|
||||
for (int i = n / 2 - 1; i >= 0; i--) {
|
||||
heapify(arr, n, i);
|
||||
}
|
||||
|
||||
for (int i = n - 1; i >= 0; i--) {
|
||||
swap(&arr[0], &arr[i]);
|
||||
heapify(arr, i, 0);
|
||||
}
|
||||
}
|
||||
|
||||
// 打印数组
|
||||
void printArray(int arr[], int size) {
|
||||
for (int i = 0; i < size; i++) {
|
||||
printf("%d ", arr[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
// 测试排序函数
|
||||
int main() {
|
||||
int arr[] = {64, 34, 25, 12, 22, 11, 90};
|
||||
int n = sizeof(arr)/sizeof(arr[0]);
|
||||
|
||||
printf("Original array: \n");
|
||||
printArray(arr, n);
|
||||
|
||||
bubbleSort(arr, n);
|
||||
printf("Sorted array using Bubble Sort: \n");
|
||||
printArray(arr, n);
|
||||
|
||||
// 你可以在这里测试其他排序函数
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,879 +0,0 @@
|
||||
## 一、顺序结构
|
||||
|
||||
1. 将华氏温度转换为摄氏温度和绝对温度的公式分别为:
|
||||
c= (f-32) (摄氏温度)
|
||||
k=273.16+c (绝对温度)
|
||||
请编程序:当给出f 时,求其相应摄氏温度和绝对温度。
|
||||
测试数据:① f=34
|
||||
② f=100
|
||||
|
||||
2. 写一个程序把极坐标(r,θ) (θ之单位为度)转换为直角坐标( X,Y)。转换公式是:
|
||||
x=r.cosθ
|
||||
y=r.sinθ
|
||||
测试数据:① r=10 θ=45°
|
||||
② r=20 θ=90°
|
||||
|
||||
3. 写一个程序,按如下格式输出数据。
|
||||
name number math english computer
|
||||
zhanghua 9901 80.50 87.0 80
|
||||
lina 9902 70.00 80.0 90
|
||||
wanggang 9903 87.00 76.0 78
|
||||
|
||||
4. 输入3 个双精度实数,分别求出它们的和、平均值、平方和以及平方和的开方,并输
|
||||
出所求出各个值。
|
||||
|
||||
5. 输入一个3 位整数,求出该数每个位上的数字之和。如123,每个位上的数字和就是
|
||||
1+2+3=6。
|
||||
|
||||
## 二、分支结构
|
||||
|
||||
1. 输入一个字符,判断它如果是小写字母输出其对应大写字母;如果是大写字母输出其
|
||||
对应小写字母;如果是数字输出数字本身;如果是空格,输出“space”;如果不是
|
||||
上述情况,输出“other”。
|
||||
|
||||
2. 有三个数a、b、c,由键盘输入,输出其中最大的数。
|
||||
|
||||
3. 输入一个数,判断它能否被 3 或者被 5 整除, 如至少能被这两个数中的一个整除则将
|
||||
此数打印出来,否则不打印,编出程序。
|
||||
|
||||
4. 读入1 到7 之间的某个数,输出表示一星期中相应的某一天的单词:Monday、 Tuesday
|
||||
等等,用switch 语句做。
|
||||
|
||||
5. 给出一百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’,90 分以上为
|
||||
‘A’,80~89 分为‘B’,70~79 分为‘C’,60~69 分为‘D’,60 分以下为‘E’。
|
||||
|
||||
6. 有一函数,请编程序计算y 的值(x 的值由键盘输入)。
|
||||
<img src="https://yp.smallkun.cn/markdown/image-20241130003549906.png!compress" alt="image-20241130003549906" style="zoom:50%;" />
|
||||
|
||||
|
||||
|
||||
## 三、循环结构
|
||||
|
||||
1. 计算n 的阶乘
|
||||
|
||||
2. 求 1 到 100 之间的奇数之和、偶数之积。
|
||||
|
||||
3. 输入一行字符,统计其中的英文字母、数字、空格和其他字符个数。
|
||||
|
||||
4. 用循环语句编写求下列表达式值的程序。
|
||||
<img src="https://yp.smallkun.cn/markdown/image-20241130003536421.png!compress" alt="image-20241130003536421" style="zoom:50%;" />
|
||||
|
||||
5.求1!+2!+3!+...+20!
|
||||
|
||||
6.求下列分数序列的前20项之和。
|
||||
<img src="https://yp.smallkun.cn/markdown/image-20241130003647576.png!compress" alt="image-20241130003647576" style="zoom:50%;" />
|
||||
|
||||
7. 任意十个数,打印出它们中的最大数、最小数。
|
||||
测试数据:① 1,-12,20,30,-5,-23,33,125,200,-100
|
||||
② 0,10,3,1,5,6,-10,90,9,-4
|
||||
③ 12,13,14,15,10,-10,-11,-12,-9,9
|
||||
|
||||
8. 判断一个数是否是素数
|
||||
|
||||
9. 打印1-100 之间所有素数
|
||||
|
||||
10. 求1-100 之间所有非素数的和
|
||||
|
||||
11. 输入两个正整数 m 和 n,求其最大公约数和最小公倍数
|
||||
提示:
|
||||
求 m,n的最大公约数:首先将 m除以 n(m>n)得余数 R,再用余数 R 去除原来的除数,得新的余数,重复此过程直到余数为 0 时停止,此时的除数就是m 和 n的最大公约数。
|
||||
求 m和 n的最小公倍数: m和 n的积除以 m和 n 的最大公约数。
|
||||
测试数据: m=12, n=24
|
||||
m=100, n=300
|
||||
|
||||
12. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数, 其各位数字立方
|
||||
和等于该数本身。例如 153 是一个水仙花数,因为 153=1\*1\*1+5\*5\*5+3\*3\*3(要求分别用一重循环和三重循环实现)。
|
||||
|
||||
13. 一个数恰好等于它的平方数的右端,这个数称为同构数。如 5 的平方是25, 5 是25 中的右端的数, 5 就是同构数。找出1~1000 之间的全部同构数。
|
||||
|
||||
14. 3025 这个数具有一种独特的性质:将它平分为两段,即30 和25,使之相加后求平方,即(30+25),恰好等于3025 本身。请求出具有这样性质的全部四位数。
|
||||
|
||||
15. 两位数13 和62 具有很有趣的性质:把它们个位数字和十位数字对调,其乘积不变,即13*62=31*26。 编程序求共有多少对这种性质的两位数(个位与十位相同的不在此列,如11、22,重复出现的不在此列,如 13*62 与62*13)。
|
||||
|
||||
16. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6 的因子为1、2、3,而6=1+2+3,因此6 是“完数”。编程序找出1000 之内的所有完数,并按下面格式输出其因子:
|
||||
6 its factors are 1,2,3
|
||||
|
||||
17. 有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4 倍,请找出一个这样的四位数。
|
||||
|
||||
18. 给出一个不多于4 位的正整数,要求:① 求出它是几位数 ② 分别打印出每一位数字 ③ 按逆序打印出各位数字。
|
||||
|
||||
19. 在一个程序中计算出给定误差小于0.1,0.01,0.001,0.0001,0.00001 时,下式的值:
|
||||

|
||||
提示:本题中误差指前 n+1项之积与前 n项积之差。
|
||||
|
||||
20. 用泰勒展开式求sinx 的近似值
|
||||

|
||||
|
||||
测试数据:① x=0.3 , n=8
|
||||
② x=0.5 , n=20
|
||||
|
||||
21. 验证歌德巴赫猜想。一个充分大的偶数(大于或等于6)可以分解为两个素数之和。试编程序,将 6 至50 之间全部偶数表示为两个素数之和。
|
||||
|
||||
22. 用牛顿迭代法求方程在 1.5 附近的根(精度为<img src="https://yp.smallkun.cn/markdown/image-20241130004125210.png!compress" alt="image-20241130004125210" style="zoom: 40%;" />)。
|
||||

|
||||
|
||||
23. 两个乒乓球队进行比赛,各出三人,甲队为A、B、C 三人,乙队为X、Y 、Z 三人,已知抽签决定比赛名单。有人向队员打听比赛的名单, A 说他不和 X 比,C 说他不和X、Z 比,请编程序找出三对赛手的名单。
|
||||
|
||||
|
||||
|
||||
## 四、数组
|
||||
|
||||
1. 有一个正整数数组,包含N 个元素,要求编程求出其中的素数之和以及所有素数的平均值。
|
||||
|
||||
2. 有一个数组,内放10 个整数。要求找出最小的数和它的下标,然后把它和数组中最前面的元素对换位置。
|
||||
|
||||
3. 有 N 个数已按由小到大的顺序排好,要求输入一个数, 把它插入到原有序列中,而且仍然保持有序。
|
||||
|
||||
4. 输入N 个数到数组中,输出所有大于N 个数平均值的数。
|
||||
|
||||
5. 输入N 个数到数组中,选出其中最大的数和最小的数,并分别将它们与最前面和最后面的数互换。
|
||||
|
||||
6. 用选择法对10 个整数由大到小排序。
|
||||
|
||||
7. 用筛选法求 2 到 100 之间的素数。方法如下:首先 2 是素数,凡 2 的倍数都不是素数,于是把这些数从数表中筛去, 2 以后没有被筛去的第一个数是 3, 然后把 3的倍数都从数表中筛去, 3 以后没被筛去的第一个数是 5,然后把 5 的倍数都从数表中筛去。如此下去,直到遇到某数 K(≤ N),其后没有数可筛选为止, 这时保留下的未被筛去的数就是 2 到 N 的素数。
|
||||
|
||||
8. 求一个 3×3 矩阵两条对角线上元素之和(每个元素只加一次)。
|
||||
|
||||
9. 打印如下形式的杨辉三角形
|
||||
1
|
||||
1 1
|
||||
1 2 1
|
||||
1 3 3 1
|
||||
1 4 6 4 1
|
||||
1 5 10 10 5 1
|
||||
输出前10行,从 0行开始,分别用一维数组和二维数组实现。
|
||||
|
||||
10.有一个二维数组整型数组中,每一行都有一个最大值,编程求出这些最大值以及它们的和。
|
||||
|
||||
11.把一个二维实型数组a 按照第0 列的元素进行排序(由小到大排序,用起泡法)。例如:如果a[i][0]大于a[i+1][0],则i 行与i+1 行中所有元素都要进行对换。
|
||||
|
||||
12.编程序将一个字符串的前 N 个子字符送到一个字符型数组中去, 然后再加上一个'\0'(不允许使用strcpy(str1,str2,n)函数)。
|
||||
|
||||
13.将字符数组 A 中下标为双号(0,2,4,6,8...) 的元素值传给另一个字符数组 B,然后将 B 数组的元素按逆序输出。
|
||||
|
||||
14.有一行字符,统计其中的单词个数(单词之间以空格分隔),并将每一个单词的第一个字母改为大写。
|
||||
|
||||
15.有 N 个国家名,要求按字母先后顺序排列(用起泡排序法)后输出。
|
||||
|
||||
16.有17 个人围成一圈(编号为0~16),从第 0 号的人开始从 1 报数, 凡报到 3 的倍数的人离开圈子,然后再数下去,直到最后只剩下一个人为止。 问此人原来的位置是多少号?
|
||||
|
||||
17.编程产生如下形式的方阵。
|
||||
1 2 2 2 2 2 1
|
||||
3 1 2 2 2 1 4
|
||||
3 3 1 2 1 4 4
|
||||
3 3 3 1 4 4 4
|
||||
3 3 1 5 1 4 4
|
||||
3 1 5 5 5 1 4
|
||||
1 5 5 5 5 5 1
|
||||
要求:不允许使用键盘输入语句和静态赋值语句,尽量少用循环。
|
||||
|
||||
18.打印所有不超过 n( n<256)的其平方具有对称性的数(也称回文数)。
|
||||
|
||||
19.求N 个数中的最大值,最大值出现的次数,然后求出次大值(次大值一定存在)。
|
||||
|
||||
20.找出 M×N 数组中所有不相邻元素,并求出它们的和(相邻的数:前一个是偶数,后一个是素数)。
|
||||
|
||||
21.已知 100 个自然数 1~100,我们取 1, 2, 3, 4 时, 我们可将其排成一圈使每两个数之和都是素数,即→1→2→3→4→,问 1~100 内连续取 n 个数,即 1~ n(≤ 100)能满足上述要求的最大的 n 是多少?
|
||||
|
||||
22.打印魔方阵。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。
|
||||
例如:三阶魔方阵为
|
||||
8 1 6
|
||||
3 5 7
|
||||
4 9 2
|
||||
|
||||
要求打印由 1到N\* N的自然数构成的魔方阵。
|
||||
提示:魔方阵中各数的排列规律如下:
|
||||
⑴ 将“1”放在第一行中间一列;
|
||||
⑵ 从“2”开始直到n×n为止各数依次按下列规则存放:每一个数存放的行比前一个数的行数减1,列数加1;
|
||||
⑶ 如果上一个数的行数为1,则下一个数的行数为 n(指最下一行);
|
||||
⑷ 当一个数的列数为 n,下一个数的列数应为1,行数减1;
|
||||
⑸ 如果按上面规则确定的位置已有数,或上一个数是第 1行第 n列时, 则把下一个数放在上一个数的下面。
|
||||
|
||||
23.统计一个单位职工的年龄,要求把相同年龄最多的那个年龄找出来(可能有几个这样的年龄),并统计出现的次数。
|
||||
|
||||
24.n×n 的拉丁方阵的每行、每列均为自然数的一个全排列, 每行(列)上均无重复数。
|
||||
如 n=5 时, 5×5 的一种拉丁方阵可以为:
|
||||
1 5 2 4 3
|
||||
2 3 4 5 1
|
||||
4 1 5 3 2
|
||||
5 2 3 1 4
|
||||
3 4 1 2 5
|
||||
该数组的第一行 1,5,2,4,3 用程序自动生成,但产生的第一行不一定非得是 1,5,2,4,3,第一行填写完毕后,即以第一行作为全方阵索引, 即若第一行中的第 i 列的元素值为 j ,则 j在各行中的列号即为从第一行中元素值为 i的那一列开始读出的 n个自然数(到行末则从行头接着读),例如第一行第2列的元素值为5, 则从元素值为2的那一列(第3列)开始读出2,4,3,1,5,这就是元素5在各行中的列标号。
|
||||
测试数据:① n=5 ② n=8
|
||||
|
||||
## 五、函数
|
||||
|
||||
1.编写一函数判断某数是否素数。
|
||||
|
||||
2.编写一函数求三个整数的最大值。
|
||||
|
||||
3.打印出3 到1100 之间的全部素数(判素数由函数实现)。
|
||||
|
||||
4.写一函数,使给定的一个二维数组(3×3)转置,即行列互换。
|
||||
|
||||
5.写一函数,将两个字符串连接,即编写一strcat 函数。
|
||||
|
||||
6.写一函数,求一字符串长度,即编写一strlen 函数。
|
||||
|
||||
7.写一函数将字符数组s1 中的全部字符复制到字符数组s2 中,不用strcpy 函数。
|
||||
|
||||
8.写一函数判断某数是否“水仙花数”,所谓“水仙花数”是指一个三位数, 其各位数字立方和等于该数本身。
|
||||
|
||||
9.在主函数内任意输入一个5×6 矩阵,编写一函数求出每一行的和放到一个一维数组中,输出此矩阵及其每一行的和。
|
||||
|
||||
10.写一主函数输入一数组,写一子函数实现对该数组的冒泡排序并输出。
|
||||
|
||||
11.任意输入20 个正整数,找出其中的素数,并将这些素数按由小到大排序。要求:判断一
|
||||
个数是否为素数用函数实现;排序用函数实现。
|
||||
|
||||
12.编写计算m 的n 次方的递归函数。
|
||||
|
||||
13.编一个程序,读入具有5 个元素的整型数组,然后调用一个函数,递归计算这些元素的积。
|
||||
|
||||
14.编一个程序,读入具有5 个元素的实型数组,然后调用一个函数,递归地找出其中的最大元素,并指出它位置。
|
||||
|
||||
## 六、指针
|
||||
|
||||
1、 输入三个整数,按由小到大的顺序输出。
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
//定义一个函数 传入两个整型指针 交换 两个指针所指向的值
|
||||
void swap(int *x, int *y){
|
||||
int temp;
|
||||
temp = *x;
|
||||
*x = *y;
|
||||
*y = temp;
|
||||
}
|
||||
|
||||
int main(void){
|
||||
int a, b, c;
|
||||
printf("请输入三个数字(以空格间隔):");
|
||||
scanf("%d %d %d", &a, &b, &c);
|
||||
//由小到大 升序
|
||||
if(a > b){//b为 a、b两个变量中 最大值
|
||||
swap(&a, &b);
|
||||
}
|
||||
if(b > c){//c 为 a、b、c中最大值
|
||||
swap(&b, &c);
|
||||
}
|
||||
if(a > b){//b为 a、b两个变量中 最大值
|
||||
swap(&a, &b);
|
||||
}
|
||||
printf("%d %d %d\n", a, b, c);
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
2、 输入10 个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:①输入10 个数;②进行处理;③输出10 个数。
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
void swap(int *x, int *y){
|
||||
int temp;
|
||||
temp = *x;
|
||||
*x = *y;
|
||||
*y = temp;
|
||||
}
|
||||
//输入数组元素
|
||||
void input(int *arr, int n){
|
||||
int i;
|
||||
for(i=0;i<n;i++){
|
||||
scanf("%d", arr+i);
|
||||
}
|
||||
}
|
||||
//处理数组元素 最大值和最后一个元素交换,最小值和最前一个元素交换
|
||||
void process(int *arr, int n){
|
||||
int *max, *min;//max 最大值的地址 min最小值的地址
|
||||
int i;
|
||||
max = min = arr;
|
||||
//通过遍历数组的所有元素 求出最大值和最小值的地址
|
||||
for(i = 1;i < n;i++){
|
||||
if(*(arr+i) > *max){
|
||||
max = arr+i;
|
||||
}
|
||||
if(*(arr+i) < *min){
|
||||
min = arr+i;
|
||||
}
|
||||
}
|
||||
//如果最大值的地址为数组的首地址 则最小值和首地址交换后 最大值地址为最小值地址
|
||||
if(max == arr){
|
||||
max = min;
|
||||
}
|
||||
swap(min, arr);//最小值和数组首元素交换
|
||||
swap(max, arr+9);//最大值和数组最后一个元素交换
|
||||
}
|
||||
//输出数组元素
|
||||
void output(int *arr, int n){
|
||||
int i;
|
||||
for(i=0;i<n;i++){
|
||||
printf("%d ", *(arr+i));
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
int main(void){
|
||||
int num[10];
|
||||
|
||||
input(num, 10);
|
||||
process(num, 10);
|
||||
output(num, 10);
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
3、 有n 个整数,使前面各数顺序向后移m 个位置,最后m 个数变成最前面m 个数,写一函数实现以上功能,在主函数中输入n 个整数和输出调整后的n 个数。
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
void move(int *arr, int n){
|
||||
int i, temp;
|
||||
temp = *(arr+n-1);
|
||||
//1 2 3 4 5
|
||||
// 1 2 3 4
|
||||
for(i=n-1;i>0;i--){
|
||||
arr[i] = arr[i-1];
|
||||
}
|
||||
arr[0] = temp;
|
||||
}
|
||||
|
||||
void output(int *arr, int n){
|
||||
int i;
|
||||
for(i=0;i<n;i++){
|
||||
printf("%d ", *(arr+i));
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
int main(void){
|
||||
int n, i, m;
|
||||
int *num;
|
||||
|
||||
printf("请输入您需要输入的元素个数:");
|
||||
scanf("%d", &n);
|
||||
/*
|
||||
1 2 3 4 5 n=5 m = 2
|
||||
4 5 1 2 3
|
||||
*/
|
||||
num = (int *)malloc(sizeof(int)*n);//动态内存分配数组容量
|
||||
|
||||
printf("请输入%d个数字:", n);
|
||||
for(i=0;i<n;i++){
|
||||
scanf("%d", num+i);//遍历输入数组每一个元素
|
||||
}
|
||||
printf("移动前:");
|
||||
output(num, n);
|
||||
printf("请输入您需要移动的个数:");
|
||||
scanf("%d", &m);
|
||||
for(i = 0;i < m;i++){
|
||||
move(num, n);
|
||||
}
|
||||
printf("移动后:");
|
||||
output(num, n);
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
4、 写一函数,求一个字符串的长度。在main 函数中输入字符串,并输出其长度。
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
int getStrLen(char *str){
|
||||
int n=0;
|
||||
while(*str != '\0'){
|
||||
str++;
|
||||
n++;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
int main(void){
|
||||
|
||||
char str[100];
|
||||
gets(str);
|
||||
|
||||
printf("len=%d\n", getStrLen(str));
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
5、 写一函数,将一个3×3 的矩阵转置。
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
void revse(int (*num)[3]){
|
||||
int *start, *end;
|
||||
int temp;
|
||||
start = *num;//第一个数组的首个元素地址
|
||||
end = *(num+2)+2;//第三个数组的最后一个元素地址
|
||||
|
||||
while(start < end){
|
||||
temp = *start;
|
||||
*start = *end;
|
||||
*end = temp;
|
||||
start++;
|
||||
end--;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int main(void){
|
||||
|
||||
int num[3][3];
|
||||
int i, j;
|
||||
for(i=0;i<3;i++){
|
||||
for(j=0;j<3;j++){
|
||||
scanf("%d", *(num+i)+j);
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
revse(num);
|
||||
|
||||
|
||||
for(i=0;i<3;i++){
|
||||
for(j=0;j<3;j++){
|
||||
printf("%d ", *(*(num+i)+j));
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
6、 在主函数中输入10 个等长的字符串。用另一函数对它们排序。然后在主函数输出这10 个已排好序的字符串。
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
/*
|
||||
strcmp(字符串1, 字符串2); 比较两个字符串的大小 大于返回1 小于返回-1 等于返回0
|
||||
strcpy(字符串1, 字符串2); 复制两个字符串 字符串2->字符串1
|
||||
*/
|
||||
void sort(char (*strs)[100]){
|
||||
int i, j;
|
||||
char temp[100];
|
||||
for(i=0;i<10-1;i++){
|
||||
for(j=0;j<10-i-1;j++){
|
||||
if(strcmp(strs[j],strs[j+1]) > 0){
|
||||
strcpy(temp ,strs[j]);
|
||||
strcpy(strs[j], strs[j+1]);
|
||||
strcpy(strs[j+1], temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(void){
|
||||
char strs[10][100];
|
||||
int i;
|
||||
|
||||
for(i=0;i<10;i++){
|
||||
gets(*(strs+i));
|
||||
}
|
||||
sort(strs);
|
||||
printf("\n");
|
||||
for(i=0;i<10;i++){
|
||||
puts(*(strs + i));
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
7、 编一程序,打入月份号,输出该月的英文月名。例如,输入"3",则输出"March",要求用指针数组处理。
|
||||
1: January, 2: February, 3: March, 4: April, 5: May, 6: June, 7: July, 8: August, 9: September, 10: October, 11: November, 12: December
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(void){
|
||||
|
||||
//存着地址的数组 存储字符串的首地址的数组
|
||||
char *month[12] = {"January", "February", "March", "April",
|
||||
"May", "June", "July", "August", "September", "October",
|
||||
"November", "December"};
|
||||
int num;
|
||||
|
||||
printf("请输入月份数字形式:");
|
||||
scanf("%d", &num);
|
||||
printf("%s\n", *(month+num-1));
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
8、 写一函数完成查找串s2 在串s1 中第一次出现的位置。
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
int instr(char *dest, char *substr){
|
||||
int i=0, j;
|
||||
while(*(dest+i) != '\0'){
|
||||
j=0;//对子串匹配从首个开始
|
||||
while(*(substr+j)!='\0' && *(dest+i) == *(substr+j)){
|
||||
i++;
|
||||
j++;
|
||||
}//暴力查找主串中和子串相等的字符 到子串结尾或遇到不相同元素时退出循环
|
||||
if(j==0){//当前主串中没有和子串首元素相同的元素时 主串下标后移
|
||||
i++;
|
||||
}
|
||||
//匹配到子串结尾标记时代表找到首个子串
|
||||
if(*(substr+j) == '\0'){
|
||||
return i-strlen(substr)+1;
|
||||
}
|
||||
}
|
||||
return -1;//没有找到子串
|
||||
}
|
||||
|
||||
int main(void){
|
||||
char str[100];
|
||||
char substr[100];
|
||||
|
||||
gets(str);
|
||||
gets(substr);
|
||||
printf("%d\n", instr(str, substr));
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
9、 写一函数完成将无符号十进制整数转换成十六进制字符表示并存于字符串数组中。
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
void decimalToHex(int dec, char *hex){
|
||||
int i, j, temp, count=0;
|
||||
//i, j, temp 用来数组倒置
|
||||
//count 用来统计元素的个数
|
||||
while(dec){
|
||||
//模除十进制数字得余数后判断是否为数字 如果为 使用'0'加上该数之后存储为字符
|
||||
if(dec%16 < 10){
|
||||
*(hex+count++) = dec%16 + 48;
|
||||
}else{
|
||||
//得到A~F时,使用大写字符ASCALL值将其转换为字符
|
||||
*(hex+count++) = dec%16-10 + 65;
|
||||
}
|
||||
dec /= 16;
|
||||
}
|
||||
//数组元素的倒置
|
||||
i = 0;
|
||||
j = count - 1;
|
||||
while(i < j){
|
||||
temp = *(hex + i);
|
||||
*(hex + i) = *(hex + j);
|
||||
*(hex + j) = temp;
|
||||
i++;
|
||||
j--;
|
||||
}
|
||||
*(hex+count) = '\0';//标记结束符
|
||||
}
|
||||
|
||||
int main(void){
|
||||
int dec;//用来存储需要转换的十进制数字
|
||||
char hex[1000];//用来存储转换后的数字的
|
||||
printf("请输入一个数字:");
|
||||
scanf("%d", &dec);
|
||||
|
||||
decimalToHex(dec, hex);
|
||||
puts(hex);
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
10、 用指向指针的指针的方法对N 个整数排序并输出。要求排序单独写成一个函数。N 个整数和N 在主程序中输入,最后在主函数中输出。
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
void sort(int (*arr)[10]){
|
||||
int i, j, temp;
|
||||
for(i=0;i<10-1;i++){
|
||||
for(j=0;j<10-1-i;j++){
|
||||
if((*arr)[j]> (*arr)[j+1]){
|
||||
temp = (*arr)[j];
|
||||
(*arr)[j] = (*arr)[j+1];
|
||||
(*arr)[j+1] = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(){
|
||||
|
||||
//指针->数组 int (*变量名)[数组的元素个数]
|
||||
//数组指针 指向数组的指针
|
||||
int num[10];
|
||||
int i;
|
||||
|
||||
printf("请输入10个整数:");
|
||||
for(i = 0;i<10;i++){
|
||||
scanf("%d", num+i);
|
||||
}
|
||||
|
||||
sort(&num);
|
||||
for(i = 0;i<10;i++){
|
||||
printf("%d ", num[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
## 七、结构体与共用体
|
||||
|
||||
1.定义一个结构体其中包括: 职工号、职工名、性别、年龄、工资、地址。按结构体类型定义一个结构体数组, 从键盘输入每个结构体元素所需的数据,然后逐个输出这些元素的数据(可设数组只有三个元素)。
|
||||
|
||||
2.有一批图书,每本书有:书名(name),作者(author) , 编号(num),出版日期(date)四个数据,希望输入后按书名的字母顺序将各书的记录排列好,供以后查询。今输入一本书的书名,如果查询到库中有此书,打印出此书的书名,作者,编号和出版日期。如果查不到此书,则打印出“无此书”。
|
||||
|
||||
3.13 个人围成一圈,从第一个人开始顺序报号1、2、3。 凡报到“3”者退出圈子。找出最后留在圈子里的人原来的序号。
|
||||
|
||||
4.编写一个程序,输入n 个(少于10 个)学生的姓名、性别、 成绩、出生年月日及入学年月日,输出成绩在80 分以上的学生的姓名、性别、成绩、出生和入学的年份。
|
||||
|
||||
5.将上题改为“输出成绩在80 分以上的18 岁以下的女生的姓名、成绩、出生和入学的年份”,试编写程序实现之。
|
||||
|
||||
6.有10 个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入10 个学生数据,要求打印出三门课总平均成绩,以及最高分的学生的数据(包括学号、 姓名、三门课成绩、平均分数)。
|
||||
|
||||
7.设链表中每个结点包括学号、成绩、和指针三个字段, 试编程序打印出链表中第1,3,5,7...结点。
|
||||
|
||||
8.设链表中每个结点包括学号、成绩、和指针三个字段, 试编程序将大于平均成绩的各个结点打印出来。
|
||||
|
||||
9.设链表中每个结点包括学号、成绩、和指针三个字段, 试编程序将成绩最高的结点作为链表的第一个结点,成绩最低的结点作为尾结点。
|
||||
|
||||
10.建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。
|
||||
|
||||
## 八、文件
|
||||
|
||||
1.将10 个整数写入数据文件f3.dat 中,再读出f3.dat 中的数据并求其和。
|
||||
|
||||
2.一个以%5d 格式存放20 个整数的文件f4.dat,顺序号定为0~19。输入某一顺序号之后,读出相应的数据并显示在屏幕上。
|
||||
|
||||
3.将10 名职工的数据从键盘输入, 然后送入磁盘文件worker1. rec 中保存。设职工数据包括:职工号、职工名、性别、年龄、工资,再从磁盘调入这些数据,依次打印出来(用 fread 和fwrite 函数)。
|
||||
|
||||
4.将存放在worker1.rec 中的职工数据按工资高低排序,将排好序的各记录存放在worker2.rec 中(用 fread 和fwrite 函数)。
|
||||
|
||||
5.用scanf 函数从键盘读入 5 个学生数据(包括:学生名、学号、三门课程的分数),然后求出平均分数。用 fprintf 函数输出所有信息到磁盘文件stud.rec 中,再用fscanf 函数从 stud.rec 中读入这些数据并在显示屏上显示出来。
|
||||
|
||||
6.在文件 worker2.rec 中插入一个新职工的数据,并使插入后仍保持原来的顺序(按工资高低顺序插入到原有文件中),然后写入worker3.rec 中。
|
||||
|
||||
7.删除worker2.rec 中某个序号的职工记录,再存入原文件中(用fread 和fwrite 函数)。
|
||||
|
||||
8.有两个磁盘文件,各自存放已排好序的若干个字符(如a1. dat 中放"abort", a2.dat中放 "boy")要求将两个文件合并,合并后仍保持有序,存放在a3.dat 文件中。
|
||||
提示:可先将两个文件中的字符存入一个字符型数组中,而后对数组重新排序,再将该数组写入a3.dat文件中。
|
||||
如果不引入一个中间数组进行重新排序,该如何编程?
|
||||
|
||||
## 附加题
|
||||
|
||||
1.编程序求 5X+2Y+Z=50 的所有非负整数解。
|
||||
|
||||
2.有一长度不大于40 的字符串,已知其中包含两个字符“A”,求处于这两个字符“A”中间的字符个数,并把这些字符依次打印出来。
|
||||
|
||||
3.把25 个字母A、B 、C、··· 、X、Y 按如下要求打印出来:从最中间的字母M开始打印,然后一左一右依次打印出其它字母,即M,L,N,K,O,...。要求:初始化时按字母表顺序赋值。
|
||||
|
||||
4.编一个程序,把一批非零整数中的偶数、奇数的平均值分别计算出来。用零作为终止标记。
|
||||
|
||||
5.某单位排队形,开始排成3 路纵队,末尾多出了2 人。后改成5 路纵队,末尾又多出了3 人,最后改成7 路纵队,正好没有余数。编程序求出该单位至少有多少人。
|
||||
|
||||
6.将一个6×6 数组的第一行、第六行、主对角线和副对角线上的元素都存入1,其余的元素都存入-1。请编程序实现。
|
||||
要求:1)不许对数组初始化。
|
||||
2)尽量少用循环。
|
||||
|
||||
7.个位数是6,且能被3 整除的五位数共有多少个。
|
||||
|
||||
8.求100 至200 之间能同时被6 和8 整除的数,把这些数打印出来,并且打印这些数的和。
|
||||
|
||||
9.雨淋湿了一道算术题,9 个数字现在只能认清4 个(第一个数字虽模糊不清但肯定不是1):
|
||||
<img src="https://yp.smallkun.cn/markdown/image-20241130010005134.png!compress" alt="image-20241130010005134" style="zoom:50%;" />
|
||||
请编程序找出那些看不清的数字。
|
||||
|
||||
10.编程序计算下述函数在X=-7,-1,0,7 时的值。
|
||||
|
||||
11.判断一个给定的5×5 方阵是否以第3 列为轴线对称?
|
||||
|
||||
12.编写一个函数JOIN,让它实现字符串连接运算功能。
|
||||
|
||||
13.编写函数IND,让它判断一个字符串是否为另一个字符串的子串的功能,若是则返回第一次出现的起始位置,否则返回0。
|
||||
|
||||
14.编写一个函数,由参数传来一个字符串,分别求出此字符串中字母、数字和其它字符(不包括空格)的个数,输入和输出均由主函数实现。
|
||||
|
||||
15.已知某年不是闰年,给定该年某一天的月份和日期,求这一天是该年的第几天。
|
||||
|
||||
16.找规律,编程序打印6×6 的矩阵:
|
||||
1 2 3 5 8 13
|
||||
1 4 9 17 30 51
|
||||
1 6 19 45 92 173
|
||||
. . .
|
||||
|
||||
17.有人说在400,401,402,...499 这些数中4 这个数字共出现112 次,请编程序判定这种说法是否正确。若正确请打印出'YES',否则打印出'NO'及4 的出现次数。
|
||||
|
||||
18.设有8×8 的二维数组a,其中每个元素取值如下:
|
||||
当 i=j 时 a[i\][j\]=M (M 是你的学号)
|
||||
当 i<j 时 a[i\][j\]=i+j
|
||||
当 i>j 时 a[i\][j\]=i×j
|
||||
编程序求所有的数组元素之和。
|
||||
|
||||
19.找3 个数字,填在下面式子中,使等式成立。
|
||||
<img src="https://yp.smallkun.cn/markdown/image-20241130010139383.png!compress!compress" alt="image-20241130010139383" style="zoom:50%;" />
|
||||
① 若答案有多个,则打印一组即可;
|
||||
② 若无满足条件的数字,则显示'NO DIGITALS'。
|
||||
|
||||
20.某航空公司规定:在旅游旺季7─9 月份,若订票超过20 张,优惠票价的15%,20 张以下,优惠5%;在旅游淡季1─5 月、10 月、11 月份订票超过20 张,优惠30%,20 张以下,优惠20%;其余月份不优惠。请编程序能根据月份和旅客订票张数决定优惠率。
|
||||
|
||||
21.请编程序按如下格式打印一个直角三角形的九九乘法表:
|
||||
1 2 3 4 5 6 7 8 9
|
||||
4 6 8 10 12 14 16 18
|
||||
9 12 15 18 21 24 27
|
||||
16 20 24 28 32 36
|
||||
25 30 35 40 45
|
||||
36 42 48 54
|
||||
49 56 63
|
||||
64 72
|
||||
81
|
||||
|
||||
22.有一批实数,用零作终止标记。请编程序找出这批数中的最大值及最小值,并输出该最大值数是这批数中的第几个数(若最大值数多次出现,只打印出第一个的位置)。
|
||||
|
||||
23.有10 个两位整数,把这些数作以下变化,如果它是素数,则把它乘以2,若它是偶数则除以2,其余的数减1,请将变化后的10 个数按从小到大的次序打印出来。
|
||||
|
||||
24.已知有N 个无规律的正整数,请编程序求出其中的素数并打印出能被5 整除的数之积。
|
||||
|
||||
25.把一个偶数位的数从当中分开成为两个数,这两个数的和的平方等于原数。如(8+1)2=81,(20+25)2=2025。求10 至9999 之间满足这样条件的数是哪些? 共有多少个?
|
||||
|
||||
26.已知有9 个数,请求出这些数中的最大值、最小值及平均值,以及有多少个数等于平均值?
|
||||
|
||||
27.求二维数组中每行元素的平均值,不许引入其它的数组。
|
||||
|
||||
28.编程序计算函数
|
||||
<img src="https://yp.smallkun.cn/markdown/image-20241130010348202.png!compress" alt="image-20241130010348202" style="zoom:50%;" />
|
||||
的值。要求先将X 的各项系数先输入到数组B 中,然后再用循环结构求P(X)的值。
|
||||
|
||||
29.猜号码∶由随机函数产生一个1 至1000 之间的整数,让人猜之。计算机仅回答人猜的数大、小还是相等,当人猜对时,由计算机打印出人一共猜了几次。
|
||||
|
||||
30.编程序将一个正整数写成其它两个正整数的平方和,若不能成立时输出“NO”。
|
||||
例如
|
||||

|
||||
|
||||
31.将一个一维数组中的偶数依次交换。例如有8 个元素, 若其中第1、4、5 三元素是偶数时应按下图交换。
|
||||
<img src="https://yp.smallkun.cn/markdown/image-20241130010458976.png!compress" alt="image-20241130010458976" style="zoom:50%;" />
|
||||
|
||||
32.编程序将一个6×6 的二维数组左下三角部分全赋值为-1,右上三角全赋值为1,主对角线(行,列下标相同)上的元素送入2。把数组中的值按列对齐方式输出。
|
||||
要求: 不允许使用scanf 函数。
|
||||
|
||||
33.用随机函数求出10 组三位正整数,每组十个数,调用一函数打印出每组数,并编一函数求出每组中的最大数。
|
||||
|
||||
34.已知有三个数组A,B,C,A 为5 行5 列的二维数组,B、C 为只有5 个元素的一维数组,键盘输入数据的顺序如下:
|
||||
23,45,6,1,-3,4,5,233,456,0,3,56,78,-56,5,6,77,8,89,9,3,6,8,9,90
|
||||
请编写程序,求出A 的各行之和放至数组B 的相应元素中,求出数组A 的各列之和放至数组C 的相应元素之中。程序的输出部分要按下边形式显示:
|
||||

|
||||
|
||||
35.假设a-1 和a+1 是大于10 的素数,验证<img src="https://yp.smallkun.cn/markdown/image-20241130010624492.png!compress" alt="image-20241130010624492" style="zoom:67%;" /> 可被120 整除。编程序输入a 的值,判a-1 和a+1 是否为素数。若不是输出“NOTPRIME!”;若都是素数,再验证<img src="https://yp.smallkun.cn/markdown/image-20241130010624492.png!compress!compress" alt="image-20241130010624492" style="zoom:67%;" />是否可被120 整除。
|
||||
|
||||
36.有n 个整数,编程序将前面的各个数依次向后移动k 个位置,最后k 个数移到最前边的k 个位置(见下图,其中n=8,k=3)。
|
||||
<img src="https://yp.smallkun.cn/markdown/image-20241130010716416.png!compress!compress" alt="image-20241130010716416" style="zoom:50%;" />
|
||||
思考: 程序中不许引入其它数组。
|
||||
|
||||
37.将一个数M 分解为质因数(M≠0)。
|
||||
|
||||
38.将一个整数(最多是10 位数)从低位到高位打印出来,如该数是12345 时,输出应是54321(只占一行)。
|
||||
|
||||
39.写一个函数比较两个字符串,如果s1=s2,则返回值0;如果s1>s2,则返回值1;如果s1<s2, 则返回-1。
|
||||
|
||||
40.求n!的末尾有多少个零。可以通过检查n!含有多少个10 的因数来求它末尾零的个数。因为10=2×5,在n!中含有2 的因数显然多于含有5 的因数。一种求n!中5 的因数的个数的算法如下:
|
||||
1)输入正整数n;
|
||||
2)0=>k, n=>m;
|
||||
3)若m<5,转第5 步,否则执行第4 步;
|
||||
4)m/5(取整)=>m, k+m=>k, 转第3 步;
|
||||
5)输出k(n!末尾零的个数)。
|
||||
|
||||
41.分别输入N 和M 个数到数组A 和数组B 中。把只在其中一个数组中出现的那些数送入到数组C 中,并指出它们在A 或B 数组中的位置。
|
||||
|
||||
42.用记录来描述一个学生的成绩情况,内容包括:姓名、学号、数学成绩和PASCAL成绩。要求对一个小组的10 个学生的成绩进行统计处理:
|
||||
1)计算学生的总平均分,并按平均分高低排出名次,打印出姓名。
|
||||
2)打印出90 分以上和不及格者的名字。
|
||||
要求用子程序来完成。
|
||||
|
||||
43.已知M1 是3×5 的矩阵, M2 是5×2 的矩阵, 编程序求出M1 与M2 之积。
|
||||
|
||||
44.百马百瓦问题。有100 匹马,100 块瓦,大马驮3 块,小马驮2 块,两个马驹驮1块。问大马、小马、马驹各多少?
|
||||
要求:① 不许用for 循环; ② 循环次数尽量少。
|
||||
|
||||
45.找规律填写N×N 方阵。如N=8 时, 其方阵为:
|
||||
<img src="https://yp.smallkun.cn/markdown/image-20241130011036567.png!compress" alt="image-20241130011036567" style="zoom:50%;" />
|
||||
|
||||
46.插入排序。许多玩牌的人是以这样的方式来对他们手中的牌进行排序的:设手中原有3张牌已排好序,抓1 张新牌,若这张新牌的次序在原来的第2 张牌之后,第3 张牌之前,那么就把这张新牌放在第3 张牌的位置上,原来的第3 张改为第4 张, 然后再抓新牌。按着这个算法,编写一个排序程序。
|
||||
注:开始一张牌也没有,从第一张牌开始抓起。
|
||||
|
||||
47.求N 阶方阵(即N×N 数组)中各条反斜线上的元素之和。如4×4 数组共有7 条反斜线:
|
||||

|
||||
|
||||
48.自然数N 一般写成如下形式:
|
||||

|
||||
如果<img src="https://yp.smallkun.cn/markdown/image-20241130011207358.png!compress" alt="image-20241130011207358" style="zoom:50%;" />>di (i=k-1,k-2,...,1),则称N 是严格降序数;如果<img src="https://yp.smallkun.cn/markdown/image-20241130011207358.png!compress!compress" alt="image-20241130011207358" style="zoom:50%;" /><di (i=k-1,k-2,...,1),则称N 是严格升序数;如果<img src="https://yp.smallkun.cn/markdown/image-20241130011232509.png!compress" alt="image-20241130011232509" style="zoom:50%;" />=di (i=k-1,k-2,...,1),则称N 是等序数;此外,则称N是无序数。例如, 4321 是严格降序数,1234 是严格升序数,2222 是等序数,1243 是无序数。从键盘上输入一个大于9 的整数N,判它属于上述哪一类。
|
||||
|
||||
49.用简单迭代法解方程 <img src="https://yp.smallkun.cn/markdown/image-20241130011311960.png!compress" alt="image-20241130011311960" style="zoom:50%;" />它有两个根(如图),其迭代公式为:
|
||||

|
||||
注:本程序中选取初值<img src="https://yp.smallkun.cn/markdown/image-20241130011341115.png!compress" alt="image-20241130011341115" style="zoom:50%;" /> 不同时,要分别使用公式1 或公式2 迭代,得原方程<0 或>0
|
||||
的解。(公式由来略)
|
||||
|
||||
50.洗扑克牌。将54 张牌分别编号为1,2,…,54 号,并放在数组M 中。洗牌方法如下:产生[1,54]区间内的一个随机数K,将M[1]与M[K]交换;然后产生[2,54]之间的随机整数K,让M[2]与M[K]交换;…,直到剩下最后一张牌为止。请编写实现上述洗牌的程序。
|
||||
|
||||
51.有N 张牌,计算机和你轮流取牌,每次只能取 1─2 张,谁最后取完谁胜利。编写完成此功能的程序。
|
||||
要求:
|
||||
1)让计算机先取。
|
||||
2)你取的张数由键盘输入。
|
||||
3)计算机第一次取牌时由键盘输入来确定是取1 还是取2,以后它再取牌时由程序
|
||||
判断来决定取几张牌。
|
||||
|
||||
52.已知A 是有30 个元素的整型数组,编写一个对A[I1]到A[I2](I1≤I2)之间的元素排序的函数(从大到小排序)。请调用上述函数先将A[5]至A[20]之间的元素排序,然后将A中的所有元素值输出。再调用上述函数对A[15]至A[30]之间的元素排序,最后再将A 中30 个元素值输出。
|
||||
要求:1) 输入输出均由主函数实现。
|
||||
2)输出时每10 个元素占1 行。
|
||||
|
||||
53.编程序求3 至39 之间满足下列条件的各组素数:每组有3 个素数,第2 个比第一个大2,第3 个比第2 个大4。例如 5,7,11 就是满足条件的一组。
|
||||
要求:1) 不许使用数组。
|
||||
2)打印满足条件的各组素数。
|
||||
3)求出满足条件的素数共有多少组。
|
||||
|
||||
54.已知N 是正整数, 它可拆写成三个正整数N1、N2和N3 之和的形式N=N1+N2+N3。请编程序打印出满足上式的全部组合,并当N1、N2 和N3 中至少有两个是素数时打印“YES”否则打印“NO”。
|
||||
<img src="https://yp.smallkun.cn/markdown/image-20241130011603125.png!compress" alt="image-20241130011603125" style="zoom:50%;" />
|
||||
|
||||
55.编写程序,按照 1,2, ... , 28 的顺序填一个7×7 数组的左上角,程序的输出结果为:
|
||||

|
||||
|
||||
56.二维数组排序。设有4×5 的数组M,通过排序使M[1\][1\]≤M[1\][2\]≤...≤M[1\][5\]≤M[2\][1\]≤M[2\][2\]≤...≤M[2\][5\]≤...≤M[4\][1\]≤M[4\][2\]≤...≤M[4\][5\]。排序时不允许引入其它数组。
|
||||
|
||||
57.编写将一个十进制数M 转化成N 进制数(2≤N≤16)的程序。提示:转化成N 进制数的各位数可以分别放在数组的各个元素中。
|
||||
注意:进制N 超过10 时, 用A 表示10,B 表示11,…,F 表示15。
|
||||
|
||||
58.在主函数中输入10 个不等长的字符串,用另一函数对它们排序。然后在主函数中输出这10 个已排好序的字符串,用指针数组完成。
|
||||
|
||||
59.建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,将此结点删除,输出最后的链表。
|
||||
|
||||
60.有两个链表a和b。设结点中包含学号、姓名。从a链表中删除与b链表中有相同学号的那些结点。
|
||||
@@ -1,254 +0,0 @@
|
||||
1.输入一小写字母,分别以字符形式与数值形式输出与该小写字母相应的大写字母
|
||||
```sql
|
||||
//输入一小写字母,分别以字符形式与数值形式输出与该小写字母相应的大写字母
|
||||
#include<stdio.h>
|
||||
int main(void)
|
||||
{
|
||||
char c;
|
||||
scanf("%c",&c);
|
||||
if(c>='a'&&c<='z')
|
||||
printf("%c\n",c-32);
|
||||
else
|
||||
printf("%c\n",c+32);
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
2.输入一个华氏温度,要求输出摄氏温度。公式为c=5/9*(f-32)
|
||||
|
||||
3.写一个程序,输入实数X,输出Y,计算
|
||||
<img src="https://yp.smallkun.cn/markdown/image-20250116004443767.png!compress" alt="image-20250116004443767" style="zoom:33%;" />
|
||||
|
||||
4.编写程序:读入三个整数a,b,c,然后交换它们中的数,使a存放b的值,b存放c的值,c存放a的值。
|
||||
|
||||
5.编写程序:输入9时23分并把它化为分钟后输出。(从零点整开始计算)。
|
||||
|
||||
6.要将“Chiina”翻译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“ A”后面的4个字母是“E”,用“E”代替“A”。因此,“Chian”应译成“Glmre”。用赋初值的方法 是c1,c2,c3,c4,c5五个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,使c1、c2、 c3、c4、c5分别为‘G’、‘l’、‘m’、‘r’、‘e’,并输出
|
||||
|
||||
7.编写程序,用getchar函数读入两个字符c1,c2,然后分别用putchar函数和prinf函数输出这两个字符以 及它们的ASCII值。
|
||||
|
||||
8.设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积
|
||||
|
||||
9.编写程序,输入两个整数 ,计算并输出它们的和、差、积、除(精确除)、整除及模的结果。
|
||||
|
||||
10.编一程序,对于一个给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上为ˊAˊ,80~89 分为ˊBˊ,70~79分为ˊCˊ,60~69分为ˊDˊ,60分以下为ˊEˊ。
|
||||
|
||||
11.输入3个整数,要求按由小到大的顺序输出
|
||||
|
||||
12.输入4个数,输出其中的最大数和最小数。
|
||||
|
||||
13.有以函数y=x(x<1);2x-1(1<=x<10);3x-11(x>=10).写一程序,输入x,输出y.
|
||||
|
||||
14.给定一个不多于5的正整数,要求:(1)求它是几位数;(2)分别打印出每一位数字(3)按逆序打 印出各位数字.
|
||||
|
||||
15.编写程序,要求输入整数a和b.若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数之和。
|
||||
|
||||
16.根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角形的类型
|
||||
|
||||
17.判断输入的正整数是否既是5又是7的整倍数。若是,则输出yes,否则输出no
|
||||
|
||||
18.输入4个整数,求4个数中的偶数之和.
|
||||
|
||||
19.输入4个整数,求4个数中的奇数之和
|
||||
|
||||
20.假设奖金税率如下(a代表奖金,r代表税率)a<500 r=0%;500<=a<1000 r=5%;1000<=a<2000 r=8%;2000<=a<3000 r=10%;3000<=a r=15%编写程序用if语句实现:对输入的一个资金数,求税率和应交税款以及实际奖金数(扣除奖金税后)。
|
||||
|
||||
21.输入一个字符,如果是大写字母,转换为小写,如果不是不转换。最后输出。
|
||||
|
||||
22.键盘上输入三角形三边a,b,c 的值,计算三角形面积,并输出三角形的三边a,b,c及面积area的值。三 角形面积的公式:s=(a+b+c)/2 area=sqrt[s(s-a)(s-b)(s-c)].
|
||||
|
||||
23.编写一个程序,根据用户输入的一个字母判定它是星期几。要求用switch语句实现程序控制,当第一个字母相同时,如:T(t)uesday 和T(t)hursday故需要进一步输入U或u或H或h确认。
|
||||
|
||||
24.编写一个程序:输入某年某月,判断这一月有多少天?
|
||||
|
||||
25.从键盘上输入字母或0~9的数字,编写程序对其进行分类。字母可分为大写字母和小写字母,数字可分 为奇数和偶数。
|
||||
|
||||
26.编写程序:加密数据,方法:对给定数值,每一位数字均加2,且在[0,9]范围内,若加密后某位数字 大于9,则取其被10除的余数.
|
||||
|
||||
27.编写程序:计算从1995年1月1日至2000年12月10日共有多少天。闰年的2月有29天.闰年满足如下条件 :能被400整除或能被4 整除但不能被100整除。
|
||||
|
||||
28.编程求解一元二次方程 ax2+bx+c=0的根。
|
||||
|
||||
29.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
|
||||
|
||||
31.已知abc+cba=1333,其中a、b、c均为一位数,编写一个程序求出a、b、c分别代表什么数字。
|
||||
|
||||
32.鸡兔共有30只,脚共有90只,编写一程序计算鸡兔各有多少只。
|
||||
|
||||
33.输入两个正整数m和n,求其最大公约数和最小公倍数.
|
||||
|
||||
34.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。见87题
|
||||
|
||||
35.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程:找出1000以内的所 有完数。
|
||||
|
||||
36.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩 下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再 吃时,见只剩下一个桃子了。求第一天共摘了多少.
|
||||
|
||||
37.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和.
|
||||
|
||||
38.编写一个程序显示ASCII码65~90(十进制)的字符对照表。并输出6个数换一行。
|
||||
|
||||
39.已知xyz+yzz=532,其中x、y、z都是数字,编写一个程序求出x、y、z分别代表什么数字。
|
||||
|
||||
40.已知四位数a2b3能被23整除,编写一程序求此四位数。
|
||||
|
||||
41.输入n,计算s=1+1+2+1+2+3+1+2+3+4+...+1+2+3+4+...+n
|
||||
|
||||
42.从两个红球,三个白球,四个黑球中任意取出五个球,且其中必有白球,编写程序输出所有可能方案
|
||||
|
||||
43.花数”是指一个三位数,其各位数字立方和等于该数。
|
||||
|
||||
44.编写一程序:求1-3+5-7+…-99+101的值。
|
||||
|
||||
45.编写一程序:输入一个正偶数n,将其分解成两个素数之和。
|
||||
|
||||
46.编写程序,从键盘输入6名学生的5门成绩,分别统计出每个学生的平均成绩。
|
||||
|
||||
47.编程在屏幕上输出具有7行的正三角形。
|
||||
|
||||
48.若用0至9之间不同的三个数构成一个三位数,编写一个程序统计出共有多少种方法。
|
||||
|
||||
49.编程输出100—200之间第一个能被3整除的之前的所有整数。
|
||||
|
||||
50.把100—200之间的不能被3整除的整数输出。
|
||||
|
||||
51.求输入的10个整数中正数的个数以及其平均值。
|
||||
|
||||
52.求出1000以内的所有素数,要求一行输出30个。
|
||||
|
||||
53.有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?。
|
||||
|
||||
54.4位反序数:设N是一个四位数,它的9倍恰好是其反序数,求N.
|
||||
|
||||
55.有限5位数:个位数为6且能被3整除的五位数共有多少?
|
||||
|
||||
56.编写一程序计算1到正整数n之间的奇数之和以及偶数之和。
|
||||
|
||||
57.编写一程序计算100到1000之间有多少个数其各位数字之和是5。
|
||||
|
||||
58.学校有近千名学生,在操场上排队,5人一行余2人,7人一行余3人,3人一行余1人,编写一程序求该 校的学生人数。
|
||||
|
||||
59.编写一程序实现从键盘输入10个数,找到第一个能被7整除的数。若,找到,打印此数后退出循环;若 未找到,打印“not exist”。
|
||||
|
||||
60.编写一程序:计算用一角、二角和五角凑成一元有多少种组合,并打印输出每种组合。
|
||||
|
||||
61.在数组a中按照顺序查找值为y的元素。若数组a中不存在该元素,则输出不存在;若存在这样的元素,则显示元素的下标,以及元素的总个数 见实验指导书P60必做题1。
|
||||
|
||||
62.数组中存放N个元素,编写程序删除掉下标为奇数的元素,使得数组中只存放下标为偶数的元素。.
|
||||
|
||||
63.数组s中存放有N个同学的某一门功课的成绩。要求编写程序,求出有多少个同学的成绩高于此门功课的平均分。
|
||||
|
||||
64.输入一个3行3列矩阵的所有元素,求该矩阵周边各元素的和。 见实验指导书P65必做题1。
|
||||
|
||||
65.判定一个字符串是否是回文串。(所谓回文串是指从开头读和从末尾读均为相同字符的字符串。例如:abcdcba。 见实验指导书P71必做题1。
|
||||
|
||||
66.读入一个字符串,要求将该字符中所有字符按照递增的顺序进行排序(采用冒泡排序算法)后输出。
|
||||
|
||||
67.编程将两个字符串连接起来,不准使用strcat函数。
|
||||
|
||||
68.有10个字符串,找出每个字符串中最大字符,并按顺序放入一维数组a[10]中,即第i个字符串中最大字符放入a[i]中,输出a[i]数组。
|
||||
|
||||
69.编程将任意十进制数转化成N进制。
|
||||
|
||||
70.设数组a中的元素均为正整数,编程求a数组中偶数的个数和偶数的平均值。
|
||||
|
||||
71.数组a包括10个整数,把a中所有的后项除以前项之商取整后存入数组b,并按每行3个元素的格式输出数组b.试编程。.
|
||||
|
||||
72.编程:从键盘输入一个字符串a,并在a串中的最大元素后边插入字符串b
|
||||
|
||||
73.输入一个正整数,按逆序输出各位的数字。
|
||||
|
||||
74.将二维数组行列元素互换,存到另一个数组中。
|
||||
|
||||
75.有一个3*4矩阵,求最大元素值及其行、列号。
|
||||
|
||||
76.有10个字符串,找出每个字符串中最大字符,依次存入一维字符数组a中,即第i个字符串中的最大字符放入a[i]中,输出数组a 同题68
|
||||
|
||||
77.设数组a中的元素均为正整数,编程求a数组中偶数的个数和偶数的平均值 同题70
|
||||
|
||||
78.编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中。不得使用strcpy函数。拷贝时,‘\0‘也要拷贝过去。
|
||||
|
||||
79.将一个字符串中下标值为偶数的元素由小到大排序,其它元素不变。
|
||||
|
||||
80.使用二维数组打印杨辉三角形
|
||||
|
||||
81.从键盘输入一个二维整型数组,如a[4\][4\]={ 1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4},试编程检查一个二维数组是否对称(即对所有i,j都有a[i\][j\]=a[j\][i\])。
|
||||
|
||||
82.输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数.
|
||||
|
||||
83.将字符串S中所有下标为奇数的位置上的字母大小写互换。
|
||||
|
||||
84.求矩阵a和b的和,结果存入矩阵c中并按矩阵形式输出。
|
||||
|
||||
85.有5个同学,每个同学有4门功课的考试成绩,求每人的平均成绩和每门功课的平均成绩。要求只用一个2维数组完成;
|
||||
|
||||
86. 编写一程序完成字符串处理函数(strcat字符串连接函数功能,不允许使用strcat函数实现),即连接两字符串a,b,将字符串b中字符连接到字符串a后成为一个字符串。(要求两字符串a,b 在主函数中输入,连接部分编写一函数完成,结果由主函数输出完成。)
|
||||
|
||||
87.编写函数统计字符串中字母、数字、空格和其他字符的个数。(要求在主函数中输入字符串以及输出上述结果,子函数完成统计功能。)
|
||||
|
||||
88.采用函数的方法实现“冒泡法”排序对输入的10个字符按从小到大的顺序进行排列。(要求在主函数中输入字符并输出排序结果。提示:字符从键盘接收到后放入数组中存放,数组名作为函数参数。)
|
||||
|
||||
89.编写一函数将一十进制数转换成2进制数并按顺序输出。(要求在主函数中输入此十进制数,由子函数进行转换并把结果传递给主函数。)
|
||||
|
||||
90.编写一程序实现:输入年、月、日,计算出该日是该年的第多少天。(要求在主函数中输入数据,计算过程由函数完成并将最后结果返回主函数输出。)
|
||||
|
||||
91.使用函数实现求n的阶乘。(主函数输入数据n,子函数求出阶乘的值并返回给主函数) 见实验指导书P80必做题第2题。
|
||||
|
||||
92.使用函数求两个整数的最大公约数和最小公倍数。(主函数输入两个数,子函数gongyue( )用来求最大公约数,子函数gongbei( )用来求最小公倍数) 见实验指导书P81选做题第1题。
|
||||
|
||||
93.使用函数求某长整型数据的各位数字之积。(主函数输入长整型数据,子函数func( )分离出各位数字,并将乘积返回给主函数) 见实验指导书P83选做题第3题。
|
||||
|
||||
94.使用函数求3名同学5门课的平均成绩。(主函数输入3名同学5门课的成绩,子函数计算出某名同学5门课的均分并返回给主函数)
|
||||
|
||||
95.使用函数实现字符串的颠倒存放操作。(主函数中使用字符串处理函数实现字符串的输入,子函数实现字符串的颠倒操作,使用字符串名作为函数参数。注意:应实现字符串的颠倒存放,而不是逆序输出)
|
||||
|
||||
96.子串删除。函数delete(s,i,n)实现从字符串s中删除下标为i的字符开始的n个字符。(主函数实现全局字符数组s和全局变量i、n的输入,并假设i 、n和i+n的值都小于字符串的
|
||||
|
||||
长度)
|
||||
|
||||
97.输入一字符串,如果该字符串中含有字符’s’,则返回该字符串的最后一个字符,否则输出“no”。(主函数输入一行字符,子函数getline( )的作用是判断是否含有’s’,返回最后一个字母或输出“no”。)
|
||||
|
||||
98.使用函数求解一元二次方程的根,方程的系数由主函数输入得到,并且设a、b均不等于0。
|
||||
|
||||
99.编写一程序完成字符串处理函数(strcpy字符串复制函数功能,不允许使用strcpy函数实现),即将字符串a的内容完整的复制到字符串b中(连同字符串a中’\0’也要复制)。(要求字符串a内容在主函数中输入,复制部分编写一函数完成,结果由主函数输出完成。)
|
||||
|
||||
100.编写一程序完成对于一个大于等于3的正整数,判断它是不是一个素数(要求数据由主函数输入,判断部分编写一函数实现,结果由主函数输出完成。)
|
||||
|
||||
101.编写一程序将一包含n个字符的字符串中从第m个字符开始的全部字符复制到另外一个字符串(n>m)。(要求数据由主函数输入,复制部分编写一函数实现,复制后结果由主函数输出完成。)
|
||||
|
||||
102.使用函数实现华氏温度向摄氏温度的转换,转换公式如下:C=(5/9)*(F-32),其中C为摄氏温度,F为华氏温度。(子函数实现温度转化,并将结果返回给主函数).见实验指导书P79必做题第1题。
|
||||
|
||||
103.写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。.
|
||||
|
||||
104.用函数实现一些程序:计算10个学生的1门课程成绩的平均值.. 见实验指导书P85必做题第1题。
|
||||
|
||||
105.有15个数按由大到小顺序存放在一个数组int a={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}中,输入一个数用顺序查找法找出该数是数组中的第几个元素的值(元素下标值),若该数不在数组中则打印“无此数”。 (要求数据由主函数输入,查找部分编写一函数实现,结果由主函数输出完成。)
|
||||
|
||||
106.定义一个带参数的宏,完成从四个数中找出最大数的操作。
|
||||
|
||||
107.根据已知算法定义一个带参数的宏,用来判别程序中输入的年份是否闰年。
|
||||
|
||||
108.试定义一个带参数的宏swap(x,y),以实现两个整数之间的交换,并利用它将一维数组a和b的所有元素的值进行交换。
|
||||
|
||||
109.输入两个整数,求它们相除的余数.用带参数的宏来实现,编程序.
|
||||
|
||||
110.定义两个带参数的宏,一个用来求S(s=1/2(a+b+c)),另个用来求area(area为三角形的面积)。写程序,在程序中用带实参的宏名来求面积area。
|
||||
|
||||
111.已知字符串S中的内容为“Student!”,请用指针的方法将S中的内容逆序输出,且不能改变串中的内容。
|
||||
|
||||
112.输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符个数。(要求用指针实现)。
|
||||
|
||||
113.通过指针操作,将输入的3个字符串,按由大到小的顺序输出。
|
||||
|
||||
114.定义整型数组a,有10个元素,用指针实现数组中的全部元素的输出.
|
||||
|
||||
115.编一程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串。请用指针完成。
|
||||
|
||||
116.利用指针编写一程序,将字符串中的第m个字符开始的全部字符复制成另一个字符串。要求在主函数中输入字符串及m的值并输出复制结果,在被调函数中完成复制。
|
||||
|
||||
117.用指针法实现:输入10个数,按由小到大的顺序输出。
|
||||
|
||||
118.用指针法实现:写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度值。
|
||||
|
||||
119.从键盘输入10个学生的成绩,显示其中的最高分、最低分和平均分。用指针实现。
|
||||
|
||||
120.数组中存放N个元素,编写程序删除掉下标为奇数的元素,使得数组中只存放下标为偶数的元素。用指针实现。
|
||||
Binary file not shown.
@@ -0,0 +1,33 @@
|
||||
#include <stdio.h>
|
||||
|
||||
/*
|
||||
if(条件){
|
||||
复合语句(条件为真时执行)
|
||||
}else{
|
||||
复合语句(条件为假时执行)
|
||||
}
|
||||
*/
|
||||
int main(void){
|
||||
|
||||
int x, y, z, t;//定义三个整型变量
|
||||
//数据类型 变量名1, 变量名2;
|
||||
scanf("%d%d%d", &x, &y, &z);
|
||||
if(x > y){
|
||||
t = x;
|
||||
x = y;
|
||||
y = t;
|
||||
}//实现x和y比较 大数放y位置
|
||||
if(y > z){
|
||||
t = y;
|
||||
y = z;
|
||||
z = t;
|
||||
}//实现y和z比较 大数放z位置 z为三个数字中最大数
|
||||
if(x > y){
|
||||
t = x;
|
||||
x = y;
|
||||
y = t;
|
||||
}
|
||||
printf("%d %d %d\n", x, y, z);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void){
|
||||
|
||||
|
||||
int a;
|
||||
|
||||
scanf("%d", &a);
|
||||
printf("该数的位数为%d\n",
|
||||
(a/10==0?1:(a/100==0?2:(a/1000==0?3:(a/10000==0?4:5)))));
|
||||
printf("%d", a%10);
|
||||
if(a%100/10 != 0){
|
||||
printf("%d", a%100/10);
|
||||
}
|
||||
if(a%1000/100 != 0){
|
||||
printf("%d", a%1000/100);
|
||||
}
|
||||
if(a%10000/1000 != 0){
|
||||
printf("%d", a%10000/1000);
|
||||
}
|
||||
if(a/10000 != 0){
|
||||
printf("%d", a/10000);
|
||||
}
|
||||
printf("\n");
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void){
|
||||
|
||||
float a, b, result;
|
||||
int flag;
|
||||
printf("请输入两个数字:");
|
||||
scanf("%f %f", &a, &b);
|
||||
printf("请输入您要进行的操作(1.做加法 2.做乘法 3.做除法):");
|
||||
scanf("%d", &flag);
|
||||
switch(flag){
|
||||
case 1:result = a+b;break;
|
||||
case 2:result = a*b;break;
|
||||
case 3:result = a/b;break;
|
||||
}
|
||||
printf("结果为%f\n", result);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void){
|
||||
|
||||
int year, month, day, days=0;
|
||||
|
||||
scanf("%d-%d-%d", &year, &month, &day);
|
||||
days+=day;
|
||||
//1 3 5 7 8 10 12
|
||||
//从前一个月开始依次
|
||||
switch(month-1){
|
||||
case 11:days+=30;
|
||||
case 10:days+=31;
|
||||
case 9:days+=30;
|
||||
case 8:days+=31;
|
||||
case 7:days+=31;
|
||||
case 6:days+=30;
|
||||
case 5:days+=31;
|
||||
case 4:days+=30;
|
||||
case 3:days+=31;
|
||||
case 2:days+=28;
|
||||
case 1:days+=31;
|
||||
}
|
||||
if(month>3 && (year%4==0&&year%100!=0 || year%400==0)){
|
||||
days++;
|
||||
}
|
||||
printf("%d\n", days);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
/*
|
||||
1.解决字符的循环输入
|
||||
while((ch=getchar())!='\n')
|
||||
|
||||
2.判断字符类型
|
||||
ASCALL码范围
|
||||
|
||||
*/
|
||||
int main(){
|
||||
|
||||
char ch;
|
||||
int l, d, o;//l字母的个数 d为数字个数 o为其他字符个数
|
||||
l=d=o=0;
|
||||
while((ch=getchar()) != '\n'){
|
||||
if(ch >= 'a' && ch<='z' || ch >= 'A' && ch<='Z' ){
|
||||
l++;
|
||||
}else if(ch >= '0' && ch <= '9'){
|
||||
d++;
|
||||
}else{
|
||||
o++;
|
||||
}
|
||||
}
|
||||
printf("字母个数:%d 数字个数:%d 其他个数%d\n", l, d, o);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
int x;
|
||||
while(1){
|
||||
scanf("%d", &x);
|
||||
if(x == 0){
|
||||
break;
|
||||
}
|
||||
printf("%d:%s\n", x, (x%5==0&&x%7==0?"Yes":"No"));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
暴力求解+枚举每一个台阶
|
||||
for(i=0;i<1000;i++){
|
||||
|
||||
}
|
||||
i=0;
|
||||
while(i<1000){
|
||||
|
||||
i++;
|
||||
}
|
||||
&& || !
|
||||
表达式1&&表达式2
|
||||
左右都为真才为真
|
||||
短路运算 表达式1为假 表达式2直接不运算 直接为假
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
int i;
|
||||
for(i=0;i<1000;i++){
|
||||
if(i%2==1 && i%3==2 && i%5==4 && i%6==5 && i%7==0){
|
||||
printf("台阶数为%d\n", i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
#include <stdio.h>
|
||||
/*
|
||||
大马:i
|
||||
中马:j
|
||||
小马:k
|
||||
*/
|
||||
|
||||
int main(){
|
||||
int i, j , k;
|
||||
for(i=0;i<=33;i++){
|
||||
for(j=0;j<=50;j++){
|
||||
for(k=0;k<=200;k+=2){
|
||||
if(i+j+k==100 && i*3 + j*2 + k/2 == 100){
|
||||
printf("大马:%-2d 中马:%-2d 小马:%-2d\n", i, j, k);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
|
||||
int i, s, t;//i用来遍历所有数, s用来存储数的位数,t是截取掉最高位之后的数
|
||||
for(i=1;i<9999;i++){
|
||||
t = i;
|
||||
while(t > 0){
|
||||
s = (t/10==0?1:(t/100==0?2:(t/1000==0?3:4)));//求出这个数字位数
|
||||
t = i%(int)pow(10, s-1);//使用模除去掉最高位
|
||||
if(t*t == i){
|
||||
printf("%d:%d\n", t, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
/*
|
||||
int x, n, t=1;//t为2当前需要加入的位置
|
||||
|
||||
scanf("%d", &x);
|
||||
n = x;//处理之后数
|
||||
while(t < x){//判断位置是否超过的数的范围
|
||||
n+=t*2;
|
||||
//根据当前输入位置判断前一位是否溢出如果溢出则减一
|
||||
if(n/(t*10) != x/(t*10)){
|
||||
n-=(t*10);
|
||||
}
|
||||
t*=10;//继续处理下一位
|
||||
}
|
||||
printf("%d:%d\n", x, n);
|
||||
*/
|
||||
int x, s = 0;
|
||||
scanf("%d", &x);
|
||||
while(x){
|
||||
s*=10;
|
||||
s += (x%10+2)%10;
|
||||
x /= 10;
|
||||
}
|
||||
for(;s;s/=10){
|
||||
printf("%d", s%10);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
|
||||
int i;
|
||||
for(i=5;i<=100;i++){
|
||||
if(i%5==0 || i%7==0){
|
||||
printf("%d ", i);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
|
||||
int month, total = 2, i;
|
||||
scanf("%d", &month);
|
||||
|
||||
for(i=1;i<=month;i++){
|
||||
if(i%3==0){
|
||||
total *= 2;
|
||||
}
|
||||
printf("%d月:%d个数\n", i, total);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
int i, j, k;
|
||||
|
||||
for(i=0;i<=3;i++){
|
||||
for(j=1;j<=5;j++){
|
||||
for(k=0;k<=6;k++){
|
||||
if(i+j+k==8){
|
||||
printf("ºì:%d °×:%d ºÚ:%d\n", i, j, k);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
int num, n=2, first = 1;
|
||||
scanf("%d", &num);
|
||||
|
||||
printf("%d=",num);
|
||||
while(num > 1){
|
||||
if(num%n==0){
|
||||
first?printf("%d", n):printf("*%d", n);
|
||||
first=0;
|
||||
num/=n;
|
||||
}else{
|
||||
n++;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
int num[30], i, j;
|
||||
float result[6];
|
||||
for(i=0;i<30;i++){
|
||||
num[i] = 2+2*i;
|
||||
}
|
||||
|
||||
for(i=0;i<30;i+=5){
|
||||
result[i/5] = (num[i]+ num[i+1] + num[i+2] + num[i+3] + num[i+4])/5.0;
|
||||
}
|
||||
|
||||
for(i=0;i<6;i++){
|
||||
printf("%.2f ", result[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int fib(int n){
|
||||
if(n== 0 || n==1){
|
||||
return 1;
|
||||
}
|
||||
return fib(n-1) + fib(n-2);
|
||||
}
|
||||
|
||||
int main(){
|
||||
int num[15], i;
|
||||
|
||||
for(i=0;i<15;i++){
|
||||
num[i] = fib(i);
|
||||
}
|
||||
|
||||
for(i=0;i<15;i++){
|
||||
printf("%d ", num[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
int main(){
|
||||
int num[15] = {1, 1}, i;
|
||||
|
||||
for(i=2;i<15;i++){
|
||||
num[i] = num[i-1] + num[i-2];
|
||||
}
|
||||
for(i=0;i<15;i++){
|
||||
printf("%d ", num[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
*/
|
||||
@@ -0,0 +1,30 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
int main(){
|
||||
char a[200], b[200];//定义两个字符数组用来读取字符串a和b
|
||||
char *p, *q;//定义两个指针 分别存储字符串a和字符串b的首地址
|
||||
|
||||
gets(a);
|
||||
gets(b);//从控制台获取输入
|
||||
if(strlen(b) > 5){
|
||||
b[5] = '\0';
|
||||
}//判定字符串是否大于5 如果大于5 则将第六个元素改成结束符
|
||||
p = a;//p指向a的首地址
|
||||
q = b;//q指向b的首地址
|
||||
while(*p != '\0'){//找到a结束符位置的地址
|
||||
p++;
|
||||
}
|
||||
//从b的第一个元素开始赋值到a中
|
||||
while(*q != '\0'){
|
||||
*p++ = *q++;
|
||||
}
|
||||
*p = '\0';//标记结束符
|
||||
printf("a=%s\n", a);
|
||||
printf("b=%s\n", b);
|
||||
//srand((unsigned)time(NULL));
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(){
|
||||
int num[10], i;
|
||||
srand((unsigned)time(NULL));
|
||||
|
||||
for(i=0;i<10;i++){
|
||||
num[i] = rand()%101;
|
||||
printf("%d ", num[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
#include <limits.h> //里面定义了基本数据类型的最大值和最小值
|
||||
|
||||
int main(){
|
||||
int num[3][4], i, j, min=INT_MAX, i_index, j_index;
|
||||
srand((unsigned)time(NULL));
|
||||
|
||||
for(i=0;i<3;i++){
|
||||
for(j=0;j<4;j++){
|
||||
num[i][j] = rand()%101;
|
||||
printf("%2d ", num[i][j]);
|
||||
if(num[i][j] < min){
|
||||
min = num[i][j];
|
||||
i_index = i;
|
||||
j_index = j;
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
printf("min=%d i=%d j=%d\n", min, i_index, j_index);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/*
|
||||
1 2 3 |6
|
||||
4 5 6 |15
|
||||
7 8 9 |24
|
||||
-------------
|
||||
12 15 18
|
||||
*/
|
||||
void getSum(int array[100][100], int n, int m){
|
||||
int i, j, sum;
|
||||
for(i=0;i<n;i++){
|
||||
sum = 0;
|
||||
for(j=0;j<m;j++){
|
||||
printf("%-5d ", array[i][j]);
|
||||
sum += array[i][j];
|
||||
}
|
||||
printf("| %-5d\n", sum);
|
||||
}
|
||||
for(j=0;j<m;j++){
|
||||
printf("------");
|
||||
}
|
||||
printf("\n");
|
||||
for(j=0;j<m;j++){//列的下标
|
||||
sum =0;
|
||||
for(i=0;i<n;i++){//行的下标
|
||||
sum += array[i][j];
|
||||
}
|
||||
printf("%-5d ", sum);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
int main(){
|
||||
int n, m, i, j;//n为行数 m为列数
|
||||
int array[100][100] = {0};
|
||||
|
||||
printf("请输入行数和列数:");
|
||||
scanf("%d %d", &n, &m);
|
||||
|
||||
srand((unsigned)time(NULL));
|
||||
|
||||
for(i=0;i<n;i++){
|
||||
for(j=0;j<m;j++){
|
||||
array[i][j] = rand()%100;
|
||||
}
|
||||
}
|
||||
getSum(array, n, m);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
#include <stdio.h>
|
||||
|
||||
void change(char *p){
|
||||
//alex apple
|
||||
*p++ -= 32;//a-> -32 ->A
|
||||
while(*p != '#'){
|
||||
if(*(p-1) == ' '){
|
||||
*p -= 32;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
*p = '\0';
|
||||
}
|
||||
|
||||
int main(){
|
||||
char str[1024];
|
||||
|
||||
gets(str);//读取一行字符串 回车判定结束
|
||||
change(str);
|
||||
puts(str);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
#include <stdio.h>
|
||||
|
||||
//Ãݴη½
|
||||
int power(int n){
|
||||
int s = 1, i;
|
||||
for(i=1;i<=n;i++){
|
||||
s *= 2;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
//½×³Ë
|
||||
int factorial(int n){
|
||||
int s = 1, i;
|
||||
for(i=1;i<=n;i++){//1~n
|
||||
s*=i;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
int main(){
|
||||
int n, i, s = 0;
|
||||
scanf("%d", &n);
|
||||
for(i=1;i<=n;i++){
|
||||
s += power(i) * factorial(i);
|
||||
}
|
||||
printf("%d\n", s);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
int a[10], b[10];
|
||||
int i;
|
||||
int *p, *q;
|
||||
|
||||
for(i=0, p=a;i<10;i++){
|
||||
scanf("%d", p++);
|
||||
}
|
||||
for(i=0, p=a, q=b;i<10;i++){
|
||||
if(*p%2==0){
|
||||
*q++=*p;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
for(i=0, p=b;i<q-b;i++){
|
||||
printf("%d ", *p++);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
#include <stdio.h>
|
||||
/*
|
||||
1 2 3 4 5 6 7 8 9 10
|
||||
1 3 4 5 6 7 8 9 10
|
||||
*/
|
||||
int main(){
|
||||
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
|
||||
int n = 10;
|
||||
int i;
|
||||
int *p, *q;
|
||||
p = a+1;
|
||||
q = a+2;
|
||||
for(i=0;i<8;i++){//用来控制循环的次数
|
||||
*p++ = *q++;
|
||||
}
|
||||
n--;
|
||||
for(i=0;i<n;i++){
|
||||
printf("%d ", *(a+i));
|
||||
}
|
||||
printf("\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
char str[] = "AbcDEfg";
|
||||
char *p = str;
|
||||
|
||||
while(*p != '\0'){
|
||||
if(*p >= 'a' && *p <= 'z'){
|
||||
*p -= 32;
|
||||
}else{
|
||||
*p += 32;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
puts(str);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
int main(){
|
||||
char str[5][20];
|
||||
char (*p)[20], (*max)[20];//数据类型 (*变量名)[长度];数组指针
|
||||
int i;
|
||||
for(i=0, p =str;i<5;i++){
|
||||
scanf("%s", p++);
|
||||
}
|
||||
max = p;
|
||||
|
||||
for(i=1, p =str+1;i<5;i++){
|
||||
if(strcmp(*p, *max)){
|
||||
max = p;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
printf("max = %s\n", max);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#include <stdio.h>
|
||||
#define MAXD(x, y) (x>y?x:y)
|
||||
|
||||
int main(){
|
||||
int a, b;
|
||||
scanf("%d %d", &a, &b);
|
||||
//(1>2?1:2) 将MAXD替换成三目运算符
|
||||
printf("%d \n", MAXD(a, b));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
#include <stdio.h>
|
||||
#define f(n) (n%5==0 && n%7==0?"能被整除\n":"不能被整除\n")
|
||||
int main(){
|
||||
//#define 指令 语句序列 会在语句序列中将所有参数替换成传入的
|
||||
int num;
|
||||
scanf("%d", &num);
|
||||
|
||||
puts(f(num));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#define CHANGE 0 //1代表打印密文 0明文
|
||||
//! Ctrl + .注释
|
||||
int main(){
|
||||
char str[100], i=0;
|
||||
scanf("%s", str);
|
||||
#if CHANGE
|
||||
while(str[i] != '\0'){
|
||||
if(str[i] >= 'a' && str[i] <= 'y' || str[i] >= 'A' && str[i] <= 'Y' ){
|
||||
str[i]++;
|
||||
}else if(str[i] == 'z' || str[i] == 'Z'){
|
||||
str[i]-=25;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
#endif
|
||||
puts(str);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
#include <stdio.h>
|
||||
|
||||
typedef struct student{
|
||||
int num;
|
||||
char name[20];
|
||||
float socre[3];
|
||||
}student;
|
||||
//student 作为一个类型
|
||||
//如果不写typedef则结构体类型为 struct student
|
||||
|
||||
void output(student stuList[5]){
|
||||
int i;
|
||||
|
||||
for(i=0;i<5;i++){
|
||||
printf("%d\t%s\t%f\t%f\t%f\n", stuList[i].num, stuList[i].name, stuList[i].socre[0],
|
||||
stuList[i].socre[1], stuList[i].socre[2]);
|
||||
}
|
||||
}
|
||||
|
||||
void input(student stuList[5]){
|
||||
int i;
|
||||
for(i=0;i<5;i++){
|
||||
scanf("%d %s %f %f %f", &stuList[i].num, stuList[i].name, &stuList[i].socre[0],
|
||||
&stuList[i].socre[1], &stuList[i].socre[2]);
|
||||
}
|
||||
}
|
||||
int main(){
|
||||
student stuList[5];//定义了一个结构体数组里面可以容纳5个结构体变量
|
||||
|
||||
input(stuList);
|
||||
output(stuList);
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
#include <stdio.h>
|
||||
typedef struct score{
|
||||
float medScore;
|
||||
float endScore;
|
||||
}score;
|
||||
|
||||
int main(){
|
||||
score s;
|
||||
scanf("%f %f", &s.medScore, &s.endScore);
|
||||
|
||||
printf("avg=%.2f\n", (s.medScore + s.endScore)/2);
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
FILE *in, *out;
|
||||
char str[100];
|
||||
in = fopen("file1.c", "r");//r:只读
|
||||
out = fopen("file2.c", "w");//w:覆盖
|
||||
|
||||
while(fgets(str, 100, in)){//fgets每次从文件获取一行并存储到str中
|
||||
puts(str);//使用控制台输出
|
||||
fputs(str, out);//向file2.c输出
|
||||
}
|
||||
fclose(in);//关闭文件指针
|
||||
fclose(out);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
|
||||
FILE *fp;
|
||||
char ch;
|
||||
int count=0;
|
||||
fp = fopen("letter.txt", "r");
|
||||
while((ch=fgetc(fp)) != EOF){
|
||||
if(ch == 'c'){
|
||||
count++;
|
||||
}
|
||||
}
|
||||
printf("c个数为:%d\n", count);
|
||||
fclose(fp);//关闭文件指针
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
char str[100];
|
||||
char *p = str;
|
||||
FILE *fp;
|
||||
fp = fopen("test.dat", "w");
|
||||
gets(str);
|
||||
|
||||
while(*p != '\0'){
|
||||
if(*p >= 'a' && *p <= 'z'){
|
||||
*p-=32;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
fputs(str, fp);
|
||||
fclose(fp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
|
||||
return 0;
|
||||
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
|
||||
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
ccadfadsfasfadsfafa
|
||||
@@ -0,0 +1 @@
|
||||
ADFADFAAAFDAFDSFSDF
|
||||
+1116
File diff suppressed because it is too large
Load Diff
+101
-2
@@ -1,29 +1,128 @@
|
||||
1.输入一小写字母,分别以字符形式与数值形式输出与该小写字母相应的大写字母
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
|
||||
/*
|
||||
1.输入一小写字母,分别以字符形式与数值形式输出
|
||||
与该小写字母相应的大写字母
|
||||
*/
|
||||
int main(void){
|
||||
char ch;//数据类型 变量名; 规定了变量的存储数据类型
|
||||
//scanf("%c", &ch);//scanf(输入的格式, 地址1, 地址2)
|
||||
//将占位符的格式从控制台存储到指定的内存地址
|
||||
//%c 字符型 %d整型 %u 无符号整型 %f 单精度浮点型 %lf双精度浮点型 %s 字符串
|
||||
ch = getchar();//getchar()用于从控制台读取单个字符 并返回该字符
|
||||
//printf("%d %c\n", ch-32, ch-32);//A-65 a-97 差值32
|
||||
printf("%d %c\n", toupper(ch), toupper(ch));//toupper用于将字符转换成大写字符
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
2.输入一个华氏温度,要求输出摄氏温度。公式为c=5/9*(f-32)
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void){
|
||||
|
||||
float f, c;
|
||||
scanf("%f", &f);
|
||||
//c = 5.0/9*(f-32);
|
||||
c = (double)5/9*(f-32);
|
||||
printf("%f\n", c);
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
3.写一个程序,输入实数X,输出Y,计算<img src="https://yp.smallkun.cn/markdown/image-20250116004443767.png!compress" alt="image-20250116004443767" style="zoom:33%;" />
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
float x, y;
|
||||
scanf("%f", &x);
|
||||
y = 3*x*x*x+0.4*x*x-2*x/3;
|
||||
printf("y=%.2f\n", y);
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
4.编写程序:读入三个整数a,b,c,然后交换它们中的数,使a存放b的值,b存放c的值,c存放a的值。
|
||||
```c
|
||||
#include <stdio.h>
|
||||
/*
|
||||
4.编写程序:读入三个整数a,b,c,然后交换它们中的数,
|
||||
使a存放b的值,b存放c的值,c存放a的值。
|
||||
*/
|
||||
int main(){
|
||||
int a, b, c, temp;
|
||||
scanf("%d %d %d", &a, &b, &c);
|
||||
temp = a;
|
||||
a = b;
|
||||
b = c;
|
||||
c = temp;
|
||||
printf("%d %d %d\n", a, b, c);
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
5.编写程序:输入9时23分并把它化为分钟后输出。(从零点整开始计算)。
|
||||
```C
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
int h, m;
|
||||
scanf("%d时%d分", &h, &m);
|
||||
printf("%d分钟\n", h*60+m);
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
6.要将“China”翻译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“ A”后面的4个字母是“E”,用“E”代替“A”。因此,“Chian”应译成“Glmre”。用赋初值的方法 是c1,c2,c3,c4,c5五个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,使c1、c2、 c3、c4、c5分别为‘G’、‘l’、‘m’、‘r’、‘e’,并输出
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
6.要将“Chiina”翻译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“ A”后面的4个字母是“E”,用“E”代替“A”。因此,“Chian”应译成“Glmre”。用赋初值的方法 是c1,c2,c3,c4,c5五个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,使c1、c2、 c3、c4、c5分别为‘G’、‘l’、‘m’、‘r’、‘e’,并输出
|
||||
|
||||
int main(){
|
||||
char c1, c2, c3, c4, c5;
|
||||
c1='C';
|
||||
c2='h';
|
||||
c3='i';
|
||||
c4='n';
|
||||
c5='a';
|
||||
printf("%c%c%c%c%c\n", c1, c2, c3, c4, c5);
|
||||
c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;
|
||||
printf("%c%c%c%c%c\n", c1, c2, c3, c4, c5);
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
7.编写程序,用getchar函数读入两个字符c1,c2,然后分别用putchar函数和prinf函数输出这两个字符以 及它们的ASCII值。
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void){
|
||||
char c1, c2;
|
||||
c1=getchar();
|
||||
c2=getchar();
|
||||
putchar(c1);
|
||||
printf(" %d\n", c1);
|
||||
putchar(c2);
|
||||
printf(" %d\n", c2);
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
8.设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积
|
||||
|
||||
@@ -652,6 +652,41 @@ int main(){
|
||||
## 七、结构体与共用体
|
||||
|
||||
1.定义一个结构体其中包括: 职工号、职工名、性别、年龄、工资、地址。按结构体类型定义一个结构体数组, 从键盘输入每个结构体元素所需的数据,然后逐个输出这些元素的数据(可设数组只有三个元素)。
|
||||
```c
|
||||
/*
|
||||
1.定义一个结构体其中包括: 职工号、职工名、性别、年龄、工资、地址。
|
||||
按结构体类型定义一个结构体数组, 从键盘输入每个结构体元素所需的数据,
|
||||
然后逐个输出这些元素的数据(可设数组只有三个元素)。
|
||||
*/
|
||||
#include <stdio.h>
|
||||
|
||||
typedef struct employee{
|
||||
int eno;//职工号
|
||||
char ename[20];//职工名
|
||||
char sex[2];//性别
|
||||
int age;//年龄
|
||||
double salary;//薪资
|
||||
char addres[20];//地址
|
||||
}employee;
|
||||
|
||||
int mian(){
|
||||
employee eList[3];//使用员工的结构体类型 定义了一个可以容纳三个元素的数组
|
||||
int i;
|
||||
//1.数组名[下标].成员变量名
|
||||
//2.*(数组名+下标).成员变量名
|
||||
//3.(数组名+下标)->成员变量名
|
||||
for(i=0;i<3;i++){
|
||||
scanf("%d %s", &(eList+i)->eno, (eList+i)->ename);
|
||||
}
|
||||
printf("----------------\n");
|
||||
for(i=0;i<3;i++){
|
||||
printf("%d %s\n", (eList+i)->eno, (eList+i)->ename);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
2.有一批图书,每本书有:书名(name),作者(author) , 编号(num),出版日期(date)四个数据,希望输入后按书名的字母顺序将各书的记录排列好,供以后查询。今输入一本书的书名,如果查询到库中有此书,打印出此书的书名,作者,编号和出版日期。如果查不到此书,则打印出“无此书”。
|
||||
|
||||
+38756
File diff suppressed because one or more lines are too long
@@ -15,6 +15,9 @@ CREATE TABLE 表名(
|
||||
字段名 数据类型 约束 [ZEROFILL] DEFAULT 默认值 COMMENT 备注,
|
||||
字段名 数据类型 约束 [ZEROFILL] DEFAULT 默认值 COMMENT 备注
|
||||
);
|
||||
#插入记录
|
||||
INSERT INTO 表名(字段1, 字段2)
|
||||
VALUES(数值1, 数值2);
|
||||
#删除表
|
||||
DROP TABLE 表名;
|
||||
#清空表
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,651 @@
|
||||
### 练习一
|
||||
|
||||

|
||||
|
||||
```sql
|
||||
#(1)创建数据库
|
||||
CREATE DATABASE test04_Market DEFAULT CHARACTER SET utf8;
|
||||
USE test04_Market;
|
||||
#(2)创建数据表
|
||||
CREATE TABLE customers(
|
||||
c_num INT(11) PRIMARY KEY AUTO_INCREMENT,
|
||||
c_name VARCHAR(50),
|
||||
c_contact VARCHAR(50),
|
||||
c_city VARCHAR(50),
|
||||
c_birth DATETIME NOT NULL
|
||||
);
|
||||
#(3)更改字段的位置
|
||||
#AFTER/BEFORE 字段名 设置位置在指定字段前/后
|
||||
ALTER TABLE 表名 MODIFY 字段名 数据类型 AFTER/BEFORE 字段名;
|
||||
ALTER TABLE customers MODIFY c_contact VARCHAR(50) AFTER c_birth;
|
||||
#(4)更改字段的数据类型
|
||||
ALTER TABLE customers MODIFY c_name VARCHAR(70);
|
||||
#(5)更改字段名
|
||||
ALTER TABLE customers CHANGE c_contact c_phone VARCHAR(50);
|
||||
#(6)添加字段
|
||||
ALTER TABLE customers ADD c_gender CHAR(1);
|
||||
#(7)更改表名
|
||||
ALTER TABLE customers RENAME TO customers_info;
|
||||
#(8)删除字段
|
||||
ALTER TABLE customers_info DROP c_city;
|
||||
```
|
||||
|
||||

|
||||
|
||||
```sql
|
||||
#(1)创建表时 添加外键约束并指定外键约束名称
|
||||
CREATE TABLE orders(
|
||||
o_num INT(11) PRIMARY KEY AUTO_INCREMENT,
|
||||
o_date DATE,
|
||||
c_id INT(11),
|
||||
CONSTRAINT fk_cid FOREIGN KEY(c_id) REFERENCES customers_info(c_num)
|
||||
);
|
||||
#(2)
|
||||
#删除指定外键
|
||||
ALTER TABLE orders DROP FOREIGN KEY orders_ibfk_1;
|
||||
#删除指定表
|
||||
DROP TABLE orders;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 练习二
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
```sql
|
||||
#(1)创建表、插入记录
|
||||
CREATE TABLE pet(
|
||||
`name` VARCHAR(20) NOT NULL COMMENT '宠物名称',
|
||||
`owner` VARCHAR(20) COMMENT '宠物主人',
|
||||
species VARCHAR(20) NOT NULL COMMENT '种类',
|
||||
sex CHAR(1) NOT NULL COMMENT '性别',
|
||||
birth YEAR NOT NULL COMMENT '出生日期',
|
||||
death YEAR COMMENT '死亡日期'
|
||||
);
|
||||
INSERT INTO pet()
|
||||
VALUES
|
||||
('Fluffy', 'Harold', 'cat', 'f', 2003, 2010),
|
||||
('Claws', 'Gwen', 'cat', 'm', 2004,NULL ),
|
||||
('Buffy', NULL, 'dog', 'f', 2009, NULL),
|
||||
('Fang', 'Benny', 'dog', 'm', 2000, NULL),
|
||||
('Bowser', 'Diane', 'dog', 'm', 2003, 2009),
|
||||
('Chirpy', NULL, 'bird', 'f', 2008, NULL);
|
||||
#(2)更新记录
|
||||
UPDATE pet
|
||||
SET `owner` = 'Kevin'
|
||||
WHERE `name` = 'Fang';
|
||||
#(3)
|
||||
UPDATE pet
|
||||
SET `owner` = 'Kevin'
|
||||
WHERE `owner` IS NULL;
|
||||
#(4)
|
||||
DELETE FROM pet
|
||||
WHERE death IS NOT NULL;
|
||||
#(5)
|
||||
TRUNCATE pet;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 练习三
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
```sql
|
||||
#1.创建数据库
|
||||
CREATE DATABASE test_compay DEFAULT CHARACTER SET utf8;
|
||||
|
||||
#2.创建表
|
||||
CREATE TABLE department(
|
||||
depid INT PRIMARY KEY AUTO_INCREMENT,
|
||||
depname VARCHAR(20) NOT NULL,
|
||||
deinfo VARCHAR(50)
|
||||
);
|
||||
CREATE TABLE employee(
|
||||
empid INT PRIMARY KEY AUTO_INCREMENT,
|
||||
`name` VARCHAR(20) NOT NULL,
|
||||
sex CHAR(1) NOT NULL DEFAULT '男',
|
||||
title VARCHAR(20) NOT NULL,
|
||||
birthday DATE NOT NULL,
|
||||
depid INT,
|
||||
CONSTRAINT fk_eid_did FOREIGN KEY(depid) REFERENCES department(depid)
|
||||
);
|
||||
CREATE TABLE salary(
|
||||
empid INT,
|
||||
basesalary DECIMAL(10, 2),
|
||||
titleSalary DECIMAL(10, 2),
|
||||
decuction DECIMAL(10, 2)
|
||||
);
|
||||
#3添加外键并设置级联更新、级联删除
|
||||
ALTER TABLE salary ADD CONSTRAINT fk_sal_eid FOREIGN KEY(empid)
|
||||
REFERENCES employee(empid) ON UPDATE CASCADE ON DELETE CASCADE;
|
||||
#4插入记录
|
||||
INSERT INTO department (depid, depname, deinfo)
|
||||
VALUES
|
||||
(111, '生产部', NULL),
|
||||
(222, '销售部', NULL),
|
||||
(333, '人事部', NULL),
|
||||
(444, '财务部', '负责公司财务管理'),
|
||||
(555, '技术部', '负责技术研发与支持'),
|
||||
(666, '市场部', '负责市场推广与品牌建设'),
|
||||
(777, '客服部', '负责客户服务与支持'),
|
||||
(888, '采购部', '负责公司物资采购'),
|
||||
(999, '法务部', '负责公司法律事务'),
|
||||
(1010, '行政部', '负责公司日常行政管理'),
|
||||
(1011, '研发部', '负责新产品研发'),
|
||||
(1012, '培训部', '负责员工培训与发展');
|
||||
|
||||
INSERT INTO employee (empid, name, sex, title, birthday, depid)
|
||||
VALUES
|
||||
(1001, '张三', '男', '高级工程师', '1975-1-1', 111),
|
||||
(1002, '李四', '女', '助工', '1985-1-1', 111),
|
||||
(1003, '王五', '男', '工程师', '1978-11-11', 222),
|
||||
(1004, '赵六', '男', '工程师', '1999-1-1', 222),
|
||||
(1005, '陈七', '女', '会计师', '1980-5-15', 444),
|
||||
(1006, '刘八', '男', '软件工程师', '1990-8-20', 555),
|
||||
(1007, '孙九', '女', '市场经理', '1985-12-25', 666),
|
||||
(1008, '周十', '男', '客服专员', '1992-3-10', 777),
|
||||
(1009, '吴十一', '女', '采购经理', '1988-7-22', 888),
|
||||
(1010, '郑十二', '男', '法务顾问', '1983-9-30', 999),
|
||||
(1011, '王十三', '女', '行政助理', '1995-4-18', 1010),
|
||||
(1012, '李十四', '男', '研发工程师', '1991-11-5', 1011),
|
||||
(1013, '赵十五', '女', '培训讲师', '1987-6-12', 1012),
|
||||
(1014, '孙十六', '男', '技术支持', '1993-2-14', 555),
|
||||
(1015, '杨十七', '女', '销售代表', '1994-8-8', 222);
|
||||
|
||||
INSERT INTO salary (empid, basesalary, titleSalary, decuction)
|
||||
VALUES
|
||||
(1001, 2200, 1100, 200),
|
||||
(1002, 1200, 200, NULL),
|
||||
(1003, 2900, 700, 200),
|
||||
(1004, 1950, 700, 150),
|
||||
(1005, 2500, 800, 100),
|
||||
(1006, 3000, 1200, 250),
|
||||
(1007, 2800, 1000, 200),
|
||||
(1008, 1800, 300, 50),
|
||||
(1009, 3200, 900, 300),
|
||||
(1010, 3500, 1000, 400),
|
||||
(1011, 2000, 400, 100),
|
||||
(1012, 3100, 1100, 200),
|
||||
(1013, 2700, 800, 150),
|
||||
(1014, 2300, 700, 100),
|
||||
(1015, 2600, 600, 200);
|
||||
```
|
||||
|
||||

|
||||
|
||||
```sql
|
||||
#5
|
||||
SELECT e.empid, e.`name`, e.title, d.depname, s.basesalary + s.titleSalary, s.basesalary + s.titleSalary-IFNULL(s.decuction, 0)
|
||||
FROM employee e, department d, salary s
|
||||
WHERE e.depid = d.depid AND e.empid = s.empid;
|
||||
#6
|
||||
SELECT e.`name`, s.basesalary
|
||||
FROM employee e, department d, salary s
|
||||
WHERE e.depid = d.depid AND e.empid = s.empid AND d.depname = '销售部';
|
||||
#7
|
||||
SELECT *
|
||||
FROM employee e
|
||||
WHERe e.`name` LIKE '张%' AND TIMESTAMPDIFF(YEAR,e.birthday, NOW()) < 40;
|
||||
#8
|
||||
SELECT e.`name`, s.basesalary, s.titleSalary
|
||||
FROM employee e, salary s
|
||||
WHERE e.sex = '男' AND e.empid AND s.empid;
|
||||
#9
|
||||
SELECT e.`name`, e.title, d.depname
|
||||
FROM employee e, department d, salary s
|
||||
WHERE e.depid = d.depid AND e.empid = s.empid AND s.basesalary < 2000;
|
||||
#10
|
||||
SELECT COUNT(*)
|
||||
FROM employee;
|
||||
#11
|
||||
SELECT COUNT(*)
|
||||
FROM department d;
|
||||
#12
|
||||
SELECT AVG(s.basesalary + s.titleSalary), MAX(s.basesalary + s.titleSalary), MIN(s.basesalary + s.titleSalary)
|
||||
FROM employee e, salary s
|
||||
WHERE e.empid = s.empid;
|
||||
#13
|
||||
SELECT d.depname, AVG(s.basesalary + s.titleSalary)
|
||||
FROM employee e, salary s, department d
|
||||
WHERE e.empid = s.empid AND e.depid = d.depid
|
||||
GROUP BY d.depid;
|
||||
#14
|
||||
SELECT d.depname, AVG(s.basesalary + s.titleSalary) avg
|
||||
FROM employee e, salary s, department d
|
||||
WHERE e.empid = s.empid AND e.depid = d.depid
|
||||
GROUP BY d.depid
|
||||
HAVING avg<2000;
|
||||
#15
|
||||
SELECT e.empid, e.`name`, s.basesalary, s.titleSalary, s.decuction
|
||||
FROM employee e, salary s, department d
|
||||
WHERE e.empid = s.empid AND e.depid = d.depid
|
||||
ORDER BY s.titleSalary, s.basesalary;
|
||||
#16
|
||||
SELECT e.empid, e.`name`, e.birthday,
|
||||
IF(YEAR(e.birthday) < 1980, '老年',
|
||||
IF(YEAR(e.birthday)< 1990, '中年', '青壮年'))
|
||||
FROM employee e;
|
||||
#17
|
||||
SELECT e.*, depname
|
||||
FROM employee e, department d
|
||||
WHERE e.depid = d.depid;
|
||||
#18
|
||||
SELECT d.*, e.*
|
||||
FROM employee e, department d
|
||||
WHERE e.depid = d.depid;
|
||||
#19
|
||||
SELECT *
|
||||
FROM employee e
|
||||
WHERE e.title LIKE '%工程师%' AND e.sex = '男';
|
||||
#20
|
||||
SELECT d.depname, e.sex, COUNT(*), AVG(s.basesalary)
|
||||
FROM employee e, department d, salary s
|
||||
WHERE e.depid = d.depid AND e.empid = s.empid
|
||||
GROUP BY d.depid, e.sex;
|
||||
```
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
### 练习四
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
```sql
|
||||
#1
|
||||
CREATE DATABASE test_school DEFAULT CHARACTER SET 'UTF8';
|
||||
#2
|
||||
DROP TABLE department;
|
||||
CREATE TABLE department(
|
||||
depNo INT(10) PRIMARY KEY COMMENT '部门号',
|
||||
depName VARCHAR(50) NOT NULL COMMENT '部门名称',
|
||||
depNote VARCHAR(20) COMMENT '部门备注'
|
||||
);
|
||||
CREATE TABLE teacher(
|
||||
number INT PRIMARY KEY COMMENT '教工号',
|
||||
`name` VARCHAR(30) NOT NULL COMMENT '姓名',
|
||||
sex VARCHAR(4) COMMENT '性别',
|
||||
birth DATE COMMENT '出生日期',
|
||||
depNo INT COMMENT '部门号',
|
||||
salary FLOAT COMMENT '工资',
|
||||
address VARCHAR(100) COMMENT '家庭住址'
|
||||
);
|
||||
INSERT INTO department()
|
||||
VALUES
|
||||
(601, '软件技术系', '软件技术等专业'),
|
||||
(602, '网络技术系', '多媒体技术等专业'),
|
||||
(603, '艺术设计系', '广告艺术设计等专业'),
|
||||
(604, '管理工程系', '连锁经营管理等专业');
|
||||
|
||||
INSERT INTO teacher()
|
||||
VALUES
|
||||
(2001, 'Tom', '女', '1970-01-10', 602, 4500, '四川省绵阳市'),
|
||||
(2002, 'Lucy', '男', '1983-12-18', 601, 2500, '北京市昌平区'),
|
||||
(2003, 'Mike', '男', '1990-06-01', 604, 1500, '重庆市渝中区'),
|
||||
(2004, 'James', '女', '1980-10-20', 602, 3500, '四川省成都市'),
|
||||
(2005, 'Jack', '男', '1975-05-30', 603, 1200, '重庆市南岸区');
|
||||
```
|
||||
|
||||

|
||||
|
||||
```sql
|
||||
#4
|
||||
SELECT *
|
||||
FROM teacher;
|
||||
#5
|
||||
SELECT t.number '教工号', d.depName '部门名称'
|
||||
FROM teacher t, department d
|
||||
WHERE t.depNo = d.depNo AND t.address LIKE '%北京%';
|
||||
#6
|
||||
SELECT t.number, t.`name`
|
||||
FROM teacher t
|
||||
ORDER BY t.salary DESC
|
||||
LIMIT 1;
|
||||
#7
|
||||
SELECT t.number, t.`name`
|
||||
FROM teacher t
|
||||
WHERE t.salary BETWEEN 2500 AND 4000;
|
||||
#8
|
||||
SELECT t.`name`, t.sex, t.salary
|
||||
FROM teacher t, department d
|
||||
WHERE t.depNo = d.depNo AND d.depName = '网络技术系';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 练习五
|
||||
|
||||

|
||||
|
||||
```sql
|
||||
-- 创建数据库并设置字符集为 utf8mb4
|
||||
CREATE DATABASE test_student CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
USE test_student;
|
||||
|
||||
-- 创建表 Classes
|
||||
CREATE TABLE Classes (
|
||||
专业 VARCHAR(50),
|
||||
班级 VARCHAR(50),
|
||||
姓名 VARCHAR(50),
|
||||
性别 VARCHAR(10),
|
||||
座位 INT
|
||||
);
|
||||
|
||||
-- 向表 Classes 插入数据
|
||||
INSERT INTO Classes (专业, 班级, 姓名, 性别, 座位) VALUES
|
||||
('计算机网络', '1班', '张三', '男', 8),
|
||||
('软件工程', '2班', '李四', '男', 12),
|
||||
('计算机维护', '1班', '王五', '男', 9),
|
||||
('计算机网络', '2班', 'LILY', '女', 15),
|
||||
('软件工程', '1班', '小强', '男', 20),
|
||||
('计算机维护', '1班', 'CoCo', '女', 18);
|
||||
|
||||
-- 创建表 Score
|
||||
CREATE TABLE Score (
|
||||
姓名 VARCHAR(50),
|
||||
英语 INT,
|
||||
数学 INT,
|
||||
语文 INT
|
||||
);
|
||||
|
||||
-- 向表 Score 插入数据
|
||||
INSERT INTO Score (姓名, 英语, 数学, 语文) VALUES
|
||||
('张三', 65, 75, 98),
|
||||
('李四', 87, 45, 86),
|
||||
('王五', 98, 85, 65),
|
||||
('LILY', 75, 86, 87),
|
||||
('小强', 85, 60, 58),
|
||||
('CoCo', 96, 87, 70);
|
||||
|
||||
-- 创建表 Records
|
||||
CREATE TABLE Records (
|
||||
姓名 VARCHAR(50),
|
||||
记录 VARCHAR(50)
|
||||
);
|
||||
|
||||
-- 向表 Records 插入数据
|
||||
INSERT INTO Records (姓名, 记录) VALUES
|
||||
('小强', '迟到'),
|
||||
('小强', '事假'),
|
||||
('李四', '旷课'),
|
||||
('李四', '旷课'),
|
||||
('李四', '迟到'),
|
||||
('CoCo', '病假'),
|
||||
('LILY', '事假');
|
||||
```
|
||||
|
||||

|
||||
|
||||
```sql
|
||||
#3
|
||||
UPDATE score s
|
||||
SET s.`语文` = 88
|
||||
WHERE s.`姓名` = '张三';
|
||||
|
||||
#4
|
||||
SELECT AVG(s.`英语`), AVG(s.`数学`), AVG(s.`语文`)
|
||||
FROM classes c, score s
|
||||
WHERE c.`姓名` = s.`姓名` AND c.`班级` = 1 AND c.`专业` = '计算机维护';
|
||||
|
||||
#5
|
||||
SELECT *
|
||||
FROM score s
|
||||
WHERE s.`数学` < 60 OR s.`英语` < 60 OR s.`语文` < 60;
|
||||
|
||||
#6
|
||||
SELECT *
|
||||
FROM score s
|
||||
WHERE s.`姓名` IN (
|
||||
SELECT r.`姓名`
|
||||
FROM records r
|
||||
GROUP BY r.`姓名`
|
||||
HAVING COUNT(*) > 2
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 练习六
|
||||
|
||||

|
||||
|
||||
```sql
|
||||
-- 创建数据库 test_xuankedb 并设置字符集为 utf8mb4
|
||||
CREATE DATABASE test_xuankedb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
USE test_xuankedb;
|
||||
|
||||
-- 创建学生表 Student
|
||||
CREATE TABLE Student (
|
||||
Sn0 VARCHAR(20) PRIMARY KEY, -- 学号,主键
|
||||
Sname VARCHAR(50), -- 姓名
|
||||
Ssex VARCHAR(10), -- 性别
|
||||
Sage INT, -- 年龄
|
||||
Sdept VARCHAR(50) -- 所在系
|
||||
);
|
||||
|
||||
-- 创建课程表 Course
|
||||
CREATE TABLE Course (
|
||||
Cn0 VARCHAR(20) PRIMARY KEY, -- 课程号,主键
|
||||
Cname VARCHAR(100), -- 课程名
|
||||
Cpn0 VARCHAR(20), -- 选修课号
|
||||
Ccredit INT -- 学分
|
||||
);
|
||||
|
||||
-- 创建成绩表 SG
|
||||
CREATE TABLE SG (
|
||||
Sn0 VARCHAR(20), -- 学号
|
||||
Cn0 VARCHAR(20), -- 课程号
|
||||
Grade INT, -- 成绩
|
||||
PRIMARY KEY (Sn0, Cn0), -- 复合主键 (学号, 课程号)
|
||||
FOREIGN KEY (Sn0) REFERENCES Student(Sn0), -- 外键,引用 Student 表
|
||||
FOREIGN KEY (Cn0) REFERENCES Course(Cn0) -- 外键,引用 Course 表
|
||||
);
|
||||
|
||||
INSERT INTO Student (Sno, Sname, Ssex, Sage, Sdept, Scome) VALUES
|
||||
('05001', '张三', '男', 20, '计算机系', '2021-09-01'),
|
||||
('05002', '李四', '女', 21, '数学系', '2021-09-01'),
|
||||
('05003', '王五', '男', 22, '计算机系', '2021-09-01'),
|
||||
('05004', '李洋', '男', 19, '物理系', '2021-09-01'),
|
||||
('05019', '赵六', '女', 20, '计算机系', '2021-09-01');
|
||||
|
||||
INSERT INTO Course (Cno, Cname, Cpno, Ccredit) VALUES
|
||||
('1', '数据库', NULL, 4),
|
||||
('2', '数学', NULL, 3),
|
||||
('3', '物理', NULL, 3),
|
||||
('4', '操作系统', '1', 4);
|
||||
|
||||
INSERT INTO SG (Sno, Cno, Grade) VALUES
|
||||
('05001', '1', 85),
|
||||
('05001', '2', 90),
|
||||
('05002', '1', 78),
|
||||
('05002', '3', 88),
|
||||
('05003', '1', 92),
|
||||
('05003', '4', 76),
|
||||
('05004', '3', 95),
|
||||
('05019', '1', 80),
|
||||
('05019', '4', 85);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 练习七
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
```sql
|
||||
-- 创建数据库 test_library 并设置字符集为 utf8mb4
|
||||
CREATE DATABASE test_library CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
USE test_library;
|
||||
|
||||
-- 创建表 press(出版社)
|
||||
CREATE TABLE press (
|
||||
pressid INT PRIMARY KEY, -- 出版社编号,主键
|
||||
pressname VARCHAR(100), -- 出版社名称
|
||||
address VARCHAR(100) -- 出版社地址
|
||||
);
|
||||
|
||||
-- 创建表 sort(种类)
|
||||
CREATE TABLE sort (
|
||||
sortno INT PRIMARY KEY, -- 种类编号,主键
|
||||
scount INT, -- 数量
|
||||
describes VARCHAR(100) -- 描述
|
||||
);
|
||||
|
||||
-- 创建表 book(图书)
|
||||
CREATE TABLE book (
|
||||
bid INT PRIMARY KEY, -- 图书编号,主键
|
||||
bname VARCHAR(100), -- 图书名称
|
||||
bsortno INT, -- 种类编号
|
||||
pressid INT, -- 出版社编号
|
||||
FOREIGN KEY (bsortno) REFERENCES sort(sortno), -- 外键,引用 sort 表
|
||||
FOREIGN KEY (pressid) REFERENCES press(pressid) -- 外键,引用 press 表
|
||||
);
|
||||
|
||||
-- 向 press 表插入数据
|
||||
INSERT INTO press (pressid, pressname, address) VALUES
|
||||
(100, '外研社', '上海'),
|
||||
(101, '北大出版社', '北京'),
|
||||
(102, '教育出版社', '北京');
|
||||
|
||||
-- 向 sort 表插入数据
|
||||
INSERT INTO sort (sortno, scount, describes) VALUES
|
||||
(11, 50, '小说'),
|
||||
(12, 100, '科幻'),
|
||||
(13, 100, '神话');
|
||||
|
||||
-- 向 book 表插入数据
|
||||
INSERT INTO book (bid, bname, bsortno, pressid) VALUES
|
||||
(1, '红与黑', 11, 100),
|
||||
(2, '幻城', 12, 102),
|
||||
(3, '希腊神话', 13, 102);
|
||||
|
||||
#5
|
||||
SELECT b.*
|
||||
FROM book b, press p
|
||||
WHERE p.pressid = b.pressid AND p.pressid = 100;
|
||||
|
||||
#6
|
||||
SELECT b.*
|
||||
FROM book b, press p
|
||||
WHERE p.pressid = b.pressid AND p.pressname = '外研社';
|
||||
|
||||
#7
|
||||
SELECT *
|
||||
FROM sort s
|
||||
WHERE s.scount > 100;
|
||||
|
||||
#8
|
||||
SELECT p.*
|
||||
FROM book b, press p
|
||||
WHERE p.pressid = b.pressid
|
||||
GROUP BY b.pressid
|
||||
HAVING COUNT(*) = (
|
||||
SELECT COUNT(*)
|
||||
FROM book b, press p
|
||||
WHERE p.pressid = b.pressid
|
||||
GROUP BY b.pressid
|
||||
ORDER BY COUNT(*) DESC
|
||||
LIMIT 1
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 练习八
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
```sql
|
||||
-- 创建数据库 test_tour 并设置字符集为 utf8mb4
|
||||
CREATE DATABASE test_tour CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
USE test_tour;
|
||||
|
||||
-- 创建表 agency(旅行社表)
|
||||
CREATE TABLE agency (
|
||||
id INT PRIMARY KEY, -- 旅行社编号,主键
|
||||
name VARCHAR(100) NOT NULL, -- 旅行社名
|
||||
address VARCHAR(100) NOT NULL, -- 旅行社地址
|
||||
areaid INT -- 所属区域编号
|
||||
);
|
||||
|
||||
-- 创建表 travel(旅行线路表)
|
||||
CREATE TABLE travel (
|
||||
tid INT PRIMARY KEY, -- 旅行线路编号,主键
|
||||
time VARCHAR(50) NOT NULL, -- 所需时间
|
||||
position VARCHAR(100) NOT NULL, -- 目的地
|
||||
money FLOAT, -- 花费
|
||||
aid INT NOT NULL, -- 所属旅行社编号
|
||||
count INT, -- 报名人数
|
||||
FOREIGN KEY (aid) REFERENCES agency(id) -- 外键,引用 agency 表
|
||||
);
|
||||
|
||||
-- 向 agency 表插入数据
|
||||
INSERT INTO agency (id, name, address) VALUES
|
||||
(101, '青年旅行社', '北京海淀'),
|
||||
(102, '天天旅行社', '天津海院');
|
||||
|
||||
-- 向 travel 表插入数据
|
||||
INSERT INTO travel (tid, time, position, money, aid, count) VALUES
|
||||
(1, '5天', '八达岭', 3000, 101, 10),
|
||||
(2, '7天', '水长城', 5000, 101, 14),
|
||||
(3, '8天', '水长城', 6000, 102, 11);
|
||||
|
||||
#4
|
||||
SELECT a.*
|
||||
FROM travel t, agency a
|
||||
WHERE t.aid =a.id
|
||||
GROUP BY a.id
|
||||
HAVING COUNT(*) = (
|
||||
SELECT COUNT(*)
|
||||
FROM travel t, agency a
|
||||
WHERE t.aid =a.id
|
||||
GROUP BY a.id
|
||||
ORDER BY COUNT(*) DESC
|
||||
LIMIT 1
|
||||
);
|
||||
|
||||
#5
|
||||
SELECT t.*
|
||||
FROM travel t
|
||||
WHERE t.count = (
|
||||
SELECT t.count
|
||||
FROM travel t
|
||||
ORDER BY t.count DESC
|
||||
LIMIT 1
|
||||
);
|
||||
|
||||
#6
|
||||
SELECT *
|
||||
FROM travel t
|
||||
WHERE t.money < 5000;
|
||||
|
||||
#7
|
||||
SELECT a.`name`
|
||||
FROM travel t, agency a
|
||||
WHERE t.aid =a.id AND t.money = (
|
||||
SELECT t.money
|
||||
FROM travel t, agency a
|
||||
WHERE t.aid =a.id
|
||||
ORDER BY t.money DESC
|
||||
LIMIT 1
|
||||
);
|
||||
|
||||
#8
|
||||
SELECT SUM(t.time)
|
||||
FROM travel t, agency a
|
||||
WHERE t.aid =a.id AND a.`name` = '青年旅行社';
|
||||
```
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,603 @@
|
||||
### 1. 数据库表
|
||||
|
||||
1. 学生表:students (id, name, birth, gender) --> (学号, 学生姓名, 出生年月, 性别)
|
||||
2. 教师表:teachers (id, name) --> (教师号, 教师姓名)
|
||||
3. 课程表:courses (id, name, teacher_id) --> (课程号, 课程名称, 教师号)
|
||||
4. 成绩表:scores (student_id, course_id, score) --> (学号, 课程号, 成绩)
|
||||
|
||||
### 2. 创建数据库表
|
||||
|
||||
```sql
|
||||
CREATE TABLE students (
|
||||
id VARCHAR(20) NOT NULL,
|
||||
name VARCHAR(20) NOT NULL,
|
||||
birth DATE NOT NULL,
|
||||
gender VARCHAR(20) NOT NULL,
|
||||
PRIMARY KEY(id)
|
||||
);
|
||||
|
||||
CREATE TABLE teachers (
|
||||
id VARCHAR(20) NOT NULL,
|
||||
name VARCHAR(20) NOT NULL,
|
||||
PRIMARY KEY(id)
|
||||
);
|
||||
|
||||
CREATE TABLE courses (
|
||||
id VARCHAR(20) NOT NULL,
|
||||
name VARCHAR(20) NOT NULL,
|
||||
teacher_id VARCHAR(20) NOT NULL,
|
||||
FOREIGN KEY(teacher_id) REFERENCES teachers(id),
|
||||
PRIMARY KEY(id)
|
||||
);
|
||||
|
||||
CREATE TABLE scores (
|
||||
student_id VARCHAR(20) NOT NULL,
|
||||
course_id VARCHAR(20) NOT NULL,
|
||||
score FLOAT(3) NOT NULL,
|
||||
FOREIGN KEY(student_id) REFERENCES students(id),
|
||||
FOREIGN KEY(course_id) REFERENCES courses(id)
|
||||
);
|
||||
|
||||
insert into students values('01', '赵雷', '1990-01-01', '男');
|
||||
insert into students values('02', '钱电', '1990-12-21', '男');
|
||||
insert into students values('03', '孙风', '1990-05-20', '男');
|
||||
insert into students values('04', '李云', '1990-08-06', '男');
|
||||
insert into students values('05', '周梅', '1991-12-01', '女');
|
||||
insert into students values('06', '吴兰', '1992-03-01', '女');
|
||||
insert into students values('07', '郑竹', '1989-07-01', '女');
|
||||
insert into students values('08', '王菊', '1990-01-20', '女');
|
||||
|
||||
insert into teachers values('01', '张三');
|
||||
insert into teachers values('02', '李四');
|
||||
insert into teachers values('03', '王五');
|
||||
|
||||
insert into courses values('01', '语文', '02');
|
||||
insert into courses values('02', '数学', '01');
|
||||
insert into courses values('03', '英语', '03');
|
||||
|
||||
insert into scores values('01', '01', 80);
|
||||
insert into scores values('01', '02', 90);
|
||||
insert into scores values('01', '03', 99);
|
||||
insert into scores values('02', '01', 70);
|
||||
insert into scores values('02', '02', 60);
|
||||
insert into scores values('02', '03', 80);
|
||||
insert into scores values('03', '01', 80);
|
||||
insert into scores values('03', '02', 80);
|
||||
insert into scores values('03', '03', 80);
|
||||
insert into scores values('04', '01', 50);
|
||||
insert into scores values('04', '02', 30);
|
||||
insert into scores values('04', '03', 20);
|
||||
insert into scores values('05', '01', 76);
|
||||
insert into scores values('05', '02', 87);
|
||||
insert into scores values('06', '01', 31);
|
||||
insert into scores values('06', '03', 34);
|
||||
insert into scores values('07', '02', 89);
|
||||
insert into scores values('07', '03', 98);
|
||||
```
|
||||
|
||||
练习题
|
||||
|
||||
1.查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数
|
||||
|
||||
1.1查询同时存在" 01 "课程和" 02 "课程的情况
|
||||
|
||||
1.2查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )
|
||||
|
||||
1.3查询不存在" 01 "课程但存在" 02 "课程的情况
|
||||
|
||||
2.查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩
|
||||
|
||||
3.查询在 scores 表存在成绩的学生信息
|
||||
|
||||
4.查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null )
|
||||
|
||||
4.1查有成绩的学生信息
|
||||
|
||||
5.查询「李」姓老师的数量
|
||||
|
||||
6.查询学过「张三」老师授课的同学的信息
|
||||
|
||||
7.查询没有学全所有课程的同学的信息
|
||||
|
||||
8.查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息
|
||||
|
||||
9.查询和" 01 "号的同学学习的课程完全相同的其他同学的信息
|
||||
|
||||
10.查询没学过"张三"老师讲授的任一门课程的学生姓名
|
||||
|
||||
11.查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
|
||||
|
||||
12.检索" 01 "课程分数小于 60,按分数降序排列的学生信息
|
||||
|
||||
13.按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
|
||||
|
||||
14.查询各科成绩最高分、最低分和平均分:以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率;(及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90)
|
||||
|
||||
15.按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺
|
||||
|
||||
15.1按各科成绩进行排序,并显示排名, Score 重复时合并名次
|
||||
|
||||
16.查询学生的总成绩,并进行排名,总分重复时保留名次空缺
|
||||
|
||||
16.1查询学生的总成绩,并进行排名,总分重复时不保留名次空缺
|
||||
|
||||
17.统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] 及所占百分比
|
||||
|
||||
18.查询各科成绩前三名的记录
|
||||
|
||||
19.查询每门课程被选修的学生数
|
||||
|
||||
20.查询出只选修两门课程的学生学号和姓名
|
||||
|
||||
21.查询男生、女生人数
|
||||
|
||||
22.查询名字中含有「风」字的学生信息
|
||||
|
||||
23.查询同名同性学生名单,并统计同名人数
|
||||
|
||||
24.查询 1990 年出生的学生名单
|
||||
|
||||
25.查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
|
||||
|
||||
26.查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩
|
||||
|
||||
27.查询课程名称为「数学」,且分数低于 60 的学生姓名和分数
|
||||
|
||||
28.查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)
|
||||
|
||||
29.查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数
|
||||
|
||||
30.查询不及格的课程
|
||||
|
||||
31.查询课程编号为 01 且课程成绩在 80 分以上的学生的学号和姓名
|
||||
|
||||
32.求每门课程的学生人数
|
||||
|
||||
33.成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩
|
||||
|
||||
34.成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩
|
||||
|
||||
35.查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩
|
||||
|
||||
36.查询每门课成绩最好的前两名
|
||||
|
||||
37.统计每门课程的学生选修人数(超过 5 人的课程才统计)
|
||||
|
||||
38.检索至少选修两门课程的学生学号
|
||||
|
||||
39.查询选修了全部课程的学生信息
|
||||
|
||||
40.查询各学生的年龄,只按年份来算
|
||||
|
||||
41.查询各学生的年龄,按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一
|
||||
|
||||
42.查询本周过生日的学生
|
||||
|
||||
43.查询下周过生日的学生
|
||||
|
||||
44.查询本月过生日的学生
|
||||
|
||||
45.查询下月过生日的学生
|
||||
|
||||
```sql
|
||||
#1.查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数
|
||||
SELECT st.*, c1.score '01课程', c2.score '02课程'
|
||||
FROM students st, (
|
||||
SELECT sc1.student_id, sc1.score
|
||||
FROM scores sc1
|
||||
WHERE sc1.course_id = '01'
|
||||
)c1,
|
||||
(
|
||||
SELECT sc2.student_id, sc2.score
|
||||
FROM scores sc2
|
||||
WHERE sc2.course_id = '02'
|
||||
)c2
|
||||
WHERE st.id = c1.student_id AND st.id = c2.student_id AND c1.score > c2.score;
|
||||
|
||||
#1.1查询同时存在" 01 "课程和" 02 "课程的情况
|
||||
SELECT st.*, c1.score '01课程', c2.score '02课程'
|
||||
FROM students st, (
|
||||
SELECT sc1.student_id, sc1.score
|
||||
FROM scores sc1
|
||||
WHERE sc1.course_id = '01'
|
||||
)c1,
|
||||
(
|
||||
SELECT sc2.student_id, sc2.score
|
||||
FROM scores sc2
|
||||
WHERE sc2.course_id = '02'
|
||||
)c2
|
||||
WHERE st.id = c1.student_id AND st.id = c2.student_id;
|
||||
|
||||
#1.2查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )
|
||||
SELECT st.*, c1.score '01课程', c2.score '02课程'
|
||||
FROM students st
|
||||
LEFT JOIN
|
||||
(
|
||||
SELECT sc1.student_id, sc1.score
|
||||
FROM scores sc1
|
||||
WHERE sc1.course_id = '01'
|
||||
)c1 ON st.id = c1.student_id
|
||||
LEFT JOIN
|
||||
(
|
||||
SELECT sc2.student_id, sc2.score
|
||||
FROM scores sc2
|
||||
WHERE sc2.course_id = '02'
|
||||
)c2 ON st.id = c2.student_id
|
||||
WHERE c1.score IS NOT NULL;
|
||||
|
||||
#1.3查询不存在" 01 "课程但存在" 02 "课程的情况
|
||||
SELECT st.*, c1.score '01课程', c2.score '02课程'
|
||||
FROM students st
|
||||
LEFT JOIN
|
||||
(
|
||||
SELECT sc1.student_id, sc1.score
|
||||
FROM scores sc1
|
||||
WHERE sc1.course_id = '01'
|
||||
)c1 ON st.id = c1.student_id
|
||||
LEFT JOIN
|
||||
(
|
||||
SELECT sc2.student_id, sc2.score
|
||||
FROM scores sc2
|
||||
WHERE sc2.course_id = '02'
|
||||
)c2 ON st.id = c2.student_id
|
||||
WHERE c1.score IS NULL AND c2.score IS NOT NULL;
|
||||
|
||||
#2.查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩
|
||||
SELECT st.`name`, AVG(sc.score)
|
||||
FROM students st, scores sc
|
||||
WHERE st.id = sc.student_id
|
||||
GROUP BY st.id
|
||||
HAVING AVG(sc.score) > 60;
|
||||
|
||||
#3.查询在 scores 表存在成绩的学生信息
|
||||
SELECT *
|
||||
FROM students
|
||||
WHERE students.id IN (
|
||||
SELECT student_id
|
||||
FROM scores
|
||||
);
|
||||
#4.查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null )
|
||||
SELECT st.id, st.`name`, COUNT(*), SUM(sc.score)
|
||||
FROM students st
|
||||
LEFT JOIN scores sc ON st.id = sc.student_id
|
||||
GROUP BY st.id;
|
||||
#4.1查有成绩的学生信息
|
||||
SELECT st.id, st.`name`, COUNT(*), SUM(sc.score)
|
||||
FROM students st
|
||||
LEFT JOIN scores sc ON st.id = sc.student_id
|
||||
WHERE sc.score IS NOT NULL
|
||||
GROUP BY st.id;
|
||||
|
||||
#5.查询「李」姓老师的数量
|
||||
SELECT COUNT(*)
|
||||
FROM teachers t
|
||||
WHERE t.`name` LIKE '李%';
|
||||
|
||||
#6.查询学过「张三」老师授课的同学的信息
|
||||
SELECT DISTINCT st.*
|
||||
FROM students st, scores sc
|
||||
WHERE st.id = sc.student_id AND sc.course_id = (
|
||||
SELECT c.id
|
||||
FROM courses c, teachers t
|
||||
WHERE c.teacher_id = t.id AND t.`name` = '张三'
|
||||
);
|
||||
|
||||
#7.查询没有学全所有课程的同学的信息
|
||||
SELECT st.*
|
||||
FROM students st
|
||||
LEFT JOIN scores sc ON st.id = sc.student_id
|
||||
LEFT JOIN courses c ON sc.course_id = c.id
|
||||
GROUP BY st.id
|
||||
HAVING COUNT(*) < 3;
|
||||
|
||||
#8.查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息
|
||||
SELECT st.*
|
||||
FROM students st, scores sc
|
||||
WHERE st.id = sc.student_id AND st.id <> '01' AND sc.course_id IN(
|
||||
SELECT course_id
|
||||
FROM scores s
|
||||
WHERE s.student_id = '01'
|
||||
);
|
||||
|
||||
#9.查询和" 01 "号的同学学习的课程完全相同的其他同学的信息
|
||||
SELECT st.*
|
||||
FROM students st, scores sc
|
||||
WHERE st.id = sc.student_id AND sc.course_id AND st.id <> '01'
|
||||
GROUP BY st.id
|
||||
HAVING GROUP_CONCAT(sc.course_id) = (
|
||||
SELECT GROUP_CONCAT(c.course_id)
|
||||
FROM scores c
|
||||
WHERE c.student_id = '01'
|
||||
);
|
||||
|
||||
#10.查询没学过"张三"老师讲授的任一门课程的学生姓名
|
||||
SELECT s.`name`
|
||||
FROM students s
|
||||
WHERE s.id NOT IN (
|
||||
SELECT st.id
|
||||
FROM teachers t, courses c, students st, scores sc
|
||||
WHERE t.id = c.teacher_id AND t.`name` = '张三' AND st.id = sc.student_id AND sc.course_id = c.id
|
||||
);
|
||||
|
||||
#11.查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
|
||||
SELECT sc.student_id, st.`name`,AVG(sc.score)
|
||||
FROM scores sc, students st
|
||||
WHERE sc.score < 60 AND sc.student_id = st.id
|
||||
GROUP BY sc.student_id
|
||||
HAVING COUNT(*) >= 2;
|
||||
|
||||
#12.检索" 01 "课程分数小于 60,按分数降序排列的学生信息
|
||||
SELECT st.*
|
||||
FROM scores sc, students st
|
||||
WHERE sc.course_id = '01' AND sc.score < 60 AND sc.student_id = st.id
|
||||
ORDER BY sc.score DESC;
|
||||
|
||||
#13.按平均成绩从高到低显示所有学生的所有课程的平均成绩
|
||||
SELECT c.`name`, AVG(sc.score)
|
||||
FROM scores sc, courses c
|
||||
WHERE sc.course_id = c.id
|
||||
GROUP BY c.id
|
||||
ORDER BY AVG(sc.score) DESC;
|
||||
|
||||
#14.查询各科成绩最高分、最低分和平均分:以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率;(及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90)
|
||||
SELECT c.id '课程ID', c.`name` '课程名称', MAX(s.score) '最高分', MIN(s.score) '最低分', ROUND(AVG(s.score), 1) '平均值',
|
||||
s2.s1 '及格率', s2.s2 '中等率', s2.s3 '优良率', s2.s4 '优秀率'
|
||||
FROM scores s, courses c,
|
||||
(
|
||||
SELECT s.course_id,
|
||||
CONCAT(TRUNCATE(COUNT(IF(s.score >=60, TRUE, NULL))/sc.count*100,2), '%') s1,
|
||||
CONCAT(TRUNCATE(COUNT(IF(s.score >=70 AND s.score < 80, TRUE, NULL))/sc.count*100,2), '%') s2,
|
||||
CONCAT(TRUNCATE(COUNT(IF(s.score >=80 AND s.score < 90, TRUE, NULL))/sc.count*100,2), '%') s3,
|
||||
CONCAT(TRUNCATE(COUNT(IF(s.score >=90, TRUE, NULL))/sc.count*100,2), '%') s4
|
||||
FROM scores s, (
|
||||
SELECT course_id, COUNT(*) count
|
||||
FROM scores
|
||||
GROUP BY course_id
|
||||
) sc
|
||||
WHERE s.course_id = sc.course_id
|
||||
GROUP BY s.course_id
|
||||
)s2
|
||||
WHERE s.course_id = c.id AND c.id = s2.course_id
|
||||
GROUP BY c.id;
|
||||
|
||||
#15.按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺
|
||||
|
||||
#15.1按各科成绩进行排序,并显示排名, Score 重复时合并名次
|
||||
|
||||
#16.查询学生的总成绩,并进行排名,总分重复时保留名次空缺
|
||||
|
||||
|
||||
#16.1查询学生的总成绩,并进行排名,总分重复时不保留名次空缺
|
||||
SELECT sc.`name`, sc.s, @rank:=@rank+1
|
||||
FROM (
|
||||
SELECT st.`name`, IFNULL(SUM(sc.score),0) s
|
||||
FROM students st
|
||||
LEFT JOIN scores sc ON st.id = sc.student_id
|
||||
GROUP BY st.id
|
||||
ORDER BY s DESC
|
||||
)sc, (SELECT @rank:=0) r;
|
||||
#17.统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] 及所占百分比
|
||||
|
||||
#18.查询各科成绩前三名的记录
|
||||
SELECT s1.sname, s1.cname, s1.score, s1.rank1
|
||||
FROM (
|
||||
SELECT st.`name` sname, c.`name` cname, sc.score, @rank1:=@rank1+1 rank1
|
||||
FROM students st, scores sc, courses c, (SELECT @rank1:=0) r
|
||||
WHERE st.id = sc.student_id AND c.id = sc.course_id AND course_id = '01'
|
||||
ORDER BY sc.score DESC
|
||||
LIMIT 3
|
||||
)s1
|
||||
UNION
|
||||
SELECT s2.sname, s2.cname, s2.score, s2.rank1
|
||||
FROM (
|
||||
SELECT st.`name` sname, c.`name` cname, sc.score, @rank2:=@rank2+1 rank1
|
||||
FROM students st, scores sc, courses c, (SELECT @rank2:=0) r
|
||||
WHERE st.id = sc.student_id AND c.id = sc.course_id AND course_id = '02'
|
||||
ORDER BY sc.score DESC
|
||||
LIMIT 3
|
||||
)s2
|
||||
UNION
|
||||
SELECT s3.sname, s3.cname, s3.score, s3.rank1
|
||||
FROM (
|
||||
SELECT st.`name` sname, c.`name` cname, sc.score, @rank3:=@rank3+1 rank1
|
||||
FROM students st, scores sc, courses c, (SELECT @rank3:=0) r
|
||||
WHERE st.id = sc.student_id AND c.id = sc.course_id AND course_id = '03'
|
||||
ORDER BY sc.score DESC
|
||||
LIMIT 3
|
||||
)s3;
|
||||
|
||||
#19.查询每门课程被选修的学生数
|
||||
SELECT c.`name`, COUNT(*)
|
||||
FROM courses c
|
||||
LEFT JOIN scores sc ON sc.course_id = c.id
|
||||
GROUP BY c.id;
|
||||
#20.查询出只选修两门课程的学生学号和姓名
|
||||
SELECT st.id, st.`name`
|
||||
FROM students st
|
||||
WHERE (
|
||||
SELECT COUNT(*)
|
||||
FROM scores sc
|
||||
WHERE sc.student_id = st.id
|
||||
)=2;
|
||||
|
||||
#21.查询男生、女生人数
|
||||
SELECT st.gender, COUNT(*)
|
||||
FROM students st
|
||||
GROUP BY st.gender;
|
||||
|
||||
SELECT COUNT(IF(st.gender='男', TRUE, NULL)) '男生人数',
|
||||
COUNT(IF(st.gender='女', TRUE, NULL)) '女生人数'
|
||||
FROM students st;
|
||||
|
||||
#22.查询名字中含有「风」字的学生信息
|
||||
SELECT *
|
||||
FROM students st
|
||||
WHERE st.`name` LIKE '%风%';
|
||||
|
||||
|
||||
#23.查询同名同性学生名单,并统计同名人数
|
||||
SELECT s.`name`, s.gender, COUNT(*)
|
||||
FROM students s
|
||||
GROUP BY s.`name`, s.gender
|
||||
HAVING COUNT(*) > 1;
|
||||
|
||||
|
||||
#24.查询 1990 年出生的学生名单
|
||||
SELECT *
|
||||
FROM students s
|
||||
WHERE YEAR(s.birth) = 1990;
|
||||
|
||||
#25.查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
|
||||
SELECT c.`name`, AVG(s.score) avg
|
||||
FROM scores s, courses c
|
||||
WHERE s.course_id = c.id
|
||||
GROUP BY c.id;
|
||||
ORDER BY avg DESC, c.id;
|
||||
|
||||
#26.查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩
|
||||
SELECT st.id, st.`name`, AVG(sc.score) avg
|
||||
FROM students st, scores sc
|
||||
WHERE st.id = sc.student_id
|
||||
GROUP BY st.id
|
||||
HAVING avg>85;
|
||||
|
||||
#27.查询课程名称为「数学」,且分数低于 60 的学生姓名和分数
|
||||
SELECT st.`name`, sc.score
|
||||
FROM students st, scores sc, courses c
|
||||
WHERE st.id = sc.student_id AND sc.course_id = c.id
|
||||
AND c.`name` = '数学' AND sc.score < 60;
|
||||
|
||||
#28.查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)
|
||||
SELECT st.`name` '学生姓名', c.`name` '课程名', sc.score
|
||||
FROM students st
|
||||
LEFT JOIN scores sc ON st.id = sc.student_id
|
||||
LEFT JOIN courses c ON c.id = sc.course_id;
|
||||
|
||||
#29.查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数
|
||||
SELECT st.`name` '学生姓名', c.`name` '课程名', sc.score
|
||||
FROM students st
|
||||
LEFT JOIN scores sc ON st.id = sc.student_id
|
||||
LEFT JOIN courses c ON c.id = sc.course_id
|
||||
WHERE sc.score >= 70;
|
||||
|
||||
#30.查询不及格的课程
|
||||
SELECT st.`name` '学生姓名', c.`name` '课程名', sc.score
|
||||
FROM students st
|
||||
LEFT JOIN scores sc ON st.id = sc.student_id
|
||||
LEFT JOIN courses c ON c.id = sc.course_id
|
||||
WHERE sc.score < 60;
|
||||
|
||||
#31.查询课程编号为 01 且课程成绩在 80 分以上的学生的学号和姓名
|
||||
SELECT st.`name` '学生姓名', c.`name` '课程名', sc.score
|
||||
FROM students st
|
||||
LEFT JOIN scores sc ON st.id = sc.student_id
|
||||
LEFT JOIN courses c ON c.id = sc.course_id
|
||||
WHERE sc.score > 80 AND c.id = '01';
|
||||
|
||||
#32.求每门课程的学生人数
|
||||
SELECT c.`name`, COUNT(*)
|
||||
FROM scores s, courses c
|
||||
WHERE s.course_id = c.id
|
||||
GROUP BY c.id;
|
||||
#33.成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩
|
||||
SELECT st.`name`, sc.score
|
||||
FROM students st, scores sc, courses c, teachers t
|
||||
WHERE st.id = sc.student_id AND sc.course_id = c.id
|
||||
AND c.teacher_id = t.id AND t.`name` = '张三'
|
||||
ORDER BY sc.score DESC
|
||||
LIMIT 1;
|
||||
|
||||
#34.成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩
|
||||
SELECT st.`name`, sc.score
|
||||
FROM students st, scores sc
|
||||
WHERE st.id = sc.student_id AND sc.score = (
|
||||
SELECT MAX(score)
|
||||
FROM scores, courses, teachers
|
||||
WHERE scores.course_id = courses.id
|
||||
AND courses.teacher_id = teachers.id AND teachers.`name` = '张三'
|
||||
);
|
||||
#35.查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩
|
||||
SELECT st.id, sc1.course_id, sc1.score
|
||||
FROM students st, scores sc1
|
||||
WHERE st.id = sc1.student_id AND sc1.score = ANY(
|
||||
SELECT sc2.score
|
||||
FROM scores sc2
|
||||
WHERE sc2.student_id = st.id AND sc2.course_id != sc1.course_id
|
||||
);
|
||||
|
||||
#36.查询每门课成绩最好的前两名
|
||||
SELECT c1.`name`, c1.score
|
||||
FROM (
|
||||
SELECT c.`name`, sc.score
|
||||
FROM scores sc, courses c
|
||||
WHERE sc.course_id = c.id AND c.id = '01'
|
||||
ORDER BY sc.score DESC
|
||||
LIMIT 2
|
||||
)c1
|
||||
UNION ALL
|
||||
SELECT c2.`name`, c2.score
|
||||
FROM (
|
||||
SELECT c.`name`, sc.score
|
||||
FROM scores sc, courses c
|
||||
WHERE sc.course_id = c.id AND c.id = '02'
|
||||
ORDER BY sc.score DESC
|
||||
LIMIT 2
|
||||
)c2
|
||||
UNION ALL
|
||||
SELECT c3.`name`, c3.score
|
||||
FROM (
|
||||
SELECT c.`name`, sc.score
|
||||
FROM scores sc, courses c
|
||||
WHERE sc.course_id = c.id AND c.id = '03'
|
||||
ORDER BY sc.score DESC
|
||||
LIMIT 2
|
||||
)c3;
|
||||
#37.统计每门课程的学生选修人数(超过 5 人的课程才统计)
|
||||
SELECT c.`name`, COUNT(*) c
|
||||
FROM scores s, courses c
|
||||
WHERE s.course_id = c.id
|
||||
GROUP BY c.id
|
||||
HAVING c>5;
|
||||
|
||||
#38.检索至少选修两门课程的学生学号
|
||||
SELECT st.id, st.`name`
|
||||
FROM students st
|
||||
WHERE (
|
||||
SELECT COUNT(*)
|
||||
FROM scores sc
|
||||
WHERE sc.student_id = st.id
|
||||
)>=2;
|
||||
#39.查询选修了全部课程的学生信息
|
||||
SELECT st.*
|
||||
FROM students st, scores sc
|
||||
WHERE st.id = sc.student_id
|
||||
GROUP BY st.id
|
||||
HAVING COUNT(*) = 3;
|
||||
|
||||
#40.查询各学生的年龄,只按年份来算
|
||||
SELECT s.`name`, TIMESTAMPDIFF(YEAR,s.birth,NOW())
|
||||
FROM students s;
|
||||
|
||||
#41.查询各学生的年龄,按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一
|
||||
SELECT s.`name`, IF(DATE_FORMAT(s.birth,'%m-%d') < DATE_FORMAT(NOW(),'%m-%d'),
|
||||
TIMESTAMPDIFF(YEAR,s.birth,NOW())-1, TIMESTAMPDIFF(YEAR,s.birth,NOW()))
|
||||
FROM students s;
|
||||
|
||||
#42.查询本周过生日的学生
|
||||
SELECT *
|
||||
FROM students s
|
||||
WHERE WEEKOFYEAR(s.birth) = WEEKOFYEAR(NOW());
|
||||
#43.查询下周过生日的学生
|
||||
SELECT *
|
||||
FROM students s
|
||||
WHERE WEEKOFYEAR(s.birth) = WEEKOFYEAR(NOW()) + 1;
|
||||
#44.查询本月过生日的学生
|
||||
SELECT *
|
||||
FROM students s
|
||||
WHERE MONTH(s.birth) = MONTH(NOW());
|
||||
#45.查询下月过生日的学生
|
||||
SELECT *
|
||||
FROM students s
|
||||
WHERE MONTH(s.birth) = MONTH(NOW()) + 1;
|
||||
```
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
### 创建数据库
|
||||
|
||||
```sql
|
||||
CREATE DATABASE `emp`;
|
||||
|
||||
|
||||
USE emp;
|
||||
-- 建dept表
|
||||
CREATE TABLE `dept`( `deptno` INT(2) NOT NULL, `dname` VARCHAR(14), `loc` VARCHAR(13), CONSTRAINT pk_dept PRIMARY KEY(deptno) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
-- 键emp表
|
||||
CREATE TABLE `emp` ( `empno` int(4) NOT NULL PRIMARY KEY, `ename` VARCHAR(10), `job` VARCHAR(9), `mgr` int(4), `hiredate` DATE, `sal` float(7,2), `comm` float(7,2), `deptno` int(2), CONSTRAINT fk_deptno FOREIGN KEY(deptno) REFERENCES dept(deptno) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
-- 建salgrade表
|
||||
CREATE TABLE `salgrade` ( `grade` int, `losal` int, `hisal` int ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
-- 插入数据
|
||||
INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK');
|
||||
INSERT INTO dept VALUES (20,'RESEARCH','DALLAS');
|
||||
INSERT INTO dept VALUES (30,'SALES','CHICAGO');
|
||||
INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON');
|
||||
INSERT INTO EMP VALUES (7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
|
||||
INSERT INTO EMP VALUES (7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
|
||||
INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
|
||||
INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
|
||||
INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
|
||||
INSERT INTO EMP VALUES (7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
|
||||
INSERT INTO EMP VALUES (7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
|
||||
INSERT INTO EMP VALUES (7788,'SCOTT','ANALYST',7566,'1987-07-13',3000,NULL,20);
|
||||
INSERT INTO EMP VALUES (7839,'KING','PRESIDENT',NULL,'1981-11-07',5000,NULL,10);
|
||||
INSERT INTO EMP VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
|
||||
INSERT INTO EMP VALUES (7876,'ADAMS','CLERK',7788,'1987-07-13',1100,NULL,20);
|
||||
INSERT INTO EMP VALUES (7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
|
||||
INSERT INTO EMP VALUES (7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
|
||||
INSERT INTO EMP VALUES (7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);
|
||||
INSERT INTO SALGRADE VALUES (1,700,1200);
|
||||
INSERT INTO SALGRADE VALUES (2,1201,1400);
|
||||
INSERT INTO SALGRADE VALUES (3,1401,2000);
|
||||
INSERT INTO SALGRADE VALUES (4,2001,3000);
|
||||
INSERT INTO SALGRADE VALUES (5,3001,9999);
|
||||
```
|
||||
|
||||
### 练习题
|
||||
|
||||
1.列出与“SCOTT”从事相同工作的所有员工及部门名称,部门人数。
|
||||
|
||||
2.列出公司各个工资等级雇员的数量、平均工资。
|
||||
|
||||
3.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称。
|
||||
|
||||
4.列出在每个部门工作的员工数量、平均工资和平均服务期限。
|
||||
|
||||
5.列出所有员工的姓名、部门名称和工资。
|
||||
|
||||
6.列出所有部门的详细信息和部门人数。
|
||||
|
||||
7.列出各种工作的最低工资及从事此工作的雇员姓名。
|
||||
|
||||
8.列出各个部门的MANAGER(经理)的最低薪金、姓名、部门名称、部门人数。
|
||||
|
||||
9.列出所有员工的年工资,所在部门名称,按年薪从低到高排序。
|
||||
|
||||
10.查出某个员工的上级主管及所在部门名称,并要求出这些主管中的薪水超过3000
|
||||
|
||||
11.求出部门名称中,带‘S’字符的部门员工的、工资合计、部门人数。
|
||||
|
||||
12.给任职日期超过30年或者在87年雇佣的雇员加薪,加薪原则:10部门增长10%,20部门增长20%, 30部门增长30%,依次类推。
|
||||
|
||||
13.列出至少有一个员工的所有部门的信息:
|
||||
|
||||
14.列出薪金比SMITH对的所有员工:
|
||||
|
||||
15.列出所有员工的姓名以及其直接上级的姓名:
|
||||
|
||||
16.列出受雇日期早于其直接上级的所有员工的编号、姓名,部门名称
|
||||
|
||||
17.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
|
||||
|
||||
18.列出所有"CLERK(职员)"的姓名以及部门名称,部门的人数
|
||||
|
||||
19.列出最低薪金大于1500的各种工作以及从事此工作的全部雇员人数
|
||||
|
||||
20.列出在部门"SALES"工作的员工的姓名,假定不知道销售部的部门编号
|
||||
|
||||
21.列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,公司的工资等级
|
||||
|
||||
22.列出至少有一个员工的所有部门编号、名称,并统计出这些部门的平均工资、最低工资、最高工 资。
|
||||
|
||||
23.列出薪金比“SMITH”或“ALLEN”多的所有员工的编号、姓名、部门名称、其领导姓名。
|
||||
|
||||
24.列出所有员工的编号、姓名及其直接上级的编号、姓名,显示的结果按领导年工资的降序排列。
|
||||
|
||||
25.列出受雇日期早于其直接上级的所有员工的编号、姓名、部门名称、部门位置、部门人数。
|
||||
|
||||
26.列出部门名称和这些部门的员工信息(数量、平均工资),同时列出那些没有员工的部门。
|
||||
|
||||
27.列出所有“CLERK”(办事员)的姓名及其部门名称,部门的人数,工资等级。
|
||||
|
||||
28.列出最低薪金大于1500的各种工作及此从事此工作的全部雇员人数及所在部门名称、位置、平均工 资。
|
||||
|
||||
29.列出在部门“SALES”(销售部)工作的员工的姓名、基本工资、雇佣日期、部门名称,假定不知道 销售部的部门编号。
|
||||
|
||||
30.列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,公司的工资等级。
|
||||
|
||||
31.列出与“SCOTT”从事相同工作的所有员工及部门名称,部门人数。
|
||||
|
||||
32.查询dept表的结构
|
||||
|
||||
33.检索emp表,用is a 这个字符串来连接员工姓名和工种两个字段
|
||||
|
||||
34.检索emp表中有提成的员工姓名、月收入及提成。
|
||||
@@ -0,0 +1,52 @@
|
||||
### 一、创建表
|
||||
|
||||
#### 1、创建一张员工表employee
|
||||
|
||||
字段 类型
|
||||
id 整形
|
||||
NAME 字符型
|
||||
gender 字符型
|
||||
birthday 日期型
|
||||
entry_date 日期型
|
||||
job 字符型
|
||||
salary 小数型
|
||||
RESUME 文本
|
||||
|
||||
#### 2、创建一张员工表employee2
|
||||
|
||||
字段 类型
|
||||
id 整形
|
||||
NAME 字符型
|
||||
gender 字符型
|
||||
birthday 日期型
|
||||
entry_date 日期型
|
||||
job 字符型
|
||||
salary 小数型
|
||||
RESUME 文本
|
||||
要求:把id 设置成主键,并且自动增长。NAME不允许为空。
|
||||
|
||||
### 二、删除表
|
||||
|
||||
删除employee2表
|
||||
|
||||
### 三、数据表的结构的修改
|
||||
|
||||
1、在上面员工表的基本上增加一个image列。
|
||||
|
||||
2、修改job列,使其长度为60。
|
||||
|
||||
3、删除gender列。
|
||||
|
||||
4、表名改为USER。
|
||||
|
||||
5、修改表的字符集为utf8
|
||||
|
||||
6、列名NAME修改为username
|
||||
|
||||
### 四、查看表结构
|
||||
|
||||
1、查看数据库内的所有表
|
||||
|
||||
2、查看employee的建表语句
|
||||
|
||||
3、查看employee的表结构
|
||||
@@ -0,0 +1,62 @@
|
||||
/*----------------------------------------------------------------------
|
||||
程序设计
|
||||
------------------------------------------------------------------------
|
||||
在餐桌上吃饭,每人一只饭碗,2人一只菜碗,3人一只汤碗,一共用了n个碗,请编写函数算一算,一共有几人吃饭,计算出使用了几个饭碗,几个菜碗,几个汤碗?请注意:计算过程中菜碗和汤碗的数量要保证够用且是整数
|
||||
示例输入:
|
||||
【请输入总碗数n: 】25
|
||||
一共有13人吃饭
|
||||
使用了13个饭碗
|
||||
使用了7个菜碗
|
||||
使用了5个汤碗
|
||||
------------------------------------------------------------------------
|
||||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,仅在
|
||||
Program-End之间填入若干语句。
|
||||
不要删除标志否则不得分。
|
||||
不要修改或删除Program-End之外的内容否则不得分。
|
||||
----------------------------------------------------------------------*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
// 函数声明,用于计算吃饭的人数以及饭碗、菜碗和汤碗的数量
|
||||
int calculateDiningDetails(int n, int *riceBowls, int *vegetableBowls, int *soupBowls);
|
||||
|
||||
int main() {
|
||||
int n;
|
||||
int riceBowls, vegetableBowls, soupBowls,people;
|
||||
printf("【请输入总碗数n: 】");
|
||||
scanf("%d", &n);
|
||||
|
||||
|
||||
// 调用函数计算吃饭的人数以及饭碗、菜碗和汤碗的数量
|
||||
people = calculateDiningDetails(n, &riceBowls, &vegetableBowls, &soupBowls);
|
||||
|
||||
// 输出结果
|
||||
if (people!= -1) {
|
||||
printf("一共有%d人吃饭\n使用了%d个饭碗\n使用了%d个菜碗\n使用了%d个汤碗\n", people, riceBowls, vegetableBowls, soupBowls);
|
||||
} else {
|
||||
printf("没有符合条件的组合。\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 函数定义,用于计算吃饭的人数以及饭碗、菜碗和汤碗的数量
|
||||
int calculateDiningDetails(int n, int *riceBowls, int *vegetableBowls, int *soupBowls) {
|
||||
int x,totalBowls;
|
||||
|
||||
|
||||
/**********Program**********/
|
||||
for(x=3;x<n;x++){//n为碗的总数 x为当前吃饭人数
|
||||
*riceBowls = x;//饭碗数量等于人数
|
||||
*vegetableBowls = x%2==0?x/2:x/2+1;//菜碗数量计算 每2人一个碗不足2人也要有碗
|
||||
*soupBowls = x%3==0?x/3:x/3+1;//汤碗数量计算
|
||||
totalBowls = *riceBowls + *vegetableBowls + *soupBowls;
|
||||
if(totalBowls == n){
|
||||
return x;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
/********** End **********/
|
||||
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
// 动态分配内存以存储替换后的字符串
|
||||
char* replaceSubstring(const char *str, const char *oldSubstr, const char *newSubstr) {
|
||||
int strLen = strlen(str);
|
||||
int oldLen = strlen(oldSubstr);
|
||||
int newLen = strlen(newSubstr);
|
||||
int count=0, i, j, k;
|
||||
char *result, *p;
|
||||
|
||||
|
||||
/**********Program**********/
|
||||
//动态内存分配数组空间
|
||||
result = (char *)malloc(10000);
|
||||
p = result;//将数组首地址赋值给一个指针变量用来操作数组
|
||||
for(i=0;i<strLen;i++){//主串的下标遍历
|
||||
j = 0;//子串的下标遍历
|
||||
//判断当前是否找到和主串中是否和子串开头的字符
|
||||
if(oldSubstr[j] != str[i]){
|
||||
*p++=str[i];//直接存到新字符串
|
||||
continue;
|
||||
}
|
||||
while(oldSubstr[j] != '\0' && oldSubstr[j++] == str[i++]);
|
||||
//如果找到和子串相同的元素
|
||||
//则一一比较 一直比较到子串到结束符或者到字符不相等
|
||||
if(oldSubstr[j] == '\0'){
|
||||
//k为主串中子串的起始位置
|
||||
k=0;
|
||||
while(newSubstr[k] != '\0'){
|
||||
*p++ = newSubstr[k++];
|
||||
}
|
||||
i--;
|
||||
}else{//只是前面几个字符匹配 后续并不匹配 则需要从头开始存
|
||||
i-=j;
|
||||
*p++=str[i];
|
||||
}
|
||||
}
|
||||
*p='\0';
|
||||
/*
|
||||
字符串:abcabc
|
||||
需要替换的子串:a
|
||||
替换后的子串:##
|
||||
示例输出:##bc##bc
|
||||
*/
|
||||
|
||||
/********** End **********/
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
int main() {
|
||||
char str[10000];
|
||||
char oldSubstr[100];
|
||||
char newSubstr[100];
|
||||
char *replacedStr;
|
||||
|
||||
// 获取用户输入
|
||||
printf("【请输入原字符串:】");
|
||||
fgets(str, sizeof(str), stdin);
|
||||
str[strcspn(str, "\n")] = 0; // 去除换行符
|
||||
|
||||
printf("【请输入要替换的子串:】");
|
||||
fgets(oldSubstr, sizeof(oldSubstr), stdin);
|
||||
oldSubstr[strcspn(oldSubstr, "\n")] = 0; // 去除换行符
|
||||
if (strstr(str, oldSubstr) == NULL) {
|
||||
printf("原字符串不包含所输入的子串。\n");
|
||||
return 0;
|
||||
}
|
||||
printf("【请输入替换后的子串:】");
|
||||
fgets(newSubstr, sizeof(newSubstr), stdin);
|
||||
newSubstr[strcspn(newSubstr, "\n")] = 0; // 去除换行符
|
||||
|
||||
replacedStr = replaceSubstring(str, oldSubstr, newSubstr);
|
||||
printf("【示例输出:】%s\n", replacedStr);
|
||||
|
||||
// 释放动态分配的内存
|
||||
free(replacedStr);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
```sql
|
||||
#1.修改字段数据类型
|
||||
ALTER TABLE t_student MODIFY sex ENUM('男', '女');
|
||||
#2.添加字段
|
||||
ALTER TABLE t_student ADD tel CHAR(20);
|
||||
#3.修改数据类型
|
||||
ALTER TABLE t_coach MODIFY salary INT(6) ZEROFILL;
|
||||
#4.插入记录
|
||||
INSERT INTO t_coach()
|
||||
VALUES(DEFAULT, '赵欣彤', '女', 25, 6000);
|
||||
#5.更新记录
|
||||
UPDATE t_class c
|
||||
SET c.period = 18
|
||||
WHERE c.id = 10005;
|
||||
#6.条件、连接查询 tj11
|
||||
|
||||
#7.分组、连接查询 tj12
|
||||
|
||||
#8.条件、连接查询 视图
|
||||
|
||||
```
|
||||
@@ -1,246 +0,0 @@
|
||||
### C语言-1
|
||||
|
||||
```c
|
||||
/*------------------------------------------------------------------------------
|
||||
(1)【程序设计】定义一个大小为50的整型数组,将数字1~50存入该数组,利用指针将数组中的值输出,每行5个,每个数字占4个符号位,左对齐。
|
||||
------------------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
int main()
|
||||
{
|
||||
int i,*p,array[50];
|
||||
for(i=0;i<50;i++)
|
||||
{
|
||||
array[i]=i+1;
|
||||
}
|
||||
p=array;
|
||||
/**********Program**********/
|
||||
//p 一级指针 可以指向整型的一维数组
|
||||
for(i=0;i<50;i++){//0~49
|
||||
printf("%-4d ", p[i]);
|
||||
if((i+1)%5==0){
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-2
|
||||
|
||||
```c
|
||||
/*----------------------------------------------------------------------
|
||||
【程序设计】
|
||||
------------------------------------------------------------------------
|
||||
题目:要求实现一个函数,能够合并两个整数数组,合并后进行降序排序并删除重复元素。
|
||||
示例1:
|
||||
输入输出如下所示:
|
||||
请输入第一个数组的6个元素,每个元素之间用空格隔开:1 3 5 7 10 6
|
||||
请输入第二个数组的6个元素,每个元素之间用空格隔开:10 4 2 6 11 30
|
||||
合并后降序排列的数组:30 11 10 7 6 5 4 3 2 1
|
||||
------------------------------------------------------------------------
|
||||
注意:请勿改动程序中的其他内容。
|
||||
----------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
|
||||
int* mergeArrays(int *arr1, int size1, int *arr2, int size2,int *newLen);
|
||||
|
||||
int main() {
|
||||
|
||||
int size1=6;
|
||||
int size2=6;
|
||||
int arr1[6];
|
||||
int arr2[6];
|
||||
int i;
|
||||
|
||||
int newLen = 0;
|
||||
int* mergedArray;
|
||||
|
||||
printf("请输入第一个数组的6个元素,每个元素之间用空格隔开:");
|
||||
for ( i = 0; i < size1; i++) {
|
||||
scanf("%d", &arr1[i]);
|
||||
}
|
||||
printf("请输入第二个数组的6个元素,每个元素之间用空格隔开:");
|
||||
for ( i = 0; i < size2; i++) {
|
||||
scanf("%d", &arr2[i]);
|
||||
}
|
||||
|
||||
mergedArray = mergeArrays(arr1, size1, arr2, size2, &newLen);
|
||||
|
||||
printf("合并后降序排列的数组:");
|
||||
for (i = 0; i < newLen; i++) {
|
||||
printf("%d ", mergedArray[i]);
|
||||
}
|
||||
printf("\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int* mergeArrays(int *arr1,int size1,int *arr2,int size2,int *newLen) {
|
||||
static int mergedArray[20];
|
||||
/**********Program**********/
|
||||
int i, j=0, temp;
|
||||
//合并数组
|
||||
for(i=0;i<size1;i++){
|
||||
mergedArray[j++] = arr1[i];
|
||||
mergedArray[j++] = arr2[i];
|
||||
}
|
||||
|
||||
//降序排序
|
||||
for(i=0;i<size1*2-1;i++){//已经有序的个数
|
||||
for(j=0;j<size1*2-i-1;j++){//i每+1 代表最前面已经有一个最小的元素
|
||||
if(mergedArray[j] < mergedArray[j+1]){ //无序的元素两两比较小值后移
|
||||
temp = mergedArray[j];
|
||||
mergedArray[j] = mergedArray[j+1];
|
||||
mergedArray[j+1] = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
//去重
|
||||
/*
|
||||
默认第一个数字不用判断,从数组中第二个元素开始判断,
|
||||
是否等于前一项如果不等于则进行赋值操作,然后元素个数加一
|
||||
*/
|
||||
*newLen = 1;//当前数组中已经过滤后的有效数字个数
|
||||
for(i=1;i<size1*2;i++){//使用i变量从1下标元素开始 遍历数组中的所有数字
|
||||
if(mergedArray[(*newLen) - 1] != mergedArray[i]){
|
||||
//如果当前判断的元素不等于前一个元素则插入到有效数字位置
|
||||
mergedArray[(*newLen)++] = mergedArray[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
return mergedArray;
|
||||
}
|
||||
```
|
||||
|
||||
### MySQL-1
|
||||
|
||||
```sql
|
||||
#1. 设置字段主键+自动增长
|
||||
ALTER TABLE t_user MODIFY uid INT(11) PRIMARY KEY AUTO_INCREMENT;
|
||||
|
||||
#只设置主键
|
||||
ALTER TABLE t_user ADD PRIMARY KEY(uid);
|
||||
|
||||
#2. 插入记录
|
||||
#DEFAULT 自增/默认值/NULL
|
||||
INSERT INTO t_user()
|
||||
VALUES(DEFAULT, 'mike', 'mm123', '小明', DEFAULT);
|
||||
|
||||
#3. 更新记录
|
||||
UPDATE t_user u
|
||||
SET u.`password` = '888888'
|
||||
WHERE u.username = 'Dennis';
|
||||
|
||||
#4. tj11 条件查询+多表联查
|
||||
SELECT u.nickname, c.mid, c.score, c.content
|
||||
FROM t_user u, t_comment c
|
||||
WHERE u.uid = c.uid AND u.nickname = '白色';
|
||||
|
||||
#5. tj12 分组查询+多表联查
|
||||
SELECT m.mname, ROUND(AVG(c.score), 2)
|
||||
FROM t_movie m, t_comment c
|
||||
WHERE m.mid = c.mid
|
||||
GROUP BY m.mid;
|
||||
|
||||
#6. tj13 分组查询+多表联查
|
||||
SELECT m.mname, COUNT(*)
|
||||
FROM t_movie m, t_comment c
|
||||
WHERE m.mid = c.mid
|
||||
GROUP BY m.mid;
|
||||
|
||||
#7 视图 多表联查
|
||||
CREATE VIEW v_movie AS
|
||||
SELECT m.mname, u.nickname, c.score, c.content
|
||||
FROM t_user u, t_movie m , t_comment c
|
||||
WHERE u.uid = c.uid AND m.mid = c.mid;
|
||||
|
||||
#8 存储过程
|
||||
DELIMITER $$
|
||||
DROP PROCEDURE IF EXISTS pro_getUserNumber;
|
||||
CREATE PROCEDURE pro_getUserNumber(IN in_uid INT, OUT out_number INT)
|
||||
BEGIN
|
||||
SET out_number = (
|
||||
SELECT COUNT(*)
|
||||
FROM t_user u, t_comment c
|
||||
WHERE u.uid = c.uid AND u.uid = in_uid
|
||||
);
|
||||
END $$
|
||||
DELIMITER ;
|
||||
|
||||
#9 触发器
|
||||
DELIMITER $$
|
||||
DROP TRIGGER IF EXISTS tri_userlog;
|
||||
CREATE TRIGGER tri_userlog
|
||||
AFTER INSERT ON t_user
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO t_log()
|
||||
VALUES(DEFAULT, NEW.uid, '新增用户', '2024-01-01');
|
||||
END $$
|
||||
DELIMITER ;
|
||||
```
|
||||
|
||||
### MySQL-2
|
||||
|
||||
```sql
|
||||
#1 修改表结构
|
||||
ALTER TABLE t_examinee MODIFY sex CHAR(2);
|
||||
DESC t_examinee;#查看表结构
|
||||
|
||||
#2 插入记录
|
||||
INSERT INTO t_room()
|
||||
VALUES(DEFAULT, '202教室', '2号教学楼');
|
||||
|
||||
#3 删除记录
|
||||
DELETE FROM t_teacher
|
||||
WHERE rid IS NULL;
|
||||
|
||||
#4 更新记录
|
||||
UPDATE t_examinee
|
||||
SET tel = '1396668888'
|
||||
WHERE ename = '龚致远';
|
||||
|
||||
#5 tj11 条件查询+多表联查
|
||||
SELECT e.ename, r.rname, r.site
|
||||
FROM t_examinee e, t_room r
|
||||
WHERE e.rid = r.rid AND e.ename = '陶宇宁';
|
||||
|
||||
#6 tj12
|
||||
SELECT r.rname, r.site, t.tname, t.tel
|
||||
FROM t_teacher t, t_room r
|
||||
WHERE t.rid = r.rid AND r.rname = '402教室';
|
||||
|
||||
#7
|
||||
CREATE VIEW v_exam AS
|
||||
SELECT e.ename, e.sex, e.tel, e.examnum, r.rname, r.site
|
||||
FROM t_examinee e, t_room r
|
||||
WHERE e.rid = r.rid;
|
||||
|
||||
#8 存储过程
|
||||
DELIMITER $$
|
||||
DROP PROCEDURE IF EXISTS pro_getExamNumber;
|
||||
CREATE PROCEDURE pro_getExamNumber(IN in_rid INT, OUT out_number INT)
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO out_number
|
||||
FROM t_examinee e
|
||||
WHERE e.rid = in_rid;
|
||||
END $$
|
||||
DELIMITER ;
|
||||
|
||||
#9 触发器
|
||||
DELIMITER $$
|
||||
DROP TRIGGER IF EXISTS tri_examlog;
|
||||
CREATE TRIGGER tri_examlog
|
||||
BEFORE INSERT ON t_examinee
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO t_log()
|
||||
VALUES(DEFAULT, NEW.eid, '新增考生', '2024-01-01');
|
||||
END $$
|
||||
DELIMITER ;
|
||||
```
|
||||
@@ -1,346 +0,0 @@
|
||||
### C语言-1
|
||||
|
||||
```c
|
||||
/*------------------------------------------------------------------------------
|
||||
【程序设计】输入一个1000以内的三位数,找出小于这个三位数且个位数字与十位数字之和
|
||||
除以10所得的余数等于百位数字的数,并输出满足条件的数字之和。
|
||||
------------------------------------------------------------------------
|
||||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||||
------------------------------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int a,b,c,d,i,j,sum=0;
|
||||
scanf("%d",&j);
|
||||
/**********Program**********/
|
||||
for(i=100;i<j;i++){
|
||||
a = i%10;//个位
|
||||
b = i%100/10;//十位
|
||||
c = i/100;//百位
|
||||
d = (a+b)%10;//个位+十位 取模
|
||||
if(c == d){
|
||||
sum += i;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf("%d\n",sum);
|
||||
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
### C语言-2
|
||||
|
||||
```c
|
||||
/*------------------------------------------------------------------------------
|
||||
【程序设计】任意一个大于0的正整数,都可以写成若干个2的正整数次幂的和的形式。
|
||||
例如:7=2^2+2^1+2^0
|
||||
------------------------------------------------------------------------
|
||||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||||
------------------------------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
#include<string.h>
|
||||
#include<math.h>
|
||||
#include<ctype.h>
|
||||
#include<stdlib.h>
|
||||
|
||||
#define N 4
|
||||
|
||||
void binary_power(unsigned int x)
|
||||
{
|
||||
int flag =1;
|
||||
unsigned int s,t,y;
|
||||
printf("%u=",x);
|
||||
|
||||
/**********Program**********/
|
||||
t = 1;
|
||||
y = 0;
|
||||
//二进制的权位值 2^2 2^1 2^0
|
||||
//从末尾开始一直乘 乘到 大于传入的x就停止 同时记录下次方数
|
||||
while(t <= x){
|
||||
t*=2;
|
||||
y++;
|
||||
}
|
||||
y--;//2^y 会正好大于x
|
||||
printf("2^%d", y);//最高位
|
||||
x -= (int)pow(2, y);//求2的y次方 同时对x进行减法运算
|
||||
y--;
|
||||
|
||||
while(x > 0){
|
||||
t = 1;
|
||||
s = (int)pow(2, y);
|
||||
if(x >= s){//当前权位值没有大于需要运算的数据
|
||||
x -= s;
|
||||
printf("+2^%d", y);
|
||||
}
|
||||
y--;
|
||||
}
|
||||
/********** End **********/
|
||||
printf("\n");
|
||||
}
|
||||
int main()
|
||||
{
|
||||
unsigned int n[N]={1,15,32,144};
|
||||
int i;
|
||||
for(i=0;i<N;++i)
|
||||
binary_power(n[i]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
### C语言-3
|
||||
|
||||
```c
|
||||
/*------------------------------------------------------------------------------
|
||||
【程序设计】从键盘接收3个无序的整数,将这3个数据都插入到升序排列的数组中,并保持数组仍然有序。
|
||||
输入输出如下:
|
||||
4 6 9 12 15 18 23 26 32 39
|
||||
1 5 6
|
||||
1 4 5 6 6 9 12 15 18 23 26 32 39
|
||||
------------------------------------------------------------------------
|
||||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||||
------------------------------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
#define N 10
|
||||
void main( )
|
||||
{
|
||||
int a[N+5]={4,6,9,12,15,18,23,26,32,39},p,x,i,j;
|
||||
for(i=0;i<N;i++){
|
||||
printf("%d ",a[i]);
|
||||
}
|
||||
printf("\n");
|
||||
/**********Program**********/
|
||||
for(i=N;i<N+3;i++){
|
||||
scanf("%d", a+i);
|
||||
}
|
||||
|
||||
for(i=0;i<N+3-1;i++){
|
||||
for(j=0;j<N+3-1-i;j++){
|
||||
if(a[j] > a[j+1]){
|
||||
x = a[j];
|
||||
a[j] = a[j+1];
|
||||
a[j+1] = x;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
for(i=0;i<N+3;i++){
|
||||
printf("%d ",a[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
### C语言-4
|
||||
|
||||
```c
|
||||
/*------------------------------------------------------------------------------
|
||||
【程序设计】输入一个小于等于10000的整数n,在[100,n]之间打印出各位数字和为5的所有整数的个数.
|
||||
------------------------------------------------------------------------
|
||||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||||
------------------------------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
|
||||
void main()
|
||||
{
|
||||
int a,b,c,d,k,i,n;
|
||||
k=0;
|
||||
scanf("%d",&n);
|
||||
/**********Program**********/
|
||||
|
||||
for(i=100;i<=n;i++){
|
||||
a = i;//备份一遍i的数据
|
||||
d = 0;
|
||||
while(a){
|
||||
d += (a%10);
|
||||
a /= 10;
|
||||
}
|
||||
if(d == 5){
|
||||
k++;
|
||||
}
|
||||
}
|
||||
/********** End **********/
|
||||
printf("%d\n",k);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
### C语言-5
|
||||
|
||||
```c
|
||||
/*------------------------------------------------------------------------------
|
||||
【程序设计】编写函数rtrim,用来删除字符串尾部的空格,首部和中间的空格不删除。例如:字符串为:" A BC DEF ",
|
||||
删除后的结果是" A BC DEF"。要求函数形参采用指针变量。
|
||||
测试输入: A BC DEF
|
||||
测试输出: A BC DEF
|
||||
说明:测试输入中,A前有4个空格,F后有5个空格
|
||||
------------------------------------------------------------------------
|
||||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||||
------------------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
void main()
|
||||
{
|
||||
void rtrim(char *p);
|
||||
char s[100];
|
||||
gets(s);
|
||||
rtrim(s);
|
||||
puts(s);
|
||||
}
|
||||
void rtrim(char *p)
|
||||
{
|
||||
int i;
|
||||
/**********Program**********/
|
||||
i=0;
|
||||
while(*(p+i) != '\0'){
|
||||
i++;
|
||||
}
|
||||
while(*(p+i-1) == ' '){
|
||||
*(p+i-1) = '\0';
|
||||
i--;
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
### C语言-6
|
||||
|
||||
```c
|
||||
/*------------------------------------------------------------------------------
|
||||
【程序设计】定义一个函数实现字符串的逆序存放(连续的字符串,中间不包含空格),要求用指针实现。
|
||||
在主函数中调用函数实现字符串逆序存放。运行程序,输入字符串,输出逆序后的字符串。
|
||||
------------------------------------------------------------------------
|
||||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||||
------------------------------------------------------------------------------*/
|
||||
#include<stdlib.h>
|
||||
#include<stdio.h>
|
||||
void reversed_str(char *str){
|
||||
char *p=str,*q=str;
|
||||
int temp;
|
||||
while(*q!='\0'){
|
||||
q++;
|
||||
}
|
||||
q--;
|
||||
/**********Program**********/
|
||||
while(p < q){
|
||||
temp = *p;
|
||||
*p = *q;
|
||||
*q = temp;
|
||||
p++;
|
||||
q--;
|
||||
}
|
||||
/********** End **********/
|
||||
}
|
||||
int main(){
|
||||
char s[50];
|
||||
printf("输入字符串:");
|
||||
scanf("%s",s);
|
||||
printf("逆序前:%s\n",s);
|
||||
reversed_str(s);
|
||||
printf("逆序后:%s\n",s);
|
||||
return 0;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
### C语言-7
|
||||
|
||||
```c
|
||||
/*------------------------------------------------------------------------------
|
||||
【程序设计】从键盘输入一位整数i,计算其各位数字之和。
|
||||
------------------------------------------------------------------------
|
||||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||||
------------------------------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
#include <stdlib.h>
|
||||
int main(){
|
||||
int i,sum=0,a;
|
||||
scanf("%d",&i);
|
||||
/**********Program**********/
|
||||
while(i){
|
||||
sum += i%10;
|
||||
i/=10;
|
||||
}
|
||||
/********** End **********/
|
||||
printf("%d\n",sum);
|
||||
return 0;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
### C语言-8
|
||||
|
||||
```c
|
||||
/*------------------------------------------------------------------------------
|
||||
【程序设计】编写函数,判断一个字符串是否是回文。在主函数中输入一个字符串,调用自定义函数,输出结果。
|
||||
所谓回文是指顺读和倒读都一样的字符串。如"XZYKYZX"是回文。
|
||||
------------------------------------------------------------------------
|
||||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||||
------------------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
void main()
|
||||
{
|
||||
char s[50];
|
||||
int hw(char *s);
|
||||
gets(s);
|
||||
if(hw(s))
|
||||
printf("是回文!\n");
|
||||
else
|
||||
printf("不是回文!\n");
|
||||
}
|
||||
int hw(char *s)
|
||||
{
|
||||
int flag=1;
|
||||
char *p,*q;
|
||||
/**********Program**********/
|
||||
p = s;//指向字符串首元素
|
||||
q = s+strlen(s)-1;//指向末尾元素
|
||||
while(p < q){
|
||||
if(*p != *q){
|
||||
flag = 0;
|
||||
break;
|
||||
}
|
||||
p++;
|
||||
q--;
|
||||
}
|
||||
|
||||
return flag;
|
||||
/********** End **********/
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,588 @@
|
||||
### C语言-1
|
||||
```c
|
||||
/*
|
||||
-------------------------------------------------------
|
||||
【程序填空】
|
||||
---------------------------------------------------------
|
||||
打印以下图案:
|
||||
*****
|
||||
*****
|
||||
*****
|
||||
*****
|
||||
*****
|
||||
*/
|
||||
#include<stdio.h>
|
||||
void main()
|
||||
{
|
||||
int i =0 , j =0 , k=0;
|
||||
|
||||
/**********Program**********/
|
||||
for(i=0;i<5;i++){
|
||||
for(j=0;j<i;j++){
|
||||
printf(" ");
|
||||
}
|
||||
for(k=0;k<5;k++){
|
||||
printf("*");
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-2
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:编写程序,求两个非零整数之和。
|
||||
-------------------------------------------------------*/
|
||||
#include"stdio.h"
|
||||
main()
|
||||
{
|
||||
int x,y,z=0;
|
||||
scanf ("%d%d", &x,&y);
|
||||
/**********Program**********/
|
||||
if(x!=0 && y!=0){
|
||||
z = x+y;
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf("z=%d\n", z);
|
||||
}
|
||||
else
|
||||
printf("两个数中至少有一个数为零值\n");
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-3
|
||||
```c
|
||||
/*------------------------------------------------------------------------
|
||||
【程序设计】请编写函数sum,其功能是:用While循环语句求1到n之间(包括n)能
|
||||
被3整除的所有整数之和,并将结果返回给主函数。(n值由主函数传入)
|
||||
运行程序后若输入:10,则输出为:18
|
||||
----------------------------------------------------------------------*/
|
||||
#include "stdio.h"
|
||||
|
||||
long sum(int n)
|
||||
{
|
||||
/**********Program**********/
|
||||
int i, s=0;
|
||||
for(i=1;i<=n;i++){
|
||||
if(i%3==0){
|
||||
s+=i;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return s;
|
||||
/********** End **********/
|
||||
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
int x;
|
||||
long f;
|
||||
scanf("%d",&x);
|
||||
f=sum(x);
|
||||
printf("%ld\n",f);
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-4
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:设计程序打印出如下图案(菱形)
|
||||
|
||||
*
|
||||
***
|
||||
*****
|
||||
*******
|
||||
*****
|
||||
***
|
||||
*
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,j,k;
|
||||
/**********Program**********/
|
||||
for(i=-3;i<=3;i++){
|
||||
for(j=0;j<(i<0?-i:i);j++){
|
||||
printf(" ");
|
||||
}
|
||||
for(k=0;k<7-j*2;k++){
|
||||
printf("*");
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-5
|
||||
```c
|
||||
/*------------------------------------------------------
|
||||
题目:从键盘输入一个整数n,求2 至 n-1内所有能被n整除的数。
|
||||
例如:输入10 输出 2 5
|
||||
输入99 输出 3 9 11 33
|
||||
--------------------------------------------------------*/
|
||||
#include "stdio.h"
|
||||
int main ( )
|
||||
{
|
||||
int n,i;
|
||||
printf("input a number:");
|
||||
scanf ("%d", &n);
|
||||
/**********Program**********/
|
||||
for(i=2;i<n;i++)
|
||||
if(n%i==0)
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf ("%d\n",i);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-6
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
【程序填空】 2、有一箱苹果(100—200之间),如果分成4个苹果一组的若干组,则多2个苹果;若分成7个苹果一组,则多3个苹果; 若分成9个苹果一组,则多5个苹果,编程实现求苹果的个数。
|
||||
--------------------------------------------------------*/
|
||||
|
||||
# include <stdio.h>
|
||||
main ()
|
||||
{
|
||||
int i;
|
||||
for(i=100;i<200;i++)
|
||||
/**********Program**********/
|
||||
if(i%4==2 && i%7==3 && i%9==5)
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf ("%d",i);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-7
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
【程序填空】---------------------------------------------------------
|
||||
功能:计算武汉城区出租车收费的程序,当里程在3公里以内含3公里时收费12元,超过3公里(在0和1之间均计1公里)的部分每公里收费2元。
|
||||
备注:使用switch来实现
|
||||
--------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
main(){
|
||||
int m,n;
|
||||
scanf("%d",&m);
|
||||
|
||||
/**********Program**********/
|
||||
n=0;
|
||||
switch(m){
|
||||
default: n+=(m-3)*2;
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:n+=12;
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
|
||||
printf("本次收费为:%d",n);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-8
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:从键盘输入2个整数相加,再输入答案,如果正确,显示"right",否则显示"error"。
|
||||
--------------------------------------------------------*/
|
||||
#include "stdio.h"
|
||||
main( )
|
||||
{
|
||||
int a,b,c;
|
||||
printf("please input a and b:\n");
|
||||
scanf("%d,%d",&a , &b);
|
||||
printf("please input the answer:\n");
|
||||
scanf("%d",&c);
|
||||
/**********Program**********/
|
||||
if(a+b==c)
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf("right\n");
|
||||
else
|
||||
printf("error\n");
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-9
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:功能:输入三角形的三边长,判断能否构成三角形,若能,利用海伦公式计
|
||||
算该三角形的面积,计算结果保留3位小数。
|
||||
l=(a+b+c)/2,s=sqrt(l*(l-a)*(l-b)*(l-c))
|
||||
--------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
main()
|
||||
{
|
||||
float a,b,c,s,l;
|
||||
scanf("%f,%f,%f",&a , &b , &c);
|
||||
if(a+b<c||a+c<b||b+c<a)
|
||||
printf("该3个数据不能构成三角形\n");
|
||||
else
|
||||
{
|
||||
/**********Program**********/
|
||||
l=(a+b+c)/2;
|
||||
s=sqrt(l*(l-a)*(l-b)*(l-c));
|
||||
|
||||
/********** End **********/
|
||||
printf("该三角形的面积为%.3f\n",s);
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-10
|
||||
```c
|
||||
/*------------------------------------------------------------------------
|
||||
【程序设计】功能:使用for循环输出Fibonacci数列的前15项,要求每行输出5项。
|
||||
Fibonacci数列:1,1,2,3,5,8,13...........
|
||||
----------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int fib[15],i;
|
||||
fib[0]=1;fib[1]=1;
|
||||
/**********Program**********/
|
||||
for(i=2;i<15;i++){
|
||||
fib[i]=fib[i-1]+fib[i-2];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
|
||||
for(i=0;i<15;i++)
|
||||
{
|
||||
printf("%d\t",fib[i] );
|
||||
if ( i%5==4 ) printf("\n");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-11
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
1. 判断101-200之间有多少个素数,并输出所有素数。判断素数的方法IsPrime:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 --------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include<math.h>
|
||||
int IsPrime (int n)
|
||||
{
|
||||
int i=2;
|
||||
for(i=2;i<=sqrt(n);i++)
|
||||
/**********Program**********/
|
||||
if(n%i==0){
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
return 1;
|
||||
}
|
||||
|
||||
int main( )
|
||||
{
|
||||
int i ;
|
||||
for(i=100;i<=200;i++ )
|
||||
{
|
||||
if ( IsPrime( i) )
|
||||
{
|
||||
printf("% d",i);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-12
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
|
||||
功能:输出100到1000之间的各位数字之和能被15整除的所有数,输出时每10个一行。
|
||||
输出:(每个数占5个字符)
|
||||
159 168 177 186 195 249 258 267 276 285
|
||||
294 339 348 357 366 375 384 393 429 438
|
||||
447 456 465 474 483 492 519 528 537 546
|
||||
555 564 573 582 591 609 618 627 636 645
|
||||
654 663 672 681 690 708 717 726 735 744
|
||||
753 762 771 780 807 816 825 834 843 852
|
||||
861 870 906 915 924 933 942 951 960
|
||||
-------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
main()
|
||||
{
|
||||
int m,n,k,i=0;
|
||||
for(m=100;m<=1000;m++)
|
||||
{
|
||||
k=0;
|
||||
n=m;
|
||||
/**********Program**********/
|
||||
while(n){
|
||||
k+=n%10;
|
||||
n/=10;
|
||||
}
|
||||
if(k%15==0){
|
||||
i++;
|
||||
printf("%5d", m);
|
||||
|
||||
if(i%10==0){
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-13
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
题目: 打印以下图案:
|
||||
|
||||
*********
|
||||
*******
|
||||
*****
|
||||
***
|
||||
*
|
||||
--------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
void main()
|
||||
{
|
||||
int i,j,k;
|
||||
for( i=0 ; i<5; i++ )
|
||||
{
|
||||
printf("\n");
|
||||
/**********Program**********/
|
||||
for(j=0;j<i*2;j++){
|
||||
printf(" ");
|
||||
}
|
||||
for(k=0;k<9-j;k++){
|
||||
printf("*");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-14
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
1. 编写程序,打印以下图案:
|
||||
*****
|
||||
***
|
||||
*
|
||||
--------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
void main()
|
||||
{
|
||||
int i,j,k;
|
||||
/**********Program**********/
|
||||
for(i=0;i<3;i++){
|
||||
for(j=0;j<i;j++){
|
||||
printf(" ");
|
||||
}
|
||||
for(k=0;k<5-j*2;k++){
|
||||
printf("*");
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
|
||||
printf("\n");
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-15
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:不用第三个变量,实现两个数的对调操作。
|
||||
--------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int a,b;
|
||||
scanf("%d%d",&a , &b );
|
||||
printf("a=%d,b=%d\n",a,b);
|
||||
/**********Program**********/
|
||||
a = a+b;
|
||||
b = a-b;
|
||||
a = a-b;
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf("a=%d,b=%d\n", a,b);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-16
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
题目:请将123-321之间偶数累加输出最终结果。
|
||||
--------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
int main()
|
||||
{
|
||||
int i;
|
||||
long sum = 0;
|
||||
for(i = 123; i <= 321; i++ )
|
||||
{
|
||||
/**********Program**********/
|
||||
if(i%2==0){
|
||||
sum += i;
|
||||
}
|
||||
/********** End **********/
|
||||
}
|
||||
printf ("总和为 : %ld.\n",sum);
|
||||
return 0;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-17
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
题目:把123~321之间的可以被7整除的数输出。(使用for循环)
|
||||
--------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
void main()
|
||||
{
|
||||
int a=0;
|
||||
/**********Program**********/
|
||||
for(a=123;a<=321;a++){
|
||||
if(a%7==0){
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf("%d\n",a);
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-18
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:依次输入十个整数,找出其平方最大的一个数并打印出来。
|
||||
--------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
void main()
|
||||
{
|
||||
int i;
|
||||
float x,y,z=0;
|
||||
printf("\n请输入10个数:");
|
||||
for(i=1;i<=10;i++)
|
||||
{
|
||||
/**********Program**********/
|
||||
scanf("%f", &x);
|
||||
if(x*x > z){
|
||||
z = x*x;
|
||||
y = x;
|
||||
}
|
||||
/********** End **********/
|
||||
}
|
||||
printf("平方最大的一个数是:%f\n",y);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-19
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:从键盘输入一位整数i,计算其各位数字之和。比如输入整数
|
||||
31421,则打印结果为11。(使用while循环)
|
||||
--------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,sum=0,a;
|
||||
scanf("%d",&i);
|
||||
/**********Program**********/
|
||||
while(i){
|
||||
sum += i%10;
|
||||
i/=10;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf("%d\n",sum);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-20
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:编写程序(使用Switch ),给出年月日,计算出该日是该年的第几天。判断是否为
|
||||
闰年的条件是:能被 4 整除但是不能被100整除或者能被四百整除。
|
||||
--------------------------------------------------------*/
|
||||
#include"stdio.h"
|
||||
main()
|
||||
{
|
||||
int year,month,day,days=0,i,d;
|
||||
printf("请输入年-月-日:");
|
||||
scanf("%d-%d-%d",&year,&month,&day);
|
||||
for(i=1;i<month;i++)
|
||||
{
|
||||
/**********Program**********/
|
||||
switch(i){
|
||||
case 1:
|
||||
case 3:
|
||||
case 5:
|
||||
case 7:
|
||||
case 8:
|
||||
case 10: days+=31;break;
|
||||
case 2: days+=(28 + (year%4==0&&year%100!=0 || year%400==0?1:0));break;
|
||||
default: days+=30;
|
||||
}
|
||||
/********** End **********/
|
||||
}
|
||||
printf("%d-%d-%d是该年第%d天\n",year,month,day,days + day);
|
||||
}
|
||||
```
|
||||
|
||||
@@ -0,0 +1,549 @@
|
||||
### C语言-1
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程计算:s=1×2×3×……×n (n由键盘输入,使用for循环)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,n,p;
|
||||
p=1;
|
||||
printf("请输入一个正整数n:");
|
||||
scanf("%d",&n);
|
||||
/**********Program**********/
|
||||
for(i=2;i<=n;i++){
|
||||
p*=i;
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
printf("1*2*...*%d = %d\n",n,p);
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
|
||||
### C语言-2
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程计算π的近似值(直到最后一项的绝对值小于10-5为止),要求保留小数点后10位: (使用while)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
main()
|
||||
{
|
||||
int i,f;
|
||||
double t,s;
|
||||
f=1;
|
||||
s=0;
|
||||
i=1;
|
||||
t=1.0;
|
||||
/**********Program**********/
|
||||
while(fabs(t/i)>1e-5){
|
||||
s+=t/i*f;//计算该项的值
|
||||
f*=-1;//翻转符号
|
||||
i+=2;
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
s=s*4;
|
||||
printf("圆周率的近似值为:%.10f\n",s);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-3
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程计算π的近似值(直到最后一项的绝对值小于10-5为止,使用while):
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#define N 1e-5
|
||||
main()
|
||||
{
|
||||
int i,f;
|
||||
double t,s;
|
||||
f=1;
|
||||
s=0;
|
||||
i=1;
|
||||
t=1.0;
|
||||
/**********Program**********/
|
||||
while(fabs(t/i)>N){
|
||||
s+=t/i*f;//计算该项的值
|
||||
f*=-1;//翻转符号
|
||||
i+=2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
s=s*4 ;
|
||||
printf("圆周率的近似值为:%f\n",s);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-4
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:编程实现求1-10(包含1,不包含10)之间的所有数的乘积并输出。(使用while)
|
||||
--------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main( )
|
||||
{
|
||||
int i=1, sum=1;
|
||||
/**********Program**********/
|
||||
while(i<10){
|
||||
sum*=i;
|
||||
i++;
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
printf("the sum of odd is :%d\n",sum);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-5
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最
|
||||
低成绩,当输入负数时结束输入。(使用while循环)
|
||||
--------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int x,max,min;
|
||||
printf("please input x:\n");
|
||||
scanf("%d",&x);
|
||||
max=x;
|
||||
min=x;
|
||||
/**********Program**********/
|
||||
while(x > 0){
|
||||
if(x > max){
|
||||
max = x;
|
||||
}
|
||||
if(x < min){
|
||||
min = x;
|
||||
}
|
||||
scanf("%d", &x);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf("max=%d,min=%d\n",max,min);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-6
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程计算:使用for计算,s=1+2+3+……+n (n由键盘输入)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,n,sum;
|
||||
sum=0;
|
||||
printf("请输入一个正整数n:");
|
||||
scanf("%d",&n);
|
||||
/**********Program**********/
|
||||
for(i=1;i<=n;i++){
|
||||
sum+=i;
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
printf("1+2+...+%d = %d\n",n,sum);
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
|
||||
### C语言-7
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:编写比较a、b两个数的大小,且把大者赋给max,小者赋给min。
|
||||
--------------------------------------------------------*/
|
||||
#include"stdio.h"
|
||||
main()
|
||||
{
|
||||
int a,b,min,max;
|
||||
printf("输入两个数给a,b:");
|
||||
scanf("%d,%d",&a,&b);
|
||||
/**********Program**********/
|
||||
if (a > b) {
|
||||
max = a;
|
||||
min = b;
|
||||
} else {
|
||||
max = b;
|
||||
min = a;
|
||||
}
|
||||
/********** End **********/
|
||||
printf("min=%d,max=%d\n",min,max);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-8
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:输入三个整数x,y,z,请把这三个数由小到大输出。
|
||||
--------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int x,y,z,t;
|
||||
scanf("%d%d%d",&x , &y , &z);
|
||||
/**********Program**********/
|
||||
if (x > y) {
|
||||
t = x;
|
||||
x = y;
|
||||
y = t;
|
||||
}
|
||||
if (y > z) {
|
||||
t = y;
|
||||
y = z;
|
||||
z = t;
|
||||
}
|
||||
if (x > y) {
|
||||
t = x;
|
||||
x = y;
|
||||
y = t;
|
||||
}
|
||||
/********** End **********/
|
||||
printf("small to big: %d %d %d\n",x,y,z);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-9
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:从键盘输入整数n,输出n以内所有奇数的和。(使用for循环)
|
||||
--------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
void main()
|
||||
{
|
||||
int n,i,s;
|
||||
s=0;
|
||||
scanf("%d",&n);
|
||||
/**********Program**********/
|
||||
for(i=1;i<=n;i++){
|
||||
if(i%2==1){
|
||||
s+=i;
|
||||
}
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
printf("s=%d\n",s);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-10
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程计算:s=1!+3!+5!+…n! (n由键盘输入,使用for循环)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,j,n;
|
||||
long p,sum;
|
||||
sum=0;
|
||||
printf("请输入一个正整数n:");
|
||||
scanf("%d",&n);
|
||||
/**********Program**********/
|
||||
p = 1;
|
||||
for ( i = 1;i <= n; i++ ) {
|
||||
p *= i;
|
||||
if ( i%2 == 1 ) {
|
||||
sum += p;
|
||||
}
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
printf("1!+3!+...+%d!= %d\n",n,sum);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-11
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程计算求e近似值:
|
||||
用while语句求直到最后一项值小于10-5为止。
|
||||
e=0+1+1/1+1/1/2+1/1/2/3...
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i;
|
||||
double t,e;
|
||||
i=1;
|
||||
t=1.0;
|
||||
e=0;
|
||||
/**********Program**********/
|
||||
e = 2;
|
||||
i = 2;
|
||||
while(t/i > 1e-5){
|
||||
e += t/i;
|
||||
t /= i++;
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
printf("e=%f\n",e);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-12
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程计算求e近似值: 用for语句求前50项之和。
|
||||
e=0+1+1/1+1/1/2+1/1/2/3...
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i;
|
||||
double t,e;
|
||||
t=1.0;
|
||||
e=0;
|
||||
for(i=1;i<=50;i++)
|
||||
{
|
||||
/**********Program**********/
|
||||
e += t;
|
||||
t /= i;
|
||||
/********** End **********/
|
||||
}
|
||||
printf("前50项之和为:%f\n",e);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-13
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:输入一个圆半径(r),当r>=0时,计算并输出圆的面积(area)和周长(circumference),否则,输出提示信息。
|
||||
--------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#define PI 3.14
|
||||
main()
|
||||
{
|
||||
float r,s,l;
|
||||
printf("please input r:\n");
|
||||
scanf("%f",&r);
|
||||
if (r>=0)
|
||||
{
|
||||
/**********Program**********/
|
||||
s = PI * r*r;
|
||||
l = 2*PI*r;
|
||||
|
||||
/********** End **********/
|
||||
printf("the area is %f\n",s);
|
||||
printf("the circumference is %f\n",l);
|
||||
}
|
||||
else
|
||||
printf("input error!\n");
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-14
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:编写程序输入三位数(100-999),然后按数字逆序输出。(例:输入456↙,输出654)。
|
||||
--------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
void main()
|
||||
{
|
||||
int n,ge,shi,bai;
|
||||
printf("请输入一个三位正整数:");
|
||||
scanf("%d",&n);
|
||||
if((n<100)||(n>999))
|
||||
printf("输入数据有误!\n");
|
||||
else
|
||||
{
|
||||
/**********Program**********/
|
||||
ge = n % 10;
|
||||
shi = n % 100 / 10;
|
||||
bai = n / 100;
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf("此数的逆序输出结果为:%d%d%d\n",ge,shi,bai);
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-15
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程计算:s=1!+2!+3!+…n! (n由键盘输入,使用for循环)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,j,n;
|
||||
long p,sum;
|
||||
sum=0;
|
||||
printf("请输入一个正整数n:");
|
||||
scanf("%d",&n);
|
||||
/**********Program**********/
|
||||
p = 1;
|
||||
for( i = 1;i <= n; i++ ){
|
||||
p *= i;
|
||||
sum += p;
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
printf("1!+2!+...+%d!= %d\n",n,sum);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-16
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程计算:s=1-3+5-7+……-99(使用for循环)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,f,sum;
|
||||
f=1;
|
||||
sum=0;
|
||||
/**********Program**********/
|
||||
for(i=1;i<=99;i++){
|
||||
if(i%2==1){
|
||||
sum += i*f;
|
||||
f*=-1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
printf("1-3+5-7+...-99 = %d\n",sum);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-17
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:编写一个简单计算器程序,输入格式为:a op b。其中 a和b是
|
||||
参加运算的两个数,op 为运算符,它的取值只能是+、-、*、/。
|
||||
例:(注意输出格式)
|
||||
输入:3,+,4
|
||||
输出:3.000000+4.000000=7.000000
|
||||
--------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
main()
|
||||
{
|
||||
float a,b;
|
||||
char op;
|
||||
printf("Please enter a,b and op:");
|
||||
scanf("%f,%c,%f",&a,&op,&b);
|
||||
switch(op)
|
||||
{
|
||||
/**********Program**********/
|
||||
case '+':printf("%f+%f=%f\n", a, b, a+b);break;
|
||||
case '-':printf("%f-%f=%f\n", a, b, a-b);break;
|
||||
case '*':printf("%f*%f=%f\n", a, b, a*b);break;
|
||||
/********** End **********/
|
||||
case '/':if(b!=0)
|
||||
printf("%f/%f=%f\n",a,b,a/b);
|
||||
else
|
||||
printf("error!\n");break;
|
||||
default:printf("error!\n");break;
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-18
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:编写程序,把三个整数中最大的打印出来。
|
||||
--------------------------------------------------------*/
|
||||
#include"stdio.h"
|
||||
main()
|
||||
{
|
||||
int a,b,c,m;
|
||||
scanf("%d,%d,%d", &a,&b,&c);
|
||||
/**********Program**********/
|
||||
m = a;
|
||||
if( b > m ){
|
||||
m = b;
|
||||
}
|
||||
if ( c > m ) {
|
||||
m = c;
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
printf ("m=%d\n",m);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-19
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能::使用for循环打印出如下图案(菱形)
|
||||
|
||||
*
|
||||
***
|
||||
*****
|
||||
*******
|
||||
*****
|
||||
***
|
||||
*
|
||||
--------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,j,k;
|
||||
/**********Program**********/
|
||||
for(i=-3;i<=3;i++){
|
||||
for(j=0;j<(i<0?-i:i);j++){
|
||||
printf(" ");
|
||||
}
|
||||
for(k=0;k<7-j*2;k++){
|
||||
printf("*");
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
/********** End **********/
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-20
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:找出n个数中最大的数和最小的数,并将它们的值输出出来。
|
||||
--------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
int main()
|
||||
{
|
||||
int a,n,i,min,max;
|
||||
scanf("%d",&n);
|
||||
scanf("%d",&a);
|
||||
min=a;
|
||||
max=a;
|
||||
for(i=1;i<n;i++)
|
||||
{
|
||||
/**********Program**********/
|
||||
scanf("%d", &a);
|
||||
if(a > max){
|
||||
max = a;
|
||||
}
|
||||
if(a < min){
|
||||
min = a;
|
||||
}
|
||||
/********** End **********/
|
||||
}
|
||||
printf("The maximum number is %d.\n",max);
|
||||
printf("The minimum number is %d.\n",min);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
@@ -0,0 +1,657 @@
|
||||
### C语言-1
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
任意输入一个日期,计算这一天是这一年中的第几天(考虑闰年和平年)。
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int y,m,d,s,f;
|
||||
s=0;
|
||||
printf("请输入一个日期(YYYY-MM-DD):");
|
||||
scanf("%d-%d-%d",&y,&m,&d);
|
||||
if(y%4==0&&y%100!=0||y%400==0)
|
||||
f=1;
|
||||
else
|
||||
f=0;
|
||||
switch(m-1)
|
||||
{
|
||||
/**********Program**********/
|
||||
case 11: s+=30;
|
||||
case 10: s+=31;
|
||||
case 9: s+=30;
|
||||
case 8: s+=31;
|
||||
case 7: s+=31;
|
||||
case 6: s+=30;
|
||||
case 5: s+=31;
|
||||
case 4: s+=30;
|
||||
case 3: s+=31;
|
||||
case 2: s+=f+28;
|
||||
case 1: s+=31;
|
||||
/********** End **********/
|
||||
}
|
||||
s=s+d ;
|
||||
printf("%d-%d-%d是这一年中的第%d天\n",y,m,d,s);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-2
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程求s=a+aa+aaa+aaaa+aa…a的值。其中a为一个数字,例:3+33+333+3333+33333,要求a以及所加数字个数n由键盘输入,示例中a=3,n=5。(注:使用for)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int a,n,s,i,t;
|
||||
s=t=0;
|
||||
printf("请输入数字a:");
|
||||
scanf("%d",&a);
|
||||
printf("请输入求和的项数n:");
|
||||
scanf("%d",&n);
|
||||
/**********Program**********/
|
||||
t = a;
|
||||
for(i=0;i<n;i++){
|
||||
s += t;
|
||||
t*=10;
|
||||
t+=a;
|
||||
}
|
||||
/********** End **********/
|
||||
printf("s=%d\n",s);
|
||||
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-3
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
从键盘输入一个十进制整数,将其转换为二进制后反序再转成新的十进制后输出。(例:11→1011→1101→13)(注:使用while循环)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int n,s,t;
|
||||
s=0;
|
||||
printf("请输入一个整数:");
|
||||
scanf("%d",&n);
|
||||
/**********Program**********/
|
||||
//1011 从最末尾开始 依次除出
|
||||
//加入s之前将前加入的数*1
|
||||
while(n){
|
||||
s += s + n%2;
|
||||
n /= 2;
|
||||
}
|
||||
/********** End **********/
|
||||
printf("%d\n",s);
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-4
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程判断m是否素数,m由键盘输入。(使用for)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
main()
|
||||
{
|
||||
int m,i,k;
|
||||
printf("请输入一个正整数 :");
|
||||
scanf("%d",&m);
|
||||
k=sqrt(m);
|
||||
/**********Program**********/
|
||||
for(i=2;i<=k;i++){
|
||||
if(m % i == 0){
|
||||
break;
|
||||
}
|
||||
}
|
||||
/********** End **********/
|
||||
if(i>k)
|
||||
printf("%d是素数\n",m);
|
||||
else
|
||||
printf("%d不是素数\n",m);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-5
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程判断m是否素数,m由键盘输入。(使用for循环)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int m,i;
|
||||
printf("请输入一个正整数 :");
|
||||
scanf("%d",&m);
|
||||
/**********Program**********/
|
||||
for(i=2;i<m;i++){
|
||||
if(m%i==0){
|
||||
break;
|
||||
}
|
||||
}
|
||||
/********** End **********/
|
||||
if(i==m)
|
||||
printf("%d是素数\n",m);
|
||||
else
|
||||
printf("%d不是素数\n",m);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-6
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
使用for循环输出99乘法表,要求格式如图所示: (注:乘积占四个字符)
|
||||
1x1=1
|
||||
2x1=2 2x2=4
|
||||
3x1=3 3x2=6 3x3=9
|
||||
4x1=4 4x2=8 4x3=12 4x4=16
|
||||
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
|
||||
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
|
||||
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
|
||||
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
|
||||
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,j;
|
||||
/**********Program**********/
|
||||
for(i=1;i<10;i++){
|
||||
for(j=1;j<=i;j++){
|
||||
printf("%dx%d=%-4d", i, j, i*j);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-7
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
从键盘输入5个整数,输出其最大值、最小值、平均值。(注:使用for循环)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int n,s,max,min,i;
|
||||
double avg;
|
||||
scanf("%d",&n);
|
||||
s=max=min=n;
|
||||
for(i=2;i<=5;i++)
|
||||
{
|
||||
scanf("%d",&n);
|
||||
/**********Program**********/
|
||||
if(n > max){
|
||||
max = n;
|
||||
}
|
||||
if(n < min){
|
||||
min = n;
|
||||
}
|
||||
s+=n;
|
||||
|
||||
|
||||
/********** End **********/
|
||||
}
|
||||
avg=s/5.0;
|
||||
printf("max=%d,min=%d,avg=%f\n",max,min,avg);
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-8
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编写程序,输出从公元2000年至3000年所有闰年的年号,每输出10个年号换一行。
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int year,count;
|
||||
count=0;
|
||||
for(year=2000;year<=3000;year++)
|
||||
{
|
||||
if(year%4==0&&year%100!=0 || year%400==0) {
|
||||
printf("%-6d",year);
|
||||
/**********Program**********/
|
||||
count++;
|
||||
if(count%10==0){
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
/********** End **********/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
|
||||
### C语言-9
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
输入一个年月日,要求输出这一天是该年的第几天。(例如:2000年3月2日是该年的第62天)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i, year,month,day,days;
|
||||
days=0;
|
||||
printf("请输入一年日期(格式为:yyyy-mm-dd):");
|
||||
scanf("%d-%d-%d",&year,&month,&day);
|
||||
for(i=1;i<month;i++)
|
||||
{
|
||||
switch(i)
|
||||
{
|
||||
/**********Program**********/
|
||||
case 1:
|
||||
case 3:
|
||||
case 5:
|
||||
case 7:
|
||||
case 8:
|
||||
case 10:days+=31;break;
|
||||
case 2: days+=28;days += (year%4==0&&year%100!=0||year%400==0)?1:0;break;
|
||||
default:
|
||||
days+=30;
|
||||
/********** End **********/ }
|
||||
}
|
||||
days=days+day;
|
||||
printf("%d-%d-%d是这一年中的第%d天\n",year,month,day,days);
|
||||
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-10
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
求前100个素数,输出时每个数占5个字符宽度,10个一行,并输出其平均值。
|
||||
结果:
|
||||
2 3 5 7 11 13 17 19 23 29
|
||||
31 37 41 43 47 53 59 61 67 71
|
||||
73 79 83 89 97 101 103 107 109 113
|
||||
127 131 137 139 149 151 157 163 167 173
|
||||
179 181 191 193 197 199 211 223 227 229
|
||||
233 239 241 251 257 263 269 271 277 281
|
||||
283 293 307 311 313 317 331 337 347 349
|
||||
353 359 367 373 379 383 389 397 401 409
|
||||
419 421 431 433 439 443 449 457 461 463
|
||||
467 479 487 491 499 503 509 521 523 541
|
||||
|
||||
average=241.330000
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
main()
|
||||
{
|
||||
int i,j,k,m,sum;
|
||||
double avg;
|
||||
k=0;
|
||||
sum=0;
|
||||
for(i=2;k<100;i++)
|
||||
{
|
||||
m=sqrt(i);
|
||||
/**********Program**********/
|
||||
for(j=2;j<=m;j++){
|
||||
if(i%j==0){
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(j>m){
|
||||
printf("%5d", i);
|
||||
k++;
|
||||
sum+=i;
|
||||
if(k%10==0){
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/********** End **********/
|
||||
}
|
||||
avg=sum/100.0;
|
||||
printf("\naverage=%f\n",avg);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-11
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
求100到200间的所有素数,输出时每个数占5个字符宽度,10个一行。要求在奇数中找素数。
|
||||
结果:
|
||||
101 103 107 109 113 127 131 137 139 149
|
||||
151 157 163 167 173 179 181 191 193 197
|
||||
199
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
main()
|
||||
{
|
||||
int i,j,k,m;
|
||||
k=0;
|
||||
for(i=101;i<200;i+=2 )
|
||||
{
|
||||
m=sqrt(i);
|
||||
/**********Program**********/
|
||||
for(j=2;j<=m;j++){
|
||||
if(i%j==0){
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(j > m){
|
||||
printf("%5d", i);
|
||||
k++;
|
||||
if(k%10==0){
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
/********** End **********/
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-12
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
使用for循环输出99乘法表,要求格式如图所示: (注:乘积占四个字符)
|
||||
1x1=1 1x2=2 1x3=3 1x4=4 1x5=5 1x6=6 1x7=7 1x8=8 1x9=9
|
||||
2x1=2 2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18
|
||||
3x1=3 3x2=6 3x3=9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27
|
||||
4x1=4 4x2=8 4x3=12 4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36
|
||||
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
|
||||
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36 6x7=42 6x8=48 6x9=54
|
||||
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 7x8=56 7x9=63
|
||||
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 8x9=72
|
||||
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,j;
|
||||
/**********Program**********/
|
||||
for(i=1;i<10;i++){
|
||||
for(j=1;j<10;j++){
|
||||
printf("%dx%d=%-4d", i, j, i*j);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-13
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编写程序打印一个n行的菱形,n由键盘输入
|
||||
输入:5
|
||||
输出:
|
||||
*
|
||||
***
|
||||
*****
|
||||
***
|
||||
*
|
||||
-----------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
main()
|
||||
{
|
||||
int i,j,k,n;
|
||||
printf("请输入一个奇数(行数)n:");
|
||||
scanf("%d",&n);
|
||||
for(i=-n/2; i<=n/2;i++)
|
||||
{
|
||||
/**********Program**********/
|
||||
for(j=0;j<abs(i);j++){
|
||||
printf(" ");
|
||||
}
|
||||
for(k=0;k<n-j*2;k++){
|
||||
printf("*");
|
||||
}
|
||||
printf("\n");
|
||||
/********** End **********/
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-14
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程输出500以内的“水仙花数”。“水仙花数”是一个三位数,其各位数字立方和等于该数本身(例:153=13+53+33)。(使用for循环)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int a,b,c,i;
|
||||
/**********Program**********/
|
||||
for(i=100;i<500;i++){
|
||||
a = i%10;
|
||||
b = i%100/10;
|
||||
c = i/100;
|
||||
|
||||
if(a*a*a + b*b*b + c*c*c == i)
|
||||
/********** End **********/
|
||||
printf("%d\n",i);
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-15
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
斐波那契数列的前几项是:1、1、2、3、5、8、13、21……编程输出该数列,直到某项的值大于10000为止,每行输出4个。
|
||||
结果:
|
||||
1 1 2 3
|
||||
5 8 13 21
|
||||
34 55 89 144
|
||||
233 377 610 987
|
||||
1597 2584 4181 6765
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int a,b,c,i;
|
||||
a=b=1;
|
||||
printf("%d\t%d\t",a,b);
|
||||
for(i=3;;i++)
|
||||
{
|
||||
c=a+b;
|
||||
if(c>10000)
|
||||
break;
|
||||
printf("%d\t",c);
|
||||
/**********Program**********/
|
||||
if(i%4==0){
|
||||
printf("\n");
|
||||
}
|
||||
a = b;
|
||||
b = c;
|
||||
}
|
||||
/********** End **********/
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-16
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
斐波那契数列的前几项是:1、1、2、3、5、8、13、21……编程输出该数列的前20项,每行输出4个。
|
||||
结果:
|
||||
1 1 2 3
|
||||
5 8 13 21
|
||||
34 55 89 144
|
||||
233 377 610 987
|
||||
1597 2584 4181 6765
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int a,b,c,i;
|
||||
a=b=1;
|
||||
printf("%d\t%d\t",a,b);
|
||||
for(i=3;i<=20;i++)
|
||||
{
|
||||
c=a+b;
|
||||
printf("%d\t",c);
|
||||
/**********Program**********/
|
||||
if(i%4==0){
|
||||
printf("\n");
|
||||
}
|
||||
a = b;
|
||||
b = c;
|
||||
/********** End **********/
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-17
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
使用for循环输出99乘法表,要求格式如图所示:(注:格式 %dx%d=%-4d)
|
||||
1x1=1 1x2=2 1x3=3 1x4=4 1x5=5 1x6=6 1x7=7 1x8=8 1x9=9
|
||||
2x1=2 2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16
|
||||
3x1=3 3x2=6 3x3=9 3x4=12 3x5=15 3x6=18 3x7=21
|
||||
4x1=4 4x2=8 4x3=12 4x4=16 4x5=20 4x6=24
|
||||
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
|
||||
6x1=6 6x2=12 6x3=18 6x4=24
|
||||
7x1=7 7x2=14 7x3=21
|
||||
8x1=8 8x2=16
|
||||
9x1=9
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,j;
|
||||
/**********Program**********/
|
||||
for(i = 1;i<10;i++){
|
||||
for(j=1;j<=10-i;j++){
|
||||
printf("%dx%d=%-4d", i, j, i*j);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
||||
/********** End **********/
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-18
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
使用for循环输出99乘法表,要求格式如图所示:
|
||||
1x9=9
|
||||
2x8=16 2x9=18
|
||||
3x7=21 3x8=24 3x9=27
|
||||
4x6=24 4x7=28 4x8=32 4x9=36
|
||||
5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
|
||||
6x4=24 6x5=30 6x6=36 6x7=42 6x8=48 6x9=54
|
||||
7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 7x8=56 7x9=63
|
||||
8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 8x9=72
|
||||
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,j;
|
||||
for(i=1;i<=9;i++)
|
||||
{
|
||||
for(j=1;j<10-i;j++)
|
||||
{
|
||||
printf("\t");
|
||||
}
|
||||
/**********Program**********/
|
||||
for(j=10-i;j<10;j++){
|
||||
printf("%dx%d=%-4d", i, j, i*j);
|
||||
}
|
||||
|
||||
|
||||
printf("\n");
|
||||
}
|
||||
/********** End **********/
|
||||
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-19
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
使用for循环输出99乘法表,要求格式如图所示:
|
||||
1x1=1 1x2=2 1x3=3 1x4=4 1x5=5 1x6=6 1x7=7 1x8=8 1x9=9
|
||||
2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18
|
||||
3x3=9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27
|
||||
4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36
|
||||
5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
|
||||
6x6=36 6x7=42 6x8=48 6x9=54
|
||||
7x7=49 7x8=56 7x9=63
|
||||
8x8=64 8x9=72
|
||||
9x9=81
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,j;
|
||||
for(i=1;i<=9;i++)
|
||||
{
|
||||
for(j=1;j<i;j++)
|
||||
{
|
||||
printf("\t");
|
||||
}
|
||||
/**********Program**********/
|
||||
for(j=i;j<10;j++){
|
||||
printf("%dx%d=%-4d", i, j, i*j);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
/********** End **********/
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-20
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
请编写输出以下图案的程序。(注意:需要使用math库abs)
|
||||
1
|
||||
123
|
||||
12345
|
||||
1234567
|
||||
12345
|
||||
123
|
||||
1
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
main()
|
||||
{
|
||||
int i,j;
|
||||
for(i=-3;i<=3;i++)
|
||||
{
|
||||
/**********Program**********/
|
||||
for(j=0;j<7-abs(i)*2;j++){
|
||||
printf("%d", j+1);
|
||||
}
|
||||
printf("\n");
|
||||
/********** End **********/
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
@@ -0,0 +1,579 @@
|
||||
### C语言-1
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
输入三角形三边长,判断能否构成三角形,如能构成则输出其面积,不能则给出错误提示。
|
||||
(海伦公式):
|
||||
一个三角形,边长分别为a、b、c,面积S可由一下公式求得
|
||||
S=√p(p-a)(p-b)(p-c)
|
||||
公式里p为半周长(周长的一半):P=(a+b+c)/2
|
||||
-------------------------------------------------------*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
/**********Program**********/
|
||||
double S(int a, int b, int c){
|
||||
return (a+b+c)/2;
|
||||
}
|
||||
|
||||
double AREA(double t, int a, int b, int c){
|
||||
return sqrt(t*(t-a)*(t-b)*(t-c));
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
main()
|
||||
{
|
||||
int a,b,c;
|
||||
double t,area;
|
||||
printf("请输入三个正整数,表示三角形的三个边长:");
|
||||
scanf("%d%d%d",&a,&b,&c);
|
||||
if(a+b>c&&a+c>b&&b+c>a)
|
||||
{
|
||||
t=S(a,b,c);
|
||||
area=AREA(t,a,b,c);
|
||||
printf("三角形的面积是:%f\n",area);
|
||||
}
|
||||
else
|
||||
printf("不能构成三角形\n");
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-2
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
将一张100元钞票换成等值的10元,5元,2元和1元的小钞,每次换成40张小钞,要求每一种小钞都要有,编程求出所有可能的换法总数输出并输出各换法的组合。(注:使用for循环)
|
||||
结果:
|
||||
10元钞票有1张,5元钞票有5张,2元钞票有31张,1元钞票有3张
|
||||
10元钞票有1张,5元钞票有6张,2元钞票有27张,1元钞票有6张
|
||||
10元钞票有1张,5元钞票有7张,2元钞票有23张,1元钞票有9张
|
||||
。
|
||||
。
|
||||
。
|
||||
|
||||
总共有34种换法
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int a,b,c,d,s;
|
||||
s=0;
|
||||
/**********Program**********/
|
||||
for(a=1;a<10;a++){
|
||||
for(b=1;b<20;b++){
|
||||
for(c=1;c<50;c++){
|
||||
for(d=1;d<100;d++){
|
||||
if(a*10+b*5+c*2+d == 100 && a+b+c+d==40){
|
||||
s++;
|
||||
/********** End **********/
|
||||
printf("10元钞票有%d张,5元钞票有%d张,2元钞票有%d张,1元钞票有%d张\n",a,b,c,d);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("\n总共有%d种换法\n",s);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-3
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程将一个正整数分解成质因数(注:使用while循环)
|
||||
例如:
|
||||
输入 90
|
||||
输出 90=2*3*3*5
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int n,i;
|
||||
printf("请输入一个正整数:");
|
||||
scanf("%d",&n);
|
||||
printf("%d=",n);
|
||||
i=2;
|
||||
/**********Program**********/
|
||||
while(n > i){
|
||||
if(n%i==0){
|
||||
printf("%d*", i);
|
||||
n/=i;
|
||||
}else{
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
printf("%d\n",n);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-4
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
韩信点兵,韩信带1500名士兵打仗,战死四五百人,站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。编程计算还有多少士兵? (注:使用for循环)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i;
|
||||
/**********Program**********/
|
||||
for(i=1000;i<1100;i++){
|
||||
if(i%3==2 && i%5==4 && i%7==6)
|
||||
|
||||
/********** End **********/
|
||||
printf("还有%d名士兵\n",i);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-5
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
百马百担,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,每匹马都要驮货,编程计算大马(dm)、中马(zm)、小马(xm)各有多少匹。 (注:使用for循环)
|
||||
结果:
|
||||
大马有2匹,中马有30匹,小马有68匹
|
||||
大马有5匹,中马有25匹,小马有70匹
|
||||
大马有8匹,中马有20匹,小马有72匹
|
||||
大马有11匹,中马有15匹,小马有74匹
|
||||
大马有14匹,中马有10匹,小马有76匹
|
||||
大马有17匹,中马有5匹,小马有78匹
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
void main() {
|
||||
int dm,zm,xm;
|
||||
/**********Program**********/
|
||||
for(dm=1;dm<66;dm++){
|
||||
for(zm=1;zm<100;zm++){
|
||||
for(xm=2;xm<200;xm+=2){
|
||||
if(dm*3+zm*2+xm/2 == 100 && dm+zm+xm==100)
|
||||
|
||||
/********** End **********/
|
||||
printf("大马有%d匹,中马有%d匹,小马有%d匹\n",dm,zm,xm);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-6
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
鸡兔同笼,《孙子算经》中记载:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”,编程计算鸡和兔子各有多少只。(注:使用for循环)
|
||||
结果:
|
||||
鸡有23只,兔有12只
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int j,t;
|
||||
/**********Program**********/
|
||||
for(j=1;j<35;j++){
|
||||
for(t=1;t<35;t++){
|
||||
if(j*2+t*4==94 && j+t == 35)
|
||||
|
||||
/********** End **********/
|
||||
printf("鸡有%d只,兔有%d只\n",j,t);
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-7
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程输出1000以内的完数,所谓完数是指一个数的所有因子(包含1但不包含其本身)之和等于这个数本身。(例:28=1+2+4+7+14)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,j,s;
|
||||
for(i=2;i<=1000;i++)
|
||||
{
|
||||
s=0;
|
||||
/**********Program**********/
|
||||
for(j=1;j<i;j++){
|
||||
if(i%j==0){
|
||||
s+=j;
|
||||
}
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
if(s==i)
|
||||
printf("%d\n",i);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-8
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程求所有能被3且能被5且能被7整除的三位数并输出(每个数字占5字符宽度,5个一行)。
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,k;
|
||||
k=0;
|
||||
for(i=100;i<=999;i++)
|
||||
{
|
||||
/**********Program**********/
|
||||
if(i%3 ==0 && i%5==0 && i%7==0){
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf("%5d",i);
|
||||
k++;
|
||||
if(k%5==0)
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-9
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
输入一个整数,判断是否为回文数(所谓回文数就是左右对称的数)
|
||||
(注:使用while循环)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int n,t,s;
|
||||
s=0;
|
||||
scanf("%d",&n);
|
||||
t=n;
|
||||
/**********Program**********/
|
||||
while(n){
|
||||
s*=10;
|
||||
s+=n%10;
|
||||
n/=10;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
if( t==s )
|
||||
printf("yes\n");
|
||||
else
|
||||
printf("no\n");
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-10
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
百钱买百鸡,《算经》一书中记载
|
||||
“鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”
|
||||
要求每一种鸡都要有,编程输出公鸡(gj)、母鸡(mj)、小鸡(xj)各有多少只。
|
||||
结果:(注:使用for循环)
|
||||
|
||||
公鸡有4只,母鸡有18只,小鸡有78只
|
||||
公鸡有8只,母鸡有11只,小鸡有81只
|
||||
公鸡有12只,母鸡有4只,小鸡有84只
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
void main()
|
||||
{
|
||||
int gj,mj,xj;
|
||||
/**********Program**********/
|
||||
for(gj=1;gj<20;gj++){
|
||||
for(mj=1;mj<34;mj++){
|
||||
for(xj=3;xj<300;xj+=3){
|
||||
if(gj+mj+xj==100 && gj*5+mj*3+xj/3 == 100)
|
||||
|
||||
/********** End **********/
|
||||
printf("公鸡有%d只,母鸡有%d只,小鸡有%d只\n",gj,mj,xj);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-11
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
《孙子算经》中有这样一道算术题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?” (注:使用while循环)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i;
|
||||
i=1;
|
||||
/**********Program**********/
|
||||
while(1){
|
||||
|
||||
|
||||
|
||||
if(i%3==2&&i%5==3&&i%7==2)
|
||||
/********** End **********/
|
||||
{
|
||||
printf("%d\n",i);
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-12
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
61.【程序功能】猴子吃桃,猴子第一天摘下若干个桃子, 吃了总数的一半,还不过瘾,又多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都这样吃。到第十天时, 发现只有一个桃子了。编程求第一天摘了多少个桃子。(注:使用for循环)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
void main() {
|
||||
int i,t;
|
||||
t=1;
|
||||
/**********Program**********/
|
||||
for(i=0;i<9;i++){
|
||||
t=(t+1)*2;
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
printf("第一天共摘了%d只桃\n",t);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-13
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编写函数(sum),计算1+2+3+…+n的和,n由键盘输入。
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
int sum(int n);
|
||||
main()
|
||||
{
|
||||
int n,s;
|
||||
printf("请输入一个整数n:");
|
||||
scanf("%d",&n);
|
||||
s=sum(n);
|
||||
printf("1+2+...+%d=%d\n",n,s);
|
||||
}
|
||||
/**********Program**********/
|
||||
int sum(int n){
|
||||
int s = 0, i;
|
||||
for(i=1;i<=n;i++){
|
||||
s += i;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
```
|
||||
|
||||
### C语言-14
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程用“碾转相除法”求两个整数的最大公约数,两个整数由键盘输入。(注:使用while循环)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int m,n,t;
|
||||
printf("请输入两个整数:");
|
||||
scanf("%d%d",&m,&n);
|
||||
t=m%n;
|
||||
/**********Program**********/
|
||||
while(t){
|
||||
m = n;
|
||||
n = t;
|
||||
t = m%n;
|
||||
}
|
||||
/********** End **********/
|
||||
printf("最大公约数是:%d\n",n);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-15
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
一个正整数加上100后是完全平方数,加上268后还是一个完全平方数,编程求出这样的数并输出(在10000以内求)。
|
||||
结果:
|
||||
21
|
||||
261
|
||||
1581
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
main()
|
||||
{
|
||||
int i,j,k;
|
||||
for(i=1;i<=10000;i++)
|
||||
{
|
||||
/**********Program**********/
|
||||
if(pow((int)sqrt(i+100), 2) == i+100 && pow((int)sqrt(i+268), 2) == i+268){
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf("%d\n",i);
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-16
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
输入一个整数,输出该数所有因子(1和它本身除外)之和。例如6的因子有2和3,则输出5
|
||||
(注:使用for循环)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int n,i,s;
|
||||
printf("请输入一个整数n:");
|
||||
scanf("%d",&n);
|
||||
s=0;
|
||||
/**********Program**********/
|
||||
for(i=2;i<n;i++){
|
||||
if(n%i==0){
|
||||
s+=i;
|
||||
}
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
printf("s=%d\n",s);
|
||||
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
|
||||
### C语言-17
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程求100以内的所有奇数之和,以及偶数之和。(注:使用for循环)
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,odd,even;
|
||||
odd=even=0;
|
||||
/**********Program**********/
|
||||
for(i=1;i<=100;i++){
|
||||
if(i%2){
|
||||
odd+=i;
|
||||
}else{
|
||||
even+=i;
|
||||
}
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
printf("奇数之和为:%d,偶数之和为:%d\n",odd,even);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-18
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
输出100-1000以内所有的回文数,一行10个。(注:每个数占5个字符)
|
||||
101 111 121 131 141 151 161 171 181 191
|
||||
202 212 222 232 242 252 262 272 282 292
|
||||
303 313 323 333 343 353 363 373 383 393
|
||||
404 414 424 434 444 454 464 474 484 494
|
||||
505 515 525 535 545 555 565 575 585 595
|
||||
606 616 626 636 646 656 666 676 686 696
|
||||
707 717 727 737 747 757 767 777 787 797
|
||||
808 818 828 838 848 858 868 878 888 898
|
||||
909 919 929 939 949 959 969 979 989 999
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,s,t,k;
|
||||
k=0;
|
||||
/**********Program**********/
|
||||
for(i=100;i<1000;i++){
|
||||
s = 0;
|
||||
t = i;
|
||||
while(t){
|
||||
s*=10;
|
||||
s+=t%10;
|
||||
t/=10;
|
||||
}
|
||||
if(s == i){
|
||||
printf("%5d", i);
|
||||
k++;
|
||||
if(k%10==0){
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-19
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编程求用1,2,3,4四个数字可以组成多少个无重复数字的四位数,并输出这些四位数。(注:使用for循环)
|
||||
结果:
|
||||
1234
|
||||
1243
|
||||
1324
|
||||
。
|
||||
。
|
||||
。
|
||||
可以组成24个无重复数字的四位数
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int a,b,c,d,count;
|
||||
count=0;
|
||||
/**********Program**********/
|
||||
for(a=1;a<5;a++)
|
||||
for(b=1;b<5;b++)
|
||||
for(c=1;c<5;c++)
|
||||
for(d=1;d<5;d++)
|
||||
if(a!=b && a!=c && a!=d && b!=c && b!=d && c!=d){
|
||||
printf("%d%d%d%d\n", a, b, c, d);
|
||||
count++;
|
||||
}
|
||||
/********** End **********/
|
||||
printf("可以组成%d个无重复数字的四位数\n",count);
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-20
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
一小球从100米落下,每次弹跳原来一半高,求第10次落地时经过的距离及第10次弹跳的高度。
|
||||
(注:使用for循环)
|
||||
-------------------------------------------------------*/
|
||||
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i;
|
||||
double h,s;
|
||||
s=100;
|
||||
h=50;
|
||||
/**********Program**********/
|
||||
for(i=0;i<9;i++){
|
||||
s+=h*2;
|
||||
h/=2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf("第10次落地时经过的距离为%f米,第10次弹跳的高度为%f米\n",s,h);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
@@ -0,0 +1,388 @@
|
||||
### 第一套
|
||||
|
||||
```sql
|
||||
#1 插入记录
|
||||
/*
|
||||
主键自增字段:DEFAULT
|
||||
设置成空值:NULL
|
||||
*/
|
||||
INSERT INTO t_employee()
|
||||
VALUES('e0013', '刘红', '女', 22, '实习生', 'd0002', NULL);
|
||||
#2.修改表结构
|
||||
/*
|
||||
修改表中字段的数据类型
|
||||
ALTER TABLE 表名 MODIFY 字段名 数据类型 [约束];
|
||||
*/
|
||||
ALTER TABLE t_employee MODIFY sex ENUM('男', '女');
|
||||
#3 创建外键
|
||||
/*
|
||||
学生表(学号、姓名、班级编号)
|
||||
班级表(班级编号、班级名称)
|
||||
外键表:学生表 主键表:班级表
|
||||
ALTER TABLE 学生表 ADD CONSTRAINT fk_st FOREIGN KEY(班级编号) REFERENCES 班级表(班级编号);
|
||||
|
||||
FOREIGN KEY(字段) 外键表中的字段
|
||||
REFERENCES 表名(字段) 字段是表中的主键
|
||||
*/
|
||||
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(字段名) REFERENCES 表名(主键字段名);
|
||||
ALTER TABLE t_employee ADD CONSTRAINT fK_did FOREIGN KEY(did) REFERENCES t_department(did);
|
||||
|
||||
#4 排序、分页查询 tj11
|
||||
/*
|
||||
基础查询
|
||||
SELECT 字段
|
||||
FROM 表
|
||||
ORDER BY 需要排序的字段 ASC/DESC(升序/降序)
|
||||
LIMIT 起始位置,个数;
|
||||
*/
|
||||
#查询出员工的所有信息
|
||||
SELECT *
|
||||
FROM t_employee;
|
||||
#在基础查询之上对年龄进行降序排序
|
||||
SELECT *
|
||||
FROM t_employee
|
||||
ORDER BY age DESC;
|
||||
#在排序的基础之上,进行分页
|
||||
SELECT *
|
||||
FROM t_employee
|
||||
ORDER BY age DESC
|
||||
LIMIT 5, 8;#第0个代表第一个 第六个使用的位置是5
|
||||
|
||||
#5条件查询 tj12
|
||||
/*
|
||||
SELECT 字段
|
||||
FROM 表
|
||||
WHERE 条件;
|
||||
*/
|
||||
SELECT *
|
||||
FROM t_salary
|
||||
WHERE money >= 5000 AND money <= 8000;
|
||||
|
||||
#6 tj13 分组查询
|
||||
SELECT eid, MAX(money)
|
||||
FROM t_salary
|
||||
GROUP BY eid;
|
||||
|
||||
#7 tj14 多表联查+条件过滤
|
||||
SELECT d.dname, e.ename
|
||||
FROM t_employee e, t_department d
|
||||
WHERE e.did = d.did AND e.position = '经理';
|
||||
|
||||
#8
|
||||
CREATE VIEW v_hrm AS
|
||||
SELECT d.dname, e.ename, s.money, s.stime
|
||||
FROM t_employee e, t_department d, t_salary s
|
||||
WHERE e.did = d.did AND e.eid = s.eid
|
||||
ORDER BY s.stime DESC;
|
||||
|
||||
#9 触发器
|
||||
DELIMITER $$
|
||||
DROP TRIGGER IF EXISTS tri_updateGroup;
|
||||
CREATE TRIGGER tri_updateGroup
|
||||
BEFORE UPDATE ON t_employee
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.age != OLD.age THEN
|
||||
IF NEW.age<30 THEN
|
||||
SET NEW.groups = '青年';
|
||||
ELSEIF NEW.age<50 THEN
|
||||
SET NEW.groups = '中年';
|
||||
ELSE
|
||||
SET NEW.groups = '老年';
|
||||
END IF;
|
||||
END IF;
|
||||
END $$
|
||||
DELIMITER ;
|
||||
|
||||
#10 存储过程
|
||||
DELIMITER $$ #改变代码结束符
|
||||
DROP PROCEDURE IF EXISTS pro_GetTopSalary;#创建存储过程之前先删除
|
||||
#设置存储过程名,传入传出参数名和数据类型
|
||||
CREATE PROCEDURE pro_GetTopSalary(IN in_did CHAR(10), OUT out_ename VARCHAR(30))
|
||||
BEGIN
|
||||
#连接查询+排序+分页
|
||||
SELECT e.ename INTO out_ename
|
||||
FROM t_employee e, t_salary s
|
||||
WHERE e.eid = s.eid AND e.did = in_did
|
||||
ORDER BY s.money DESC
|
||||
LIMIT 1;
|
||||
END $$
|
||||
DELIMITER ;
|
||||
#调用存储过程 传入用户变量接收传出数据并使用打印出来
|
||||
CALL pro_GetTopSalary('d0001', @result);
|
||||
SELECT @result;
|
||||
```
|
||||
|
||||
### 第二套
|
||||
|
||||
```sql
|
||||
#1 创建表
|
||||
CREATE TABLE t_booking(
|
||||
bid CHAR(10) PRIMARY KEY,
|
||||
rid CHAR(10) NOT NULL,
|
||||
customerName VARCHAR(50),
|
||||
tel VARCHAR(30),
|
||||
btime DATE
|
||||
);
|
||||
|
||||
#2 插入记录
|
||||
INSERT INTO t_booking()
|
||||
VALUES('b0001', 'r0002', '诸葛亮', '1821234567', '2023-10-01');
|
||||
|
||||
#3 添加字段
|
||||
ALTER TABLE t_hotel ADD introduce VARCHAR(255);
|
||||
|
||||
#4 更新记录
|
||||
UPDATE t_room r
|
||||
SET r.price = 500
|
||||
WHERE r.rid = 'r0003';
|
||||
|
||||
#5 tj11
|
||||
SELECT *
|
||||
FROM t_hotel h
|
||||
WHERE h.`level` IN ('二星', '三星');
|
||||
|
||||
#6 tj12
|
||||
SELECT h.hid, ROUND(AVG(r.price), 2)
|
||||
FROM t_hotel h, t_room r
|
||||
WHERE h.hid = r.hid
|
||||
GROUP BY h.hid;
|
||||
|
||||
#7 子查询 + 视图
|
||||
CREATE VIEW v_hotel AS
|
||||
SELECT h.hname, r.rname, r.price
|
||||
FROM t_hotel h, t_room r
|
||||
WHERE h.hid = r.hid AND r.price =(
|
||||
SELECT MAX(price)
|
||||
FROM t_room
|
||||
WHERE hid = h.hid
|
||||
);
|
||||
|
||||
#8 触发器
|
||||
DELIMITER $$
|
||||
DROP TRIGGER IF EXISTS tri_updateIntroduce;
|
||||
CREATE TRIGGER tri_updateIntroduce
|
||||
BEFORE UPDATE ON t_hotel
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.`level` = '一星' OR NEW.`level` = '二星' THEN
|
||||
SET NEW.introduce = '实用';
|
||||
ELSEIF NEW.`level` = '三星' OR NEW.`level` = '四星' THEN
|
||||
SET NEW.introduce = '豪华';
|
||||
ELSEIF NEW.`level` = '五星' THEN
|
||||
SET NEW.introduce = '奢华';
|
||||
END IF;
|
||||
END $$
|
||||
DELIMITER ;
|
||||
|
||||
#9 存储过程
|
||||
DELIMITER $$
|
||||
DROP PROCEDURE IF EXISTS pro_GetLowPrice;
|
||||
CREATE PROCEDURE pro_GetLowPrice(IN in_rname VARCHAR(30), OUT out_hname VARCHAR(30))
|
||||
BEGIN
|
||||
SELECT h.hname INTO out_hname
|
||||
FROM t_hotel h, t_room r
|
||||
WHERE h.hid = r.hid AND r.rname = in_rname
|
||||
ORDER BY r.price
|
||||
LIMIT 1;
|
||||
END $$
|
||||
DELIMITER ;
|
||||
|
||||
CALL pro_GetLowPrice('标准间', @result);
|
||||
SELECT @result;
|
||||
```
|
||||
|
||||
### 第三套
|
||||
|
||||
```sql
|
||||
#1
|
||||
CREATE TABLE tb_order(
|
||||
oid INT PRIMARY KEY AUTO_INCREMENT COMMENT '订单ID',
|
||||
odate DATETIME NOT NULL COMMENT '下单日期',
|
||||
quantity INT NOT NULL DEFAULT 1 COMMENT '下单数量'
|
||||
);
|
||||
|
||||
#2
|
||||
ALTER TABLE tb_books MODIFY price DECIMAL(10, 2);
|
||||
|
||||
#3
|
||||
ALTER TABLE tb_book_authors ADD CONSTRAINT tB_ibfk_1 FOREIGN KEY(book_id) REFERENCES tb_books(book_id);
|
||||
|
||||
ALTER TABLE tb_book_authors ADD CONSTRAINT tB_ibfk_2 FOREIGN KEY(author_id) REFERENCES tb_authors(author_id);
|
||||
|
||||
#4
|
||||
ALTER TABLE tb_authors ADD avatar MEDIUMBLOB;
|
||||
|
||||
#5
|
||||
#使用查询和LOAD_FILE函数 导入指定路径的图片
|
||||
SELECT LOAD_FILE('C:/TTLXExam/20501071168/MYSQLDB/3/jinyong.jpg');
|
||||
|
||||
UPDATE tb_authors a
|
||||
SET a.avatar = LOAD_FILE('C:/TTLXExam/20501071168/MYSQLDB/3/jinyong.jpg')
|
||||
WHERE a.author_name = '金庸';
|
||||
|
||||
#6
|
||||
#INSTR(主串, 子串) 判断子串在主串中的位置并返回
|
||||
#SUBSTR(字符串, 起始位置) 从起始位置开始截取字符串
|
||||
SELECT SUBSTR(b.note,INSTR(b.note,'-')+2)
|
||||
FROM tb_books b;
|
||||
|
||||
UPDATE tb_books b
|
||||
SET b.note = SUBSTR(b.note,INSTR(b.note,'-')+2);
|
||||
|
||||
#7 tj11 多表连接+条件+排序
|
||||
SELECT b.book_id, b.title, a.author_id, a.author_name, b.publication_date
|
||||
FROM tb_books b, tb_authors a
|
||||
WHERE b.note = a.author_name AND YEAR(b.publication_date) BETWEEN 1980 AND 2010
|
||||
ORDER BY b.publication_date DESC;
|
||||
|
||||
#8 tj12 多表连接+分组+分组后条件
|
||||
SELECT a.author_id, a.author_name, COUNT(*)
|
||||
FROM tb_books b, tb_authors a
|
||||
WHERE b.note = a.author_name
|
||||
GROUP BY a.author_id
|
||||
HAVING COUNT(*) > 1;
|
||||
|
||||
#9 视图
|
||||
CREATE VIEW v_book AS
|
||||
SELECT b.genre, a.author_name, COUNT(*) c
|
||||
FROM tb_books b, tb_authors a
|
||||
WHERE b.note = a.author_name
|
||||
GROUP BY b.genre, a.author_id #按照图书类别和作者名称进行分组
|
||||
HAVING COUNT(*) = ( #子查询用来统计这个类别中 数量最多的作者的图书数量
|
||||
SELECT COUNT(*)
|
||||
FROM tb_books
|
||||
WHERE b.genre = genre
|
||||
GROUP BY note
|
||||
ORDER BY COUNT(*) DESC
|
||||
LIMIT 1
|
||||
);
|
||||
|
||||
#10 触发器
|
||||
DELIMITER $$
|
||||
DROP TRIGGER IF EXISTS tri_updateCentury;
|
||||
CREATE TRIGGER tri_updateCentury
|
||||
BEFORE UPDATE ON tb_books
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
#方式一
|
||||
/*
|
||||
计算出世纪数+字符串拼接
|
||||
IF NEW.publication_date <> OLD.publication_date THEN
|
||||
SET NEW.century = CONCAT(FLOOR(YEAR(NEW.publication_date)/100) + 1, '世纪');
|
||||
END IF;
|
||||
*/
|
||||
#方式二 使用多分支IF
|
||||
IF NEW.publication_date <> OLD.publication_date THEN
|
||||
IF YEAR(NEW.publication_date) BETWEEN 1800 AND 1899 THEN
|
||||
SET NEW.century = '19世纪';
|
||||
ELSEIF YEAR(NEW.publication_date) BETWEEN 1900 AND 1999 THEN
|
||||
SET NEW.century = '20世纪';
|
||||
ELSEIF YEAR(NEW.publication_date) BETWEEN 2000 AND 2099 THEN
|
||||
SET NEW.century = '21世纪';
|
||||
END IF;
|
||||
END IF;
|
||||
END $$
|
||||
DELIMITER ;
|
||||
|
||||
SELECT CONCAT(FLOOR(YEAR(publication_date)/100) + 1, '世纪')
|
||||
FROM tb_books;
|
||||
|
||||
#11 存储过程
|
||||
DELIMITER $$
|
||||
DROP PROCEDURE IF EXISTS pro_GetTopFictionPrice;
|
||||
CREATE PROCEDURE pro_GetTopFictionPrice(IN in_genre VARCHAR(255), OUT out_title VARCHAR(255))
|
||||
BEGIN
|
||||
SELECT b.title INTO out_title
|
||||
FROM tb_books b
|
||||
WHERE b.genre = in_genre AND YEAR(b.publication_date) BETWEEN 2000 AND 2099
|
||||
ORDER BY b.price DESC
|
||||
LIMIT 1;
|
||||
END $$
|
||||
DELIMITER ;
|
||||
```
|
||||
|
||||
### 第四套
|
||||
|
||||
```sql
|
||||
#1
|
||||
ALTER TABLE tb_students MODIFY gender ENUM('男', '女', '未知');
|
||||
#2
|
||||
ALTER TABLE tb_scores MODIFY score FLOAT(7, 2);
|
||||
#3
|
||||
CREATE TABLE tb_scores_bak1 AS
|
||||
SELECT *
|
||||
FROM tb_scores;
|
||||
#4
|
||||
UPDATE test1 t1, (
|
||||
SELECT tname, CONCAT(tname,'@',COUNT(*)) str
|
||||
FROM test1
|
||||
GROUP BY tname
|
||||
HAVING COUNT(*) IN (3, 4)
|
||||
)t2
|
||||
SET t1.tname = t2.str
|
||||
WHERE t1.tname = t2.tname;
|
||||
|
||||
#5
|
||||
SELECT *
|
||||
FROM tb_courses c
|
||||
ORDER BY c.cid+0
|
||||
LIMIT 4, 11;
|
||||
|
||||
#6
|
||||
SELECT s.stuname, TIMESTAMPDIFF(YEAR,s.birthday,'2023-12-01')
|
||||
FROM tb_students s
|
||||
WHERE TIMESTAMPDIFF(YEAR,s.birthday,'2023-12-01') BETWEEN 30 AND 40;
|
||||
|
||||
#7
|
||||
SELECT st.stuname, st.gender, st.birthday, c.cname, sc.score,
|
||||
IF(sc.score >= 90, '优秀',
|
||||
IF(sc.score >= 80, '良好',
|
||||
IF(sc.score >= 70, '中等',
|
||||
IF(sc.score >= 60, '及格', '不及格'))))
|
||||
FROM tb_students st, tb_scores sc, tb_courses c
|
||||
WHERE st.stuid = sc.student_id AND sc.course_id = c.cid
|
||||
ORDER BY sc.score DESC;
|
||||
|
||||
#8
|
||||
CREATE VIEW v_scores AS
|
||||
SELECT c.cname, CEIL(AVG(sc.score)), MAX(sc.score), MIN(sc.score)
|
||||
FROM tb_students st, tb_scores sc, tb_courses c
|
||||
WHERE st.stuid = sc.student_id AND sc.course_id = c.cid
|
||||
GROUP BY c.cid;
|
||||
|
||||
#9
|
||||
DELIMITER $$
|
||||
CREATE TRIGGER tri_updateAgeGroup
|
||||
BEFORE UPDATE ON tb_students
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF YEAR(NEW.birthday) BETWEEN 2004 AND 2024 THEN
|
||||
SET NEW.age_group = '青年';
|
||||
ELSEIF YEAR(NEW.birthday) BETWEEN 1984 AND 2003 THEN
|
||||
SET NEW.age_group = '中年';
|
||||
ELSEIF YEAR(NEW.birthday) < 1984 THEN
|
||||
SET NEW.age_group = '老年';
|
||||
END IF;
|
||||
END $$
|
||||
DELIMITER ;
|
||||
|
||||
#10
|
||||
DELIMITER $$
|
||||
DROP PROCEDURE IF EXISTS pro_GetTopStudent;
|
||||
CREATE PROCEDURE pro_GetTopStudent(IN in_cid CHAR(11), OUT out_stuname VARCHAR(50))
|
||||
BEGIN
|
||||
SELECT st.stuname INTO out_stuname
|
||||
FROM tb_students st, tb_scores sc
|
||||
WHERE st.stuid = sc.student_id AND sc.course_id = in_cid
|
||||
ORDER BY sc.score DESC
|
||||
LIMIT 1;
|
||||
END $$
|
||||
DELIMITER ;
|
||||
|
||||
CALL pro_GetTopStudent(1, @result);
|
||||
SELECT @result;
|
||||
```
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,297 @@
|
||||
### C语言-1
|
||||
|
||||
```c
|
||||
/*------------------------------------------------------------------------------
|
||||
(1)【程序设计】下列给定程序中,fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。
|
||||
例如,给字符串s输入:AAaaBBbb123CCcccd,则应输出:upper=6,lower=8。
|
||||
------------------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
void fun ( char *s, int *a, int *b)
|
||||
{
|
||||
/**********Program**********/
|
||||
while(*s != '\0'){
|
||||
if(*s >= 'A' && *s <= 'Z'){
|
||||
(*a)++;
|
||||
}
|
||||
if(*s >= 'a' && *s <= 'z'){
|
||||
(*b)++;
|
||||
}
|
||||
s++;
|
||||
}
|
||||
|
||||
|
||||
/********** End **********/
|
||||
}
|
||||
main( )
|
||||
{
|
||||
char s[100];
|
||||
int upper=0, lower=0;
|
||||
printf( "\nPlease a string : " );
|
||||
gets(s);
|
||||
fun(s,&upper,&lower);
|
||||
printf("\n upper=%d lower=%d\n",upper,lower );
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
### C语言-2
|
||||
|
||||
```c
|
||||
/*------------------------------------------------------------------------
|
||||
题目:函数fun的功能:将字符串str中第k个字符开始的n个字符逆序重排,
|
||||
例如:输入1,5 输出54321abcde
|
||||
输入3,6 输出12cba543de
|
||||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,仅在
|
||||
Program-End之间填入若干语句。不要删除标志否则不得分。
|
||||
----------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
void fun(char *str, int k, int n )
|
||||
{
|
||||
int i,j; char t;
|
||||
for(i=k-1,j=k-1+n-1;i<j;i++,j--)
|
||||
{
|
||||
/**********Program**********/
|
||||
t = str[i];
|
||||
str[i] = str[j];
|
||||
str[j] = t;
|
||||
|
||||
/********** End **********/
|
||||
}
|
||||
}
|
||||
int main( )
|
||||
{
|
||||
char str[]="12345abcde";
|
||||
unsigned int k,n;
|
||||
scanf("%d,%d",&k,&n);
|
||||
if(k+n-1<=strlen(str))
|
||||
{ fun(str,k,n);
|
||||
puts(str); }
|
||||
else
|
||||
printf("所输入的k,n值不合适!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### C语言-3
|
||||
|
||||
```c
|
||||
/*------------------------------------------------------------------
|
||||
功能:编程统计一个字符串中的字母、数字、空格和其它字符的个数。
|
||||
---------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
void fun(char s[],int b[])
|
||||
{
|
||||
int i;
|
||||
/**********Program**********/
|
||||
i=0;
|
||||
while(s[i] != '\0'){
|
||||
if(s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z'){
|
||||
b[0]++;
|
||||
}else if(s[i] >= '0' && s[i] <= '9'){
|
||||
b[1]++;
|
||||
}else if(s[i] == ' '){
|
||||
b[2]++;
|
||||
}else{
|
||||
b[3]++;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
}
|
||||
|
||||
main ()
|
||||
{
|
||||
char s1[80];int a[4]={0};
|
||||
int k;
|
||||
void fun(char s[],int b[]) ;
|
||||
gets(s1);
|
||||
fun(s1,a);
|
||||
puts(s1);
|
||||
for(k=0;k<4;k++)
|
||||
printf("%4d",a[k]);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### C语言-4
|
||||
|
||||
```c
|
||||
/*------------------------------------------------------------------------
|
||||
程序功能:从键盘输入三个整数,比较三个数并显示相应信息,具体如下:
|
||||
(1)如果三个数都相等,显示"***";
|
||||
(2)如果三个数中只有某两个数相等,显示"@@";
|
||||
(3)如果三个数互不相等,则显示"&"。
|
||||
(输出要换行)
|
||||
------------------------------------------------------------------------
|
||||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,仅在
|
||||
Program-End之间删除【?】填入若干语句。不要删除标志否则不得分。
|
||||
----------------------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
int main()
|
||||
{
|
||||
int a,b,c;
|
||||
scanf("%d%d%d",&a,&b,&c);
|
||||
if(a==b && b==c)
|
||||
printf("***\n");
|
||||
/**********Program**********/
|
||||
else if(a==b || b==c || a==c)
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf("@@\n");
|
||||
else printf("&\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### MySQL-1
|
||||
|
||||
```sql
|
||||
#1
|
||||
CREATE TABLE t_hotel_manager(
|
||||
mid INT PRIMARY KEY,
|
||||
hid INT NOT NULL,
|
||||
mname VARCHAR(10) NOT NULL,
|
||||
mage INT NOT NULL,
|
||||
mgender ENUM('男', '女', '未知'),
|
||||
telephone VARCHAR(11)
|
||||
);
|
||||
#2
|
||||
#使用MODIFY添加主键字段为自动增长
|
||||
ALTER TABLE t_hotel_manager MODIFY mid INT AUTO_INCREMENT;
|
||||
#设置自增起始值
|
||||
ALTER TABLE t_hotel_manager AUTO_INCREMENT = 1000;
|
||||
#3
|
||||
INSERT INTO t_hotel_manager()
|
||||
VALUES(DEFAULT, 10001, '王璐', 32, '女', NULL);
|
||||
#4
|
||||
CREATE TABLE t_hotel_bak AS
|
||||
SELECT *
|
||||
FROM t_hotel;
|
||||
#5
|
||||
UPDATE t_client c
|
||||
SET c.integral = c.integral + 100
|
||||
WHERE c.cname LIKE '姚%';
|
||||
#6 tj11
|
||||
SELECT c.cname, SUM(r.price)
|
||||
FROM t_booking b, t_client c, t_room r
|
||||
WHERE b.cid = c.cid AND b.rid = r.rid
|
||||
GROUP BY c.cid
|
||||
ORDER BY 2 DESC
|
||||
LIMIT 9, 1;
|
||||
|
||||
#7 tj12
|
||||
SELECT h.hname, r.price
|
||||
FROM t_hotel h, t_room r
|
||||
WHERE h.hid = r.hid AND r.rname = '大床房' AND r.price = (
|
||||
SELECT MAX(price)
|
||||
FROM t_room
|
||||
WHERE rname = '大床房'
|
||||
);
|
||||
|
||||
#8 tj13
|
||||
SELECT h.hname, r.rname, r.price
|
||||
FROM t_room r
|
||||
LEFT JOIN t_booking b ON r.rid = b.rid
|
||||
INNER JOIN t_hotel h ON r.hid = h.hid
|
||||
WHERE b.bid IS NULL;
|
||||
|
||||
#9 视图
|
||||
CREATE VIEW v_tongji AS
|
||||
SELECT h.hname, SUM(r.price)
|
||||
FROM t_hotel h, t_booking b, t_room r
|
||||
WHERE h.hid = r.hid AND b.rid = r.rid
|
||||
GROUP BY h.hid;
|
||||
```
|
||||
|
||||
|
||||
|
||||
### MySQL-2
|
||||
|
||||
```sql
|
||||
#1添加主键
|
||||
ALTER TABLE tb_student ADD PRIMARY KEY(student_id);
|
||||
|
||||
#2设置默认值
|
||||
ALTER TABLE tb_student ALTER gender SET DEFAULT '男';
|
||||
|
||||
#3 插入记录
|
||||
INSERT INTO tb_student()
|
||||
VALUES(10025, '张三', DEFAULT, '2012-10-01', 1001);
|
||||
|
||||
#4 更新记录
|
||||
UPDATE tb_teacher t
|
||||
SET t.teacher_age = 36
|
||||
WHERE t.teacher_name = '王老师';
|
||||
|
||||
#5 tj11
|
||||
SELECT MAX(t.teacher_age)
|
||||
FROM tb_teacher t;
|
||||
|
||||
#6 tj12
|
||||
SELECT c.class_name, s.student_name, s.gender
|
||||
FROM tb_teacher t, tb_student s, tb_class C
|
||||
where s.class_id = c.class_id AND c.teacher_id = t.teacher_id;
|
||||
|
||||
#7 视图
|
||||
CREATE VIEW v_teacher AS
|
||||
SELECT c.class_name, t.teacher_name, COUNT(*)
|
||||
FROM tb_teacher t, tb_student s, tb_class C
|
||||
WHERE s.class_id = c.class_id AND c.teacher_id = t.teacher_id
|
||||
GROUP BY c.class_id, t.teacher_name;
|
||||
|
||||
#8
|
||||
DELIMITER $$
|
||||
DROP TRIGGER IF EXISTS tri_updateTeacherAge;
|
||||
CREATE TRIGGER tri_updateTeacherAge
|
||||
BEFORE UPDATE ON tb_teacher
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.teacher_age < 30 THEN
|
||||
SET NEW.age = '青年';
|
||||
ELSEIF NEW.teacher_age < 50 THEN
|
||||
SET NEW.age = '中年';
|
||||
ELSE
|
||||
SET NEW.age = '老年';
|
||||
END IF;
|
||||
END $$
|
||||
DELIMITER ;
|
||||
|
||||
#9
|
||||
DELIMITER $$
|
||||
DROP PROCEDURE IF EXISTS Pro_GetOldClassStudent;
|
||||
CREATE PROCEDURE Pro_GetOldClassStudent(IN in_class_id INT, OUT out_student_name VARCHAR(50))
|
||||
BEGIN
|
||||
SELECT s.student_name INTO out_student_name
|
||||
FROM tb_student s, tb_class c
|
||||
WHERE s.class_id = c.class_id AND c.class_id = in_class_id
|
||||
ORDER BY s.birthday
|
||||
LIMIT 1;
|
||||
END $$
|
||||
DELIMITER ;
|
||||
|
||||
CALL Pro_GetOldClassStudent(1001, @result);
|
||||
SELECT @result;
|
||||
```
|
||||
|
||||
@@ -0,0 +1,413 @@
|
||||
### C语言-1
|
||||
|
||||
```c
|
||||
/*---------------------------------------------------------
|
||||
【程序设计】程序将由数字字符组成的字符串转换为10进制实数,
|
||||
例如将"123.4567"转换为123.45670。
|
||||
|
||||
输出如下:
|
||||
123.45670
|
||||
0.12345
|
||||
4567.00000
|
||||
------------------------------------------------------------------------
|
||||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,仅在
|
||||
Program-End之间填入若干语句。不要删除标志否则不得分。
|
||||
---------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
#include<ctype.h>
|
||||
double conver(char s[]){
|
||||
int I,i,poi;
|
||||
double F,p;
|
||||
F=I=i=poi=0;
|
||||
p=0.1;
|
||||
/**********Program**********/
|
||||
while(s[i] != '.'){
|
||||
I*=10;
|
||||
I+=s[i]-48;
|
||||
i++;
|
||||
}
|
||||
i++;
|
||||
while(s[i] != '\0'){
|
||||
F+=(s[i]-48)*p;
|
||||
p*=0.1;
|
||||
i++;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
return I+F;
|
||||
}
|
||||
int main()
|
||||
{
|
||||
char d[3][15]={"123.4567","0.12345","4567.0"};
|
||||
int i;
|
||||
for(i=0;i<3;i++)
|
||||
printf("%12.5f\n",conver(d[i]));
|
||||
return 0;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-2
|
||||
|
||||
```c
|
||||
/*
|
||||
-------------------------------------------------------
|
||||
【程序填空】
|
||||
---------------------------------------------------------
|
||||
打印以下图案:
|
||||
*****
|
||||
*****
|
||||
*****
|
||||
*****
|
||||
*****
|
||||
*/
|
||||
#include<stdio.h>
|
||||
void main()
|
||||
{
|
||||
int i =0 , j =0 , k=0;
|
||||
|
||||
/**********Program**********/
|
||||
for(i=0;i<5;i++){
|
||||
for(j=0;j<i;j++){
|
||||
printf(" ");
|
||||
}
|
||||
for(k=0;k<5;k++){
|
||||
printf("*");
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
|
||||
### C语言-3
|
||||
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
功能:功能:输入三角形的三边长,判断能否构成三角形,若能,利用海伦公式计
|
||||
算该三角形的面积,计算结果保留3位小数。
|
||||
l=(a+b+c)/2,s=sqrt(l*(l-a)*(l-b)*(l-c))
|
||||
--------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
main()
|
||||
{
|
||||
float a,b,c,s,l;
|
||||
scanf("%f,%f,%f",&a , &b , &c);
|
||||
if(a+b<c||a+c<b||b+c<a)
|
||||
printf("该3个数据不能构成三角形\n");
|
||||
else
|
||||
{
|
||||
/**********Program**********/
|
||||
l=(a+b+c)/2;
|
||||
s=sqrt(l*(l-a)*(l-b)*(l-c));
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf("该三角形的面积为%.3f\n",s);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-4
|
||||
|
||||
```c
|
||||
/*-------------------------------------------------------
|
||||
编写程序,打印以下图形:
|
||||
|
||||
*
|
||||
***
|
||||
*****
|
||||
*******
|
||||
*****
|
||||
***
|
||||
*
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
main()
|
||||
{
|
||||
int i,j,k;
|
||||
for(i=-3;i<=3;i++)
|
||||
{
|
||||
/**********Program**********/
|
||||
for(j=0;j<abs(i);j++){
|
||||
printf(" ");
|
||||
}
|
||||
for(k=0;k<7-2*j;k++){
|
||||
printf("*");
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
|
||||
/********** End **********/
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
|
||||
### C语言-5
|
||||
|
||||
```c
|
||||
/*-----------------------------------------------------------
|
||||
功能:从键盘为一维整型数组输入10个整数,调用函数找出其中
|
||||
最小的数并输出。
|
||||
-----------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include<stdlib.h>
|
||||
/**********Program**********/
|
||||
int fun(int *a, int n){
|
||||
int min = a[0], i;
|
||||
for(i=1;i<n;i++){
|
||||
if(min > a[i]){
|
||||
min = a[i];
|
||||
}
|
||||
}
|
||||
return min;
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
main()
|
||||
{
|
||||
int a[10],i,min;
|
||||
for(i=0;i<10;i++)
|
||||
scanf("%d",&a[i]);
|
||||
for(i=0;i<10;i++)
|
||||
printf("%3d",a[i]);
|
||||
printf("\n");
|
||||
min=fun(a,10);
|
||||
printf("min=%d\n",min);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-6
|
||||
|
||||
```c
|
||||
/*------------------------------------------------------------------------------
|
||||
【程序设计】编写函数rtrim,用来删除字符串尾部的空格,首部和中间的空格不删除。例如:字符串为:" A BC DEF ",
|
||||
删除后的结果是" A BC DEF"。要求函数形参采用指针变量。
|
||||
测试输入: A BC DEF
|
||||
测试输出: A BC DEF
|
||||
说明:测试输入中,A前有4个空格,F后有5个空格
|
||||
------------------------------------------------------------------------
|
||||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||||
------------------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
void main()
|
||||
{
|
||||
void rtrim(char *p);
|
||||
char s[100];
|
||||
gets(s);
|
||||
rtrim(s);
|
||||
puts(s);
|
||||
}
|
||||
void rtrim(char *p)
|
||||
{
|
||||
int i;
|
||||
/**********Program**********/
|
||||
while(*p != '\0'){
|
||||
p++;
|
||||
}
|
||||
p--;//定位到结束符前的位置
|
||||
while(*p==' '){//如果当前指针位置是空格则指针向前移
|
||||
p--;
|
||||
}
|
||||
p++;//移动当前位置后一个空格位
|
||||
*p='\0';
|
||||
|
||||
|
||||
/********** End **********/
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-7
|
||||
|
||||
```c
|
||||
/*------------------------------------------------------------------------------
|
||||
【程序设计】输入字符串(不包含空格),将字符串按字符从小到大排序,然后输出字符串中除去ASCII码值能被3整除的字符。
|
||||
输入输出如下:
|
||||
hello world
|
||||
处理后的字符串为: dehw
|
||||
------------------------------------------------------------------------
|
||||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||||
------------------------------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
void main()
|
||||
{
|
||||
char str[100];
|
||||
int n,i,j,t;
|
||||
gets(str);
|
||||
n=strlen(str);
|
||||
for(i=0;i<n-1;i++)
|
||||
{
|
||||
for(j=0;j<n-i-1;j++)
|
||||
if(str[j]>str[j+1])
|
||||
{
|
||||
t=str[j];str[j]=str[j+1];str[j+1]=t;
|
||||
}
|
||||
}
|
||||
printf("处理后的字符串为:");
|
||||
/**********Program**********/
|
||||
j=0;
|
||||
for(i=0;i<strlen(str);i++){
|
||||
if(str[i]%3==0){
|
||||
continue;
|
||||
}
|
||||
str[j++] = str[i];
|
||||
}
|
||||
str[j]='\0';
|
||||
puts(str);
|
||||
|
||||
/********** End **********/
|
||||
printf("\n");
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-8
|
||||
|
||||
```c
|
||||
/*------------------------------------------------------------------------------
|
||||
【程序设计】该程序实现的功能是:求一个整数各位数字之和。(使用while实现)
|
||||
------------------------------------------------------------------------
|
||||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||||
------------------------------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
|
||||
int getsum(int m)
|
||||
{
|
||||
int i,s=0;
|
||||
|
||||
/**********Program**********/
|
||||
while(m){
|
||||
s+=m%10;
|
||||
m/=10;
|
||||
}
|
||||
return s;
|
||||
/********** End **********/
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int n,sum;
|
||||
scanf("%d",&n);
|
||||
sum=getsum(n);
|
||||
printf("结果是%d\n",sum);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### C语言-9
|
||||
|
||||
```c
|
||||
/*------------------------------------------------------------------------------
|
||||
【程序设计】有两个降序排列的集合A和B,A中无重复元素,B中也无重复元素,
|
||||
求集合B-A的差集(即:这些元素属于集合B但不属于集合A),存放于数组c中,并输出。
|
||||
输入输出如下:
|
||||
请输入3个整数:
|
||||
3 2 1
|
||||
请输入5个整数:
|
||||
9 6 5 3 2
|
||||
结果为:
|
||||
9 6 5
|
||||
------------------------------------------------------------------------
|
||||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
|
||||
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
|
||||
------------------------------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
|
||||
void main()
|
||||
{
|
||||
int a[3],b[5],c[5];
|
||||
int t=0,i,j=0;
|
||||
printf("请输入3个整数:\n");
|
||||
for(i=0;i<3;i++){
|
||||
scanf("%d",&a[i]);
|
||||
}
|
||||
printf("请输入5个整数:\n");
|
||||
for(i=0;i<5;i++){
|
||||
scanf("%d",&b[i]);
|
||||
}
|
||||
i=0;
|
||||
/**********Program**********/
|
||||
while(i<3 && j<5){
|
||||
if(a[i] < b[j]){
|
||||
c[t++]=b[j++];
|
||||
}else if(a[i] > b[j]){
|
||||
i++;
|
||||
}else{
|
||||
i++;
|
||||
j++;
|
||||
}
|
||||
}
|
||||
/********** End **********/
|
||||
while(j<5){
|
||||
c[t++]=b[j++];
|
||||
}
|
||||
printf("结果为:\n");
|
||||
for(i=0;i<t;i++){
|
||||
printf("%d ",c[i]);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### C语言-10
|
||||
|
||||
```c
|
||||
/*----------------------------------------------------------------------
|
||||
【程序设计】
|
||||
------------------------------------------------------------------------
|
||||
随机输入一字符串(不包含空格,长度不超过100),删除字符串中的数字字符后输出。
|
||||
例输入:I will be 17 years old soon, and I will graduate from high school in June 2025
|
||||
输出:
|
||||
去掉数字后的字符串为:I will be years old soon, and I will graduate from high school in June
|
||||
------------------------------------------------------------------------
|
||||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,仅在
|
||||
Program-End之间填入若干语句。
|
||||
不要删除标志否则不得分。
|
||||
不要修改或删除Program-End之外的内容否则不得分。
|
||||
----------------------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
#include <string.h>
|
||||
void main()
|
||||
{
|
||||
char a[100],b[100];
|
||||
int l,i,j;
|
||||
gets(a);
|
||||
l=strlen(a);
|
||||
j=0;
|
||||
/**********Program**********/
|
||||
for(i=0;i<l;i++){
|
||||
if(a[i] > '9' || a[i] < '0'){
|
||||
b[j++] = a[i];
|
||||
}
|
||||
}
|
||||
/********** End **********/
|
||||
b[j]='\0';
|
||||
printf("去掉数字后的字符串为:");
|
||||
puts(b);
|
||||
}
|
||||
```
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
-------------------------------------------------------
|
||||
【程序填空】
|
||||
---------------------------------------------------------
|
||||
打印以下图案:
|
||||
*****
|
||||
*****
|
||||
*****
|
||||
*****
|
||||
*****
|
||||
*/
|
||||
#include<stdio.h>
|
||||
void main()
|
||||
{
|
||||
int i =0 , j =0 , k=0;
|
||||
|
||||
/**********Program**********/
|
||||
for(i=0;i<5;i++){
|
||||
for(j=0;j<i;j++){
|
||||
printf(" ");
|
||||
}
|
||||
for(k=0;k<5;k++){
|
||||
printf("*");
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
/*------------------------------------------------------------------------
|
||||
【程序设计】功能:使用for循环输出Fibonacci数列的前15项,要求每行输出5项。
|
||||
Fibonacci数列:1,1,2,3,5,8,13...........
|
||||
----------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int fib[15],i;
|
||||
fib[0]=1;fib[1]=1;
|
||||
/**********Program**********/
|
||||
for(i=2;i<15;i++){
|
||||
fib[i]=fib[i-1]+fib[i-2];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
|
||||
for(i=0;i<15;i++)
|
||||
{
|
||||
printf("%d\t",fib[i] );
|
||||
if ( i%5==4 ) printf("\n");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
/*-------------------------------------------------------
|
||||
1. 判断101-200之间有多少个素数,并输出所有素数。判断素数的方法IsPrime:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 --------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include<math.h>
|
||||
int IsPrime (int n)
|
||||
{
|
||||
int i=2;
|
||||
for(i=2;i<=sqrt(n);i++)
|
||||
/**********Program**********/
|
||||
if(n%i==0){
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
return 1;
|
||||
}
|
||||
|
||||
int main( )
|
||||
{
|
||||
int i ;
|
||||
for(i=100;i<=200;i++ )
|
||||
{
|
||||
if ( IsPrime( i) )
|
||||
{
|
||||
printf("% d",i);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
/*-------------------------------------------------------
|
||||
|
||||
功能:输出100到1000之间的各位数字之和能被15整除的所有数,输出时每10个一行。
|
||||
输出:(每个数占5个字符)
|
||||
159 168 177 186 195 249 258 267 276 285
|
||||
294 339 348 357 366 375 384 393 429 438
|
||||
447 456 465 474 483 492 519 528 537 546
|
||||
555 564 573 582 591 609 618 627 636 645
|
||||
654 663 672 681 690 708 717 726 735 744
|
||||
753 762 771 780 807 816 825 834 843 852
|
||||
861 870 906 915 924 933 942 951 960
|
||||
-------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
main()
|
||||
{
|
||||
int m,n,k,i=0;
|
||||
for(m=100;m<=1000;m++)
|
||||
{
|
||||
k=0;
|
||||
n=m;
|
||||
/**********Program**********/
|
||||
while(n){
|
||||
k+=n%10;
|
||||
n/=10;
|
||||
}
|
||||
if(k%15==0){
|
||||
i++;
|
||||
printf("%5d", m);
|
||||
|
||||
if(i%10==0){
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
/*-------------------------------------------------------
|
||||
题目: 打印以下图案:
|
||||
|
||||
*********
|
||||
*******
|
||||
*****
|
||||
***
|
||||
*
|
||||
--------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
void main()
|
||||
{
|
||||
int i,j,k;
|
||||
for( i=0 ; i<5; i++ )
|
||||
{
|
||||
printf("\n");
|
||||
/**********Program**********/
|
||||
for(j=0;j<i*2;j++){
|
||||
printf(" ");
|
||||
}
|
||||
for(k=0;k<9-j;k++){
|
||||
printf("*");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
/*-------------------------------------------------------
|
||||
1. 编写程序,打印以下图案:
|
||||
*****
|
||||
***
|
||||
*
|
||||
--------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
void main()
|
||||
{
|
||||
int i,j,k;
|
||||
/**********Program**********/
|
||||
for(i=0;i<3;i++){
|
||||
for(j=0;j<i;j++){
|
||||
printf(" ");
|
||||
}
|
||||
for(k=0;k<5-j*2;k++){
|
||||
printf("*");
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
|
||||
printf("\n");
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
/*-------------------------------------------------------
|
||||
功能:不用第三个变量,实现两个数的对调操作。
|
||||
--------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int a,b;
|
||||
scanf("%d%d",&a , &b );
|
||||
printf("a=%d,b=%d\n",a,b);
|
||||
/**********Program**********/
|
||||
a = a+b;
|
||||
b = a-b;
|
||||
a = a-b;
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf("a=%d,b=%d\n", a,b);
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
/*-------------------------------------------------------
|
||||
题目:请将123-321之间偶数累加输出最终结果。
|
||||
--------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
int main()
|
||||
{
|
||||
int i;
|
||||
long sum = 0;
|
||||
for(i = 123; i <= 321; i++ )
|
||||
{
|
||||
/**********Program**********/
|
||||
if(i%2==0){
|
||||
sum += i;
|
||||
}
|
||||
/********** End **********/
|
||||
}
|
||||
printf ("总和为 : %ld.\n",sum);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
/*-------------------------------------------------------
|
||||
题目:把123~321之间的可以被7整除的数输出。(使用for循环)
|
||||
--------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
void main()
|
||||
{
|
||||
int a=0;
|
||||
/**********Program**********/
|
||||
for(a=123;a<=321;a++){
|
||||
if(a%7==0){
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf("%d\n",a);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
/*-------------------------------------------------------
|
||||
功能:依次输入十个整数,找出其平方最大的一个数并打印出来。
|
||||
--------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
void main()
|
||||
{
|
||||
int i;
|
||||
float x,y,z=0;
|
||||
printf("\n请输入10个数:");
|
||||
for(i=1;i<=10;i++)
|
||||
{
|
||||
/**********Program**********/
|
||||
scanf("%f", &x);
|
||||
if(x*x > z){
|
||||
z = x*x;
|
||||
y = x;
|
||||
}
|
||||
/********** End **********/
|
||||
}
|
||||
printf("平方最大的一个数是:%f\n",y);
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
/*-------------------------------------------------------
|
||||
功能:从键盘输入一位整数i,计算其各位数字之和。比如输入整数
|
||||
31421,则打印结果为11。(使用while循环)
|
||||
--------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,sum=0,a;
|
||||
scanf("%d",&i);
|
||||
/**********Program**********/
|
||||
while(i){
|
||||
sum += i%10;
|
||||
i/=10;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf("%d\n",sum);
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
/*-------------------------------------------------------
|
||||
功能:编写程序,求两个非零整数之和。
|
||||
-------------------------------------------------------*/
|
||||
#include"stdio.h"
|
||||
main()
|
||||
{
|
||||
int x,y,z=0;
|
||||
scanf ("%d%d", &x,&y);
|
||||
/**********Program**********/
|
||||
if(x!=0 && y!=0){
|
||||
z = x+y;
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf("z=%d\n", z);
|
||||
}
|
||||
else
|
||||
printf("两个数中至少有一个数为零值\n");
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
/*-------------------------------------------------------
|
||||
功能:编写程序(使用Switch ),给出年月日,计算出该日是该年的第几天。判断是否为
|
||||
闰年的条件是:能被 4 整除但是不能被100整除或者能被四百整除。
|
||||
--------------------------------------------------------*/
|
||||
#include"stdio.h"
|
||||
main()
|
||||
{
|
||||
int year,month,day,days=0,i,d;
|
||||
printf("请输入年-月-日:");
|
||||
scanf("%d-%d-%d",&year,&month,&day);
|
||||
for(i=1;i<month;i++)
|
||||
{
|
||||
/**********Program**********/
|
||||
switch(i){
|
||||
case 1:
|
||||
case 3:
|
||||
case 5:
|
||||
case 7:
|
||||
case 8:
|
||||
case 10: days+=31;break;
|
||||
case 2: days+=(28 + (year%4==0&&year%100!=0 || year%400==0?1:0));break;
|
||||
default: days+=30;
|
||||
}
|
||||
/********** End **********/
|
||||
}
|
||||
printf("%d-%d-%d是该年第%d天\n",year,month,day,days + day);
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
/*------------------------------------------------------------------------
|
||||
【程序设计】请编写函数sum,其功能是:用While循环语句求1到n之间(包括n)能
|
||||
被3整除的所有整数之和,并将结果返回给主函数。(n值由主函数传入)
|
||||
运行程序后若输入:10,则输出为:18
|
||||
----------------------------------------------------------------------*/
|
||||
#include "stdio.h"
|
||||
|
||||
long sum(int n)
|
||||
{
|
||||
/**********Program**********/
|
||||
int i, s=0;
|
||||
for(i=1;i<=n;i++){
|
||||
if(i%3==0){
|
||||
s+=i;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return s;
|
||||
/********** End **********/
|
||||
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
int x;
|
||||
long f;
|
||||
scanf("%d",&x);
|
||||
f=sum(x);
|
||||
printf("%ld\n",f);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
/*-------------------------------------------------------
|
||||
功能:设计程序打印出如下图案(菱形)
|
||||
|
||||
*
|
||||
***
|
||||
*****
|
||||
*******
|
||||
*****
|
||||
***
|
||||
*
|
||||
-------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
int i,j,k;
|
||||
/**********Program**********/
|
||||
for(i=-3;i<=3;i++){
|
||||
for(j=0;j<(i<0?-i:i);j++){
|
||||
printf(" ");
|
||||
}
|
||||
for(k=0;k<7-j*2;k++){
|
||||
printf("*");
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
/*------------------------------------------------------
|
||||
题目:从键盘输入一个整数n,求2 至 n-1内所有能被n整除的数。
|
||||
例如:输入10 输出 2 5
|
||||
输入99 输出 3 9 11 33
|
||||
--------------------------------------------------------*/
|
||||
#include "stdio.h"
|
||||
int main ( )
|
||||
{
|
||||
int n,i;
|
||||
printf("input a number:");
|
||||
scanf ("%d", &n);
|
||||
/**********Program**********/
|
||||
for(i=2;i<n;i++)
|
||||
if(n%i==0)
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf ("%d\n",i);
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
/*-------------------------------------------------------
|
||||
【程序填空】 2、有一箱苹果(100—200之间),如果分成4个苹果一组的若干组,则多2个苹果;若分成7个苹果一组,则多3个苹果; 若分成9个苹果一组,则多5个苹果,编程实现求苹果的个数。
|
||||
--------------------------------------------------------*/
|
||||
|
||||
# include <stdio.h>
|
||||
main ()
|
||||
{
|
||||
int i;
|
||||
for(i=100;i<200;i++)
|
||||
/**********Program**********/
|
||||
if(i%4==2 && i%7==3 && i%9==5)
|
||||
|
||||
|
||||
|
||||
|
||||
/********** End **********/
|
||||
printf ("%d",i);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
/*-------------------------------------------------------
|
||||
【程序填空】---------------------------------------------------------
|
||||
功能:计算武汉城区出租车收费的程序,当里程在3公里以内含3公里时收费12元,超过3公里(在0和1之间均计1公里)的部分每公里收费2元。
|
||||
备注:使用switch来实现
|
||||
--------------------------------------------------------*/
|
||||
#include<stdio.h>
|
||||
main(){
|
||||
int m,n;
|
||||
scanf("%d",&m);
|
||||
|
||||
/**********Program**********/
|
||||
n=0;
|
||||
switch(m){
|
||||
default: n+=(m-3)*2;
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:n+=12;
|
||||
}
|
||||
|
||||
/********** End **********/
|
||||
|
||||
printf("本次收费为:%d",n);
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user