死循环
循环条件 m=10 使用的是赋值运算符 =,因此会将变量 m 的值设为 10,而不是进行相等判断。
非零就就为真,所以循环条件始终成立,也就是说这是一个无限循环
不执行吧. while里面需要的是布尔值 m=10是一个赋值表达式 个人见解
m = 1,该值没有意义,只是定义了变量数据类型
while (m = 10) ,注意,这里的运算符是 = ,而不是比较运算符 == ,所以, m = 10 , while (m) ,时,是将 m 转成逻辑值
那么,根据语言不同,结果不同,例如 js 之类的,就是选 C ,无限循环了
c 语言的话,应该是也选 C
应该是选c吧!while里面这个条件是一个赋值语句,并不是false或者0,所以会一直执行下去吧!
// 5:27 - 5:47
/*
8
12 43 65 67 8 2 7 11
4
*/
#include<stdio.h>
void initial(int num[], int n);
void show(int num[], int n);
void move(int num[], int n, int m);
void move(int num[], int n, int m){
int tmp[m];
int *p;
int *q;
for(p = num+n-m, q = tmp; p < num+n; p++, q++){
*q = *p;
}
printf("这%d个数为:",m);
show(tmp, m);
//前面的数往后移
for(p = num; p < num+n-m; p++){
*(p+m) = *p;
}
//把后面的移到前面
for(p = num, q = tmp; p < num+m; p++, q++){
*p = *q;
}
}
void show(int num[], int n){
int i;
for(i = 0; i < n; i++){
printf("%d ", num[i]);
}
printf("\n");
}
void initial(int num[], int n){
int i;
for(i = 0; i < n; i++){
scanf("%d", &num[i]);
}
}
void main(void){
int num[100];
int n;
int m;
printf("请输入要输入整数的个数(不超过100):");
scanf("%d", &n);
printf("请输入这%d个整数:", n);
initial(num, n);
printf("请输入要移动的个数:");
scanf("%d", &m);
move(num, n, m);
printf("移动后数组的值为:");
show(num, n);
}