50道经典编程题考试

更新时间:2023-09-24 17:28:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1. 写出32个关键字并简述其含义。

2. 分类写出你所知道的所有运算符以及举例说明。 3. 写出运算符优先级的口诀和结合性。

4. 输入2名学员的信息,包括姓名、年龄,输出到控制台。 5. 从键盘上输入矩形的长度和宽度,输出面积。 6. 打印1到100之间所有奇数的和。 7. 用一个for循环打印九九乘法表。

8. 写一个函数,打印任意两个整数之间的素数。 9. 写一个函数,求出任意一个整数的阶乘。 10. 写一个函数,交换两个整数的大小。 11. 编写一个函数将32位整型参数分解为一个4字节数组,要求高位在前,低位在后,比

如将0XOOFEOOAC分解为数组OXOO,OXFE,OXOO,OXAC(注释:OX不是值,表示16进制数) 12. 一群人围成一圈,123的报数,报3者出列,求最后一个人。 13. 针对test.h test.c 编写一个makefile文件,要求:尽可能简洁。 14. 设计一个shell程序,添加一个新组为class1,然后添加属于这个组的3个用户,

用户名的形式为stdxx,其中xx从01到03。 15. 用至少5种方法输出数组元素! 16. 判断一个字符串是否是回文串! 17. 实现一个函数,把一个字符串中的字符从小写转为大写。 18. 完成自己的strlen 函数 int mystrlen(char *p){ int n=0; while(*p!='\\0');{ p++; n++; } return n;

} 19. 完成自己的strcpy 函数 void mystrcpy(char* t,char* s){ while(*s)*t++=*s++; * t='\\0'; } 20. 完成自己的strcat 函数 void mystrcat(char* t,char* s){ while(*t)t++; while(*s)*t++=*s++; *t='\\0'; } 21. 完成自己的strcmp函数 int mystrcmp(char* s1,char* s2){ while(*s!='\\0'||*s2!='\\0'){ if(*s1-*s2>0)return 1;

else if(*s1-*s2<0)return -1; else{ s1++; s2++; } } return 0; }

while(*s1 && *s2 && *s1=*s2){ ++s1; ++s2; }

return *s1-*s2; } 22. 用递归方法设计函数返回数组中的最小元素。 23. 编一函数,从类型为Person结构的、具有n个人员记录的数组a中查找并打印出

年龄不小于整型变量x的所有记录,要求所有输出记录的同一数据项具有相同的显示宽度。 24. 求出若干命令行参数的平均值! 25. 不使用临时变量,将字符串逆序! 26. 从键盘输入一个字符串,统计每个字符出现的次数!

27. 从键盘输入两个xx年xx月xx日,比较它们相隔多少天! #include typedef struct{ int y; int m; int d; }Date;

int isLeap(int y){ return y@0==0||(y%4==0&&y0!=0); }

int daysOfMonth(int y,int m){ int days[12]={31,28,31,30,31,30,31,31,30,31,30,31}; if(2==m)return days[1]+isLeap(y); else return days[m-1]; }

int daysOfDate(Date* p){ int y,m,days=0; for (y = 1; y < p->y; ++y) { days+=365+isLeap(y);

} for (m = 1; m < p->m; ++m) { days+=daysOfMonth(p->y,m); } days+=p->d; return days; }

int main(){ Date d1,d2; printf(\ scanf(\ scanf(\ int days1 = daysOfDate(&d1); int days2 = daysOfDate(&d2); printf(\ return 0; } 28. 已知一个数组table,用一个宏定义,求出数组的元素个数!

29. 对整型数组进行冒泡排序。 #include

void swap(int* p1,int* p2){ int t = *p1; *p1 = *p2; *p2 = t; }

void bubble_sort(int* p,int n){ int i,j; for (i = 1; i < n; ++i) { for (j = 0; j < n-i; ++j) { if(p[j]>p[j+1]){ swap(p+j,p+j+1);//swap(&p[j],&p[j+1]); } } } }

void show(int* p,int n){ int i; for (i = 0; i < n; ++i) { printf(\ } }

int main(){ int arr[5] = {3,7,6,4,2}; bubble_sort(arr,5); show(arr,5); return 0; }

30. 对整型数组进行选择排序。 void select_sort(int* p,int n){ int i,j; for (i = 1; i < n; ++i) { int maxIndex = n-i; for (j = 0; j < n-i; ++j) { if(p[j]>p[maxIndex]) maxIndex = j; } swap(p+maxIndex,p+n-i); } }

31. 对整型数组进行直接插入排序。 void insert_sort(int* p,int n){ int i,j; for (i = 1; i < n; ++i) { int k = p[i]; for (j = i-1; j >=0&&p[j]>k; --j) p[j+1]=p[j]; p[j+1]=k; } }

32. 对整型数组进行快速排序。 #include #define N 10

void quick_sort(int *a, int left, int right) {

int piot, l, r, temp; l = left; r = right;

piot = a[(left + right) / 2]; while (l < r) {

while (a[l] < piot) ++l; while (a[r] > piot) --r;

if (l >= r) break; temp = a[l]; a[l] = a[r]; a[r] = temp; if (l != piot) --r; if (r != piot) ++l; }

if (l == r) l++;

if (r > left) quick_sort(a, left, l-1); if (l < right) quick_sort(a, r+1, right); }

int main(){ int i;

int a[N] = {4,2,7,5,9,10,1,3,6,8}; quick_sort(a, 0, N-1); for(i=0; i

33. 对整型数组的特定数据进行二分搜索。

34. 完成一个简单的链表,并测试通过。 #include #include typedef struct Node{ int data; struct Node* next; }Node;

Node* head;

void insert_back(int d){ Node *p = malloc(sizeof(Node)); p->data = d; p->next = NULL; if(head==NULL){ head = p; return; } Node* q = head; while(q->next!=NULL){ q = q->next; } q->next = p; }

本文来源:https://www.bwwdw.com/article/hhsd.html

Top