本文目录一览:
- 1、c语言如何实现字符串按位翻转
- 2、用C语言,翻转字符串,(例如输入“ABCD”,则输出“DCBA”)!方法越多越好!!
- 3、C语言 图形翻转``
- 4、C语言的矩阵翻转
- 5、怎样用c语言表示 翻转的数 比如把81 翻转为18
c语言如何实现字符串按位翻转
字符串按位翻转可以通过对每个字符按位翻转实现,首先通过指针偏移或数组下标依次取出字符,然后对单个字符做按位非操作,即~
用C语言,翻转字符串,(例如输入“ABCD”,则输出“DCBA”)!方法越多越好!!
【方法一】
//也是最简单的有点投机
#include stdio.h
int main(){
char str[]="ABCD";
int i;
for(i=3;i=0;i--) printf("%c",str[i]);
return 0;
}
【方法二】
/*
用指针的,将第一个与最后一个互换,第二个与倒数第二个互换……直到逆置完成
*/
#include stdio.h
#include string.h
int main(){
char str[]="ABCD",*start,*end,t;
int len,i;
len=strlen(str);
start=str;
end=str[len-1];
while(startend){
t=*start;
*start=*end;
*end=t;
start++;
end--;
}
printf("REVERSED:\n");
for(i=0;str[i];i++) printf("%c",str[i]);
return 0;
}
【方法三】
//用堆栈的性质来实现
#include stdio.h
#include string.h
#include stdlib.h
#define MAXSTACK 100
char pop(struct stack *stk);
void push(char ch,struct stack *stk);
int empty(struct stack *stk);
struct stack{
int top;
char str[MAXSTACK];
};
int main(void)
{
int i,len_str;
char str[MAXSTACK];
struct stack s;
s.top=-1;
printf("\nInput the string please:");/*输入你要逆置的字符串e.g.“ABCD”*/
gets(str);
len_str=strlen(str);
for(i=0;ilen_str;i++)
push(str[i],s);
printf("The disorder is:");
for(i=0;ilen_str;i++){
if(!empty(s))
printf("%c",pop(s));
}
getch();
return 0;
}
char pop(struct stack *stk){
return stk-str[stk-top--];
}
void push(char ch,struct stack *stk){
if(stk-top==MAXSTACK-1){
printf("\nOVERFLOW!\n");
exit(1);
}
else stk-str[++(stk-top)]=ch;
return;
}
int empty(struct stack *stk){
return (stk-top==-1);
}
还可以用递归的思想来解决该问题,这里就不多说了……
C语言 图形翻转``
#includestdio.h
main()
{
int a[100][100],i,j,n,m,t,s,k;
scanf("%d %d %d",m,n,t);//M为行 N为列 T为翻转的方式
for(i=0;im;i++)
{ for(j=0;jn;j++)
scanf("%d",a[i][j]);
}
if(t==1)
{
for(s=0;si/2;s++)
for(j=0;jn;j++)
{
k=a[i-s-1][j];
a[i-s-1][j]=a[s][j];
a[s][j]=k;
}
}
if(t==-1)
{for(s=0;sj/2;s++)
for(i=0;im;i++)
{
k=a[i][j-s-1];
a[i][j-s-1]=a[i][s];
a[i][s]=k;
}
}
for(i=0;im;i++)
{ for(j=0;jn;j++)
printf(" %d",a[i][j]);
printf("\n");
}
}
C语言的矩阵翻转
#include stdio.h
int main() {
int M,N,T;
scanf("%d %d %d",M,N,T);
int mat[M][N];
printf("请输入原始矩阵:\n");
for(int i=0; iM; i++) {
for(int j=0; jN; j++) {
scanf("%d",mat[i][j]);
}
}
printf("原矩阵为:\n");
for(int i=0; iM; i++) {
for(int j=0; jN; j++) {
printf("%d ",mat[i][j]);
}
printf("\n");
}
int temp = 0;
if(T==0) {
printf("左右翻转后:\n");
for(int i=0; iM; i++) {
for(int j=0; jN/2; j++) {
temp = mat[i][j];
mat[i][j] = mat[i][N-j-1];
mat[i][N-j-1] = temp;
}
}
for(int i=0; iM; i++) {
for(int j=0; jN; j++) {
printf("%d ",mat[i][j]);
}
printf("\n");
}
}
if(T==1) {
printf("上下翻转后:\n");
for(int i=0; iM/2; i++) {
for(int j=0; jN; j++) {
temp = mat[i][j];
mat[i][j] = mat[N-i-1][j];
mat[N-i-1][j] = temp;
}
}
for(int i=0; iM; i++) {
for(int j=0; jN; j++) {
printf("%d ",mat[i][j]);
}
printf("\n");
}
}
return 0;
}
怎样用c语言表示 翻转的数 比如把81 翻转为18
用c语言表示翻转的数可以参考下面的代码:
#include stdio.h
int main()
{int C,D,S;
scanf("%d",C);
D=(C%10)*10+C/10;
S=C+D;
printf("S=%d",S);
}
扩展资料:
scanf()是C语言中的一个输入函数。
与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include stdio.h。
(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include stdio.h。)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
参考资料来源:百度百科-scanf (计算机语言函数)