一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

4.1 單項選擇題

 ┣█一生有你 2007-01-10

    4.1  單項選擇題

    1.若有下列說明,則數(shù)值為4的表達(dá)式是( 
      int a[12]
{ l,2,3,4,5,6,7,8,9,10,1112 };
      char c
‘a(chǎn)‘,d, g;
    ①a[g
c]           ②a[4] 
    ③a[‘d‘-‘c‘]            ④a[‘d‘-c] 
    
【解】數(shù)組元素的下標(biāo)自0開始順序編號,值為4的元素是a[3]。所以只有下標(biāo)表達(dá)式的值為3的才是正確的。下標(biāo)表達(dá)式g-C中的的變量gc的值是還未被設(shè)定的,其值不確定。a[4]的值為5,下標(biāo)為4是不對的。‘d‘-‘c‘的值為1,a[l]的值是2,所以也是不對的。變量c的值為‘a(chǎn)‘ ,‘d‘-c3,所以正確解答是


    2
.設(shè)有定義:"char s[12]={"string"};" printf("%d\n",strlen(s));的輸出是( 
    ① 6              ② 7                
    ③11             ④ 12
      
【解】在C語言中,字符串是指在有效字符之后有字符率結(jié)束標(biāo)記符的字符列,并約定字符串的長度是指字符率中有效字符個數(shù),不包括字符串的結(jié)束標(biāo)記符。存放于字符數(shù)組s中的字符串是“string”,該字符串的長度為6,所以輸出該字符串的長度應(yīng)是6。正確的解答是。

    3
.下列語句中,正確的是(  
      ① char a[3][]={‘a(chǎn)bc"
,‘1‘};         ② char a[][3]={‘a(chǎn)bc‘,‘l‘}
      ③char a[3][]={‘a(chǎn)‘
,"1"};                ④char a[][3]={"a","1"};
      
【解】如定義數(shù)組時有初始化,其最高維的長度可以省缺,由系統(tǒng)根據(jù)初始化時的初值個數(shù)確定,而其它維的長度是不可以缺省的。對二維字符數(shù)組的初始化,可以按行用字符串對其初始化,也可以按二維數(shù)組元素的存儲順序逐一用字符對其元素初始化。在供選擇解答中,有不是最高維的長度被缺省,所以是錯誤的。在供選擇解答中,還將字符串常量寫作‘a(chǎn)bc‘,這也是錯誤的。只有,用字符率按行給二維字符數(shù)組初始化,這才是正確的。正確構(gòu)解答是。

    4
.合法的數(shù)組定義是(   
       ①int a[]={"string"}               ②int a[5]={0,1,2,3,4,5};
       ③char a={"string"}                ④char a[]={0,1,2,3,4,5};
     
【解】錯誤的原因是整數(shù)數(shù)組不可以用字符串對其初始化。錯誤的原因是,數(shù)組初始化時,初始化指定的值的個數(shù)多于數(shù)組的元素個數(shù)。錯誤的原因是,能用字符串初始化的只;有字符指針變量,或字符數(shù)組。字符率不能對其它類型的變量初始化,包括字符變量。是正確的,因為字符數(shù)組可以用小整數(shù)(作為字符的ASCII代碼值)對其元素初始化。

    5
.語句"printf("%d\n"strlen("ats\nol2\1\\"))"的輸出結(jié)果是(   
             ①11            ②10              ③ 9              ④ 8
     
【解】字符串中的字符可以是一般的普通字符,也可以是由反斜杠字符開頭的轉(zhuǎn)義字符。在字符串"abs\no12\11\\" 中,有三個轉(zhuǎn)義字符,它們是\n、\1\\,所以該字符串的有效字符個數(shù)是9。所以正確的回答是。

    6
.函數(shù)調(diào)用“strcat(strcpy(strl,str2),str3)”的功能是(  
      ①
將字符串strl復(fù)制到字符串str2中后再連接到字符串str3之后
      ②
將字符串strl連接到字符串str2中后再復(fù)制到字符率str3之后
      ③
將字符串str2復(fù)制到字符串strl中后再將字符串str3連接到字符串strl之后
      ④
將字符串str2連接到字符率strl之后再將字符串strl復(fù)制到字符串str3
     
【解】函數(shù)調(diào)用strcat(s1,s2)是將s2字符串復(fù)制連接到s1字符串之后,使s1字符串變得更長。函數(shù)調(diào)用strcpy(s1,s2)是將s2字符串復(fù)制到s1,使s1字符串的內(nèi)容與s2字符串的內(nèi)容相同。函數(shù)調(diào)用strcat(strcpy(strlstr2) ,str3) 是先執(zhí)行strcpy(strlstr2),然后再執(zhí)行strcat(strl,str3),所以其功能是將字符串str2復(fù)制到字符串strl中,然后再將字符串str3復(fù)制連接到字符串strl之后。正確的選擇是。

    7
.設(shè)有如下定義,則正確的敘述為(  
      char x[]
{"abcdefg"};
      char y[]
{‘a(chǎn)‘,‘b‘,‘c‘,‘d‘‘e‘,‘f‘,‘g‘};
      ①
數(shù)組x和數(shù)組y等價數(shù)組x和數(shù)組y長度相同
      ③
數(shù)組X的長度大于數(shù)組y的長度數(shù)組X的長度小于數(shù)組y的長度
    
【解】不指定數(shù)組長度的字符數(shù)組定義,其所需要的字節(jié)數(shù)可由初始化中給出的值的個數(shù)確定。字符數(shù)組可以用字符串初始化,也可用字符逐個給字符數(shù)組的元素初始化。但用字符初始化時,盡管給出了字符串中的全部字符,還是不會自動有字符率結(jié)束字符。但字符串初始化自動會含有字符串的結(jié)束標(biāo)記符,字符串初始化所需要的字節(jié)個數(shù)會比用同樣多的字符初始化多1個字節(jié)。所以只有才是正確的。

 

    4.2  填充題

    1.根據(jù)變量定義“static int b[5], a[][3]={1,23,4,5,6};”b[4]_____,a[1][2] 
    
【解】系統(tǒng)規(guī)定,靜態(tài)變量定義時,若末初始化,系統(tǒng)自動給定二進(jìn)制代碼全0的值。所以態(tài)數(shù)組b的元素全為0,當(dāng)然包括b[4]也為幾靜態(tài)數(shù)組a是二維數(shù)組,每行有三個元素,在初始化中結(jié)出了六個初值,所以數(shù)組a2行。由于數(shù)組的元素按行順序存儲,并按行順序初始化。前三個值是第一行,后三個值是第二行。a[1][2]是第二行的第三列元素,也是 a的最后一個元素,所以其值是6。


    2
.設(shè)有定義語句“static int a[3][4]={{1},{2},{3}};a[l][l]值為_,a[2][1]的值為_。
     
【解】給二維數(shù)組初始化時,可按行給出初值,并且每行可以只給前面部分的元素給出初值。系統(tǒng)規(guī)定,對哪些未給出初值的部分元素,系統(tǒng)自動置二進(jìn)制代碼全0的值。由于定義語句只給a[0][0]給定初值l、a[l][0]給定初值2、a[2][0]給定初值3。這樣,其它元素都為0值。所以,a[1][1] 0a[2][1] 0。

    3
.若在程序中用到“putchar( )”函數(shù)時,應(yīng)在程序開頭寫上包含命令_____,若在程序中用到“strlen( )”函數(shù)時,應(yīng)在程序開頭寫上包含命令______。
   
【解】putchar()是系統(tǒng)提供的頭文件stdio.h中定義的宏,所以程序要使用它,必須寫上包含命令:#include<stdio.h>。函數(shù)strlen()是系統(tǒng)提供的字符串處理函數(shù)之一,字符串處理函數(shù)的函數(shù)原型說明和它們用到的有關(guān)常量、數(shù)據(jù)結(jié)構(gòu)等,在系統(tǒng)提供的頭文件tring.h中定義,所以使用該函數(shù)的程序應(yīng)在程序開頭寫上包含命令并include<String.h>。

    4
.下面程序的功能是輸出數(shù)組s中最大元素的下標(biāo),請?zhí)羁铡?/font>
    main()
    {int k
, p ;
     int s[]={1,
9,7,2,-103};
     for(p
0, kp;p<6;
p++)
      if(s[p]>s[k])____________
      printf("%d\n"
,k)

    } 
     
【解】為要尋找數(shù)組中的最大元素的下標(biāo),需先預(yù)設(shè)1個臨時最大元素的下標(biāo),并順序逐一考察數(shù)組的元素,當(dāng)發(fā)現(xiàn)當(dāng)前元素比臨時最大元素更大時,就用當(dāng)前元素的下標(biāo)更新臨時最大元素下標(biāo)。直至考察了數(shù)組的全部元素后,這臨時最大元素下標(biāo)就是數(shù)組的最大元素下標(biāo)。通常預(yù)設(shè)的最大元素下標(biāo)是數(shù)組的首元素下標(biāo),考察是從首元素開始順序向后繼元素考察。程序中,存儲臨時最大元素下標(biāo)的變量是k,變量p控制順序考察的循環(huán)控制變量。當(dāng)發(fā)現(xiàn)當(dāng)前元素s[p]比臨時最大元素s[k]更大時,應(yīng)該用p更新k。所以在空框處應(yīng)填入代碼“kp。

    5
.下面程序的功能是將一個字符串str的內(nèi)容顛倒過來,請?zhí)羁铡?/font>
    # include<string.h> 
    main()
    {int i
, j,_____________;
     char str[]={"1234567"}

     for(i
0,jstrlen(str)          ; i<j;i++,j++)
    { k
str[i]; str[i]=str[j];
str[j]=k; }
     printf("%s\n"
str);

    }
       
【解】顛倒一個字符串中的字符,就是首尾對應(yīng)的元素兩兩交換。簡單地可用兩個游標(biāo)變量ij, j是前端元素的下標(biāo), j是后端元素的下標(biāo), 交換以這兩個變量值為下標(biāo)的元素str[i] str[j]。開始時,i的值為 0,j的值為字符率未元素的不標(biāo)(字符串長度減1)。每次交換后,i 1,j1。繼續(xù)交換的條件是str[i]還位于str[j]的前面,即i<j。字符串末元素的不標(biāo)是它的長度減1,所以在第二個空框處應(yīng)填入-1。程序為了交換str[i]str[j],使用了變量k,該變量應(yīng)在程序的變量定義部分中一起定義,所以在第一個空框處應(yīng)填入k。

    6
.以下程序可把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出,請?zhí)羁铡?/font>
       main(  )
     { char b[17]={"0123456789ABCDEF"};
       int c[64],d,i
0,base16;
       long n
;

       printf("Enter a number
\n");.
       scanf("%ld"
, &n)
      do  { c[i]=________;i++;n
n/base;}
      while(n!
0);
      printf("Transmite new base
\n");

      for(--i; i>= 0;--i)
     {d
c[i] printf("%c",b     );}
      printf("\n")
;

     
【解】程序中,字符數(shù)組b存儲十六進(jìn)制的 16個數(shù)字符,整型數(shù)組C存儲澤出的十六進(jìn)制數(shù)的各位數(shù)值.從整數(shù)n譯出它的各位十六進(jìn)制數(shù)值,需采用除16取余的方法,即求n16 的余.得到它的十六進(jìn)制的個位數(shù),接著將n除以16。在n不等于0的情況下循環(huán),能順序求出n的十六進(jìn)制的個位數(shù)、十位數(shù)、百位數(shù)等等。程序中變量base已預(yù)置16,所以在第一個空框處可填代碼n%basen%16。當(dāng)n的十六進(jìn)制數(shù)的個位、十位、百位等數(shù)字依次存放于數(shù)組C中后,就從最高位至最低位,參照數(shù)組c[i]的內(nèi)容d(以其內(nèi)容為下標(biāo)),取十六進(jìn)制數(shù)字符表中的字符b[d]輸出。所以在第二個空框處可填入代碼[d]。

    4.3  程序分析題

    1.閱讀程序,寫出程序運行結(jié)果。,
      main
()
   {  static int a[][3]
{9,7,5,3l,2,4,6,8};
      int i
j,sl0,s20;

     for(i
0 i<3;i++)
     for(j
0;j<3;
j++)
     { if(i
==j) s1s1
a[i][j];
     if(i+j
== 2) s2s2
a[i][j];
      }
     printf("%d\n%d\n"
sl,s2)

    }

    【解】已知數(shù)組。共有33列席一行依次是9,7,5;每二行是3,1,2;第三行是4,6,8。程序引用數(shù)組元素的游標(biāo)變量是ij,外循環(huán)控制變量i是數(shù)組的行下橋,內(nèi)循環(huán)控制變量j是數(shù)組的列下標(biāo)。循環(huán)體的工作是將數(shù)組的某些元素累計到sl,某些元素累計到S2。將行下標(biāo)i和列下標(biāo)j相同的元素累計到slsla[0][0]a[l][1]a[2][2]。將行下標(biāo)i與列下標(biāo)j的和為 2的元素累計到 s2,s2a[0][2]a[l][l]a[2][0]。所以sl18,s210。程序輸出:
    18
    10

    2
.說明下列程序的功能。
   main()
   { int i
j
    float a[3][3]
b[3][3],x;
    for(i
0i<3i++) 
    for(j
0j<3
j++)
    { scanf("%f",&x)
a[i][j] x

   }
    for(i
0i<3i++)
    for(j
0j<3;
j++)
   b[j][i]
a[i][j]

   for(i=0
;i<3i++)
   {printf("\n")
;

    for(j
0j<3;j++)
    printf("%f"
b[i][j]);

    }
    printf("\n")
;
    }
     
【解】程序第一段兩重循環(huán),實現(xiàn)按行順序輸入數(shù)組a的全部元素的值。程序第二段兩重循環(huán)是將數(shù)組a轉(zhuǎn)置復(fù)制到數(shù)組b。程序第三段兩重循環(huán)實現(xiàn)按行輸出數(shù)組b的全部元素。所以程序的功能是按行順序輸入3*3二維數(shù)組的全部元素,然后按列順序輸出。

    3
.寫出下列程序的運行結(jié)果。
    main()
    {static char a[]
={‘*‘,‘*‘,‘*‘,‘*‘,‘*‘,‘*‘};
    int i
,j,k
    for( i
0;i<5;i++)
    { printf("\n")
    for(j
0;j<ij++) printf("%c",‘‘);

    for
j0;j<5 ;j++)printf"%c"a[k]);
    }
    printf( "\n")
;
     }

   【解】程序的外循環(huán)控制循環(huán)五次,每次開始先輸出一個換行符,共輸出5行信息。對于i(自0開始計算)行,先輸出i個空白符,接著輸出字符數(shù)組a中的五個字符,由于a中的五個字符都是字符。,所以輸出五個*字符。這樣程序是輸出以下形式的圖案:
            * * * * *
            * * * * *
            * * * * *
            * * * * *
            * * * * *

    4
.說明下列程序的功能。
      main()
     {  int i
j ;
       float a[3][3]
,b[3][3],c[3][3],x
       for(i
0i<3;i++)
      for(j=0;j<3
;
j++)
    { scanf("%f"
&x); a[i][j]= x;

     }
     for(i
0;i<3i++)
     for(j
0;j<3;
j++)
     {scanf("%f"
&x);b[i][j]x;

     }
     for(i
0; i<3; i++)
    for(j
0;j<3
j++)
    c[i][j]
a[i][j] b[i][j] ;

    for(i
0; i<3;i++)
    { printf("\n")
;

    for(j
0;j<3j++)
    printf("%f"
, c[i][j])

    }
     printf("\n")
;
    }
   
【解】程序第一段的功能是按行順序輸入數(shù)組a 的元素。程序第二段的功能是按行順序輸入數(shù)組b的元素。程序第三段的功能是順序累加數(shù)組a和數(shù)組b的對應(yīng)元素,并將和存于數(shù)組C的對應(yīng)元素中。最后,按行順序輸出數(shù)組C的全部元素。

 

    4.4  程序設(shè)計題

 

    1.編程序,輸入單精度型一維數(shù)組 a[10] ,計算并輸出 a數(shù)組中所有元素的平均值。
    
【解】為了計算數(shù)組元素的平均值,首先要累計它的全部元素的和,然后除以數(shù)組元素的個數(shù),即得數(shù)組元素的平均值。寫成C程序如下:
     # include<stdio.h> 
     main()

  { int i, n10;
     float s
,a[10] ;
     printf("Enter %d numbers! \n"
, n)
     for( i=0
;i< n i++)
    { scanf("%f"
&s); a[i]= s

     }
    for(s=0.0,i=0;i<n;i++)
    s+= a[i]
;
     s /
n;
     printf("
平均值是%.2f\n" s);
     }

    2
.編程序,輸入10個整數(shù)存入一維數(shù)組,再按逆序重新存放后再輸出。
     
【解】將數(shù)組的元素逆序重新存放,就是將數(shù)組的首尾對應(yīng)元素兩兩交換。簡單地可用兩個游標(biāo)變量ij,i是前端元素的下標(biāo),j是后端元素的下標(biāo),交換以這兩個變量值為下標(biāo)的數(shù)組元素。開始時,i的值為0,j的值為末元素的下標(biāo)。每次交換后,i1,j1。繼續(xù)交換的
條件是i<j。程序如下:
    # include<stdio.h>
        main()
       { int a[10]
, ij,t,n10
         printf("Enter %d numbers! \n"
, n)
     for(i
0;i<n;i++)
         scanf("%d"
,
&a[i] );
       for(i=0,j
n-1i<j;i++,
j--) {
      t
a[i]; a[i]a[j] a[j] t;

       }
       for(i
0; i<n i++)
       printf("%d\t"
, a[i]);

       printf("\n")
;
       }

    3
.編程序,輸入兩個字符串(<40個字符) ,連接后輸出(不準(zhǔn)用系統(tǒng)函數(shù)) 。
     
【解】將字符串s2連接到字符串s1的計算過程可分兩個步驟完成。首先找到字符串s1的末尾,然后參照字符串s2,將字符串s2的全部有效字符逐一復(fù)制到字符串s1,最后在字符串s1的末尾接上字符率結(jié)束標(biāo)記符。完整程序如下:
      # include<stdio.h> 
      # define N 40
      main()
     {  char s1[N]
s2[N];
        int i,j; 
        printf("Enter stringl!\n")
;
       scanf("%s"
,s1);

     printf("Enter string2! \n");
       scanf("%s"
s2);
       for(i
0; sl[i]!‘\0‘ ; i++) ;
       for(j
0;s2[j]!‘\0‘ ;i++j++) 
       so[i]
s[j] ;

        s1[i]
‘\0‘
       printf("sl
%s\n" ,sl);

       }

    4
.編程序按下列公式計算S的值(其中X1、X2、Xn由鍵盤輸入)
       s
∑(xi-x0)(xi-x0) (其中x0X1、x2、Xn的平均值
    
【解】輸入數(shù)組xn個元素的值,按公式計算。程序首先輸入n,設(shè)n<100,然后輸入n個數(shù)據(jù),接著求它們的平均值,最后按計算公式求出s,并輸出。程序如下:

      # include<stdio.h> 
     # define N 100
     main()
     { double x[N+1]
, s;
       int i,n

      do {
       printf("Enter n(<100)")
; scanf("%d" &n);
       } while(<=0||n>=100);
       for(i=1
i<=n;i++){ 
      scanf("%lf"
, &s);x[i]s;

       } 
       for(s
0.0i1;i<=n; i++)
      s+=x[i]
;

     x[0]
s/n
     for(s
0.0, i=1;i<= n;i++)
      s+=(x[i]-x[0])*(x[i]
x[0]);

      printf("s=%f\n"
, s);
      }

    5
.輸入一個3X5的整數(shù)矩陣,輸出其中最大值、最小值和它們的下標(biāo)。
   
【解】輸入一個二維數(shù)組,尋找二維數(shù)組的最大值和最小值。其中尋找最大值和最小值的工作可用兩重循環(huán)實現(xiàn),即按行按列考察二維數(shù)組的元素。程序如下:
     # include<stdio.h> 
    main()
    { int a[3][5]
, ij,t,n3, m5,
      min
max, minrow, mincol, maxrow, maxcol;
      printf("Enter %d*%d numbers !\n"
n,m);
      for(i
0; i<n;i++)

    for( j0;j<m;j++){
     scanf("%d"
, &t) a[i][j] t;

     }
     min
max=a[0][0]; minrowmincolmaxrow=maxcol=0;
     for(i
0;i<n;
i++)
     for(j
0;j<m
j++){ 
     if( a[i][j]> max ){
     max= a[i][j]
;maxrow= imaxcol=j ;

     }
     if( a[i][j]<min) { 
     min
a[i][j] ; minrow= i; mincolj ;
     }
     }
      printf("MAX
a[%d][%d] %d MIN a[%d][%d] %d \n",
     maxrow,maxcol,max
,minrow,mincol,min) ;
      }

    6
.輸入一個字符串,將其中的所有大寫字母改為小寫字母,而所有小寫字母全部改為大寫字母,然后輸出。
   
【解】程序先輸入字符率,然后順序考察輸入字符串中的字符,當(dāng)發(fā)現(xiàn)是大寫字母時,將它改寫成對應(yīng)的小寫字母,而當(dāng)它是小寫字母時,就將它改寫成對應(yīng)的大寫字母。若變量ch中的字符是大寫字母,則與它對應(yīng)的小寫字母的表達(dá)式可以寫成ch- ‘A‘‘a(chǎn)‘ ;類似地,若變量ch中的字符是小寫字母,則與它對應(yīng)的大寫字母的表達(dá)式可以寫成ch‘a(chǎn)‘‘A‘ 。完整程序如下:
      # include<stdio.h> 
      # define N 200
        main()
       { char s[N]
;
         int i
;
        printf(" Enter string! \n")

        scanf ("%s"
,s)
       for(i
0; s[i]!‘\0‘i++)
       if(s[i] >=‘A‘&&s[i] <=‘Z‘ )
      s[i]
s[i] -‘x‘‘a(chǎn)‘ ;

      else if(s[i] >=‘a(chǎn)‘&& s[i] <=‘z‘) 
      s[i]
s[i]‘a(chǎn)‘ ‘A‘ ;
      printf("s
%s\n", s);
      }

    7
.設(shè)某班50名學(xué)生的三科成績表如下:
    
課程一    課程二     課程三

          ...        ...        ...

    試編一個程序,輸入這50個學(xué)生的三科成績,計算并輸出每科成績的平均分。
   
【解】程序定義一個503列的二維數(shù)組,用于存儲全班學(xué)生的成績。程序順序輸入各個學(xué)生的三科成績,然后按列的順序,累計各科總分,并計算平均分。完整程序如下:
     # include<stdio.h>
     # define N 50
     # define M 3
      main()
     {int score[N][M]
i,j,t
     double a[M]
;
     printf("Enter scores!\n")

     for(i
0;i< N; i++)
     for(j
0;j<M;
j++) { 
     scanf("%d"
&t);score[i][j]t;

      }
     for(j
0;j<Mj++)a[j]0.0;
     for(j
0;j< M;j++){ 
     for(i
0;i< N;
i++)
     a[j]+= score[i][j]
;

    a[j]/
N
    }
     for(j
0;j<Mj++)
      printf("
課程%d的平均分是%.2f\n", j+1,a[j]);

     }

    8
.編一個程序,輸入一個整型數(shù)據(jù),輸出每位數(shù)字,其間用遠(yuǎn)號分隔。例如,輸入整數(shù)為2345,則輸出應(yīng)為: 2 3, 4, 5。
    
【解】程序的主要工作是從輸入整數(shù)分拆出它的十進(jìn)制整數(shù)的各位數(shù)字,將分拆出來的各位數(shù)字存于數(shù)組中,然后將這些數(shù)字自高位到低位的順序逐位輸出。要將一個整數(shù)按十進(jìn)制數(shù)的要求分拆,需用一個循環(huán),每次循環(huán)求出被分拆數(shù)除以10的余數(shù)的辦法來求出它的個位,每分拆出一位就將被分拆的數(shù)除以10。循環(huán)過程直至被分拆的數(shù)為0結(jié)束。完整程序如下:
      # include<stdio.h> 
       main()
      {int a[20]
,i,base10
       int n
;
       printf("Enter a number! \n")
;
       scanf("%d"
&n);/*整數(shù)輸入*/
        i
0;/*n進(jìn)行分拆,各位數(shù)字自低位到高位存于數(shù)組
a*/
       do{
      a[i++]
n% base

      n/
base;
      } while(n)
;

    for(i--;i>=0;i--)/*自高位到低位輸出*/
       printf("%d%c"
,a[i] i? ‘,
‘\n‘);
         }

    9
.編一個程序,輸入一個字符串,將其中所有的大寫英文字母的代碼+3,小寫英文字母的代碼-3。然后輸出加密后的字符串。

   
【解】程序的主要工作是輸入字符串,并順序考察輸入字符率中的字符,分別對其中大小寫英文字母完成問題要求的更改,而跳過不是英文字母的字符。完整程序如下:
      # include<stdio.h> 
      # define N 200
        main()
       {char s[N]
int i;
        printf("Enter string! \n")
;

        scanf("%s"
, s);
        for(i
0;s[i] !‘\0‘; i++)
       if(s[i] >=‘A‘ && s[i]
‘Z‘)
       s[i]
3;

       else if(s[i]
‘a(chǎn)‘&& s[i]‘z‘ ) 
       s[i]
3;

       printf("s
%s\n",s)
       }

    10
.編一個程序,將按第9題中加密的字符率(從鍵盤輸入)解密后輸出。
   
【解】本問題編寫的程序是完成上一程序的逆操作。同樣是順序考察輸入字符串,對滿足要求的字符作恢復(fù)更改。要求是當(dāng)字符減3后是大寫英文字母時,則對其作減3處理的替換;當(dāng)字符加3后是小寫英文字母時,則對它作加3的處理。如此做法是有錯誤的,程序未考慮原
先不是英文字母,而未被加3或減3處理,但對它減3或加3后是英文字母時,將被下面的程序轉(zhuǎn)換成英文字母。所以下面的程序不是完成上題程序的逆操作。但沒有簡單的辦法能避免這個錯誤。完整程序如下:
      # include<stdio.h> 
      # define N 200
      main()
     {char s[N]
; int i;
       printf("Enter string!\n")
;

       scanf("%s"
s);
       for(i
0;s[i] !‘\0‘i++)
       if(s[i]-3>=‘A‘&&s[i]-3<=‘Z‘)
       s[i]-=3
;

       else if(s[i]+3>=‘a(chǎn)‘ && s[i]+3<= ‘Z‘)
       s[i]+=3
;
        printf("s=%s\n"
s);
        }

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日韩精品毛片视频免费看| 成年女人下边潮喷毛片免费| 高清不卡一卡二卡区在线| 亚洲欧美日韩国产成人| 欧美大胆美女a级视频| 久久99精品日韩人妻| 亚洲一区二区精品免费| 国产成人精品一区二区在线看| 国产精品免费不卡视频| 国产精品九九九一区二区| 成人精品网一区二区三区| 粉嫩国产一区二区三区在线| 人妻偷人精品一区二区三区不卡 | 成人免费在线视频大香蕉| 国产高清一区二区白浆| 免费在线成人午夜视频| 九九九热视频最新在线| 97人妻人人揉人人躁人人| av国产熟妇露脸在线观看| 亚洲国产黄色精品在线观看| 国产精品伦一区二区三区在线| 亚洲熟女国产熟女二区三区| 亚洲精品中文字幕在线视频| 在线一区二区免费的视频| 2019年国产最新视频| 国产激情一区二区三区不卡| 九九热最新视频免费观看| 日本婷婷色大香蕉视频在线观看| 日本加勒比不卡二三四区| 国产中文字幕一区二区| 国产高清精品福利私拍| 少妇淫真视频一区二区| 日本欧美一区二区三区就| 尤物久久91欧美人禽亚洲| 日韩精品视频香蕉视频| 日韩精品免费一区三区| 国产传媒中文字幕东京热| 国产小青蛙全集免费看| 亚洲国产av一二三区| 少妇熟女精品一区二区三区| 不卡一区二区在线视频|