❶ 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。