第八章 数组习题

it2023-07-13  66

第八章 数组习题

8-1、统计次数

question:输入十个数

answer:

#include <stdio.h> int main() { const int number = 10; //数组大小 int x; int cnt[number];//计数器 -定义数组 int i; //初始化cnt[0]~cnt[9]计数器 -初始化数组 //方法一:int cnt[number] = {0}; for(i=0; i<number; i++){//方法二 cnt[i] = 0; } scanf("%d",&x); while(x != -1){ if(x>=0 && x<=9){ cnt[x]++;//数组参与运算 } scanf("%d",&x); } for(i=0; i<number; i++){ printf("%d:%d\n",i,cnt[i]); } return 0; }

8-2、查找数字

question:找出key在数组a中的位置

key要寻找的数字a要寻找的数组length数组a的长度如果找到,返回其在a中的位置;如果找不到则返回-1

answer:

#include <stdio.h> int search(int key, int a[], int length); int main(void) { int a[] = {2,4,6,7,1,3,5,9,11,13,23,14,32}; int x; int loc; printf("请输入一个数字:"); scanf("%d",&x); loc = search(x, a, sizeof(a)/sizeof(a[0])); if(loc != -1){ printf("%d在第%d个位置上\n", x, loc); } else{ printf("%d不存在!\n",x); } return 0; } int search(int key, int a[], int length)//遍历查找x { int ret = -1; int i; for(i=0; i<length; i++){ if(a[i] == key){ ret = i; break; } } return ret; }

8-3、构造素数表–调试

思路:

伪代码:

answer:

#include <stdio.h> int main() { const int maxnumber = 25; int isprime[maxnumber]; int i; int x; for(i=0; i<maxnumber; i++){ isprime[i] = 1;//将所有数标记为素数 } //调试 for test printf("\t") ; for(i=2; i<maxnumber; i++){ printf("%d\t",i); } printf("\n"); //调试 for test for(x=2; x<maxnumber; x++){ if(isprime[x]){ for(i=2; i*x<maxnumber; i++){//将第一个素数的倍数标记为非素数 isprime[i*x] = 0;//标记为非素数 } } //调试 for test printf("%d\t",x) ; for(i=2; i<maxnumber; i++){ printf("%d\t",isprime[i]); } printf("\n"); //调试 for test } for(i=2; i<maxnumber; i++){ if(isprime[i]){ printf("%d\t",i); } } printf("\n"); return 0; }

8-4、查询最大值、最小值(指针应用一)–返回值

#include <stdio.h> void minmax(int a[], int len, int *max, int *min); int main(void) { int a[] = {1,2,3,4,5,6,7,8,9,12,13,14,16,17,21,23,55,}; int max,min; minmax(a, sizeof(a)/sizeof(a[0]), &max, &min); printf("min=%d, max=%d\n",min ,max); return 0; } void minmax(int a[], int len, int *max,int *min) { int i; *min = *max = a[0]; for(i=0; i<len; i++){ if(a[i] < *min){ *min = a[i]; } if(a[i] > *max){ *max = a[i]; } } }

8-5、除法计算(指针应用二)–返回状态+值

#include <stdio.h> int divide(int a, int b, int *result); int main(void) { int a = 5; int b = 2; int c; if(divide(a,b,&c)){ printf("%d/%d=%d\n",a,b,c); } return 0; } int divide(int a, int b, int *result) { int ret = 1; if(b == 0){ ret = 0; }else{ *result = a/b; } return ret; }
最新回复(0)