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; }question:找出key在数组a中的位置
key要寻找的数字a要寻找的数组length数组a的长度如果找到,返回其在a中的位置;如果找不到则返回-1answer:
#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; }思路:
伪代码:
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; }