2025-02-06

This commit is contained in:
2025-02-06 22:43:19 +08:00
parent 9480e81242
commit af0d9cdab6
82 changed files with 12564 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
```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.
```
+246
View File
@@ -0,0 +1,246 @@
### 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 ;
```
+346
View File
@@ -0,0 +1,346 @@
### 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 **********/
}
```