今天十月一日,上午看阅兵激情澎湃,但是下午还是要继续写C语言,前面的这块很简单

  1. int number[100];
  2. scanf("%d" , &number[i]);
  1. 变量名称[元素数量]
  2. 元素数量必须是整数
  1. 所有的元素具有相同的数据类型
  2. 一旦创建,就不能改变大小
  3. (数组中的元素在内存中是连续以此排序的)

写一个程序,输入数量不确定的[0,9]范围内的整数,统计每一种数字出现的次数,输入-1表示结束

通常用到数组都是下面的步骤:

  1. #include <stdio.h>
  2. int main(void)
  3. {
  4. // 数组的大小
  5. const int number = 10;
  6. int x;
  7. // 定义数组
  8. int count[number];
  9. int i;
  10. // 初始化数组
  11. for (i = 0; i < number; i++)
  12. {
  13. count[i] = 0;
  14. }
  15. scanf("%d" , &x);
  16. while( x != -1){
  17. if(x >= 0 && x <= 9){
  18. // 数组参与运算
  19. count[x] ++;
  20. }
  21. scanf("%d" , &x);
  22. }
  23. // 遍历数组输出
  24. for (i = 0; i < number; i++)
  25. {
  26. printf("%d:%d\n", i , count[i]);
  27. }
  28. return 0;
  29. }
  1. int a[] = {2,4,6,7,1,3,5,9,11,13,23,14,32};
  1. int a[10] = {[0] = 2 , [2] = 3,6};
  2. int i;
  3. for (i = 0; i < 10; ++i)
  4. {
  5. printf("%d\t", a[i]);
  6. }
  7. // 2 0 3 6 0 0 0 0 0 0
  1. 用[n]在初始化数据中给出定位
  2. 没有定位的数据接在前面的位置后面
  3. 其他位置的值补零
  4. 也可以不给出数组大小,让编译器算
  5. 特别适合初始数据稀疏的数组
  1. sizeof给出整个数组所占据的内容的大小,单位是字节
  1. sizeof(a)/sizeof(a[0]);
  1. sizeof(a[0])给出数组中单个元素的大小,于是相除就得到了数组的单元个数
  2. 这样的代码,一旦修改数组中的初始的数据,不需要修改遍历的代码
  1. 数组变量本身不能被赋值
  2. 要把一个数组的所有元素交给另一个数组,必须采用遍历

数组作为函数参数时,往往必须再用另一个参数来传入数组的大小

数组作为函数的参数时:

  1. 不能在[]中给出数组的大小
  2. 不能再利用sizeof来计算数组的元素个数
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4. int a[] = {2,4,6,7,1,3,5,9,11,13,23,14,32,};
  5. int x;
  6. int loc;
  7. printf("请输入一个数字:\n");
  8. scanf("%d" , &x);
  9. loc = search(x, a, sizeof(a)/sizeof(a[0]));
  10. if (loc != -1)
  11. {
  12. printf("%d在第%d个位置上\n", x , loc);
  13. }else{
  14. printf("%d不存在\n", x);
  15. }
  16. return 0;
  17. }
  18. int search(int key , int a[] , int length)
  19. {
  20. int ret = -1;
  21. int i;
  22. for (i = 0; i < length; i++)
  23. {
  24. if (a[i] == key)
  25. {
  26. ret = i;
  27. break;
  28. }
  29. }
  30. return ret;
  31. }

判断是否能被已知的且<x的素数整除

  1. #include <stdio.h>
  2. int main(void)
  3. {
  4. const int number = 10;
  5. int prime[10] = {2};
  6. int count = 1;
  7. int i = 3;
  8. while(count < number){
  9. if (isPrime(i,prime,count))
  10. {
  11. prime[count++] = i;
  12. }
  13. // 进行调试
  14. {
  15. printf("i=%d \tcnt=%d\t", i , count );
  16. int i;
  17. for (i = 0; i < number; i++)
  18. {
  19. printf("%d\t", prime[i]);
  20. }
  21. printf("\n");
  22. }
  23. i++;
  24. }
  25. for ( i = 0; i < number; i++)
  26. {
  27. printf("%d", prime[i]);
  28. if ( (i+1)%5)
  29. {
  30. printf("\t");
  31. }else{
  32. printf("\n");
  33. }
  34. }
  35. return 0;
  36. }
  37. int isPrime(int x, int knownPrimes[], int numberofKnowPrimes)
  38. {
  39. int ret = 1;
  40. int i;
  41. for (i = 0; i <numberofKnowPrimes ; i++)
  42. {
  43. if ( x % knownPrimes[i] == 0)
  44. {
  45. ret = 0;
  46. break;
  47. }
  48. }
  49. return ret;
  50. }
  1. int a[3][5]
  2. // 通常可以理解为a是一个3行5列的矩阵
  1. for(i = 0; i<3; i++){
  2. for(j = 0; j<5; j++){
  3. a[i][j] = i * j;
  4. }
  5. }
  6. // a[i][j]是一个int,表示第i行第j列上的单元
  1. int a[][5] = {
  2. {0,1,2,3,4,},
  3. {2,3,4,5,6,},
  4. };
  1. 列数是必须给出的,行数可以有编译器来定
  2. 每行一个{},逗号分隔
  3. 最后的逗号可以存在
  4. 如果省略,表示补零

版权声明:本文为mengd原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/mengd/p/11615667.html