c语言前后
㈠ C语言如何显示前后变化量
1、VS中,先启动调试,然后点击菜单栏:调试>窗口>内存>内存1(快捷键alt+6)。
2、可以查看内存情况,调试>窗口>局部变量(快捷键alt+4)可以查看变量的值,其实你在调试过程中直用鼠标接指向变量,它会出现一个小框,会显示变量的内存或值(优先)。
㈡ C语言显示处理前后两个整数的列
#include<stdio.h>
intmain()
{
inta[]={23,25,13,68,3,44,11,7,55,36};
inti;
intj;
intt;
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
printf(" ");
for(i=0;i<5;i++)
{
for(j=9;j>0;j--)
{
if(a[j]>a[j-1])
{
t=a[j];
a[j]=a[j-1];
a[j-1]=t;
}
}
}
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
printf(" ");
}
冒泡排序的变体,运行结果:
23 25 13 68 3 44 11 7 55 36
68 55 44 36 25 23 13 11 7 3
㈢ C语言中,前后定义的变量的指针不同,相互之间无法进行赋值及运算吗
不是这样的。C语言中的函数调用是单向的,仅仅是传递数值,所以在调用函数期间,函数内部变量所更改的直是无法传递回主调函数的。要把函数调用期间的变量值返回主调函数应该使用指针变量。下面是修改好的程序,在程序中,函数的形式参数采用指针变量,而函数调用时就把需要改变变量的地址传入到被调用函数中,这样就可以实现改变,值得效果了。
㈣ C语言判断两个日期的前后问题
if(dt1.year!=dt2.year)
{
if(dt1.year>dt2.year)return1;//判断年相等否
if(dt1.year<dt2.year)return-1;
}
比如这里,如果两个year相等,就没有返值(当然,这是编译器的判断逻辑),编译器不会根据你上下文去统计逻辑的,因此会认为你if有返值,没有else语句中的返值。你将两个逻辑中的连续if改成if else应该就没问题了。
其实,如果年月日的规则是严格的,那么语句不用这么麻烦,直接判断
year*365+month*30+day 的大小即可判定两个日期的关系了。
㈤ C语言 把字符串前后倒置
我的算法是原地转置。原地转置有个问题,就是不能对静态存储的字符串操作。比如char
*s="abc";reverse(s);就会出错。楼上的几位的算法不是原地转置,可以对静态字符串操作。
void
reverse(char
*s)
{
char
*p=s;
while(*p!='\0')
p++;
p--;
char
*q=s;
char
temp;
while(p>q)
{
temp=*p;
*p=*q;
*q=temp;
}
}
㈥ C语言数组元素前后位置互换
#include<stdio.h>
char array[2][3];
void func(char array[2][3],int x1,int y1,int x2,int y2){
char t;
t=array[x1][y1];
array[x1][y1]=array[x2][y2];
array[x2][y2]=t;
}
int main(){
int i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%c",&array[i][j]);//注:连续输入二维数组的值,不用加回车
func(array,0,1,1,1);
for(i=0;i<2;i++){
for(j=0;j<3;j++)
printf("%c ",array[i][j]);
printf("\n");
}
return 0;
}
㈦ C语言如何去掉字符串前后的双引号
1.
在C语言中,利用单引号和双引号分别表示字符和字符串,字符串是指一串以NUL字节结尾的零个或多个字符。字符串通常存储在字符数组中。
2.
在源程序当中,双引号是不能去除的,双引号表示该段为字符串,如果去掉字符串,那么就会被编译器识别成标识符,造成编译出错。
3.
在输出当中,双引号自动会被去除,例如printf("双引号");输出的是
双引号。
㈧ C语言链表中的指针怎么样前后移动
来吧~~单链表应生生反着遍历
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineelemTypeint /*单链表元素数据类型*/
#defineLNODE_SIZEsizeof(structlNode) /*单链表结点空间大小*/
#definestatusint /*状态型变量*/
#defineOVERFLOW-1 /*内存溢出状态码*/
#defineERROR0 /*错误状态码*/
#defineOK1 /*正确状态码*/
/*单链表数据结构*/
typedefstructlNode{
elemTypedata;
structlNode*next;
}lNode,*linkList;
/*初始化*/
/*操作结果:构造一个空的单链表L*/
voidinitList(linkList*L){
*L=(linkList)malloc(LNODE_SIZE);/*产生头结点,并使L指向此头结点*/
if(!*L)/*内存分配失败*/
exit(OVERFLOW);
(*L)->next=NULL;/*指针域为空*/
}
/*销毁*/
/*初始条件:单链表L已存在。操作结果:销毁单链表L*/
voiddestroyList(linkListL){
linkListp,q;
p=L->next;/*p指向第一个结点*/
while(p){/*没到表尾*/
q=p->next;
free(p);
p=q;
}
free(L);
}
/*判断单链表是否为空*/
/*初始条件:单链表L已存在。操作结果:若L为空表,则返回TRUE,否则返回FALSE*/
intlistIsEmpty(linkListL){
returnL->next==NULL;
}
/*获取单链表长度*/
/*初始条件:单链表L已存在。操作结果:返回L中数据元素个数*/
intlistLength(linkListL){
inti=0;
linkListp=L->next;/*p指向第一个结点*/
while(p){/*没到表尾*/
i++;
p=p->next;
}
returni;
}
/*获取单链表指定元素值*/
/*操作结果:L为带头结点的单链表的头指针。当第i个元素存在时,其值赋给e并返回OK,否则返回ERROR*/
statusgetElem(linkListL,inti,elemType*e){
intj=1;/*j为计数器*/
linkListp=L->next;/*p指向第一个结点*/
while(p&&j<i){/*顺指针向后查找,直到p指向第i个元素或p为空*/
p=p->next;
j++;
}
if(!p||j>i)/*第i个元素不存在*/
returnERROR;
*e=p->data;/*取第i个元素*/
returnOK;
}
/*单链表指定位置插入新元素*/
/*操作结果:在带头结点的单链表L中第i个位置之前插入元素e*/
statuslistInsertNode(linkListL,inti,elemTypee){
intj=0;
linkListp=L,s;
while(p&&j<i-1){/*寻找第i-1个结点*/
p=p->next;
j++;
}
if(!p||j>i-1)/*插入位置不合理:i小于1或者大于表长*/
returnERROR;
/*生成新结点,并插入L中*/
s=(linkList)malloc(LNODE_SIZE);
if(!s)/*内存分配失败*/
exit(OVERFLOW);
s->data=e;
s->next=p->next;
p->next=s;
returnOK;
}
/*删除单链表指定位置元素*/
/*操作结果:在带头结点的单链线性表L中,删除第i个元素,并由e返回其值*/
statuslistDeleteNode(linkListL,inti,elemType*e){
intj=0;
linkListp=L,q;
while(p->next&&j<i-1){/*寻找第i个结点,并令p指向其前驱结点*/
p=p->next;
j++;
}
if(!p->next||j>i-1)/*删除位置不合理:i小于1或者大于表长*/
returnERROR;
/*删除并释放结点*/
q=p->next;
p->next=q->next;
*e=q->data;
free(q);
returnOK;
}
/*打印链表内容*/
/*初始条件:单链表L已存在。操作结果:当链表不为空时,打印链表内容并返回OK,否则返回ERROR*/
statusprintList(linkListL){
linkListp=L->next;/*p指向第一个结点*/
if(listIsEmpty(L)){
puts("Thelinklistisempty!");
returnERROR;
}
while(p){
printf("%d ",p->data);
p=p->next;
}
putchar(' ');
returnOK;
}
intmain(void){
linkListL;
elemTypee;
elemTypea=1,b=2,c=3,d=4;
intindex,j;
/*初始化链表*/
initList(&L);
/*插入若干元素*/
listInsertNode(L,1,a);
listInsertNode(L,1,b);
listInsertNode(L,1,c);
listInsertNode(L,1,d);
printList(L);
for(j=listLength(L);j>0;j--){/*反向遍历打印*/
getElem(L,j,&e);
printf("%d ",e);
}
putchar(' ');
destroyList(L);
getch();/*屏幕暂留*/
return0;
}
㈨ C语言 子函数和主函数的放置前后顺序区别
先回答下第一个问题,子函数的实现方法可以放在使用它的主函数或者其它子函数后面,但是你的定义一定要在使用它之前;不然编译器怎么知道你用的函数square是什么,这就是我们经常包含头文件的一个目的,头文件是一些函数定义或者预编译命令。
修改是在#include<stdio.h>后面加
int square(int num);
第二个问题:num是在main定义是可以在main作用域内直接使用,或者当做参数传递给子函数,你的问题num为什么可以在子函数中用,首先你子函数的num并非main里的num只是你把他们名字写成一样了;main里num是通过值传递给子函数的num,实际他们两个num的内存地址是不一样的,你子函数换个名字去理解一下。