<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      2022年-2024年春考技能測試網絡技術+軟件與應用技術真題

      2025年模擬題

      題型1:數組元素排序

      • 1.輸入5個隨機整數存入數組,將元素從小到大排序并輸出,每行輸出1個數字
      #include <stdio.h>
      
      int main(){
          int a[5] = {0};
          int i = 0, j = 0, temp = 0;
      
          printf("請輸入數組元素:\n");
          for(i = 0;i < 5;i++){
              scanf("%d", &a[i]);
          }
      
          for(i = 0; i < 4; i++){
              for(j = i + 1; j < 5; j++){
                  if(a[i] > a[j]){
                      temp = a[i];
                      a[i] = a[j];
                      a[j] = temp;
                  }
              }
          }
      
          for(i = 0;i < 5;i++){
              printf("%d\n", a[i]);
          }
      
          return 0;
      }
      
      
      #include <stdio.h>
      
      int main(){
          int a[5] = {0};
          int i = 0, j = 0, temp = 0;
      
          printf("請輸入數組元素:\n");
          for(i = 0; i < 5; i++){
              scanf("%d", &a[i]);
          }
      
          for(i = 0; i < 4; i++){
              for(j = 0; j < 5 - i - 1; j++){
                  if(a[j] > a[j+1]){
                      temp = a[j];
                      a[j] = a[j+1];
                      a[j+1] = temp;
                  }
              }
          }
      
          for(i = 0;i < 5;i++){
              printf("%d\n", a[i]);
          }
      
          return 0;
      }
      
      
      #include <stdio.h>
      
      int main(){
          int a[5] = {0};
          int i = 0, j = 0, temp = 0, flag = 0;
      
          printf("請輸入數組元素:\n");
          for(i = 0;i < 5;i++){
              scanf("%d", &a[i]);
          }
      
          for(i = 0;i < 4;i++){
              flag = 0;
              for(j = 0;j < 5 - i - 1; j++){
                  if(a[j] > a[j+1]){
                      temp = a[j];
                      a[j] = a[j+1];
                      a[j+1] = temp;
                      flag = 1;
                  }
              }
              if(!flag){
      	        break;
              }
          }
      
          for(i = 0;i < 5;i++){
              printf("%d\n", a[i]);
          }
      
          return 0;
      }
      

      題型2:進制轉換

      • 2.輸入一個合法的八進制正整數,轉為十進制并輸出
      #include <stdio.h>  // 方法1
      
      int main(){
          int num = 0, a = 0;
          int t = 1, sum = 0;
      
          printf("請輸入一個合法的八進制數:\n");
          scanf("%d", &num);
      
          while(num){
              a = num % 10;
              sum = sum + a * t;
              num /= 10;
              t *= 8;
          }
          printf("sum=%d\n", sum);
      
          return 0;
      }
      
      
      #include <stdio.h>  // 方法2
      #include <math.h>
      
      int main(){
          int num = 0, a = 0;
          int t = 0, sum = 0;
      
          printf("請輸入一個合法的八進制數:\n");
          scanf("%d", &num);
      
          while(num){
              a = num % 10;
              sum = sum + a * pow(8, t);
              num /= 10;
              t++;
          }
          printf("sum=%d", sum);
      
          return 0;
      }
      
      

      題型3:處理字符串

      • 3.輸入一個字符串,長度不超過100個字符,再輸入一個整數n,從字符串右邊截取n個字符組成新的字符串并輸出。例如輸入 ABCDEF 3,則輸出DEF
      #include <stdio.h>
      #define MAX 100
      
      int main(){
          char s[MAX] = {0}, t[MAX] = {0};
          int num = 0, length = 0, i = 0, j = 0;
      
          printf("請輸入一個字符串:");
          gets(s);
          printf("請輸入一個整數:");
          scanf("%d", &num);
      
          while(s[i] != '\0'){
              i++;
          }
          length = i;
          i = length - num;
          while(s[i] != '\0'){
              t[j] = s[i];
              i++;
              j++;
          }
          t[j] = '\0';
          puts(t);
      
          return 0;
      }
      

      2024年考題回憶版

      題型1:簡單的多位數拆分 題源:課本例2-20

      • 1.輸入一個三位數的整數,輸出百位數、十位數和個位數
      #include <stdio.h>
      
      int main(){
          int num = 0;
          int hundred = 0, ten = 0, unit = 0;
          scanf("%d", &num);
          	
          hundred = num / 100;  // 求百位數
          ten = num / 10 % 10;  // 求十位數
          unit = num % 10;  // 求個位數
          	
          printf("%d %d %d", hundred, ten, unit);
          	
          return 0;
      }  
      
      • 2.輸入一個整數,求出個位數和十位數,并輸出十位和個位的乘積
      #include <stdio.h>
      
      int main(){
          int num = 0;
          int ten = 0, unit = 0, multi = 0;
          scanf("%d", &num);
          	
          ten = num / 10 % 10;
          unit = num % 10;
          multi = ten * unit;
          printf("%d %d %d", ten, unit, multi);
      	
          return 0;
      }
      

      題型2:多位數拆分+循環 題源:課本例2-18 例4-3

      • 1.輸出100以內能被4整除且個位數是8的整數
      #include <stdio.h>
      
      int main(){
          int num = 0, unit = 0;
      	
          for(num = 8; num <= 100; num++){
              unit = num % 10;
              if (num % 4 == 0 && unit == 8){
                  printf("%d ",num);
              }
          } 
          return 0;
      }
      
      • 2.打印由0-9組成且每一位都不重復的三位數的個數
      #include <stdio.h>
      
      int main(){
          int num = 0;
          int unit = 0, ten = 0, hundred = 0;
          int count = 0;
      	
          for(num = 100; num <= 999; num++){
              unit = num % 10;
              ten = num / 10 % 10;
              hundred = num / 100;
      		
              if(unit != ten && unit != hundred && ten != hundred){
                  printf("%d ", num);
                  count ++;
              }
          }
          printf("\ncount = %d\n", count);
          return 0;
      } 
      
      
      #include <stdio.h>
      
      int main(){
          int i = 0, j = 0, k = 0;
          int count = 0;
      
          for(i = 1; i <= 9; i++){
              for(j = 0; j <= 9; j++){
                  for(k = 0; k <= 9; k++){
                      if(i != j && i != k && j != k){
                          printf("%d ", i * 100 + j * 10 + k);
                          count++;
                      }
                  }
              }
          }
          printf("\ncount = %d\n", count);
          return 0;
      } 
      
      • 3.輸出10-50中個位和十位的乘積大于個位和十位之和的數
      #include <stdio.h>
      
      int main(){
          int num = 0, unit = 0, ten = 0;
      	
          for(num = 10; num <= 50; num++){
              unit = num % 10;
              ten = num / 10 % 10;
              if(unit * ten > unit + ten){
                  printf("%d ", num);
              }
          }
      	
          return 0;
      }
      
      • 4.打印輸出10-1000中各位數之和等于10的整數,如19、190
      #include <stdio.h>
      
      int main(){
          int num = 0, b = 0;
          int t = 0, sum = 0;
          	
          for(num = 10; num <= 1000; num++){
              t = num;
              sum = 0;
          		
              while(t){
                  b = t % 10;
                  sum = sum + b;
                  t = t / 10;
              }
              if(10 == sum){
                  printf("%d ", num);
              }
          }
          	
          return 0;
      }  
      
      • 5.打印輸出100-999中各位數之和等于10的整數的個數
      #include <stdio.h>
      
      int main() {
          int num = 0, count = 0;;
          int unit = 0, ten = 0, hundred = 0;
          	
          for(num = 100; num <= 999; num++){
              unit = num % 10;
              ten = num / 10 % 10;
              hundred = num / 100;
              if(unit + ten + hundred == 10){
                  count++;
              }
          }
          printf("各位數之和等于10的有%d個", count);
          	
          return 0;
      }
      
      • 6.輸出100-999中百位數為7的數
      #include <stdio.h>
      
      int main(){
          int num = 0, hundred = 0;
          	
          for(num = 100; num <= 999; num++){
              hundred = num / 100;
          		
              if(7 == hundred){
                  printf("%d ", num);
              }
          }
          	
          return 0;
      } 
      
      • 7.打印1-100中能被3和7同時整除的數,并計算個數
      #include <stdio.h>
      
      int main(){
          int i = 0, count = 0;
          	
          for(i = 1; i <= 100; i++) {
              //if(i%3 == 0&&i%7 == 0) {
              //	printf("%-4d", i);
              //	count++;
              //}
              if(i % 21 == 0) {
                  printf("%-4d", i);
                  count++;
              }
          }
          printf("共%d個", count);
      		
          return 0;
      }
      

      題型3:給定數值進行組合+循環

      • 1.一個由x、y、z三個數字組成的數xyz和zyx相加得1555,求x、y、z
      // 在滿足條件的數中,x和z全不為0,因此x和y從1開始循環即可
      #include <stdio.h>
      
      int main(){
          int x = 0, y = 0, z = 0;
          int i = 0, j = 0;
      
          for(x = 1; x <= 9; x++){
              for(y = 0; y <= 9; y++){
                  for(z = 1;z <= 9; z++){
                      i = x * 100 + y * 10 + z;
                      j = z * 100 + y * 10 + x;
                      if(i + j == 1555){
                          printf("%d %d %d\n", x, y, z);
                      }
                  }
              }
          }
      
          return 0;
      }
      
      • 2.打印10-99之間個位和十位相加不小于13的數
      #include <stdio.h>
      
      int main(){
          int i = 0, unit = 0, ten = 0;
      
          for(i = 10; i <= 99; i++) {
              unit = i % 10;
              ten = i / 10;
              // ten = i / 10 % 10;
              if(unit + ten >= 13) {
                  printf("%-4d", i);
              }
          }	
      
          return 0;
      }
      
      • 3.打印1-99之間是3的倍數且是奇數的元素
      // 方法1:遍歷1-99之間的所有數
      #include <stdio.h>
      
      int main(){
          int i = 0;
      
          for(i = 1; i <= 99; i++) {
              if(i % 3 == 0 && i % 2 == 1) {
                  printf("%-4d", i);
              }
          }	
          return 0;
      }
      
      // 方法2:遍歷1-99之間的所有奇數
      #include <stdio.h>
      
      int main(){
          int i = 0;
      
          for(i = 1; i <= 99; i+=2) {
              if(i % 3 == 0) {
                  printf("%-4d", i);
              }
          }	
      
          return 0;
      }
      

      題型4:數組+奇偶數/最值

      • 1.輸入兩行單詞,輸出下標為奇數的部分字符
      #include <stdio.h> 
      #define MAX 1000
      
      void print_odd(char s[]){
          int i = 0;
      
          while(s[i] != '\0'){
              if(i % 2){
                  putchar(s[i]);
              }
              i++;
          }
      }
      
      int main(){
          char s1[MAX] = {0}, s2[MAX] = {0};
          printf("請輸入s1和s2的值:");
          gets(s1);
          gets(s2);
      
          print_odd(s1);
          print_odd(s2);
      
          return 0;
      }
      
      • 2.給定一個數組s存儲字符串,從中獲取ASCII碼為奇數的字符并輸出
      #include <stdio.h>
      #define MAX 1000
      
      int main(){
          char s[MAX] = {0};
          int i = 0;
          printf("請輸入字符串的值:");
          gets(s);
      
          while(s[i] != '\0'){
              if(s[i] % 2){
                  putchar(s[i]);
              }
              i++;
          }
      
          return 0;
      } 
      
      • 3.將整數數組a[10]中的偶數放在數組b中
      #include <stdio.h>
      #define LEN 10
      
      int main(){
          int i = 0, j = 0, index = 0;
          int a[LEN] = {12, 63, 51, 7, 24, 10, 78, 67, 51, 90}, b[LEN] = {0};
          for(i = 0; i < LEN; i++){
              if(a[i] %2 == 0){
                  b[j] = a[i];
                  j++;
              }
          }
      
          printf("數組b中的值為: ");
          for(index = 0; index < j; index++){
              printf("%d ", b[index]);
          }
      
          return 0;
      } 
      
      • 4.現有一3行4列的二維數組,將數組的最大值和最小值交換位置后輸出新的數組
      #include <stdio.h>
      #define ROW 3
      #define COL 4
      
      int main(int argc, const char * argv[]) {
          // insert code here...
          int a[ROW][COL] = {{4, 6, 12, 7}, {1, 5, 3, 9}, {11, 8, 0, -2}};
          int max = 0, min = 0, i = 0, j = 0;
          int max_i = 0, max_j = 0, min_i = 0, min_j = 0, temp = 0;
      
          max = min = a[0][0];
          for (i = 0; i < ROW; i++) {
              for (j = 0; j < COL; j++) {
                  if (a[i][j] > max) {
                      max = a[i][j];
                      max_i = i;
                      max_j = j;
                  }
                  if (a[i][j] < min){
                      min = a[i][j];
                      min_i = i;
                      min_j = j;
                  }
              }
          }
      
          printf("原數組最大值為%d (%d, %d), 最小值為%d (%d, %d)\n", max, max_i, max_j, min, min_i, min_j);
      
          temp = a[max_i][max_j];
          a[max_i][max_j] = a[min_i][min_j];
          a[min_i][min_j] = temp;
      
          printf("交換后新數組的值為:\n");
          for (i = 0; i < ROW; i++) {
              for (j = 0; j < COL; j++) {
                  printf("%4d", a[i][j]);
              }
              printf("\n");
          }
      
          return 0;
      }
      

      • 5.現有一4行5列的二維數組,請將每一列上的最大數和最小數互換,然后輸出新數組
      #include <stdio.h>
      #define ROW 4
      #define COL 5
      
      void print_arr(int s[][5], int m) {
          int i = 0, j = 0;
          for (i = 0; i < m; i++) {
              for (j = 0; j < COL; j++) {
                  printf("%4d", s[i][j]);
              }
              printf("\n");
          }
      }
      
      int main(int argc, const char * argv[]) {
          // insert code here...
          int a[ROW][COL] = {{4, 7, 2, 10, 11}, {6, 3, 25, 12, 8}, {3, 5, 9, 15, 0}, {14, 13, 17, 1, 27}};
          int i = 0, j = 0, max = 0, min = 0;
          int max_i = 0, max_j = 0, min_i = 0, min_j = 0, temp = 0;
      
          printf("交換之前的數組為:\n");
          print_arr(a, ROW);
      
          for (j = 0; j < COL; j++) {
              max = min = a[0][j];
              max_i = min_i = 0;
              max_j = min_j = j;
              for (i = 1; i < ROW; i++) {
                  if (a[i][j] > max) {
                      max = a[i][j];
                      max_i = i;
                      max_j = j;
                  }
                  if (a[i][j] < min) {
                      min = a[i][j];
                      min_i = i;
                      min_j = j;
                  }
              }
              temp = a[max_i][max_j];
              a[max_i][max_j] = a[min_i][min_j];
              a[min_i][min_j] = temp;
          }
      
          printf("\n交換之后的數組為:\n");
          print_arr(a, ROW);
      
          return 0;
      }
      

      • 6.已知數組a[10]中各元素的值,計算其中正數的平均值
      #include <stdio.h>
      
      int main(){
          int a[10] = {-6, 33, 5, 21, 43, -39, -1, 0, 21, -7};
          int i = 0, count = 0;
          float avg = 0;
      
          for(i = 0; i < 10; i++) {
              if(a[i] > 0) {
                  avg += a[i];
                  count++;
              }
          }
          avg /= count;
      
          printf("數組中正數的平均值為:%.4f\n", avg);
      
          return 0;
      }
      
      

      題型5:簡單的數學運算+循環

      • 1.輸入整數n,打印輸出1-n的階乘
      #include <stdio.h>
      #include <math.h>
      long func(int);
      
      int main(){
          long ret = 0;
          int i = 0, n = 0;
          printf("請輸入整數n的值:");
          scanf("%d", &n);
      
          for(i = 1; i <= n; i++){
              ret = func(i);
              printf("%d的階乘值為: %ld\n", i, ret); // long類型數據輸入和輸出都使用%ld格式符
          }
      
          return 0; 
      }
      
      long func(int m){
          long result = 1;
          int i = 0;
      
          for(i = 1; i <= m; i++){
              result *= i;
          }
      
          return result;
      }
      
      • 2.輸入1-9其中的某個整數n,計算n + nn + nnn + nnnn。如果輸入的n不在1-9之間(含1-9),就提示"輸入的數據范圍不合法,請重新輸入!",直到輸入滿足的n,計算出結果后退出程序。
      #include <stdio.h>
      int main(){
          int num = 0, t = 0;
          int sum = 0, i = 0;
          printf("請輸入num的值(1-9):\n");
          scanf("%d", &num);
      
          while(1){
              if(num < 1 || num > 9){
                  printf("輸入的數據范圍不合法,請重新輸入!\n");
                  scanf("%d", &num);
                  continue;
              }
      
              t = num;
              for(i = 1; i <= 4; i++){
                  sum = sum + t;
                  t = t * 10 + num;
              }
              printf("sum=%d", sum);
              break;
          } 
      
          return 0;
      }
      
      • 3.小明參加了賣書活動,每本書18元,第一天賣3本,以后每一天賣書的數量都是前一天的2倍,哪一天賣書的收入會超過1000元
      #include <stdio.h>
      
      int main(){
          int day=1, num=3;
          int price=18, money;
          money = price*num;
      
          while(money <= 1000){
              num *= 2;// 6 12
              money = price * num;//108 216
              day++;//2 3
          }
          printf("day=%d", day);
      
          return 0;
      }
      
      • 4.輸入整數n,計算12 + 22 + 32 + ... + n2的結果
      #include <stdio.h>
      
      int main(){
          int i, n, sum = 0.0;
          printf("請輸入n的值:\n");
          scanf("%d", &n);
      
          for(i=1;i<=n;i++){
              sum = sum + i * i;
          }
          printf("sum=%d", sum);
      
          return 0;
      }
      
      • 5.用戶一直輸入一個整數,計算它們的和,直到輸入的數不大于0就結束
      #include <stdio.h>
      
      int main(){
          int num = 0, sum=0;
          printf("請輸入一個整數:");
          scanf("%d", &num);
      
          while(num > 0){
              sum += num;
              printf("請繼續輸入一個整數, 直到不大于0停止:");
              scanf("%d", &num);
          } 
          printf("sum=%d\n", sum);
      
          return 0;
      }
      
      • 6.小明的身高為1.5米,一張紙的厚度為1毫米,請問這張紙對折多少次后的厚度會超過小明的高度?
      #include <stdio.h>
      
      int main(int argc, const char * argv[]) {
          // insert code here...
          int h1 = 1500, h2 = 1, count = 0;
          while (h2 <= h1) {
              h2 *= 2;  // 2 4
              count++;  // 1 2
          }
          printf("總共折了%d次\n", count);
      
          return 0;
      }
      

      題型6:簡單的數學運算+循環+數組

      • 1.有一個3行4列的整型數組,輸出其中的最大值
      #include <stdio.h>
      #define ROWS 3
      #define COLS 4
      
      int main(){
          int a[ROWS][COLS] = {0};
          int i = 0, j = 0, max = 0;
      
          for(i = 0; i < ROWS; i++){
              for(j = 0; j < COLS; j++){
                  scanf("%d", &a[i][j]);
              }
          }
      
          max = a[0][0];
          for(i = 0; i < ROWS; i++){
              for(j = 0; j < COLS; j++){
                  if(a[i][j] > max){
                      max = a[i][j];
                  }
              }
          }
          printf("max=%d\n", max);
      
          return 0;
      }
      
      • 2.輸入十個數,計算平均數,結果保留4位小數
      #include <stdio.h>
      
      int main(){
          float a[10] = {0}, sum = 0, avg = 0;
          int i = 0;
      
          for(i = 0; i < 10; i++){
              // scanf("%f", a+i);
              scanf("%f", &a[i]);
              sum += a[i];
          }
          avg = sum/10;
          printf("avg=%.4f\n", avg);
      
          return 0;
      }
      
      • 3.現有三行四列的二維數組,找到最小的數并輸出行列號
      #include <stdio.h>
      #define ROWS 3
      #define COLS 4
      
      int main(){
          int a[ROWS][COLS] = {0}, i = 0, j = 0;
          int min = 0, row = 0, col = 0;
      
          for(i = 0; i < ROWS; i++){
              for(j = 0; j < COLS; j++){
                  scanf("%d", &a[i][j]);
              }
          }
      
          min = a[0][0];
          for(i = 0; i < ROWS; i++){
              for(j = 0; j  < COLS; j++){
                  if(a[i][j] < min){
                      min = a[i][j];
                      row = i;
                      col = j;
                  }
              }
          }
          printf("min=%d,row=%d,col=%d\n", min, row, col);
      
          return 0;
      }
      
      • 4.輸入三行四列二維數組的值,將每行的平均值放在一個一維數組中并輸出
      #include <stdio.h>
      int main(){
          int a[3][4] = {0}, i = 0, j = 0;
          float avg[3] = {0};
      
          for(i = 0; i < 3; i++){
              for(j = 0; j < 4; j++){
                  scanf("%d", &a[i][j]);
                  avg[i] += a[i][j];
              }
              avg[i] /= 4;
              printf("第%d行的平均值為%f", i+1, avg[i]);
          } 
      
          return 0;
      }
      
      • 5.現有5名員工,每名員工的信息包含員工號、時薪和工作時間計算每位員工的總工資并輸出
      #include <stdio.h>
      int main(){
          int employee[5][3] = {{101, 80, 8}, {102, 60, 12}, {103, 62, 10}, {104, 45, 16}, {105, 120, 8}};
          int i = 0, salary = 0;
      
          for(i = 0; i < 5; i++){
              salary = employee[i][1] * employee[i][2];
              printf("工號為%d的員工總工資為%d\n", employee[i][0], salary);
          }
      
          return 0;
      }
      

      題型7:選擇語句的簡單應用

      • 1.輸入兩個整數,從小到大輸出
      #include <stdio.h>
      
      int main(){
          int a = 0, b = 0, temp = 0;
          scanf("%d %d", &a, &b);
      
          if(a > b){
              temp = a;
              a = b;
              b = temp;
          }
          printf("%d %d\n", a, b); 
      
          return 0;
      }
      
      • 2.輸入三條邊,判斷能否構成三角形。如果是三角形,判斷能否構成直角三角形
      #include <stdio.h>
      
      int main(){
          int a = 0, b = 0, c = 0;
          printf("請輸入三條邊的值:\n");
          scanf("%d %d %d", &a, &b, &c);
      
          if(a + b > c && a + c > b && b + c > a){
              printf("能構成三角形\n");
              if(a * a + b * b == c * c || b * b + c * c == a * a || a * a + c * c == b * b){
                  printf("是直角三角形\n");
              } 
          }
          else{
              printf("不是三角形\n");
          }
      
          return 0;
      }
      
      • 3.輸入三個整數,輸出三個數之間的最大值
      #include <stdio.h>
      
      int main(){
          int a = 0, b = 0, c = 0, temp = 0;
          scanf("%d %d %d", &a, &b, &c);
      
          if(a < b){
              temp = a;
              a = b;
              b = temp;
          }
          if(a < c){
              temp = a;
              a = c;
              c = temp;
          }
          printf("最大的數是%d\n", a);
      
          return 0;
      }
      
      
      #include <stdio.h>
      
      int main(){
          int a = 0, b = 0, c = 0, max = 0;
          scanf("%d %d %d", &a, &b, &c);
      
          max = (max = a < b? b : a) < c? c : max;
          printf("最大的數是%d\n", max);
      
          return 0;
      }
      

      題型8:選擇結構應用題

      • 1.小明參與圖書促銷活動,每本書價格40元。周一到周五打七折,周六打八折,周日打九折。輸入當周第幾天和圖書數,輸出價格
      #include <stdio.h>
      int main(){
          int price = 40, day = 0, num = 0;
          float money = 0;
          scanf("%d %d", &day, &num);
      
          switch(day){
              case 1:
              case 2:
              case 3:
              case 4:
              case 5:
                  money = price * 0.7 * num;
                  break;
              case 6:
                  money = price * 0.8 * num;
                  break;
              case 7:
                  money = price * 0.9 * num;
                  break;
          }
          printf("money=%f\n", money);
      
          return 0;
      }
      
      • 2.輸入1打印開,輸入2打印關,輸入其他數字打印默認
      #include <stdio.h>
      
      int main(){
          char sw = getchar();
          switch(sw){
              case '1':
                  printf("開");
                  break;
              case '2':
                  printf("關");
                  break;
              default:
                  printf("默認");
                  break;
          }
      
          return 0;
      }
      
      • 3.輸入近視度數,判斷是不是近視。度數低于100是不近視,不低于100但低于300就是輕度近視,度數不低于300但低于500就是中度近視,度數高于500就是高度近視
      #include <stdio.h>
      
      int main(){
          int num = 0;
          printf("請輸入近視度數:\n");
          scanf("%d", &num);
      
          if(num < 100){
              printf("不近視\n");
          } 
          else if(num < 300){
              printf("輕度近視\n");
          }
          else if(num < 500){
              printf("中度近視\n");
          }
          else{
              printf("重度近視\n");
          }
          return 0;
      } 
      
      • 4.輸入時間等于9是打開窗簾,等于8是關閉窗簾,其他輸出報錯
      #include <stdio.h>
      
      int main(){
          int time = 0;
          scanf("%d", &time);
      
          switch(time){
              case 9:
                  printf("打開窗簾");
                  break;
              case 8:
                  printf("關閉窗簾");
                  break;
              default:
                  printf("報錯");
                  break;
          }
      
          return 0;
      }
      

      題型9:二維數組應用題+循環

      • 1.有三家商店,以及每個商店四個月的銷量,計算出月銷量的平均值,并確定哪一家商店是銷冠
      #include <stdio.h>
      
      int main(){
          float a[3][4] = {0};
          int i = 0, j = 0, max = 0;
          float sum_store[3] = {0}, avg_month[4] = {0}, max_store = 0;
      
          for(i = 0; i < 3; i++){
              for(j = 0; j < 4; j++){
                  scanf("%f", &a[i][j]);
              }
          }
      
          for(i = 0; i < 4; i++){
              for(j = 0; j < 3; j++){
                  avg_month[i] += a[j][i];
              }
              avg_month[i] /= 3;
              printf("%d月的平均銷量為%f\n", i + 1, avg_month[i]);
          }
      
          max_store = sum_store[0];
          for(i = 0; i < 3; i++){
              for(j = 0; j < 4; j++){
                  sum_store[i] += a[i][j];
              }
              if(sum_store[i] > max_store){
                  max_store = sum_store[i];
                  max = i;
              }
          }
          printf("銷量冠軍是%d號公司,銷售額為%f\n", max + 1, max_store);
      
          return 0;
      }
      
      • 2.定義二維數組,其中包含三名同學五門課的成績,輸出每門課的最大成績
      #include <stdio.h>
      
      int main(){
          float a[3][5] = {0}, max = 0;
          int i = 0, j = 0;
      
          for(i = 0; i < 3; i++){
              for(j = 0; j < 5; j++){
                  scanf("%f", &a[i][j]);
              }
          } 
      
          for(i = 0; i < 5; i++){
              max = a[0][i];
              for(j = 1; j < 3; j++){
                  if(a[j][i] > max){
                      max = a[j][i];
                  }
              }
              printf("第%d門課的最大成績為%f\n", i + 1, max);
          } 
              
          return 0;
      }
      
      • 3.現有三個運動員,每位運動員都有五個項目成績,求每個項目的最高成績
      #include <stdio.h>
      
      int main(){
          float score[3][5] = {0}, max = 0;
          int i = 0, j = 0;
      
          for(i = 0; i < 3; i++){
              for(j = 0; j < 5; j++){
                  scanf("%f", &score[i][j]);
              }
          } 
      
          for(i = 0; i < 5; i++){
              max = score[0][i];
              for(j = 1; j < 3; j++){
                  if(score[j][i] > max){
                      max = score[j][i];
                  }
              }
              printf("第%d門課的最大成績為%f\n", i + 1, max);
          }     
      
          return 0;
      }
      
      • 4.現有三條街,每條街上都有五個路燈,用0表示關燈,1表示開燈。實現輸入字符c查看路燈狀態,輸入字符d將路燈狀態置反,輸入字符q退出程序
      #include <stdio.h>
      
      void process_arr(int s[][5], int m, char ch){
          int i = 0, j = 0;
          for(i = 0; i < m; i++){
              for(j = 0; j < 5; j++){
                  if(ch == 'c'){
                      printf("%d ", s[i][j]);
                  }
                  else if(ch == 'd'){
                      if(s[i][j] == 0){
                          s[i][j] = 1;
                      }
                      else{
                          s[i][j] = 0;
                      }
                  }
              }
              printf("\n");
          }
      }
      int main(){
          int a[3][5] = {{0, 0, 1, 0, 0}, {0, 1, 1, 0, 0}, {1, 0, 0, 1, 1}}, i, j;
          char ch = 0;
          printf("請輸入字符(c:查看狀態 d:狀態置反 q:退出程序):");
          scanf("%c", &ch);
      
          switch(ch){
              case 'c':
                  printf("正在查看路燈狀態...\n");
                  process_arr(a, 3, ch);
                  break;
              case 'd':
                  printf("正在置反路燈狀態...\n");
                  process_arr(a, 3, ch);
                  printf("置反后的路燈狀態為:\n");
                  process_arr(a, 3, 'c');
                  break;
              case 'q':
                  printf("正在退出程序...已退出...\n");
                  break;
              default:
                  printf("輸入的字符錯誤!\n");	
                  break;
          }	
          return 0;
      }
      
      • 5.在二維數組中輸入兩個人的身份證號,打印出生年月,并比較兩人年齡的大小
      #include <stdio.h>
      #include <string.h>
      
      int main(int argc, const char * argv[]) {
          // insert code here...
          char id[2][19] = {0}, birth[2][9] = {0};
          int i = 0, j = 0, k = 0;
          printf("請輸入2人的身份證號信息:\n");
          gets(id[0]);
          gets(id[1]);
      
          for (i = 0; i < 2; i++) {
              k = 0;
              for (j = 6; j < 14; j++) {
                  birth[i][k] = id[i][j];
                  k++;
              }
              // birth[i][k] = '\0';
          }
          puts(birth[0]);
          puts(birth[1]);
      
          if (strcmp(birth[0], birth[1]) < 0) {
              printf("第1個人的年齡更大\n");
          }
          else if (strcmp(birth[0], birth[1]) > 0) {
              printf("第2個人的年齡更大\n");
          }
          else {
              printf("兩人的年齡一樣大\n");
          }
          return 0;
      }
      

      題型10:字符數組中字符的前后移動+循環

      • 1.現有9個已經按照升序排完的字母放在一維數組中,添加一個字母到數組中并依然有序,輸出新數組
      #include <stdio.h>
      #include <string.h>
      #define MAX 11
      
      int main(){
          char s[MAX] = {'a', 'c', 'f', 'g', 'k', 'p', 'q', 'r', 'x'}, c = 0;
          int i = 0, length = strlen(s);
          i = length - 1;
      
          printf("請輸入一個新的字符:\n");
          c = getchar();
      
          while(i >= 0 && s[i] > c){
              s[i+1] = s[i];
              i--;
          }
          s[i+1] = c;
          length ++;
          puts(s);
      
          return 0;
      }
      
      • 2.輸入一串含*的字符串,將最后一個*后方的所有字符往前移動一個字符單位
      #include <stdio.h>
      #include <string.h>
      #define MAX 100
      
      int main(){
          char s[MAX] = {0}, i = 0;
          printf("請輸入一串帶*的字符串:\n");
          gets(s);
          int length = strlen(s);
      
          if(s[length-1] == '*'){
              printf("無需移動");
              return 0;
          }
      
          i = length - 1;
          while(i >= 0 && s[i] != '*'){
              i--;
          }
          while(i <= length - 1){
              s[i] = s[i+1];
              i++;
          }
          puts(s);
      
          return 0;
      }
      
      • 3.輸入字符串,將其中的大寫字母統一后移4位
      #include <stdio.h>
      #include <string.h>
      #define MAX 100
      
      int main(){
          char s[MAX] = {0}, i = 0;
          printf("輸入一個字符串:\n");
          gets(s);
          int length = strlen(s);
          i = length - 1;
          s[length] = ' '; 
      
          while(i >= 0){
              if(s[i] >= 'A'&& s[i] <= 'Z'){
                  s[i + 4] = s[i];
                  s[i] = ' ';
              }
              i--;
          }
      
          s[length + 4] = '\0';
          //puts(s);
          for(i = 0; i < length + 4; i++){
              printf("%c", s[i]);
          }
      
          return 0;
      }
      
      • 4.在數組中輸入5個互不相同的正整數,找出其中的最大值刪除后并輸出新數組的值
      #include <stdio.h>
      #define LEN 5
      
      int main(){
          int a[5] = {0}, i = 0;
          int max = 0, index = 0;
      
          printf("輸入數組的值:\n");
          for(i = 0; i < 5; i++){
              scanf("%d", &a[i]);
          }
      
          max = a[0];
          index = 0;
          for(i = 1; i < 5; i++){
              if(a[i] > max){
                  max = a[i];
                  index = i;
              }
          }
      
          while(index <= LEN - 2){
              a[index] = a[index + 1];
              index++;
          }
      
          for(i = 0; i < length - 1; i++){
              printf("%d ", a[i]);
          }
      	
          return 0;
      }
      

      題型11:字符串特征判斷+循環

      • 1.輸入一串字符,長度不超過20,判斷是否是回文數組
      #include <stdio.h>
      #include <string.h>
      #define MAX 21
      
      int main(){
          char s[MAX] = {0}, i = 0, j = 0;
          printf("請輸入不超過20的字符串:\n");
          gets(s);
      
          j = strlen(s) - 1;
          while(i < j){ // while(i <= j)
              if(s[i] != s[j]){
                  printf("不是回文數組!\n");
                  return -1;
              }
              i++;
              j--;
          }
          printf("是回文數組!");
      
          return 0;
      }
      
      • 2.輸入一串字符,判斷是字母還是數字還是其他字符
      #include <stdio.h>
      #define MAX 100
      
      int main(){
          char s[MAX] = {0}, t = 0;
          int i = 0, alpha_flag = 0, num_flag = 0, other_flag = 0; 
          printf("請輸入一串字符串:\n");
          gets(s);
      
          while(s[i] != '\0'){
              t = s[i];
              if(alpha_flag == 0&&((t>='A'&&t<='Z')||(t>='a'&&t<='z'))){
                  alpha_flag = 1;
              }
              else if(num_flag == 0&&(t>='0'&&t<='9')){
                  num_flag = 1;
              }
              else if(other_flag == 0&&(t<48||(t>57&&t<65)||(t>90&&t<97)||t>122)){
                  other_flag = 1;
              }
              i++;
          }
          	
          if(alpha_flag==1&&num_flag==0&&other_flag==0){
              printf("是字母字符串");
          }
          else if(alpha_flag==0&&num_flag==1&&other_flag==0){
              printf("是數字符串");
          }
          else if(alpha_flag==0&&num_flag==0&&other_flag==1){
              printf("是其他字符串");
          }
          else{
              printf("是混合符串");
          } 
          return 0;
      }
      
      • 3.輸入數組a[5]、b[5]的值,如果a[i]與b[i]的和能被4整除就將這兩個數存到數組c中,否則將和乘以4后輸出
      #include <stdio.h>
      #define MAX 5
      
      void input_arr(int x[], int n){
          int i = 0;
      
          for(i = 0; i < n; i++){
              scanf("%d", x + i);
          }
      }
      
      void print_arr(int x[], int n){
          int i = 0;
      
          for(i = 0; i < n; i++){
              printf("%d ", x[i]);
          }
      }
      
      int main(){
          int a[MAX] = {0}, b[MAX] = {0}, c[MAX*2] = {0};
          int i = 0, j = 0, sum = 0;
      
          printf("請輸入數組a的值:");
          input_arr(a, MAX); 
          printf("請輸入數組b的值:");
          input_arr(b, MAX);
      
          for(i = 0; i < MAX; i++){
              sum = a[i] + b[i];
              if(sum % 4 == 0){
                  c[j++] = a[i];
                  c[j++] = b[i];
              }
              else{
                  printf("%d ", sum * 4);	
              }
          }
          printf("\n------------\n");
          print_arr(c, j);
          return 0;
      } 
      
      • 4.輸入一串不高于80個字符的字符串,將其中的大小寫字母互換,其余字母不變,然后輸出
      #include <stdio.h>
      #include <ctype.h>
      #define MAX 80
      int main(){
      	char s[MAX];
      	int i = 0;
      	printf("請輸入s的值:");
      	gets(s);
      	while(s[i] != '\0'){
      		if(isupper(s[i])){
      			s[i] += 32;
      		}
      		else if(islower(s[i])){
      			s[i] -= 32;
      		}
      		i++; 
      	}
      	printf("新字符串的內容為:%s", s);
      	return 0;
      } 
      
      • 5.輸入一行字符,統計其中有多少個單詞,單詞之間用空格分開
      #include <stdio.h>
      
      int main(){
          char s[50] = {0};
          int i = 0, word=0, count=0;
          printf("請輸入一行字符串:\n");
          gets(s);
      
          while(s[i] != '\0'){
              if(s[i] != ' ' && word == 0){
                  word = 1;
                  count ++;
              }
              if(s[i] == ' '){
                  word = 0;
              }
              i++; 
          }
          printf("count=%d\n", count);
      
          return 0;
      }
      
      • 6.輸入一串字符串,如果存在B或E,則將其改為a,否則原樣輸出
      #include <stdio.h>
      #include <string.h>
      #define MAX 1000
      
      int main() {
          char str[MAX] = {0};
          int i = 0;
          printf("請輸入一串字符串: ");
          gets(str);
          
          for (i = 0; i < strlen(str); i++) {
              if (str[i] == 'B' || str[i] == 'E') {
                  str[i] = 'a';
              }
          }
          
          // 輸出處理后的字符串
          printf("處理后的字符串: %s\n", str);
          
          return 0;
      }
      
      • 7.輸入一串字符串,如果存在A或a,則將其改為e,否則原樣輸出
      #include <stdio.h>
      #include <string.h>
      #define MAX 1000
      
      int main() {
          char str[MAX] = {0};
          int i = 0;
          printf("請輸入一串字符串: ");
          gets(str);
          
          for (i = 0; i < strlen(str); i++) {
              if (str[i] == 'A' || str[i] == 'a') {
                  str[i] = 'e';
              }
          }
          
          // 輸出處理后的字符串
          printf("處理后的字符串: %s\n", str);
          
          return 0;
      }
      

      題型12:字符串拼接

      • 1.將兩個字符串a[30]和b[30]拼接成一個新的字符串c[70],并打印輸出
      #include <stdio.h>
      #include <string.h>
      #define LEN 30
      
      int main(){
          char a[LEN] = {0}, b[LEN] = {0}, c[70] = {0};
          int i = 0, j = 0, k = 0;
          printf("請輸入a的值:");
          gets(a);
          printf("請輸入b的值:");
          gets(b);
      
          while(a[i] != '\0'){
              c[k++] = a[i++];
          }
          while(b[j] != '\0'){
              c[k++] = b[j++];
          }
          printf("字符串拼接后的內容為:%s", c);
      
          return 0;
      } 
      

      題型13:字符串應用題+循環

      • 1.假設小明的春考技能成績查詢密碼為wljspass666,用戶輸入密碼,若正確則輸出密碼;否則提示錯誤,當錯誤次數達到4次時輸出密碼鎖定,此時程序退出
      #include <stdio.h>
      #include <string.h>
      
      int main(int argc, const char * argv[]){
          char pwd[100] = {0};
          int i = 0, count = 4;
          printf("輸入密碼:");
          gets(pwd);
      
          while(count > 0){
              if(strcmp(pwd, "wljspass666")==0){
                  printf("登錄成功!\n");
                  break;
              }
              else{
                  count--;
                  printf("密碼錯誤,剩余%d次機會.\n", count);
                  if(count == 0){
                      printf("次數已用完,賬戶被鎖定!\n");
                      break;
                  }
                  printf("輸入密碼:");
                  gets(pwd);
              }
          }
          return 0;
      }
      

      考題補充

      • 1.輸入兩個浮點數,以浮點數的形式格式化輸出,寬度為10,小數點后保留2位
      #include <stdio.h>
      
      int main() {
          float num1 = 0, num2 = 0;
      
          printf("請輸入兩個浮點數:");
          scanf("%f %f", &num1, &num2);
      
          // 格式化輸出:寬度10(總字符數),小數點后保留2位
          // %10.2f 中:10 表示輸出占10個字符位置,.2 表示保留2位小數,不足時左側補空格
          printf("\n第一個數:%10.2f\n", num1);
          printf("第二個數:%10.2f\n", num2);
      
          return 0;
      }
      
      • 2.某水費結算系統中輸入1表示民用水,每噸3.5元;輸入2表示商用水,每噸4.0元。輸入水費標識(1或2)和用水量,輸出水費
      #include <stdio.h>
      int main(){
          int flag = 0, weight = 0;
          float price = 0, money = 0;
          printf("請輸入水費標識(1或2)和用水量(噸):");
          scanf("%d %d", &flag, &weight);
      
          if(flag == 1){
              price = 3.5;
          }
          else if(flag == 2){
              price = 4.0;
          }
          else {
              printf("輸入異常,只能輸入1或2!\n");
              return -1;
          }
          money = price * weight;
          printf("水費共計%.2f元\n", money);
      
          return 0;
      }
      
      • 3.輸入10個人的年齡,求平均年齡,并輸出最接近且不大于平均值的年齡
      #include <stdio.h>
      
      int main(int argc, const char * argv[]) {
          // insert code here...
          int age[10] = {0}, below_avg_age[10] = {0};
          int i = 0, j = 0, k = 0;
          float avg_age = 0, min = 0;
      
          for (i = 0; i < 10; i++) {
              scanf("%d", age + i);
              avg_age += age[i];
          }
          avg_age /= 10;
          printf("平均年齡為%.4f\n", avg_age);
      
          for (i = 0; i < 10; i++) {
              if (avg_age >= age[i]) {
                  below_avg_age[j++] = age[i];
              }
          }
      
          min = avg_age - below_avg_age[0];
          k = 0;
          for (i = 1; i < j; i++) {
              if (avg_age - below_avg_age[i] < min) {
                  min = avg_age - below_avg_age[i];
                  k = i;
              }
          }
          printf("最接近且不大于平均值的年齡是%d", below_avg_age[k]);
      
          return 0;
      }
      
      
      • 4.使用函數func打印輸出1000以內能被7整除的偶數,每行打印12個,輸出格式為%7d
      #include <stdio.h>
      
      void func(int num) {
          int i = 0;
          for(i = 0; i <= num; i+=2){
              if(i % 7 == 0){
                  printf("%7d", i);
                  count++;
                  if(count % 12 == 0){
                      printf("\n");
                  }
              }
          }	
      }
      
      int main(){
          int num = 1000;
          func(num);
      
          return 0;
      }
      
      • 5.輸入一串字符串,將其中的數字字符加6。注意:字符'4'加6后的結果按字符'0'計算,字符'5'加6后的結果按字符'1'計算
      #include <stdio.h>
      #define MAX 1000
      
      int main(int argc, const char * argv[]) {
          // insert code here...
          char s[MAX] = {0}, t = {0};
          int i = 0;
          printf("請輸入一串字符:");
          gets(s);
      
          while (s[i] != '\0') {
              t = s[i];
              if (t >= '0' && t <= '3') {
                  s[i] += 6;
              }
              else if (t >= '4' && t <= '9') {
                  s[i] -= 4;
              }
              i++;
          }
          puts(s);
      
          return 0;
      }
      
      • 6.輸入n個數,傳入func函數中,打印輸出n個數中的最小值
      #include <stdio.h>  // 方法1:不用數組,靜態變量存儲上一次傳進來的值
      float func(float num){
      	static float m = 10e20;
      	if(num < m) {
      		m = num;
      	}
      	return m;
      }
      int main(){
      	int i, n;
      	float num, ret;
      	printf("請輸入n的值:");
      	scanf("%d", &n);
      	for(i = 0; i < n; i++){
      		printf("請輸入第%d個數:", i + 1);
      		scanf("%f", &num);
      		ret = func(num);
      	}
      	printf("最小值為:%f", ret);
      	return 0;
      }
      
      
      #include <stdio.h>  // 方法2:可變長度數組VLA,在 C99 (1999年發布)及之后的標準里,支持可變長度數組,能夠使用變量來指定數組的長度。1989年發布的C89/C90標準不支持VLA,以下代碼可能會報錯
      int func(int arr[], int n){
      	int min = arr[0], i;
      	for(i = 1; i < n; i++){
      		if(arr[i] < min){
      			min = arr[i];
      		}
      	}
      	return min;
      }
      int main(){
      	int i, n, min;
      	printf("請輸入n的值:");
      	scanf("%d", &n);
      	int arr[n];
      	for(i = 0; i < n; i++){
      		printf("請輸入第%d個數:", i + 1);
      		scanf("%d", arr+i);
      	}
      	min = func(arr, n);
      	printf("最小值為%d", min);
      	return 0;
      }
      
      #include <stdio.h>  // 方法3:在C89/C90標準下不可使用可變長度數組時,能夠借助動態內存分配函數像malloc、calloc或者realloc)來創建數組
      #include <stdlib.h>
      
      int func(int arr[], int n){
          int min = arr[0], i;
          for(i = 1; i < n; i++){
              if(arr[i] < min){
                  min = arr[i];
              }
          }
          return min;
      }
      int main(int argc, const char * argv[]) {
          // insert code here...
          int i, n, min;
          int *arr;
          printf("請輸入n的值:");
          scanf("%d", &n);
          arr = (int *)malloc(n * sizeof(int));
          if (arr == NULL) {
              printf("內存分配失敗!\n");
              return -1;
          }
          for(i = 0; i < n; i++){
              printf("請輸入第%d個數:", i + 1);
              scanf("%d", arr+i);
          }
          min = func(arr, n);
          printf("最小值為%d\n", min);
          return 0;
      }
      
      • 7.輸入n,找出1-n之間的所有奇數,輸出奇數的個數和奇數的平均值
      #include <stdio.h>
      int main(){
      	int n, i, count = 0;
      	float avg = 0;
      	printf("請輸入n的值:");
      	scanf("%d", &n);
      	for(i = 1; i <= n; i+=2) {
      		count++;
      		avg += i;
      	}
      	avg /= count;
      	printf("共有奇數%d個,平均值為%.4f\n", count, avg);
      	return 0;
      }
      
      • 8.用函數調用一個公式,結果如果是正數則返回,是負數則返回0
      #include <stdio.h>
      int func(int a, int b, int c){
      	return a*a+b*b-c*c;
      }
      int main(){
      	int a, b, c, ret;
      	printf("請輸入a b c的值:");
      	scanf("%d %d %d", &a, &b, &c);
      	ret = func(a, b, c);
      	printf("ret=%d", ret);
      	return 0;
      }
      
      • 9.輸入n個數,統計正數、負數和0的個數
      #include <stdio.h>
      int main(){
      	int n, i, cnt_pos = 0, cnt_neg = 0, cnt_zero = 0;
      	printf("請輸入n的值:");
      	scanf("%d", &n);
      	int a[n];  // 部分編譯器不支持該語句
      	printf("請輸入%d個整數:", n);
      	for(i = 0; i < n; i++) {
      		scanf("%d", a+i);
      		if(a[i] > 0) {
      			cnt_pos++;
      		}
      		else if(a[i] < 0) {
      			cnt_neg++;
      		}
      		else {
      			cnt_zero++;
      		}
      	}
      	printf("數組中有%d個正數,%d個負數,%d個0", cnt_pos, cnt_neg, cnt_zero);
      	return 0;
      }
      
      • 10.數組a中有5位同學的成績,輸出最高成績和最低成績,要用指針
      • 11.輸入一個4位數,計算每一位平方的和。如輸入1234,輸出30
      #include <stdio.h>
      int main(){
      	int num, sum = 0, b;
      	printf("請輸入一個4位數:");
      	scanf("%d", &num);
      	while(num){
      		b = num%10;
      		sum += b*b;
      		num /= 10;
      	}	
      	printf("sum=%d", sum);
      	return 0;
      }
      
      • 12.將二進制數11001110置反,輸出00110001
      #include <stdio.h>
      int main(){
      	int a[8] = {1, 1, 0, 0, 1, 1, 1, 0}, i;
      	for(i = 0; i < 8; i++){
      		if(a[i]){
      			a[i] = 0;
      			printf("%d", a[i]);
      		}
      		else {
      			a[i] = 1;
      			printf("%d", a[i]);
      		}
      	}
      	return 0;
      }
      
      • 13.在數組a中輸入5個字符(不含'\0'),數組b中已有'a'、'b'兩個字符,將數組a連接到數組b后方
      #include <stdio.h>
      #include <string.h>
      int main(){
      	char a[6], b[8] = "ab";
      	int i, length_b = strlen(b);
      	printf("請輸入5個字符(不含\'\\0\'):");
      	for(i = 0; i < 5; i++){
      		scanf("%c", a+i);
      		b[length_b++] = a[i];	
      	}
      	b[length_b] = '\0';
      	printf("連接后的新字符串為:");
      	puts(b);
      	return 0;
      }
      
      • 14.用戶輸入6個學生的成績,計算平均成績和高于平均成績的學生的平均成績
      #include <stdio.h>
      int main(){
      	int score[6], i, count = 0; 
      	float avg1 = 0, avg2 = 0;
      	printf("請輸入6名學生的成績:\n");
      	for(i = 0; i < 6; i++) {
      		scanf("%d", score+i);
      		avg1 += score[i];
      	}
      	avg1 /= 6;
      	for(i = 0; i < 6; i++) {
      		if(score[i] > avg1) {
      			avg2 += score[i];
      			count++;
      		}
      	}
      	avg2 /= count;
      	printf("平均成績為%.2f,高于平均成績的共%d人,其平均成績為%.2f", avg1, count, avg2);
      	return 0;
      }
      
      • 15.某商場舉行促銷活動,滿600元減200元,不滿600元但高于200元,打八折,不高于200元打九折。輸入消費金額,輸出應付金額
      #include <stdio.h>
      int main(){
      	float money, pay;
      	printf("請輸入消費金額:");
      	scanf("%f", &money);
      	if(money < 0){
      		printf("輸入異常, end...");
      		return -1;
      	}
      	else if(money <= 200){
      		pay = money * 0.9;
      	}
      	else if(money < 600){
      		pay = money * 0.8;
      	}
      	else {
      		pay = money - 200;
      	}
      	printf("消費%.2f元,支付%.2f元.", money, pay);
      	return 0;
      }
      
      
      • 16.現有5位同學的綜合得分(2位數),將得分乘以3加上5后輸出
      • 17.現有元素只為0或1的5行5列二維數組a,第5行和第5列元素未初始化。若每行1的個數為偶數個,則該行第5個數初始化為1,反之為0。若每列1的個數是偶數,則該列第5個數初始化為1,反之為0。
      //  示例
      0 0 1 1
      1 1 1 0
      1 0 0 1
      0 1 0 0
      
      #include <stdio.h>
      #define ROW 5
      #define COL 5
      void print_arr(int s[][COL], int m, int n){
          int i, j;
          for (i = 0; i < m; i++) {
              for (j = 0; j < n; j++) {
                  printf("%4d", s[i][j]);
              }
              printf("\n");
          }
      }
      
      int main(int argc, const char * argv[]) {
          // insert code here...
          int a[ROW][COL] = {{0, 0, 1, 0}, {1, 0, 1, 1}, {0, 1, 1, 0}, {0, 1, 1, 1}};
          int i, j, sum;
          printf("數組前4行4列元素的值為:\n");
          print_arr(a, 4, 4);
          for (i = 0; i < ROW - 1; i++) {
              sum = 0;
              for (j = 0; j < COL - 1; j++) {
                  sum += a[i][j];
              }
              if (!(sum%2)) {
                  a[i][j] = 1;
              }
          }
          for (j = 0; j < COL; j++) {
              sum = 0;
              for (i = 0; i < ROW - 1; i++) {
                  sum += a[i][j];
              }
              if (!(sum%2)) {
                  a[i][j] = 1;
              }
          }
          printf("填充完畢后數組元素的值為:\n");
          print_arr(a, 5, 5);
          return 0;
      }
      
      
      • 18.求和:1-1/3+1/5-1/7+...,一直到1/99
      • 19.現有3*3矩陣,計算第4列各行元素的值,要求每行4個元素相加的和為20
      #include <stdio.h>
      void print_arr(int s[][4], int m, int n){
      	int i, j;
      	for(i = 0; i < m; i++){
      		for(j = 0; j < n; j++){
      			printf("%4d", s[i][j]);
      		}
      		printf("\n");
      	}	
      }
      int main(){
      	int a[3][4] = {{1, 8, 17}, {12, 4, -5}, {6, 7, 1}}, i, j, sum;
      	printf("3*3數組元素為:\n");
      	print_arr(a, 3, 3);
      	for(i = 0; i < 3; i++){
      		sum = 0;
      		for(j = 0; j < 3; j++){
      			sum += a[i][j];
      		}
      		a[i][3] = 20 - sum;
      	}	
      	printf("填充后3*4數組元素為:\n");
      	print_arr(a, 3, 4);
      	return 0;
      }
      
      • 20.求和:1+1/2+1/3+...,一直到1/99
      • 21.定義一個數組并賦值,輸出數組前n個數的和與后n個數的和
      #include <stdio.h>
      #define N 10
      void print_arr(int s[], int n, int m){
      	int i;
      	for(i = n; i <= m; i++){
      		printf("%4d", s[i]);
      	}
      }
      int main(){
      	int a[N] = {9, 4, 6, 7, 1, 3, 8, 5, 2, 0}, n, i, j;
      	printf("請輸入n的值(n<=%d):", N);
      	scanf("%d", &n);
      	if(n > N){
      		printf("下標越界,end...\n");
      		return -1;
      	}
      	printf("前%d個數為:", n);
      	print_arr(a, 0, n-1);
      	printf("\n后%d個數為:", n);
      	print_arr(a, N-n, N-1);
      	return 0;
      }
      
      • 22.模擬點餐程序:定義數組food和price,定義整型變量c、n和op,其中c為食物編號,n為食物數量,op為功能選項(0:點餐 1:查看 2:結賬 其他值:錯誤)。現要求用戶輸入c、n和op值,打印輸出相應的結果。
        food[3][40] = {"漢堡", "薯條", "可樂"} price[3] = {20, 10, 5}
      #include <stdio.h>
      #include <string.h>
      #include <stdlib.h>
      #define ITEM 3  // 食物種類
      #define LEN 1000  // 每種食物占據的最長字節數
      #define MAX 1000 // 購物車可加食物數量上限
      
      int car_length = 0;  // 購物車數組的長度,全局變量
      
      void print_food(char food[][LEN]) {
          int i;
          for (i = 0; i < ITEM; i++) {
              printf("%s  ", food[i]);
          }
      }
      
      void add_food(char food[][LEN], char car[][LEN], int c, int n) {  // c:食物編號 n:食物數量
          int i;
          for (i = car_length; i < car_length + n; i++) {
              strcpy(car[i] ,food[c]);
          }
          car_length = i;  // 更新長度,后續可能會繼續在購物車中增加物品,所以當前的長度需要保存
      }
      
      void print_car(char car[][LEN]){
          int i = 0;
          while (car[i][0] != '\0') {  // 購物車數組中某行的字符串中0列為'\0',代表此處為空的,未存儲食物
              printf("%s ", car[i]);
              i++;
          }
          if (i == 0) {
              printf("購物車為空!");
          }
          printf("\n");
      }
      
      int cal_pay(char car[][LEN], int price[]) {
          int pay = 0, i;
          for (i = 0; car[i][0] != '\0'; i++) {  // 遍歷購物車結束條件也是某行0列字符為'\0'
              if (strcmp(car[i], "漢堡") == 0) {
                  pay += price[0];
              }
              else if (strcmp(car[i], "薯條") == 0) {
                  pay += price[1];
              }
              else {
                  pay += price[2];
              }
              strcpy(car[i], "\0");  // i位置處的食物算入總價后,就將i位置處的內容置為"\0",支付的過程即伴隨著清空購物車.此處清空購物車只是數組中每行為"\0",但購物車長度不是0
          }
          car_length = 0;  // 所以此處也要將購物車的長度置零,在下方case 2處置零也可以
          return pay;
      }
      
      int main(int argc, const char * argv[]) {
          // insert code here...
          char food[ITEM][LEN] = {"漢堡", "薯條", "可樂"};
          int c, n, op, money, price[ITEM] = {20, 10, 5};  // c:食物編號 n:食物數量 op:功能選項
          char car[MAX][LEN] = {'\0'};  // 購物車,直接初始化為'\0',利于后續處理中找到car數組的邊界
          while (1) {
              printf("開始操作(0:點餐 1:查看購物車 2:結賬 3:退出):");
              scanf("%d", &op);
              switch (op) {
                  case 0:
                      printf("有以下食物:\n");
                      print_food(food);
                      printf("\n開始點餐...請輸入食物編號(0 1 2)和食物數量\n");
                      scanf("%d %d", &c, &n);
                      add_food(food, car, c, n);
                      break;
                  case 1:
                      printf("正在查看購物車...\n");
                      print_car(car);
                      break;
                  case 2:
                      printf("正在結賬...\n");
                      money = cal_pay(car, price);
                      printf("共支付%d元\n", money);
      //                car_length = 0;
                      break;
                  case 3:
                      printf("正在退出...\n");
                      exit(-1);
                  default:
                      printf("功能選項輸入錯誤,請重新輸入!\n");
              }
          }
          return 0;
      }
      
      
      • 23.輸入一個整數,判斷100以內能被這個數整除的數

      2023年考題回憶版

      • 1.輸入整數直徑,求圓的面積,如果輸入的是負數,就打印提示“異常”
      #include <stdio.h>
      #define PI 3.14159
      int main(){
      	int d;
      	float r, s;
      	printf("請輸入圓的直徑:");
      	scanf("%d", &d);
      	if(d < 0){
      		printf("直徑值異常!\n");
      		return -1;
      	}
      	r = d / 2;
      	s = PI * r * r;
      	printf("面積為%.2f", s);
      	return 0;
      }
      
      • 2.輸入一個1800-2800之間的整數作為年份,判斷該年份是否為閏年
      #include <stdio.h>
      int main(){
      	int year;
      	printf("請輸入一個年份(1800-2800):");
      	scanf("%d", &year);
      	if(year >= 1800&&year <= 2800){
      		if(year % 4 == 0&&year % 100 != 0||year % 400 == 0){
      			printf("%d是閏年!", year);
      		}
      		else{
      
      			printf("%d不是閏年!", year);
      		}
      	}
      	else{
      		printf("輸入的年份非法!");
      	}
      	return 0;
      }
      
      • 3.輸入一個長度不超過80的字符串,將其中的大寫字母轉換成小寫字母,其他字符不變,輸出轉換后的字符串
      #include <stdio.h>
      #include <string.h> 
      #define MAX 100
      int main(){
      	char s[MAX];
      	int i = 0;
      	printf("請輸入字符串:");
      	gets(s);
      	if(strlen(s) <= 80){
      		while(s[i] != '\0'){
      			if(s[i] >= 'A'&&s[i] <= 'Z'){
      				s[i] += 32;
      			}
      			i++;
      		}
      		puts(s);
      	}
      	else{
      		printf("字符串長度不合法!");
      	}
      	return 0;
      } 
      

      2022年考題回憶版

      • 1.輸出楊輝三角形的前10行
      #include <stdio.h>
      #define ROW 10
      #define COL 10
      int main(){
          int i = 0, j = 0, s[ROW][COL] = {0};
          for(i = 0; i < ROW; i++){
              s[i][0] = 1;  // 每一行下標為0的元素置為1
              s[i][i] = 1;  // 對角線元素置為1
          }
          for(i = 2; i < ROW; i++){
              for(j = 1; j < i; j++){
                  s[i][j] = s[i-1][j] + s[i-1][j-1];  // 每一行下標為1至倒數第2個元素的值為正上方與左斜上方元素的和
              }
          }
          for(i = 0; i < ROW; i++){
              for(j = 0; j <= i; j++){
                  printf("%4d", s[i][j]);
              }
              printf("\n");
          }
          return 0;
      } 
      
      • 2.輸入購買商品總價,若總價小于1000則八折出售;若總價高于1000則將超出的部分六折出售,輸出優惠金額和實付金額
      #include <stdio.h>
      int main(){
      	float total, discount, pay;
      	printf("請輸入商品總價:");
      	scanf("%f", &total);
      	if(total < 0){
      		printf("輸入數據異常!");
                      return -1;
      	}
      	else if(total < 1000){
      		discount = total * (1 - 0.8);
      		pay = total * 0.8;
      	}
      	else{
      		discount = (total - 1000) * (1 - 0.6);
      		pay = 1000 + (total - 1000) * 0.6;
      	}
      	printf("總價%.2f,優惠金額%.2f,實付金額%.2f", total, discount, pay);
      	return 0;
      } 
      
      • 3.輸入本月用電度數:若在50度以下(含50度)每度1.3元,若高于50度,超出的部分按每度2.3元收,請輸出電費
      #include <stdio.h>
      int main(){
      	float total, pay;
      	printf("請輸入本月用電度數:");
      	scanf("%f", &total);
      	if(total < 0){
      		printf("數值異常!");
      		return -1; 
      	}
      	else if(total <= 50){
      		pay = total * 1.3;
      	}
      	else{
      		pay = 50 * 1.3 + (total - 50) * 2.3;
      	}
      	printf("用了%.2f度電, 電費%.2f元", total, pay);
      	return 0;
      } 
      
      • 4.輸入兩個字符串s1和s2,將s2鏈接到s1后方,不能使用字符串連接函數
      #include <stdio.h>
      #include <string.h>
      #define MAX 1000
      int main(){
      	char s1[MAX], s2[100];
      	int len, i = 0; 
      	printf("請輸入s1的值:");
      	gets(s1);
      	len = strlen(s1);  // 定位到s1字符串'\0'的位置
      	printf("請輸入s2的值:");
      	gets(s2);
      	while(s2[i] != '\0'){  // 從頭遍歷字符串s2
      		s1[len++] = s2[i++];  // 依次將字符串s2的字符連接到s1后方
      	}
      	s1[len] = '\0';  // 為字符串s1添加結束標志
      	printf("s2連接到s1后方的新字符串為:%s", s1);
      	return 0;
      } 
      
      • 5.計算1+2+3+...+100的值
      #include <stdio.h>
      int main(){
      	int i, sum = 0;
      	for(i = 1; i <= 100; i++){
      		sum += i;
      	}
      	printf("sum=%d", sum);
      	return 0;
      }
      
      • 6.(變式)計算1-2+3-4+5-...+99-100的值
      // 方法1:將加減號看成乘以1或乘以-1
      #include <stdio.h>
      int main() {
        int i = 1, sum = 0;
        int t = 1;
        while(i <= 100 {
          sum = sum + i * t;
          i ++;
          t = -t;
        }
        printf("%d", sum);
        return 0;
      }
      
      // 方法2:利用奇偶數,觀察原式發現奇數前方的符號為“+”,偶數前方的符號為“-”。
      #include <stdio.h>
      int main(){
        int i = 1, sum = 0;
        while(i <= 100){
          if(i % 2 != 0){
            sum = sum + i;
          }
          else {
            sum = sum - i;
          }
          i++;
        }
        printf("sum=%d", sum);
        return 0;
      } 
      
      
      posted @ 2025-03-02 10:21  pycoder_666  閱讀(851)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品久久毛片| 亚洲一区二区精品极品| 亚洲色偷偷色噜噜狠狠99| 人人妻人人添人人爽日韩欧美| 永兴县| 国产一区二区三区亚洲精品| 人妻系列无码专区免费| 两个人日本www免费版| 国产精品综合在线免费看| 亚洲欧洲日韩国内高清| 又大又粗又爽18禁免费看| 午夜福利yw在线观看2020| 午夜福利国产片在线视频| 男女猛烈无遮挡免费视频| 久99久热精品免费视频| 午夜福利国产片在线视频| 欧美成aⅴ人高清免费| 欧洲国产成人久久精品综合| 99在线 | 亚洲| 欧美另类videossexo高潮| 99久久国产一区二区三区| 亚洲国产在一区二区三区| 国产人妻一区二区三区四区五区六| 色呦呦九九七七国产精品| 日韩中文字幕精品人妻| 香蕉av777xxx色综合一区| 人妻夜夜爽天天爽| 国产乱码1卡二卡3卡四卡5| 义乌市| 国产成人精品无缓存在线播放| 亚洲春色在线视频| 昌都县| 国产精品免费中文字幕| 国产高颜值极品嫩模视频| XXXXXHD亚洲日本HD| 日本久久一区二区免高清| 99久久精品国产一区二区暴力| 亚洲a免费| 国产精品一区二区久久岳| 久久久久久久久久久久中文字幕| 狠狠色噜噜狼狼狼色综合久|