当前位置:首页 » 编程语言 » c语言念数字循环
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言念数字循环

发布时间: 2022-12-22 18:33:19

‘壹’ c语言如何实现从0000,0001,0010,,到1111的循环

你要的这个是格雷码,修改LEN改变位数

#include<stdio.h>
#defineLEN4
voidcalc(intx)
{
inti=0;
for(i=LEN-1;i>=0;--i)
putchar('0'+((x&(1<<i))!=0));
puts("");
}
intmain()
{
inti,N=1<<LEN;
for(i=0;i<N;++i)
{
printf("No%2d:",i+1);
calc(i^(i>>1));
}
}


第i个数对应的格雷码就是

i^(i>>1)

clac函数的功能,是把对应的数转成二进制输出。



单片机就更简单了

#include<stdio.h>
#defineLEN4
intmain()
{
inti,N=1<<LEN;
for(i=0;i<N;++i)
{
P0=i^(i>>1);
}
}

如果不想影响另外几位的值,可以这样

#include<stdio.h>
#defineLEN4
intmain()
{
inti,N=1<<LEN,mask=(1<<LEN)-1;
for(i=0;i<N;++i)
{
P0=(~mask&P0)|(i^(i>>1)&mask);
}
}

目测你是在写跑马灯之类的程序。。

‘贰’ C语言 念数字

你一共提出三个问题:
1、为什么不写成int?
此处也可以写成int。
如果写成int型,还要求出各位上的数字是多少,才能将数字转换为拼音。
写成char型,省去了转换各位数字的环节,可以用str[i]任意取出各位上的数字。两位,也方便负号的处理。
2、为什么是*?
如果不加*,只能定义一个字符数组(或叫字符串),如char num[]="yi";
加上一个*后,char *num[]跟不加*相比,①num已经变成字符串数组;②num变成了指针数组,num[0]、num[1]等各个元素已经成为指向“ling”、“yi”的地址,而“ling”等数据则放在常量区。
根据num[0]指向“ling”,num[1]指向“yi”,num[2]指向“er”……
这样可以通过num[i],很方便地找到对应的数字i的汉语拼音。
3、str[0]-'0'是什么意思?
先看str[0]是什么,它是你输入的整数的第一个数字,比如它是3,在这里程序是把3当作字符'3'处理的(原因就是变量str的类型为char型),在储存这个'3'时,实际上储存的是字符'3'的asc码,即51。而字符'0'的asc码是48,str[0]-'0'=51-48=3。这样,num[str[0]-'0']=num[3],如前面所述,就很容易找到3对应的拼音“san”了。
有什么问题请留言。

‘叁’ c语言,数循环

#include<stdio.h>
#include<string.h>

voidmy_itoa(unsignedlongintm,chara[],intp){
inti=0;
while(m>0){
a[i]=m%p+'0';
m=m/p;
i=i+1;
}
a[i]=0;
intn=i;
intj;
intmid=n/2;
for(i=0,j=n-1;i<mid;i++,j--){
if(a[i]!=a[j])a[i]=(a[i]+a[j])-(a[j]=a[i]);
}
return;
}

intisCircle(unsignedlongintm){
if(m>0&&m<10)return1;
chara[32];
my_itoa(m,a,10);
if(strstr(a,"0"))return0;
intn=strlen(a);
inti,j;
for(i=1;i<n;i++){
for(j=0;j<i;j++){
if(a[i]==a[j])return0;
}
}
intvisited[n];
for(i=0;i<n;i++)visited[i]=0;

visited[0]=1;
intstart=0;
intend=(a[start]-'0'+start)%n;
while(visited[end]==0){
visited[end]=1;
start=end;
end=(a[start]-'0'+start)%n;
}

for(i=0;i<n;i++){
if(visited[i]==0)return0;
}
returnend==0;
}

intmain(intargc,char*argv[]){
unsignedlongm;
while(scanf("%u",&m)!=EOF){
while(!isCircle(++m));
printf("%u ",m);
}
return0;
}

