㈠ c语言题:将s串中所有字符前移一个位置,第一个字符移到最后。谢谢帮
将s串中所有字符前移一个位置,第一个字符移到最后:
intlen=strlen(s);
charc=s[len-1];
s[len-1]=s[0];
s[0]=c;
(1)c语言位置首末倒换扩展阅读
字符串中字母顺序前移,其他字符顺序后移。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char*fun(char*s)
{
inti,j,k,n;
char*p,*t;
n=strlen(s)+1;
t=(char*)malloc(n*sizeof(char));
p=(char*)malloc(n*sizeof(char));
j=0;
k=0;
for(i=0;i<n;i++)
{
if(((s[i]>='A')&&(s[i]<='Z'))||((s[i]>='a')&&(s[i]<='z')))
{
t[j]=s[i];
j++;
}
else
{
p[k]=s[i];
k++;
}
}
for(i=0;i<k;i++)
t[j+i]=p[i];
t[j+k]=0;
returnt;
}
intmain()
{
chars[80];
printf("Pleaseinput:");
gets(s);
printf(" Theresultis:%s ",s);
printf(" Theresultis:%s ",fun(s));
getchar();
getchar();
return0;
}
㈡ 如何将链表首指针移至队尾 (C语言)
不大明白你说的意思,我的理解是这样的啊~
head也就是首指针,它本身不保存数据,它的next指针指向链表的首节点。那么,你提供的这段代码,流程上似乎有点问题:
首先,p指向的首节点,即p=head->next;
然后,pre指向的尾节点,就是那个while循环的功能;
然后,源代码中的顺序应该有点问题,我分析应该是这样的:
//先将head后移一位,因为head指向链表的首节点,而原链表的首节点要移到末尾,所以移动之后的链表首节点应该就是head->next->next也就是p->next了
head->next=p->next;
//然后,将原来的首节点(也就是p)移动到链表末尾
pre->next=p;
p->next=NULL;
原题中,改变head的位置本意是想让head指向原链表的首节点,这样head的next就会指向新链表的首节点(也就是head=head->next之后,head=p了,新链表的首节点(就是原来的head->next->next)),但是这种做法并不正确,原来的首节点改动位置了,这样的想法也就失效了。
不知道我这么说能不能帮你解决问题。
㈢ c语言如何把数字顺序颠倒
颠倒方法:
用算法实现将一个输入的数字颠倒(输入12345->54321),要求不调用任何系统函数,也不能将输入的数字转换为字符串作为中间过渡,就可以颠倒了。
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
C语言含义:
C语言是一门面向过程的计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%-20%。因此,C语言可以编写系统软件。
㈣ c语言怎么把两个字符串交换位置
利用strcpy()函数。
chara[10]="abed",b[10]="efg",t[10];
strcpy(t,a);//a复制给t
strcpy(a,b);//b复制给a
strcpy(b,t);//t复制给b
函数功能是字符串复制,将第一个参数指定的字符串复制到第二个参数指定的位置
两个参数都是字符串首地址。
使用strcpy需要 #include<string.h>
㈤ c语言 数组元素交换 交换数组第一个位置和最后一个位置的数,输出交换后数组,求大神帮忙看看该怎么改
首先,这是对数组使用的概念上理解错了。数组a[n]可用的数组元素一共有n个,从a[0]开始到a[n-1]结束,下面的图是修改以后的程序。
㈥ c语言求数组元素交换次序
假定数据长n,输入一个整数m,
1、使数组的后n-m个元素移到前边,前m-1个元素在数组中从最后位置倒序排列
#include
"stdio.h"
main()
{
int
i,n,m,t,j;
int
d[200];
printf("\n输入n的值(n<200):");
scanf("%d",&n);
for(i=0;i<n;i++)d[i]=i;
printf("\n输入m的值(m<200):");
scanf("%d",&m);
printf("\n输出调整前的数据:\n");
for(i=0;i<n;i++)printf("%d
",d[i];
//调整程序开始
for(i=0;i<m;i++)
{//n-m个数前移了
t=d[0];
for(j=1;j<n;j++)d[j-1]=d[j];
d[n-1]=t;
}
for(i=0;i<m/2;i++)
{//倒序
t=d[n-1-i];
d[n-1-i]=d[m+i];
d[m+i=t;
}
printf("\n输出调整后的数据:\n");
for(i=0;i<n;i++)printf("%d
",d[i];
}