1. 程式人生 > >C基礎的練習集及測試答案(3)

C基礎的練習集及測試答案(3)

strcat putchar 工作 scan tdi 簡單的 一行 編寫程序 不完全

31、讀懂以下程序,說明程序的功能
#include<stdio.h>
int main()
{
int m,n,r,m1,m2;
printf("請輸入2個正整數:");
scanf("%d%d",&m1,&m2);
m=m1;
n=m2;
do{
r=m%n;
m=n;
n=r;
}while(r!=0);
printf("%d\n",m);
return 0;
}
32、一個數如果恰好等於它的所有的因子之和,則這個數就稱為“完數”。例如6的因子有1、2、3,而1+2+3=6,因此6是一個完數。編程找出1000內所有的完數。
33、(課堂)思考這個宏定義錯在哪裏
#define S (r) PI*r*r//註意S與(r)之間有空格
34、我們在頭文件(.h文件)中,經常看到這樣的內容
#ifndef __H_INCLUDE__
#define __H_INCLUDE__
//頭文件的實際內容
#endif
思考頭文件的開頭和結尾需要這樣書寫的原因。
35、(課堂)運行以下程序
int main()
{
char a,b;
a = getchar();
b = getchar();
putchar(a);
putchar(b);
return 0;
}
運行程序,輸入x回車y回車,會發現輸出的並不是xy,而是
x

思考這是為什麽。
36、(課堂)使用數組存儲斐波那契數列前40項,並輸出
37、(課堂)從鍵盤輸入10個學生的成績,如果遇到大於100或者小於0的成績需要提示輸入錯誤重新輸入。之後計算10個學生的總成績和平均成績
38、(課堂)冒泡排序
從鍵盤輸入10個各不相同的整數,存儲在數組中,使用冒泡排序法將數組排序並輸出
冒泡排序:是一種簡單的排序算法
1)比較相鄰的元素和其身後的元素。如果第一個比第二個大,就交換他們兩個。
2)對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。一次循環過後,最後的元素應該會是最大的數。
3)針對所有的元素重復以上的步驟,除了最後一個。
4)持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
39、(課堂)自定義一個3*4的矩陣,輸出矩陣中值最大的元素,並輸入其數組下標
40、(課堂)打印楊輝三角型前10行
41、給定任一個各位數字不完全相同的4位正整數,如果我們先把4個數字按非遞增排序,再按非遞減排序,然後用第1個數字減第2個數字,將得到一個新的數字。一直重復這樣做,我們很快會停在有“數字黑洞”之稱的6174,這個神奇的數字也叫Kaprekar常數。
例如,我們從6767開始,將得到
7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174
7641 - 1467 = 6174
... ...
現給定任意4位正整數,請編寫程序演示到達黑洞的過程。
42、(課堂)自定義2個字符數組,不使用系統提供的strcat()函數,實現strcat()函數功能。
43、(課堂)自定義2個字符數組,不使用系統提供的strcpy()函數,實現strcpy()函數功能。
44、(課堂)自定義2個字符數組,不使用系統提供的strcmp()函數,實現strcmp()函數功能。
45、(課堂)自定義1個字符數組,不使用系統提供的strlen()函數,實現strlen()函數功能。
46、輸出以下圖案。要求每行的字符數與每次偏移幾個字符由用戶輸入。結束條件為最後一行開頭與第一行末尾對齊或在其之後
**********
**********
**********
**********
**********
**********
//結束條件:最後一行開頭與第一行末尾對齊或在其之後
47、按以下規律加密一段文字。
A->Z a->z
B->Y b->y
C->X c->x
……
Z->A z->a
其中不是字母的部分不加密。
48、規定一句話中以空格作為分詞符。輸入一句話,求一句話中最長單詞的長度。例如:
I love China!
則最長單詞是China!,最長單詞長度是6
49、讀以下程序,猜想程序的運行結果,然後上機驗證
#include<stdio.h>
int main()
{
int i;
int lh,rh,le,re,m;
char *lefthand[] = {"╮","o","<","~\\"};
char *righthand[]= {"╭","o",">","/~"};
char *lefteye[] = {"╯","^","-","=",">","@","⊙"};
char *righteye[]= {"╰","^","-","=","<","@","⊙"};
char *mouth[] = {"Д","▽","_","ε","^"};
printf("請選擇左手:\n");
for(i=0;i<=3;i++)
{
printf("%d.[%s] ",i+1,lefthand[i]);
}
printf("\n");
scanf("%d",&lh);
lh--;
printf("請選擇右手:\n");
printf("推薦:%d.[%s]\n其他:",lh+1,righthand[lh]);
for(i=0;i<=3;i++)
{
if(i==lh)
continue;
printf("%d.[%s] ",i+1,righthand[i]);
}
printf("\n");
scanf("%d",&rh);
rh--;
printf("請選擇左眼:\n");
for(i=0;i<=6;i++)
{
printf("%d.[%s] ",i+1,lefteye[i]);
}
printf("\n");
scanf("%d",&le);
le--;
printf("請選擇右眼:\n");
printf("推薦:%d.[%s]\n其他:",le+1,righteye[le]);
for(i=0;i<=6;i++)
{
if(i==le)
continue;
printf("%d.[%s] ",i+1,righteye[i]);
}
printf("\n");
scanf("%d",&re);
re--;
printf("請選擇嘴:\n");
for(i=0;i<=4;i++)
{
printf("%d.[%s] ",i+1,mouth[i]);
}
printf("\n");
scanf("%d",&m);
m--;
printf("%s(%s%s%s)%s\n",lefthand[lh],lefteye[le],mouth[m],righteye[re],righthand[rh]);
return 0;
}
50、圍繞著山頂有10個圓形排列的洞,狐貍要吃兔子,兔子說:“可以,但必須先找到我,我就藏身於這十個洞中的某個洞。你從1號洞找,下次隔1個洞(即3號洞)找,第三次隔2個洞(即6號洞)找,再隔3個…以後在這個圓圈中如此類推,次數不限。”但狐貍從早到晚進進出出了1000次,仍沒有找到兔子。
問:兔子可能藏身於哪(幾)個洞中?

C基礎的練習集及測試答案(3)