實驗1-C語言開發環境使用和數據類型、運算符、表達式-實驗總結與體會


一,實驗總結

本此實驗共9組練習,其中前5組為練習c程序結構與書寫規范,3組為補全程序,最后一組為自主編寫。

Part 1

前五組中沒有出現什么問題,但在學習指導P116第一題中:

#include<stdio.h>
int main(){
    int a=5,b=7,c=100;
    int f,e,d;
    d = a/b*c;
    e = a*c/b;
    f = c/b*a;
    printf("d=%d,e=%d,f=%d",d,e,f);
    return 0;

最開始 f 的運算式寫成了

f=c/d*a

  

,運算一直是錯誤的,由此分析得出,出現除數為0時,都會出現除法溢出異常,程序不能正常運行。此情況下運算結果如下圖,可見程序未正常運行並進行報錯。

 將表達式修改回來之后,即可正常運行且結果無誤。

Part 2

 (1)判斷奇偶: ex1.c

補全后如圖

// 程序功能:
// 要求用戶從鍵盤輸入一個整數,判斷其是奇數還是偶數 
   
  #include <stdio.h> 
  int main() {
      int x;
      
      printf("輸入一個整數: \n");
      scanf("%d",&x);
      
      // 在×××處填寫相應表達式
      // 使得當表達式成立時,判定x是奇數,否則是偶數  
      if(x%2==!0)  
          printf("是奇數");
      else
          printf("是偶數"); 
      
      return 0;
  } 

運行結果為

(2)根據不同的輸入,顯示不同提示信息:ex2.c

補全后如圖

/* 程序功能:
   要求用戶從鍵盤輸入1~7之間的整數
   如果輸入的是1~5, 提示用戶是工作日,要努力工作;
   如果輸入的是6或7,提示用戶是休息日,放松休息;
   否則,提示用戶輸入不在合法范圍 
  */ 
  #include <stdio.h> 
  int main() {
      int days;
      
      printf("輸入一個整數: \n");
      scanf("%d",&days);
      
      // 補足×××處的表達式,使得滿足程序功能描述
      if(days<=5&&days>0) // days在1到5之間
          printf("workdays, fighting\n");
      else if(days==6||days==7) // days是6或7
          printf("weekend, relax~\n");
      else
          printf("Ooops, not in 1~7\n");
      
      return 0;
  } 

運行結果為

(3)根據用戶輸入字符,判斷如果是小寫字母,則轉換成大寫;否則保持原樣: ex3.c

補全后如圖

// 功能:
  // 從鍵盤上輸入單個字符
  // 如果是小寫字母,則轉換成大寫后輸出
  // 否則,什么也不做,原樣輸出
  
  #include <stdio.h>
  int main() {
      char ch;
      
      printf("輸入一個字符:\n");
      scanf("%c",&ch);
      
      // 根據程序功能描述,補足程序
      if(ch>='a'&&ch<='z')   // 如果ch是小寫字母,補足判定ch是小寫字母的表達式
          ch-=32;   // 補足把ch中的小字母轉換成大寫字母的表達式語句
                // 說明:語句就是在表達式末尾加分號;
      printf("%c\n",ch);
       
      return 0;
  }

運行結果為

Part 3

由十進制轉換為二進制的數學計算方法可知,采用“除二取余,逆序排列”的方法。

在嘗試編寫代碼的過程中,我主要遇到了兩個問題:(1)如何進行逆序排列;(2)當數值過大時,程序無法成功將十進制數轉化為二進制數。

 首先嘗試了

#include<stdio.h>
int main()
{
    int z=0,k=1,i,a,b;
    printf("輸入一個十進制整數:\n");
    scanf("%d",&a);
    b=a;
    while(a>0)
    {
        i=a%2;
        z=k*i+z; 
        k=k*10;
        a=a/2;
    }
    printf("十進制整數%d的二進制為:%d",b,z);
    return 0; 
}

結果在1023及以前,運算結果都是正常的;到了1024之后,結果就不是二進制數了。

 此后參考了博主“低俗小怪”使用了【do while】的代碼(如下),但無法理解其中使用黃色標記的部分(鏈接https://www.cnblogs.com/didiaoxiaoguai/p/6731310.html)

#include<stdio.h>
int main()
{int a;
 char s[20];
 int i = 0, rem;
 printf("Input number:");
 scanf("%d", &a);
 do
 {
  rem = a % 2;

  a = a / 2;
  s[i] = rem;
  i++;
 } while (a != 0);
 printf("輸出二進制:");
 while (i > 0)   printf("%d", s[--i]);//

  return 0;
}

 

二、實驗總結與體會

1.本此實驗中,主要使用了Dev C++軟件,同時嘗試使用了Visual Studio 2010 和Visual Studio 2012。vs的功能更加健全,但Dev更便於在學習過程中進行操作。

2.無論是在編程過程或者測試過程中,都需要注意英文符號與中文符號的不同之處,不可混淆。

3.要繼續加強關系運算符和邏輯運算符的學習與記憶,明確在哪里使用哪個運算符以及運算符間的優先級關系。

4. 注意進行測試,要多次不重復且跨度盡量大的進行測試,避免偶然性的出現。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM