⑴ c语言for的双重循环
这里的双重循环for(i=1;i<=9;i++)是外循环,for(j=1;j<=9;j++)是内循环。先执行循环for(j=1;j<=9;j++),即在每一个i下,循环j的值。
具体的循环的访问次序是,首先取i=1,在此条件下,进行内循环for(j=1;j<=9;j++),依次访问(i=1,j=1),(i=1,j=2),(i=1,j=3)....执行完内循环后(j加到9的时候),执行一次外循环,i++。
此时i=2,在i=2的条件下,再一次进行内循环for(j=1;j<=9;j++),依次访问(i=2,j=1),(i=2,j=2),(i=2,j=3)....,其他的继续按照这个步骤操作下去。
(1)c语言两数不对等时循环扩展阅读:
c语言三种循环do while、for、while的异同点:
用while和do…while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在语句1中进行的;while循环和for循环都是先判断表达式,后执行循环体,而do…while循环是先执行循环体后判断表达式。
也就是说do…while的循环体最少被执行一次,而while循环和for就可能一次都不执行。另外还要注意的是这三种循环都可以用break语句跳出循环,用continue语句结束本次循环,而goto语句与if构成的循环,是不能用break和 continue语句进行控制的。
⑵ 怎样在C语言中让两个变量不同时等于一个数
什么意思?说清楚点?
清楚了。你可以设置一个变量,假设你排列的名次在数组A中,如果你要把他打印出来,肯定要用循环遍历了。你就设置一个变量,这个变量保存你上一次打印出来的数值,这样子当你要打印当前数值就可以先判断上一次打印的数值跟这次要打印的是不是一样,如果是就跳过,不是就打印出来,然后更新这个变量:即把当前打印的数值赋值给这个变量。不懂可追问,祝楼主学习愉快!
⑶ C语言这道题怎么循环两次呢
首先要理解!(--x),指的是x先减去1,再取非值,如果结果为true,则继续执行
还有,--x指的是先减去1,然后再使用x值
第一遍,先执行
第二遍,,得到x=1,--x先减去1变成0,然后取非结果为true
所以是执行两遍的
⑷ c语言双重循环
我觉得不一样:
不妨取n<=2作控制语句
(1)中n=2时循环结束,p=2p;e=(e+1.0/p)+1.0/2p;
(2)中n=2是循环结束,p=2p;e=(e+1.0/p)+1.0/p+1.0/2p;
已有的p的定义在n循环以外,而题意应该是每次n循环开始p都是1,否则结果不同
⑸ C语言中.怎么同时执行两个不同的循环
这个要用到多线程了,给你个例子:
#include<stdio.h>
#include<conio.h>
#include<Windows.h>
#include<process.h>
charc=0;
VOIDB(PVOIDp)//线程B
{
while(1)
{
if(c=='b'||c=='B')
break;
printf("BBB");
Sleep(200);//延时
}
}
VOIDC(PVOIDp)//线程C
{
while(1)
{
if(c=='c'||c=='C')
break;
printf("CCC");
Sleep(300);
}
}
voidA()
{
_beginthread(B,0,0);//启动B
_beginthread(C,0,0);//启动C
}
intmain()
{
A();
printf("按B结束B,按C结束C,按Q退出 ");
while(1)
{
c=getch();
if(c=='q'||c=='Q')
break;
}
return0;
}
⑹ c语言十个数字互不相等的问题。。。
首先定义10个整型变量,不一定是一个一个的变量,可以将他们写成一个集合来表示,也就是定义成数组。下面是我自己写的一个代码,你可以看一下。至于你的左操作数必须是左值的问题是因为你代码格式有问题(a!=b&&..............h!=i)这个应该写成(a != b&&..............h != i),你的!应该用英文符号,不能用中文下的感叹号。
#include<stdio.h>
#include<stdlib.h>
#defineMAX 10
intmain()
{
intnum[MAX];
inti=0,j=0;
intflag=0;
//用户输入10个数进行
printf("pleaseenter%dnumber:",MAX);
for(i=0;i<MAX;i++)
{
scanf("%d",&num[i]);
}
//循环判断,一直到最后一个元素结束判断,并且最后一个元素不需要判断
for(i=0;i<MAX-1;i++)
{
for(j=i+1;j<MAX;j++)
{
//如果发现相同元素就输出
if(num[i]==num[j])
{
flag=1;
printf("num[%d]=num[%d]=%d ",i,j,num[i]);
}
}
}
if(0==flag)
{
printf("notexist ");
}
return0;
}
⑺ c语言中当循环次数不确定时怎么处理
循环次数不确定,总有一个变量控制或结束条件吧?
int n;
while( 1 )
{
scanf("%d", &n);
if ( n<0 ) //输入负数时,结束循环
break;
printf("n=%d\n", n ); //否则,输出读到的数
}
⑻ 怎样用c语言表示几个数任意两个不相等
运用桶排序即可,但有局限性只能应用于整数。
自己去网络具体代码,看懂算法在自己写代码。
桶排序
(Bucket
sort)或所谓的箱排序,是一个排序算法辩举,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是
比较排序,他不受到
O(n
log
n)
下限的影响。
1.N个数字(整形)
2.求出最大的数字的位数m
3.由于数字都是0到9组成,做10个桶,0到9,将N个数字依次放入桶里面
3.1
从个位数开始,从各位数字开始,将地i(i<m)为数字相同的数字,依次放入对应的桶中
3.2
从地0个桶开始,将所有桶中的数字取出,作为一个新的数字
3.2
重复上面两步,直至m为数字
4.最后排序的为从小到大的数组排序。
因为是数据排序,所以设置的桶的键值为0~9共十个乱灶判桶。每次从数据的最后一个数位开始扫描,如果这个数位的值与桶的键值相等,就把这个数据放入桶内。桶可以看作是一个有序的链表,后进入的元素排在先进入的数据的后面,直到所有的数据都完成扫描,算作一次扫描。以后依次取倒数第二个扫描,按照桶哗改的键值开始扫描,同样把数位的值与桶的键值相等的数据放入桶内。直到所有数据的最高数位也完成扫描。最后一次扫描完成,桶的键值从低到高,把这些链表串起来输出的结果就是原来数据的从小到大排序。
---------------------------------------------------------------------------------------------------
代码(来自《数据结构算法Visual.C.6.0程序集》)
void
main()
{cout<<"bucketsort.cpp运行结果:\n";
int
array[SIZE];
cout<<"原数组:\n";
srand(time(0));
for(int
i=0;i<SIZE;++i)
{array[i]=rand()0;
cout<<setw(3)<<array[i];}
cout<<'\n';
cout<<"排序过程演示:\n";
bucketSort(array);
cout<<"排序后数组:\n";
for(int
j=0;j<SIZE;++j)
cout<<setw(3)<<array[j];
cout<<endl;cin.get();
}
//
桶排序算法
void
bucketSort(int
a[])
{int
totalDigits,bucket[10][SIZE]={0};
totalDigits=numberOfDigits(a,SIZE);
for(int
i=1;i<=totalDigits;++i)
{
distributeElements(a,bucket,i);
collectElements(a,bucket);
//将桶数组初始化为0
if(i!=totalDigits)
zeroBucket(bucket);
for(int
j=0;j<SIZE;++j)
cout<<setw(3)<<a[j];
cout<<endl;}
}
//确定单下标数组的最大数的位数
int
numberOfDigits(int
b[],int
arraySize)
{
int
largest=b[0],digits=0;
for(int
i=1;i<arraySize;++i)
if(b[i]>largest)
largest=b[i];
while(largest!=0)
{
++digits;
largest/=10;}
return
digits;
}
//
将单下标数组的每个值放到桶数组的行中
void
distributeElements(int
a[],int
buckets[][SIZE],int
digit)
{int
divisor=10,bucketNumber,elementNumber;
for(int
i=1;i<digit;++i)
divisor*=10;
for(int
k=0;k<SIZE;++k)
{
bucketNumber=(a[k]%divisor-a[k]%(divisor/10))/(divisor/10);//求取地m为数字
elementNumber=++buckets[bucketNumber][0];//buckets[bucketNumber][0]
表示桶中的数字个数
buckets[bucketNumber][elementNumber]=a[k];//放入对应的桶中
}
}
//将桶数组的值复制回原数组
void
collectElements(int
a[],int
buckets[][SIZE])
{int
subscript=0;
for(int
i=0;i<10;++i)
for(int
j=1;j<=buckets[i][0];++j)
a[subscript++]=buckets[i][j];
}
//将桶数组初始化为0
void
zeroBucket(int
buckets[][SIZE])
{for(int
i=0;i<10;++i)
for(int
j=0;j<SIZE;++j)
buckets[i][j]=0;}
⑼ 输入一个数,若不满足条件,则一直循环这个语句c语言的。
当你第一次输入的值跟电脑产生的随机数
相等时,会碰唯执行beak
跳出for循环
如果你笑瞎培第一次的数神仿不等于电脑的随机数
,
都会运行到
return
0
,结束for循环