4.1 單項選擇題
1.若有下列說明,則數(shù)值為4的表達(dá)式是( ) int a[12]={ l,2,3,4,5,6,7,8,9,10,11,12 }; 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中的的變量g和c的值是還未被設(shè)定的,其值不確定。a[4]的值為5,下標(biāo)為4是不對的。‘d‘-‘c‘的值為1,a[l]的值是2,所以也是不對的。變量c的值為‘a(chǎn)‘ ,‘d‘-c=3,所以正確解答是④。
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(strl,str2) ,str3) 是先執(zhí)行strcpy(strl,str2),然后再執(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,2,3,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ù)組a有2行。由于數(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]= 0,a[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,-10,3}; for(p=0, k=p;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)填入代碼“k=p;”。
5.下面程序的功能是將一個字符串str的內(nèi)容顛倒過來,請?zhí)羁铡?/font> # include<string.h> main() {int i, j,_____________; char str[]={"1234567"}; for(i=0,j=strlen(str) ; i<j;i++,j++) { k=str[i]; str[i]=str[j]; str[j]=k; } printf("%s\n", str); } 【解】顛倒一個字符串中的字符,就是首尾對應(yīng)的元素兩兩交換。簡單地可用兩個游標(biāo)變量i和j, j是前端元素的下標(biāo), j是后端元素的下標(biāo), 交換以這兩個變量值為下標(biāo)的元素str[i]和 str[j]。開始時,i的值為 0,j的值為字符率未元素的不標(biāo)(字符串長度減1)。每次交換后,i增 1,j減1。繼續(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,base=16; 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取余的方法,即求n除16 的余.得到它的十六進(jìn)制的個位數(shù),接著將n除以16。在n不等于0的情況下循環(huán),能順序求出n的十六進(jìn)制的個位數(shù)、十位數(shù)、百位數(shù)等等。程序中變量base已預(yù)置16,所以在第一個空框處可填代碼n%base或n%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,3,l,2,4,6,8}; int i,j,sl=0,s2=0; for(i=0; i<3;i++) for(j=0;j<3;j++) { if(i==j) s1=s1+a[i][j]; if(i+j== 2) s2=s2+a[i][j]; } printf("%d\n%d\n", sl,s2); }
【解】已知數(shù)組。共有3行3列席一行依次是9,7,5;每二行是3,1,2;第三行是4,6,8。程序引用數(shù)組元素的游標(biāo)變量是i和j,外循環(huán)控制變量i是數(shù)組的行下橋,內(nèi)循環(huán)控制變量j是數(shù)組的列下標(biāo)。循環(huán)體的工作是將數(shù)組的某些元素累計到sl,某些元素累計到S2。將行下標(biāo)i和列下標(biāo)j相同的元素累計到sl,sl=a[0][0]+a[l][1]+a[2][2]。將行下標(biāo)i與列下標(biāo)j的和為 2的元素累計到 s2,s2=a[0][2]+a[l][l]+a[2][0]。所以sl是18,s2是10。程序輸出: 18 10
2.說明下列程序的功能。 main() { int i,j; float a[3][3],b[3][3],x; for(i=0;i<3;i++) for(j=0;j<3 ;j++) { scanf("%f",&x); a[i][j]= x; } for(i=0;i<3;i++) for(j=0;j<3;j++) b[j][i]=a[i][j]; for(i=0;i<3;i++) {printf("\n"); for(j=0;j<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<i;j++) printf("%c",‘‘); for(j=0;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=0;i<3;i++) for(j=0;j<3;j++) { scanf("%f", &x); a[i][j]= x; } for(i=0;i<3;i++) 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<3;j++) 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, n=10; 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)變量i和j,i是前端元素的下標(biāo),j是后端元素的下標(biāo),交換以這兩個變量值為下標(biāo)的數(shù)組元素。開始時,i的值為0,j的值為末元素的下標(biāo)。每次交換后,i增1,j減1。繼續(xù)交換的 條件是i<j。程序如下: # include<stdio.h> main() { int a[10], i,j,t,n=10; printf("Enter %d numbers! \n", n); for(i=0;i<n;i++) scanf("%d",&a[i] ); for(i=0,j=n-1;i<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) (其中x0是X1、x2、…、Xn的平均值) 【解】輸入數(shù)組x的n個元素的值,按公式計算。程序首先輸入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.0,i=1;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], i,j,t,n=3, m=5, min,max, minrow, mincol, maxrow, maxcol; printf("Enter %d*%d numbers !\n" , n,m); for(i=0; i<n;i++) )
for( j=0;j<m;j++){ scanf("%d", &t); a[i][j]= t; } min=max=a[[0][0]; minrow=mincol=maxrow=maxcol=0; for(i=0;i<n;i++) for(j=0;j<m; j++){ if( a[i][j]> max ){ max= a[i][j] ;maxrow= i;maxcol=j ; } if( a[i][j]<min) { min=a[i][j] ; minrow= i; mincol=j ; } } 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é)生的三科成績,計算并輸出每科成績的平均分。 【解】程序定義一個50行3列的二維數(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<M;j++)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<M;j++) 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,base=10; 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); }
|