㈠ 編寫程序,從鍵盤輸入一個三位數,求出其逆序數並輸出,例如輸入123,輸出321。
package com.yuxin.learn;
public class Main{
//輸入整數後,逆序輸出為字元串,通過遞歸實現
public static String reverse(int a){
if(a<0)return"";
if(a<10)return Integer.toString(a);
int last=a-(a/10)*10;//取得這個整數的最後一位
return Integer.toString(last)+reverse(a/10);//遞歸輸出最後一位和前面的倒序數字
}
public static void main(String[]args){
int x=123023040;
String rev=reverse(x);
System.out.println(rev);
System.out.println(reverse(123));
}
}
輸出結果:
1、040320321
2、321
C++與C#的static有兩種用法:面向過程程序設計中的static和面向對象程序設計中的static。前者應用於普通變數和函數,不涉及類;後者主要說明static在類中的作用。
面向過程
靜態全局變數
在全局變數前,加上關鍵字static,該變數就被定義成為一個靜態全局變數。我們先舉一個靜態全局變數的例子,如下:
//Example1
#include<iostream>
using namespace std;
void fn();//聲明函數
static int n;//聲明靜態全局變數
int main()
{
n=20;//為n賦初值
printf("%d",n);//輸出n的值
fn();//調用fn函數
}
void fn()
{
n++;//n的值自加一(n=n+1)
printf("%d",n);//輸出n的值
}
靜態全局變數有以下特點:
該變數在全局數據區分配內存;
未經初始化的靜態全局變數會被程序自動初始化為0(在函數體內聲明的自動變數的值是隨機的,除非它被顯式初始化,而在函數體外被聲明的自動變數也會被初始化為0);
靜態全局變數在聲明它的整個文件都是可見的,而在文件之外是不可見的;
靜態變數都在全局數據區分配內存,包括後面將要提到的靜態局部變數。對於一個完整的程序,在內存中的分布情況如下圖:
代碼區//low address全局數據區堆區棧區//high address
一般程序把新產生的動態數據存放在堆區,函數內部的自動變數存放在棧區。自動變數一般會隨著函數的退出而釋放空間,靜態數據(即使是函數內部的靜態局部變數)也存放在全局數據區。全局數據區的數據並不會因為函數的退出而釋放空間。細心的讀者可能會發現,Example 1中的代碼中將
static int n;//定義靜態全局變數
改為
int n;//定義全局變數
程序照樣正常運行。
的確,定義全局變數就可以實現變數在文件中的共享,但定義靜態全局變數還有以下好處:
靜態全局變數不能被其它文件所用;
其它文件中可以定義相同名字的變數,不會發生沖突;
㈡ c語言,編程從鍵盤輸入一個三位數,將輸出該數的逆序數,急急急,在線等
輸入三位數比如564
scanf("%d",&c);
int d = c%10*100+(c/10)%10+c%100;
printf("%",d)
C++繼承了C語言的大部分特性,因此保留了「程序總是從main函數開始執行,且總是默認從main函數的return語句或結尾處結束運行」這一傳統,但是要注意,C++中的main函數要想作為程序執行的出入口,必須寫在全局(Global)范圍。
(2)編程求逆序數擴展閱讀:
計算一個排列的逆序數的直接方法是逐個枚舉逆序,同時統計個數。例如在序列 { 2, 4, 3, 1 } 中,逆序依次為 (2,1),(4,3),(4,1),(3,1),因此該序列的逆序數為 4。Visual Basic6.0 編寫的示例使用的就是直接計數的方法,函數 NiXushu 返回一個字元串的逆序數。
㈢ 用c語言編程 求一個數的逆序數。(如 1234 的逆序數是 4321)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{
char array[10];
int k;
scanf("%d", &k);
itoa(k, array, 10);
k = strlen(array);
while(k>=0)
{
printf("%c", array[k-1]);
k--;
}
//如果想逆序輸出數是整型數,可以用atoi()函數轉換回來
}