2016年807真題
題目1
從鍵盤輸入一個整數的百分制成績,用變數score儲存,如果score不在0-100範圍內,則輸出”Error Input!”,並結束程式。否則,將輸入的資料轉換成等級’A’,’B’, ‘C, ‘D’,’E’。 90分以上為’A’,8089分為’B’,7079分為’C’,60~69分為’D’,60分以下為E’,結果賦值給變數grade,並將變數score 和grade的值輸出到螢幕上
解題思路
- 輸入score
- 判斷是否在範圍內
- 在範圍內的話,用switch結構轉換等級。不過這裡case只能用常量表示式,所以,在進行等級轉換之前我們還要先對score進行處理。根據題意以及對整形進行除法運算的特性,在進行等級轉換之前先將score進行除10運算,然後用運算後的結果去劃分等級。
- 輸出
流程圖
原始碼
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
void convert(int score);
int main()
{
int score;
printf("請輸入score:");
scanf("%d", &score);
if(score < 0 || score > 100)
{
printf("Error Input!");
}else
{
convert(score);
}
return 0;
}
void convert(int score)
{
char grade;
switch(score/10)
{
case 10:
case 9:
grade = 'A';
break;
case 8:
grade = 'B';
break;
case 7:
grade = 'C';
break;
case 6:
grade = 'D';
break;
default:
grade = 'E';
}
printf("score is : %d, grade is : %c", score, grade);
}
題目2
從鍵盤輸入一個可帶空格的字串,判斷該字串是否是迴文(迴文指正向讀與逆向讀相同的字串,如abcddcba或abcba等)。如果字串是迴文,輸出”Yes”, 否則輸出”No”
解題思路
- 從鍵盤讀入字串。因為可以帶空格,所以不能用scanf進行讀取,要用gets進行讀取
- 判斷是否是迴文。一個下標從頭往後走,一個下標從尾往前走,逐個判斷兩個字元是否相等。一旦發現兩個字元不等,則直接終止程式。如果直到判斷完半個字串都沒有發現不同的文字,則該字串是迴文,判斷完成結束程式。
- 輸出結果
流程圖
原始碼
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int huiwen(char str[]);
int main()
{
/*****
*
* 從鍵盤輸入一個可帶空格的字串,
* 判斷該字串是否是迴文(迴文指正向讀與逆向讀相同的字串,如abcddcba或abcba等)。
* 如果字串是迴文,輸出”Yes”, 否則輸出”No”
*
*/
char str[255];
int result;
printf("請輸入一個字串:");
gets(str);
result = huiwen(str);
if(result == 1)
{
printf("Yes");
}
else
{
printf("No");
}
return 0;
}
int huiwen(char str[])
{
int len = strlen(str);
int result = 1;
for(int i=0,j=len-1; i<(len/2); i++, j--)
{
if(str[i] != str[j])
{
result = 0;
break;
}
}
return result;
}
題目3
從鍵盤上輸入矩陣的階數n(n<5),再輸入矩陣的各個資料元素,計算陣的主對角線元素之和sum。按照下面格式輸出該矩陣和sum的值
例如n=3時,矩陣為:
1 3 6
3 6 9
6 9 12
sum = 19
解題思路
- 定義二維陣列,從鍵盤讀入資料放入陣列中
- 計算對角線元素之和
- 輸出結果
流程圖
原始碼
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#define N 5
int crossSum(int arr[N][N], int n);
void input(int arr[N][N], int n);
void printArr(int arr[N][N], int n);
int main()
{
int n, sum;
int arr[N][N];
printf("請輸入矩陣的階數:");
scanf("%d", &n);
input(arr, n);
printArr(arr, n);
sum = crossSum(arr, n);
printf("sum = %d", sum);
return 0;
}
int crossSum(int arr[N][N], int n)
{
int sum = 0;
for(int i=0; i<n ; i++)
{
sum += arr[i][i];
}
return sum;
}
void input(int arr[N][N], int n)
{
printf("請輸入矩陣的元素(以空格分隔):\n");
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
scanf("%d", &arr[i][j]);
}
}
}
void printArr(int arr[N][N], int n)
{
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
printf("%d\t", arr[i][j]);
}
printf("\n");
}
}
相關文章
- csp-s真題題解
- 藍橋杯真題
- row_vector and col_vector的建立 (Leetcode 807, Leetcode 531)LeetCode
- 藍橋杯省賽真題2013題解
- CSP-S 歷年真題
- 2020年LA物理師真題
- 2013年藍橋杯真題
- 2002 年考研英語真題 - 翻譯題解析
- 四劍客面試真題-3面試
- 四劍客面試真題-2面試
- 軟體質量屬性真題
- 藍橋杯真題:純質數
- CSP-S/NOIP提高組 真題題解總結
- 2010-2019考研英語二 新題型真題+答案
- 2023年CSP-J組複賽真題!
- 真題模擬2022CSP-J總結
- 四劍客第八關面試真題面試
- 四劍客第七關面試真題面試
- 大廠面試iOS真題整理(flutter篇)面試iOSFlutter
- 新版CKA2020-2020真題試答案-02
- 藍橋杯真題之錯誤票據
- Java計算機二級(上機真題)Java計算機
- 【前端面試題】2023年前端面試真題之Vue篇前端面試題Vue
- 2020年7月第2題 PAT甲級真題 The Judger (25分)
- Java常見面試真題之中級進階Java面試
- 2002 年考研英語真題 - 閱讀 3 解析
- 2002年考研英語真題-閱讀4解析
- 2003 年考研英語真題 - 完型填空解析
- 2003 年考研英語真題 - 閱讀 1 解析
- Go語言切片面試真題7連問Go面試
- PAT甲級真題1069 數字黑洞(巧妙解法)
- 藍橋杯2019年真題:字尾表示式
- 資料分析面試|SQL真題持續更新面試SQL
- 分享幾道我們面試前端的“真題”面試前端
- 題目 1841: [藍橋杯][2017年第八屆真題]發現環
- 百度 Linux 運維工程師面試真題Linux運維工程師面試
- RabbitMQ真實生產故障問題還原與分析MQ
- 2023年10月 00023高等數學(工本)真題解析