#include<stdioh>
#include<stringh>
void invert(char str[])
{char c;int i,j;
for (j=strlen(str)-1,i=0;j>i;i++,j--)
{c=str[i];str[i]=str[j];str[j]=c;}
}
int main()
{
char a[10];
gets(a);
invert(a);
printf("%s\n",a);
return 0;
}
运行正确!
这样改就就行了
unsigned invert(unsigned x,int p,int n)
{
return (x & ~((~(~0 << n)) << p) |((~x) & ((~(~0 << n)) << p)) );
}
(x & ~((~(~0 << n)) << p)
是将x的n位都变成0
((~x<<p) & (((~0 << n)) << p)) )
这个就不是对n 位取反了
这样才是((~x) & ((~(~0 << n)) << p)) );
#include "stdafxh"
#include "stdioh"
void invert(int p,int n)
{
int i,temp;
int q;
q=p+n-1;
for(i=1;i<=n/2;i++)
{
temp=p;
p=q;
q=temp;
p++;
q--;
}
}
int main(int argc, char argv[])
{
int a[10];
for(int i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
int p=a;
invert(p,10);
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}
先解释函数invert(int s,int i,int j)
invert(int s,int i,int j)/定义函数invert,其中参数s是指针类型,i,j为整型/
{ //函数入口
int t; //定义t为整型
if(i<j) //如果i<j
{
invert(s,i+1,j-1); /把s,i+1,j-1作为参数调用函数invert,这是一个函数的矢代用法/
t=(s+i);
(s+i)=(s+j);
(s+j)=t;
//这三行是把指针(s+i)与指针(s+j)指向的值交换
} //if语块结束
} //函数结束
这个函数的作用是把数组里的各项掉过来,即最后一项变成第一项,第一项变成最后一项……
main()
{
int a[6]={10,6,23,-90,0,3},i; //定义数组a和整型变量i
invert(a,0,5); //以数组a的地址、数字0、5作为参数调用函数invert
for(i=0;i<6;i++) printf("%d",a[i]); //函数invert把数组a的6项排序后输出
printf("\n"); //最后输出回车
}
输出结果为30-9023610。
如果在语句for(i=0;i<6;i++) printf("%d",a[i]); 改称以下输出结果会好看一点:
for(i=0;i<6;i++) printf("%d\t",a[i]);
输出结果为3 0 -90 23 6 10。
你其实在提示符下就已经给他输入了invert I love china
其中的I love china就是给他的输入参数,因为程序执行完毕所以,一闪就过。你要改写成这样
#include<stdioh>
#include<conioh>
main(int argc,char argv[])
{
int i;
for(i=argc-1;i>0;i--)
printf("%s ",argv[i]);
getch();
}
-----------------------------
你是没有搞懂题目的意思吧,行命令程序,所给的输入都是算在参数里的,所以,你要执行时可以这样。
获得你编译生成后的EXE文件路径
运行-》输入CMD
先换到盘:输入盘符后加冒号
cd 路径
例子:我编译后的程序在d:\work\invertexe
运行-》cmd
d:
cd \work
invert I love china
我原来给的代码其实就是加了个暂停
以上就是关于C语言,下面函数的功能是将一个字符串str的内容颠倒过来,请填空全部的内容,包括:C语言,下面函数的功能是将一个字符串str的内容颠倒过来,请填空、求教一个c语言函数invert(x,p,n)、第二题:编程。编写一个函数,将数组中n个数按反序存放。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)