生活随笔
收集整理的這篇文章主要介紹了
Linux C 指针练习
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目一、
已知數組內容如下 s[] = {1,2,3,4,5,6,7,8,9},輸入一個常數 m(1<=m<=9),使得該數組內容順序后移n個位置。如n = 3時,數組后移3個位置后的內容為{7,8,9,1,2,3,4,5,6}
代碼如下:
[cpp]?view plaincopy
#include?<stdio.h>?? ?? int?main()?? {?? ????int?a[]?=?{1,2,3,4,5,6,7,8,9};?? ????int?b[9]?=?{0};?? ????int?*p?=?a;??? ????int?*q?=?b;?? ????int?i,m,n;?? ?? ????printf("請輸入要移動的位數:\n");?? ????scanf("%d",&m);?? ????n?=?m;?? ?????? ????for(i?=?0;?i?<?m;?i++)????? ????{?? ????????*q++?=?*(?p?+?9?-?n);?? ????????n--;?????? ????}?? ?????? ????for?(i?=?0;i?<?9?-?m;i++)?????????? ????????*q++??=?*p++;?? ?? ????printf("移動后數組為:\n");?? ????for(i?=?0;?i?<?9;i++)?? ????????printf("%d?",b[i]);??? ????????printf("\n");?? ?????? ????return?0;?? ?? }??
執行結果如下:
[cpp]?view plaincopy
fs@ubuntu:~/qiang/tmp$?./zhizhen2?? 請輸入要移動的位數:?? 3?? 移動后數組為:?? 7?8?9?1?2?3?4?5?6??? fs@ubuntu:~/qiang/tmp$?./zhizhen2?? 請輸入要移動的位數:?? 7?? 移動后數組為:?? 3?4?5?6?7?8?9?1?2??? fs@ubuntu:~/qiang/tmp$???
題目二、
輸入一個字符串,內有數字和非數字字符,如a123X456 ?17960? 302tab5876 將其中連續的數字作為一個整數,一次存放到整數型數組a中,例如123放到 a[0],456放到 a[1]中,統計有多少個整數,并輸出這些數;
分析:這是一道非常經典的指針編程題,網上有很多解法,有用malloc的,有用sscanf的,找到一個自己能理解的解法也是重要的,下面是博主自己寫的程序,希望對大家有所幫助,代碼如下:
[cpp]?view plaincopy
#include?<stdio.h>?? #include?<string.h>?? ?? int?main(int?argc,?const?char?*argv[])?? {?? ????char?b[100];?? ????int??a[100];?? ????memset(a,'\0',100);?? ????char?*p?=?b;?? ????int?i?=?0;?? ????int?j;?? ????int?sum?=?0;?? ????int?count?=?0;?? ????int?flag?=?1;?? ????printf("請輸入字符串:\n");?? ????gets(b);?? ?????? ????while(*p?)?? ????{?? ????????if(*p?<=?'9'?&&?*p?>=?'0')?? ????????{?? ????????????flag?=?0;?? ????????????sum?=?sum*10?+?*p++?-?'0';?? ????????}????? ????????else??? ????????{?? ????????????while(flag?==?0)?? ????????????{?? ????????????????a[i++]?=?sum?;?? ????????????????sum?=?0;?? ????????????????flag?=?1;?? ????????????}?? ????????????p++;?? ????????}?? ????}?? ?? ????if(flag?==?0)?? ????????a[i]?=?sum;?? ????else??? ????????i--;?? ?????? ????count?=?i?+?1;?? ????printf("共有%d個整數\n",count);?? ????printf("這些整數是:\na[]=");?? ????for(j?=?0;?j?<?i+1;?j++)?? ????????printf("%d?",a[j]);?? ????printf("\n");?? ?? ????return?0;?? }??
輸出結果為:
[cpp]?view plaincopy
fs@ubuntu:~/qiang/tmp$?./zhizhen1?? 請輸入字符串:?? 123xiao45???<er97?? 共有3個整數?? 這些整數是:?? a[]=123?45?97??? fs@ubuntu:~/qiang/tmp$?./zhizhen1?? 請輸入字符串:?? xiao12jian5w4gd67dd?? 共有4個整數?? 這些整數是:?? a[]=12?5?4?67??? fs@ubuntu:~/qiang/tmp$ ??
總結
以上是生活随笔為你收集整理的Linux C 指针练习的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。