計算機課程網站建設實訓報告總結南昌seo搜索排名
目錄
- 例題一
- 題目解析及答案
- 例題二
- 題目解析及答案
- 例題三
- 題目解析及答案
- 例題四
- 題目解析及答案
- 例題五
- 題目解析及答案
感謝各位大佬對我的支持,如果我的文章對你有用,歡迎點擊以下鏈接
🐒🐒🐒 個人主頁
🥸🥸🥸 C語言
🐿?🐿?🐿? C語言例題
🐣🐓🏀 python
例題一
寫一個函數(shù)打印arr數(shù)組的內容,不使用數(shù)組下標,使用指針。
arr是一個整形一維數(shù)組
題目解析及答案
這道題的核心就在于數(shù)組名是數(shù)組首元素地址,也就是*(arr+1)=arr[1]
詳細可以看C語言深入理解指針(非常詳細)(二)
方法一
int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9,10 };int* p = arr;int sz = sizeof(arr) / sizeof(int);for(int i=0;i<sz;i++){printf("%d ", *(p + i));}return 0;
}

方法二
int main()
{int arr[] = {1,2,3,4,5,6,7,8,9,10};int* p = arr; for(int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++){printf("%d ", *p); ++p; }return 0;
}
例題二
寫一個函數(shù),可以逆序一個字符串的內容
題目解析及答案
方法一
void Reverse(char* str)
{char* left = str;char* right = str + strlen(str)-1;while(left < right){char temp = *left;*left = *right;*right = temp;++left;--right;}
}
int main()
{char str[] = "hello jack";Reverse(str);return 0;
}
這個方法其實就是找到字符串中左右字符的地址,通過解引用實現(xiàn)交換
注意:如果是在線OJ時,必須要考慮循環(huán)輸入,因為每個算法可能有多組測試用例進行驗證,參考以下main函數(shù)寫法
方法二
int main()
{char str[101] = {0};while(gets(str)){Reverse(str);printf("%s\n", str);memset(str, 0, sizeof(str)/sizeof(str[0]));}return 0;
}
關于memset的實現(xiàn)在之前C語言內存函數(shù)有寫過
例題三
用C語言在屏幕上輸出以下圖案:
題目解析及答案
這是一個對稱圖形,其中有圖形由空格符號還有*號組成
號以奇數(shù)的規(guī)律變化,空格符號和號在同一排的總數(shù)加起來為13
通過圖形規(guī)律可以知道上半圖形中 *號可以以循環(huán)for(i=1;i<=13;i=i+2)來表示
對于空格符號,左半部分的規(guī)律是j<=(13-i)/2,j++,右半部分則是j>=(14-(13-i)/2)
方法一
int main()
{int i = 1, j = 1;for (i = 1; i <= 13; i = i + 2){while (j <= 13){if (j<=(13 - i) / 2 || j>=(14 - (13 - i) / 2)){printf(" ");j++;}else{printf("*");j++;}}printf("\n");j = 1;}for (i = 11; i >= 1; i = i - 2){while (j <= 13){if (j <= (13 - i) / 2 || j >= (14 - (13 - i) / 2)){printf(" ");j++;}else{printf("*");j++;}}printf("\n");j = 1;}return 0;}
方法二
int main()
{int line = 0;int i = 0;scanf("%d", &line);//輸入7for(i=0; i<line; i++){int j = 0;for(j=0; j<line-1-i; j++){printf(" ");}for(j=0; j<2*i+1; j++){printf("*");}printf("\n");}for(i=0; i<line-1; i++){int j = 0;for(j=0; j<=i; j++){printf(" ");}for(j=0; j<2*(line-1-i)-1; j++){printf("*");}printf("\n");}return 0;
}
例題四
求出0~100000之間的所有“水仙花數(shù)”并輸出。
“水仙花數(shù)”是指一個n位數(shù),其各位數(shù)字的n次方之和確好等于該數(shù)本身,如:153=1^3+5 ^3+3 ^3,則153是一個“水仙花數(shù)”。
題目解析及答案
我們用i來表示水仙花數(shù),通過for循環(huán)來表示0到100000的水仙花數(shù)
為了知道水仙花數(shù)有多少位,我們需要用到一個while循環(huán),循環(huán)判斷條件位水仙花數(shù)的余數(shù)不為0,因此我們使用一個變了j來保存水仙花數(shù)i,然后再進行判斷,既while(j%10)
而為了計算有多少位,我們需要對每次循環(huán)用count來記錄,然后每次循環(huán)讓水仙花數(shù)減少一位數(shù),也就是count++,j=j/10
之后我們再讓j重新等于i,來進行判斷是否是水仙花數(shù)
我們用一個變量sum來計算每位數(shù)的n次方總和,也就是sum=sum+pow(j%10,count)
最后就是判斷了
#include<math.h>
int main()
{int i = 0, j = 0, sum = 0,count=0;for (i = 0; i < 100000; i++){j = i;while (j % 10){count++;j = j / 10;}j = i;for (int k = count; k >= 0; k--){sum = sum + pow(j % 10, count);//pow數(shù)計算一個數(shù)的次方是多少j = j / 10;}if (i == sum)printf("%d ", i);sum = 0;count = 0;}return 0;
}
這道題for循環(huán)用的比較多,如果對for循環(huán)有疑惑的可以看我之前寫的一篇文章for和do-while循環(huán)以及break和continue語句
例題五
求Sn=a+aa+aaa+aaaa+aaaaa的前5項之和,其中a是一個數(shù)字,
例如:2+22+222+2222+22222
題目解析及答案
我們可以看到aa只是在a10的基礎上再加上a,也就是aa=a10+a,aaa=aa*10+a
int main()
{int n = 0,a=0,b=0,Sn=0;scanf("%d %d", &n,&a);b = a;for (int i = 0; i < n; i++){Sn = Sn + b;b = b * 10 + a;}printf("%d", Sn);return 0;
}