void dlt() { //删除信息 int flag, i, j;//输入变量 char s1[100]; printf("请输入要删除学生的学号:\n"); getchar(); gets(s1); flag = 0; for (i = 0; i < n; i++) {//n是前面的n if (strcmp(stu[i].num, s1) == 0) {//比较两个数组相等等于0 flag = 1; for (j = i; j < n - 1; j++) {//j小于n-1才能不超出范围 才能删减 stu[j] = stu[j + 1]; } } if (flag == 1) break; } if (flag == 0) printf("未找到该学生!\n"); if (flag == 1) { printf("删除成功!\n"); n--;//删去相关信息 } system("pause");//让系统暂停}
时间: 2023-06-13 12:07:29 浏览: 269
这段代码是一个删除学生信息的函数,输入要删除的学生学号,查找学号是否存在,如果存在则删除该学生信息,否则输出未找到该学生。其中使用了一个标记变量flag来记录是否找到该学生,使用两个循环,第一个循环是遍历所有学生信息,第二个循环是将要删除的学生信息后面的所有信息往前移动一个位置,最后将n减1表示删减了一个学生信息。最后使用system("pause")来暂停程序,防止程序一闪而过。
相关问题
DLT/698通信协议
DLT/698通信协议是中国电力系统中广泛使用的现场总线通信标准,它由国家电网公司推出,全称为“调度数据网络应用层通信协议”。这个协议主要用于电力自动化系统的实时信息交换,如SCADA(Supervisory Control And Data Acquisition)系统中的设备监控、控制命令传输等。
DLT/698规定了数据帧的结构、报文格式、错误检测与纠正机制以及同步处理等方面的内容。它支持点对点和广播通信模式,并且支持多种数据类型,包括数字量、模拟量、状态量和事件等。该协议在很大程度上促进了电力行业的数字化进程,提高了效率并增强了系统的可靠性。
void fun(int*n) {while(--(*n)); printf("%dlt",(*n)++);} main0 {int a=100; fun(&a); printf("%d",a);}
这个代码片段是一个简单的C语言程序,包含一个函数`fun`和一个`main`函数。让我们逐行解析:
`void fun(int *n)` 定义了一个名为`fun`的函数,它接受一个整型指针作为参数。这里的`*n`表示通过指针访问变量。
```c
{
while(--(*n)); // 这里,先递减指针所指向的值,然后进入循环,直到该值变为0
}
```
在`fun`函数内部,`while(--(*n))`是一个无限循环,因为`--(*n)`会递减`n`所指向的值,并且不会停止条件,除非`*n`变成0。这里实际上相当于一个空循环,因为它没有任何实际的终止条件。
`printf("%dlt",(*n)++)` 循环结束后,打印`(*n)`的当前值并加上1,格式字符串`%dlt`可能是打字错误,通常应该是`"%d"`来打印整数,而`lt`可能是想打印"less than"之意。
`main()` 函数部分:
```c
{
int a = 100; // 初始化整数变量a为100
fun(&a); // 调用fun函数,传入a的地址
printf("%d", a); // 打印a的值,预期结果是99(因为循环结束后,a自增1)
}
```
在`main`函数中,`fun(&a)`将变量a的地址传递给`fun`,所以`*n`实际上是`a`。由于`fun`中的空循环导致`a`未改变,最后`printf`会显示原始值100。
总结:这段代码有一个潜在的问题,即`fun`函数实际上是个死循环,不会影响`a`的值。在`main`函数中,`printf`应该会输出100而不是99。
阅读全文