C语言指针的一些题目
1.將從鍵盤(pán)輸入的每個(gè)單詞的第一個(gè)字母轉(zhuǎn)換成大寫(xiě)字母輸入時(shí)各單詞以空格隔開(kāi),用“.”結(jié)束輸入
解體思路:? 把輸入的字符存入字符數(shù)組中直到輸入".",然后調(diào)用函數(shù),把字符串的第一個(gè)字符(即是第一個(gè)單詞的第一個(gè)字母)轉(zhuǎn)換成大寫(xiě)字母,然后之后的每一個(gè)單詞的第一個(gè)字母的怕判斷方法是:通過(guò)判斷一個(gè)字符是否是空格,以及空格后是否是字母,若均滿(mǎn)足,則將這個(gè)字符后面的那個(gè)字符就是一個(gè)單詞的第一個(gè)字母,將其轉(zhuǎn)換成大寫(xiě)字母
代碼如下:
1 #include <stdio.h> 2 #include <ctype.h> 3 4 void transfer(char *a , int n ) 5 { 6 int i; 7 8 *a = toupper(*a); 9 for(i=0;i<n;i++) 10 { 11 if(*a ==' '&&isalpha(*(a+1))) 12 *(a+1) = toupper(*(a+1)); 13 a++; 14 } 15 *a = '\0'; 16 17 } 18 19 int main(void) 20 { 21 char string[55] ; 22 int i = 0; 23 24 printf("Enter word end with . :"); 25 do 26 { 27 scanf("%c",&string[i]); 28 i++; 29 } while(string[i-1]!='.'); 30 31 32 transfer(string,i); 33 puts(string); 34 35 return 0; 36 }?
2.?從鍵盤(pán)輸入一個(gè)字符串, 編寫(xiě)一個(gè)函數(shù), 在函數(shù)中將字符串從第m個(gè)字符開(kāi)始的n個(gè)字符復(fù)制成另一個(gè)字符串
解體思路: 函數(shù)的參數(shù)為兩個(gè)字符指針a、b和int型的m, n,從m-1位開(kāi)始一直到m+n-1把字符指針a中的每一位賦給b
代碼如下:
1 #include <stdio.h> 2 void copy(char *a , char *b , int m, int n) 3 { 4 int k; 5 //把字符串a(chǎn)的第i-1位之后的j位賦給b 6 for(k=m-1;k<=m+n-1;k++) 7 { 8 *b = *(a+k); 9 b++; 10 } 11 12 *b = '\0'; 13 } 14 15 int main(void) 16 { 17 int i , m , n; 18 char string[33] , s[33] ; 19 20 printf("Enter the string: "); 21 gets(string); //輸入string 22 printf("To copy string's n character from m character to s\n"); 23 printf("Enter m and n : "); 24 scanf("%d %d",&m,&n); 25 26 copy(string , s ,m , n); 27 28 //輸出s 29 for(i=0;i<n;i++) 30 printf("%c",s[i]); 31 printf("\n"); 32 33 return 0; 34 }?
3.輸入8個(gè)整數(shù),將其中最大的數(shù)與第一個(gè)數(shù)對(duì)換,最小的數(shù)與最后一個(gè)數(shù)對(duì)換
解體思路:先申明兩個(gè)int型的指針,用來(lái)指向最大值和最小值,遍歷數(shù)組把最大值指針指向最大值,最小值指針指向最小值,然后把最大值指針指向的數(shù)和數(shù)組第一個(gè)對(duì)換,最小值指針指向的數(shù)和數(shù)組最后一個(gè)對(duì)換
代碼如下:
1 #include <stdio.h> 2 #define N 8 3 4 void change(int *a, int *b,int sad[]); 5 int main(void) 6 { 7 int *max , *min ; //指向最大值和最小值的指針 8 int a[N] , i ; 9 10 //輸入這8個(gè)數(shù) 11 printf("Enter %d integer numbers: ",N); 12 for(i=0;i<N;i++) 13 scanf("%d",&a[i]); 14 15 //初始化最大值和最小值指針 16 max = a; 17 min = a + N -1; 18 19 for(i=0;i<N;i++) 20 { 21 if(a[i]>*max) max = a+i; //修改最大值指針的指向 22 if(a[i]<*min) min = a+i; //修改哦最小值指針的指向 23 } 24 25 change(max,min,a); 26 27 //輸出交換后的數(shù)組 28 for(i=0;i<N;i++) 29 printf("%5d",*(a+i)); 30 printf("\n"); 31 return 0; 32 } 33 34 //把最大值指針指向的數(shù)和數(shù)組第一個(gè)對(duì)換 35 //最小值指針指向的數(shù)和數(shù)組最后一個(gè)對(duì)換 36 void change(int *a, int *b,int sad[]) 37 { 38 int *first , *last , temp = 0 , tem = 0 ; 39 first = sad; 40 last = sad + N -1; 41 42 temp = *first; 43 *first = *a; 44 *a = temp; 45 46 tem = *last; 47 *last = *b; 48 *b = tem; 49 }?
4.輸入n個(gè)整數(shù)排序并輸出
解體思路: 使用選擇排序,每次選擇最小的一個(gè)數(shù)放在序列的起始位置
代碼如下:
1 #include <stdio.h> 2 3 void sort(int *a,int n) // slection sort 4 { 5 int i , j; 6 //從第一個(gè)開(kāi)始,依次選擇最小的放在序列的第一位 7 //外層循環(huán)一次,序列向后推一位 8 for(i=0;i<n-1;i++) 9 { 10 for(j=i+1;j<n;j++) 11 { 12 if(*(a+j)<*(a+i)) 13 { 14 int temp; 15 temp = *(a+j); 16 *(a+j) = *(a+i); 17 *(a+i) = temp; 18 } 19 } 20 } 21 22 } 23 24 int main(void) 25 { 26 int i , n , *p; 27 int arr[100]; 28 p = arr; 29 30 //輸入數(shù)組元素個(gè)數(shù) 31 printf("Enter n: "); 32 scanf("%d",&n); 33 34 //輸入數(shù)組 35 printf("Enter %d integer numbers: ",n); 36 for(i=0;i<n;i++) 37 scanf("%d",p++); 38 39 //輸出輸入的數(shù)組 40 p = arr; 41 for(i=0;i<n;i++) 42 printf("%5d",*(p++)); 43 printf("\n"); 44 45 //選擇排序 46 sort(arr,n); 47 48 //輸出排序后的數(shù)組 49 p = arr; 50 for(i=0;i<n;i++) 51 printf("%5d",*(p++)); 52 printf("\n"); 53 54 return 0; 55 }?
5.??輸入字符串 內(nèi)含數(shù)字和非數(shù)字字符,將數(shù)字提取出依次存放到數(shù)組中,輸出整數(shù)的個(gè)數(shù)和這些數(shù)
解題思路:把字符讀入字符數(shù)組中,然后循環(huán)遍歷字符數(shù)組中的字符判斷其是否是數(shù)字,若是就存入數(shù)組中,并把數(shù)字個(gè)數(shù)加一。
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() 5 { 6 int n, i, j=0; 7 int find_num=0; //數(shù)字的個(gè)數(shù) 8 int a[33], num=0; //存儲(chǔ)數(shù)字的數(shù)組和存儲(chǔ)數(shù)字的臨時(shí)變量 9 char s[33], c; //字符數(shù)組和臨時(shí)字符 10 11 //輸入字符串 12 printf("Enter a string: "); 13 gets(s); 14 //求出字符串的長(zhǎng)度 15 n = strlen(s); 16 17 //循環(huán)遍歷字符數(shù)組 18 for(i=0;i<=n;i++) 19 { 20 c = s[i]; 21 if(c>='0'&&c<='9') 22 { 23 num = c-'0'; //將字符(0到9)轉(zhuǎn)換成數(shù)字 24 a[j++] = num; 25 find_num++; 26 } 27 } 28 29 printf("The number of integers is %d\n",j); 30 for(i=0;i<j;i++) 31 printf("%d\t",*(a+i)); 32 33 return 0; 34 }?
轉(zhuǎn)載于:https://www.cnblogs.com/wyb666/p/8185845.html
總結(jié)
以上是生活随笔為你收集整理的C语言指针的一些题目的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: nginx的upstream问题记录
- 下一篇: at命令