‘肆’ c语言怎么写一个0 到100的循环语句

#include <stdio.h>void main(){int i;//用来控制循环.for(i=0;i<=100;i++) {/*语句块*/} //用for实现从0循环到100; i=0;while(i<=100) {/*语句块*/} //用while实现从0循环到100;}具体每个循环中要做什么可以在语句块中添加代码.

‘伍’ 循环数(circle)C语言编程

#include<stdio.h>
intIsCircle(intn)//判断n是不是循环数
{
intcir[6],cirtemp[6];//本题中输入最大为6位数
inti=0,j,k=0,count=0;
while(n>0)//把n的每一位一次放入数字cirtemp中(反序)
{
count++;//计数
cirtemp[i++]=n%10;
n=n/10;
}
for(i=0;i<count;i++)//把顺序还原回来(直接用反序也可以,只是还原回看后面的代码会好理解些)
cir[i]=cirtemp[count-i-1];

for(i=0;i<count;i++)//是几位数总共就要循环几次
{
j=cir[k];//向前右j步
k=(k+j)%count;//走完后的下标
}
if(k==0)//循环完刚好回到第一个数,这个数是循环数
return1;
else
return0;
}
intmain()
{
intn,i=0;
printf("请输入一个数(9<这个数<999589): ");//按题意这行可以删去
scanf("%d",&n);
while(1)
{
if(IsCircle(n+i)==1)
{
printf("%d ",n+i);
break;
}
elseif(IsCircle(n-i)==1)
{
printf("%d ",n-i);
break;
}
i++;
}
return0;
}

严格来说我这个程序还不严谨,IsCircle中判断k是否遍历了0,1,2,……count这些自然数来判断是否是循环数更准确,毕竟可能会有巧合使得循环完后回到了第一个数(下标k=0)但是却在中途有一个数没有作为起点和终点(只是觉得有可能,具体是否可能需要证明)。

其实也不难把k的每一个值都加起来如果=1+2+3+……+count,且最后k=0就可以了

还有就是输入的时候最好判断一下输入是否规范 9<数<999589

‘陆’ c语言如何循环输入

这样你觉得行不,最后你从input[]里按顺序取出来就行了:

#include <stdio.h>

#include<math.h>

int main(){

int n,temp,i=0;

printf("请输入你要输入数字的个数:");

scanf("%d",&n);

float input[n];

while(n>0){

printf("请输入你要输入的数字:");

scanf("%d",&temp);

input[i] = temp;

i++;

n--;

}

printf("你输入的数字为: ");

for(int j=0;j<i;j++){

printf("%f ",input[j]);

}

return 0;

}

运行结果:

‘柒’ 求如何编写一个念数字程序(c语言)

先定义好拼音,在根据数据处理;
n%m
n/m得到每个数;
1-9对应一个拼音;
当为一个数字时,直接输出对应拼音;
当为2位数据时,分别得到十位和个位输出就行了呀;

‘捌’ C语言里如何建立一个循环,当输入数字在0~9之间的时候继续输入,当输入不在0~9之间的时候结束

用自符串: 先定义一个字符串,如:char hanzi[20]; 然后: scanf("%s",hanzi); 或者gets(hanzi); 不过定义的时候控制了字节为20,不能输太多,(一个汉字两 个字节)

‘玖’ C语言编程,数字循环,求解,以下图型如何编写,输入整数(n=5)

#include<stdio.h>
void print(int n);
int main()
{
int n;
scanf("%d",&n); //输入n=5
print(n);
getchar();
return 0;
}
void print(int n)
{
int i,j;
int k;
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
printf("%d",j);
}
for(k=j-2;k>0;k--)
{
printf("%d",k);
}
printf("\n");
}
for(i=n;i<2*n-1;i++)
{
for(j=1;j<=2*n-1-i;j++)
{
printf("%d",j);
}
for(k=j-2;k>0;k--)
{
printf("%d",k);
}
printf("\n");
}
}