❶ c语言程序 输入一字符串存入数组中,逆序存放并输出
对键盘输入的字符串进行逆序,逆序后的字符串仍然保留在原来的字符数组中,最后输出。(不得调用任何字符串处理函数),例如:
输入
hello
world
输出
dlrow
olleh
(1)然后按照逆序存储输出扩展阅读:
字符串在存储上类似字符数组,它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。
❷ c语言题:在键盘输入10个整数 逆序存放并输出
比较简单的方法是创建一个数组
从下标为9开始递减进行输入至下标为0
这样存储就会是倒序的了
然后再从下标为0开始递增输出到下标为9
另一种方法是创建两个数组
比如a和b,先顺序地将10个数据存储在a里
然后通过一个循环来将数据逆序存储在数组b里
这样数组b里就是逆序存储的了
最后顺序输出数组b
当然还有一种方法
可以使用一个链表(或者数组也可以)
然后使用栈的方式存储数据
题目中要求数据的存放是逆序的
这其实要具体地看存储的方式了
以栈来说,栈是一种先进后出的数据结构
从这种层面上来看的话它存储的数据就是“逆序”的
但如果使用一个数组来实现的话存储在数组里的数据就可能是顺序的(不使用逆序有方式将数据存储在数组里)
一个简单的例子
#include<stdio.h>
#definePUSH(i)(*p=i,++p)
#definePOP(i)(--p,i=*p)
intmain(intargc,char**argv)
{
inta[10];
inti,r;
int*p=a;
for(i=0;i<10;++i)
{
scanf("%d",&r);
PUSH(r);
}
for(i=0;i<10;++i)
{
POP(r);
printf("%d",r);
}
printf(" ");
return0;
}
该例子,如果从栈这种数据结构的方式来看
先输入的数据会被压入到栈底
最后的数据在栈顶,从栈顶到栈底来看的话
数据的存储就是逆序的
如果从数组下标来看的话就是顺序的
这里我们可以将指针反转过来
#include<stdio.h>
#definePUSH(i)(*p=i,--p)
#definePOP(i)(++p,i=*p)
intmain(intargc,char**argv)
{
inta[11];
inti,r;
int*p=a+10;
for(i=0;i<10;++i)
{
scanf("%d",&r);
PUSH(r);
}
for(i=0;i<10;++i)
{
POP(r);
printf("%d",r);
}
printf(" ",a[0]);
return0;
}
那么在数组的层面上来说也会是逆序的了
而以数组的顺序或逆序方式来说的话
使用链表的方式则已经没有相对明确的“顺序”或者“逆序”了
当然我们也可以使用逆序链表的方法业创建栈数据结构
由于栈数据结构的性质决定了这种数据存储的方式
❸ 输入n个整数,用一维数组存放,然后将这n个整数逆序存放并输出
#include <stdio.h>
void printArr(int arr[],int len){
for(int i = 0;i<len;i++){
printf("%d ",arr[i] );
}
printf(" ");
}
void reverse(int arr[],int len){
int temp = 0;
for(int start=0,end=len-1;start<=end;start++,end--){
temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
int main()
{
int len;
printf("请输入数组长度: ");
scanf("%d",&len);
int arr[len];
printf("请输入数组元素: ");
for (int i = 0; i < len; ++i)
{
scanf("%d",&arr[i]);
}
printf("原始数组: ");
printArr(arr,len);
reverse(arr,len);
printf("逆置结果: ");
printArr(arr,len);
return 0;
}
❹ c语言程序 输入一字符串存入数组中,逆序存放并输出
对键盘输入的字符串进行逆序,逆序后的字符串仍然保留在原来的字符数组中,最后输出。(不得调用任何字符串处理函数),例如:
输入
hello
world
输出
dlrow
olleh
❺ 将一个一维数组中的值按逆序存放,并输出。
#include<iostream.h>
void main()
{
int a[6]={1,2,3,4,5,6},temp;
for(int i=0;i<=5;i++)
{if(i!=5)
cout<<a[i]<<' ';
else
cout<<a[i]<<endl;}
for(i=0;i<=2;i++)
{temp=a[i];a[i]=a[5-i];a[5-i]=temp;}
for(int j=0;j<=5;j++)
{if(j!=5)
cout<<a[j]<<' ';
else
cout<<a[j]<<endl;}
}
这才是逆序存放,你那只是逆序输出,存储顺序是没变的
❻ 输入10个整数存入一维数组,再按逆序重新存放后输出(用指针方式实现)。
#include
#define
n
10
//可以通过改变本数的大小从而改变数组的大小
main()
{
int
a[n];
int
*p,i=0;
p=a;
while
(++i<=n)
{
scanf("%d",p++);
//通过指针接受输入
}
while
(--i>0)
{
printf("a[%d]=%d,",n-i,a[n-i]);//输出数组内容作为参照,与题意要求无关,可删除本行
printf("%d\n",*(--p));//通过指针接受输出
}
}
❼ 编写程序将一个数组中的数按逆序重新存放并输出(程序中数组的元素个数自定,逆序
void invert(int a[ ],int n){
int temp;// 临时存储单元
// 以n/2为对称点,进行对称位置交换。
for(int i=0;i<n/2;i++){
// a[i]存放在临时存储单元
temp=a[i];
// 将i的对称的数据存到a[i]
a[i]=a[n-1-i];
// 将原a[i]中的数据(即temp),存放到i的对称点a[n-1-i]
a[n-1-i]=temp;
}
// 重新输出数组
for(int i=0;i<n;i++){
printf("%d ",a[i]);
}
}
直接计数
计算一个排列的逆序数的直接方法是逐个枚举逆序,同时统计个数。例如在序列 { 2, 4, 3, 1 } 中,逆序依次为 (2,1),(4,3),(4,1),(3,1),因此该序列的逆序数为 4。
Visual Basic6.0 编写的示例使用的就是直接计数的方法,函数 NiXushu 返回一个字符串的逆序数。
Private Function NiXuShu(ByVal l As String) As Long '逆序数计算
Dim i As Integer, j As Integer, c As Long
Dim n() As Integer
ReDim n(Len(l))
For i = 1 To Len(l)
n(i) = Val(Mid(l, i, 1))
For j = 1 To i - 1
If n(i) < n(j) Then
c = c + 1
End If
Next j
Next i
NiXuShu = c
End Function
以上内容参考:网络-逆序数
❽ vb编程输入10个整数存入一维数组,再按逆序重新存放后再输出
Private Sub Command1_Click()
Dim a(10) As Integer
Print "初始的数:"
For i = 1 To 10
a(i) = InputBox("请输入第" & i & "个数:")
Print a(i);
Next i
For i = 1 To 5
t = a(i)
a(i) = a(11 - i)
a(11 - i) = t
Next i
Print "逆序重新存放后的数:"
For i = 1 To 10
Print a(i);
Next i
Print: Print
End Sub
❾ 大神们,教一下怎么编写一个按照逆序输出数字的c程序!!!!
1
2
3
4
5
6
7
8
9
intx;//存储正序数
inty=0;//存储逆序数
scanf("%d",&x);//输入一个数比如1234
while(x!=0)
{
y=y*10+x%10;//x%10就会取得个位数4,y*10==0把4存到y中,下次循环y*10=40
x/=10;//1234除与10等于123,下次循环上一条指令就能取得个位数3
}
printf("%d\n",y);//输出逆序数
❿ C语言编程,输入10个整数,分别按顺序和逆序输出
C语言通过输入十个整数然后分别顺序和逆序输出的编程思想和方法如下:
1.首先需要定义一个整型数组用于存储输入的10个整数。这里定义一个数组a。