char i=0; char cont = 0; char d = 0; char n[20]= {1,2,3,4,6,7,13,8,9,10,11,23,21,31,0,0,0,0,0}; char jg[20]; char q =0; printf("-"); for(i=0;i<20;i++) { if(n[i]<3) { jg[cont] = n[i]; cont++; } else { for(d=0;d<=i;d++) { if(n[i]%d==0) { q++; } } } if(q==1) { jg[cont] = n[i]; cont++; q=0; } else { q = 0; } } for(i=0;i<20;i++) { printf("-%d",jg[i]); }
时间: 2024-04-26 18:20:36 浏览: 106
这段代码是用来对长度为20的一维字符数组n中的元素进行处理,并将结果存入另一个一维字符数组jg中,最后输出jg数组的所有元素。具体来说,该代码会将n数组中小于3的元素直接存入jg数组中;对于大于等于3的元素,它会遍历该元素之前的所有元素,通过计算是否存在非1和自身的因子来判断该元素是否为质数,如果是质数则将其存入jg数组中,否则不做处理。最后,它会输出jg数组中的所有元素,以"-"分隔。
需要注意的是,该代码并没有对jg数组中存储的元素进行初始化,因此在输出时可能会出现不可预期的结果。同时,该代码存在语法错误,例如在计算n[i]%d时没有判断d是否为0,可能会导致程序崩溃。
相关问题
unsigned char Ds18b20Initial(void) { unsigned char Status = 0x00; unsigned int CONT_1 = 0; unsigned char Flag_1 = 1; Ds18b20OutputInitial(); Ds18b20IO = 1; //DQ复位 Ds18b20Delay(260); //稍做延时 Ds18b20IO = 0; //单片机将DQ拉低 Ds18b20Delay(750); //精确延时 大于 480us 小于960us Ds18b20IO = 1; //拉高总线 Ds18b20InputInitial();//设置IO输入 while((Ds18b20IO != 0)&&(Flag_1 == 1))//等待ds18b20响应,具有防止超时功能 { //等待约60ms左右 CONT_1++; Ds18b20Delay(10); if(CONT_1 > 8000)Flag_1 = 0; Status = Ds18b20IO; } Ds18b20OutputInitial(); Ds18b20IO = 1; Ds18b20Delay(100); return Status; //返回初始化状态 }
这是一个函数,名为 Ds18b20Initial,返回一个 unsigned char 类型的值。该函数的作用是初始化 DS18B20 温度传感器,具体实现过程为:
1. 定义了三个变量:Status、CONT_1 和 Flag_1,分别用于存储 DS18B20 的响应状态、计时器和循环标志。
2. 调用了 Ds18b20OutputInitial 函数,该函数作用是将控制 DS18B20 的引脚初始化为输出模式。
3. 将 Ds18b20IO 置为 1,即将 DQ 引脚复位。
4. 调用 Ds18b20Delay 函数,使程序稍作延时。
5. 将 Ds18b20IO 置为 0,即将 DQ 引脚拉低。
6. 调用 Ds18b20Delay 函数,使程序精确延时,确保延时时间在 480us 到 960us 之间。
7. 将 Ds18b20IO 置为 1,即将 DQ 引脚拉高。
8. 调用 Ds18b20InputInitial 函数,该函数作用是将控制 DS18B20 的引脚初始化为输入模式。
9. 进入一个 while 循环,等待 DS18B20 响应。循环中先将 CONT_1 加 1,然后调用 Ds18b20Delay 函数使程序稍作延时,然后判断 CONT_1 是否大于 8000,如果是,则将 Flag_1 置为 0,跳出循环;否则,将 Status 赋值为 Ds18b20IO 的值。
10. 调用 Ds18b20OutputInitial 函数,将控制 DS18B20 的引脚初始化为输出模式。
11. 将 Ds18b20IO 置为 1,即将 DQ 引脚拉高。
12. 调用 Ds18b20Delay 函数,使程序稍作延时。
13. 返回 Status 的值,即 DS18B20 的响应状态。
void back_book(void) { int i = 0; int cont = 0; char book_num[30]; BSTA: printf("请输入您要还书的编号:\n"); scanf_s("%s", book_num, 30); while (bks[i].name[0] != '\0') { if (strcmp(bks[i].number, book_num) == 0)//对比结构体数组中的每一的number成员 { cont++; //用于判断编号是否输入正确 printf("书名:%s\n作者名:%s\n编号:%s\n热度:%d\n库存:%d\n价格:%f\n", bks[i].name, bks[i].writer, bks[i].number, bks[i].hot, bks[i].sc, bks[i].price); printf("\n"); break; } i++; } //i就是此编号书的下标 if (cont == 0)//说明输入的编号有误 { printf("您输入的编号有误,请重新输入\n"); goto BSTA; } else { printf("确认请按【y】,返回界面请按【其他键】\n"); if (_getch() == 'y') { bks[i].sc++;//i号元素的库存加1; printf("还书成功,继续还书请按【b】,返回界面请按【其他键】\n"); if (_getch() == 'b') { cont = 0; goto BSTA; } } } }
这段代码是用来还书的,它会提示用户输入要还的书籍编号,然后在结构体数组中查找是否有对应编号的书籍。如果存在,就输出该书籍的相关信息并等待用户确认是否还书。如果用户确认还书,就将该书籍的库存数量加1,然后提示用户还书成功并询问用户是否继续还书。如果用户选择继续还书,就回到输入书籍编号的步骤,否则就返回到主界面。如果用户输入的编号有误,就会提示用户重新输入。
阅读全文