欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      1032C語言程序設計5篇

      時間:2019-05-12 16:51:22下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《1032C語言程序設計》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《1032C語言程序設計》。

      第一篇:1032C語言程序設計

      1032]《C語言程序設計》

      選擇題 [單選題]

      12.關于C語言程序描述正確的是()

      A:每個函數必須要有return語句

      B:主函數必須位于程序的開頭

      C:程序中每行只能寫一條語句

      D:一個程序中只能有一個主函數

      參考答案:D [單選題]

      3.正確的實型常數是()

      A:0 B:e2 C:0.871

      D:3e-1.5

      參考答案:C [單選題]

      18.變量定義并初始化正確的是(A:int a=l,*p=a;

      B:int a=2,p=*a;

      C:int a=3,p=&a;

      D:int a=4,*p=&a;

      參考答案:D)[單選題]

      19.設struct{int age;int num;}stu,*p=&stu;對結構型變量stu的成員age引用錯誤的是()

      A:stu.age

      B:p->age

      C:*p.age

      D:(*p).age

      參考答案:C

      [單選題] 當調用函數時,實參是一個數組名,則想函數傳遞的是(A:數組長度

      B:數組每一個元素的地址

      C:數組的首地址

      D:數組中每個元素的值

      參考答案:C [單選題]

      25.循環(huán)語句“for(i=-1;i<4;i++);”循環(huán)執(zhí)行()次

      A:3 B:4 C:5 D:6

      參考答案:C [單選題]

      27、從循環(huán)體內某一層跳出,繼續(xù)執(zhí)行循環(huán)外的語句是:()。)

      A:break 語句

      B:return 語句

      C:continue 語句

      D:空語句

      參考答案:A [單選題]

      29、設char s[2*5]=”12345678“;,數組s的長度是()

      A:10 B:9 C:8 D:7

      參考答案:C [單選題]

      20.設int a[10];,對數組元素引用正確的是()

      A:a[10]

      B:a[′0′]

      C:a(6)

      D:a[10-10]

      參考答案:D [單選題]

      30、設變量b是int,c為float,則表達式b+c之值的數據類型是()

      A:int B:float

      C:double

      D:不確定

      參考答案:C

      [單選題]4.設float a,b,c;,函數調用語句f(((a,b),a+c),5);中參數的個數是()

      A:1 B:2 C:3 D:4

      參考答案:B [單選題]

      5.設intm[]={5,4,3,2,l},i=2;,其值為l的數組元素是()

      A:m[i+2]

      B:m[i+3]

      C:m[i-l]

      D:m[m[i]]

      參考答案:A

      [單選題]6.下列敘述正確的是()

      A:while語句中的循環(huán)體至少被執(zhí)行一次

      B:do-while語句中的循環(huán)體至少被執(zhí)行一次

      C:switch語句中每個case后必須有break語句

      D:continue和break在循環(huán)語句中的作用是相同的

      參考答案:B [單選題] 7.設chars[2*5]=”1234567“;,數組s的長度是()

      A:10 B:9 C:8 D:7

      參考答案:A [單選題]

      8.下列二維數組定義并初始化正確的是()

      A:int a[3][3]=[0,3];

      B:int a[2][]={{3,4},{5,6}};

      C:int a[2,3]={2,3,4,5,6,7,8,9};

      D:int a[][4]={{l,2,4,5},{2,3},{3,4,9}};

      參考答案:D [單選題]

      9.設chars1[20]=”China“,s2[10]=”Beijing“;,執(zhí)行下列語句后的輸出結果是()

      strcat(sl,s2);print f(”%s, %dn“,s1,strlen(s1));

      A:China,5

      B:Beijing,7

      C:ChinaBeijing,12

      D:BeijingChina,12

      參考答案:C [單選題]10.設變量A是int,f為float,則表達式a+f之值的數據類型是()

      A:int B:float

      C:double

      D:不確定

      參考答案:C [單選題]

      11.用戶自定義標識符正確的是()

      A:2abC B:float C:aa2_a

      D:sin(x)

      參考答案:C [單選題]

      14.設int a[][2]={1,2,3,4,5,6,7,8};,其中缺省的行長度是(A:2 B:3 C:4 D:5

      參考答案:C [單選題]

      15.設int x=6;,執(zhí)行語句x+=x-=x*x;后,x的值是()

      A:-60)B:0 C:6 D:36

      參考答案:A [單選題]

      16.下列為C語言保留字的是()

      A:Double B:long C:FLOAT

      D:integer

      參考答案:B [單選題]

      17.設int a=3,b=8,c=10;,表達式(a,b),(c,10)的值是()

      A:2 B:6 C:8 D:10

      參考答案:D [單選題]

      21.若已定義:int a[9],*p=a;,并在以后的語句中未改變p的值,不能表示a[1]地址的表達式是()。

      A:p+1 B:a+1 C:a++ D:++p

      參考答案:D [單選題]

      22.定義一個具有10個元素的整型數組,應該使用語句()。

      A:int a[10];

      B:int a[2,5];

      C:int a[];

      D:int *a[10]

      參考答案:A [單選題]

      23.在宏定義#define PI 3.1415926中,用宏名PI代替一個()。

      A:單精度數

      B:雙精度數

      C:常量

      D:字符串

      參考答案:D [單選題]

      26、C語言程序的三種最基本結構是()結構、選擇結構和循環(huán)結構。

      A:順序

      B: 遞歸

      C:轉移 D:嵌套

      參考答案:A [單選題]

      28、設int m[]={5,4,3,2,l},i=2;,其值為2的數組元素是()

      A:m[i+1]

      B:m[i+2]

      C:m[i-l]

      D:m[m[i+1]]

      參考答案:A [單選題]

      1.正確的自定義標識符是()

      A:2C B:x#y C:case

      D:Word_2

      參考答案:D [單選題]

      2.設int a=2,b=3,c;,正確的賦值語句是()

      A:(a+b)++

      B:b=a%2.5

      C:a+=b+=5

      D:c=a+b=5

      參考答案:C [單選題]

      13.設int i=2,a,b;double x=2.12,y=1.2;,正確的表達式是()

      A:a+=(b=3)*(a=5)

      B:a=a*5=3

      C:x%(-5)+y**4

      D:y=double(i)

      參考答案:A 問答題 [論述題]

      1. 什么是算法?算法的特點是什么?請畫出求s=1+2+3+…+n之值的算法流程圖。

      參考答案:

      1.算法是求解問題的方法或步驟

      算法的特點:確定性、有效性、有窮性、有0個或一個以上輸入、有一個或多個輸出

      s=1+2+3+…+n之值的算法流程圖(略)

      [論述題]

      3.程序的基本結構有哪些?請畫出這些基本結構的流程圖。

      參考答案:

      3.程序基本結構包括順序結構、分支結構、循環(huán)結構 三種基本結構的流程圖見書18頁

      [論述題] 2. 結構程序設計方法的基本思想是什么?程序包括哪三種基本結構?請畫出求100以內能夠被7整除的數的算法流程圖。

      參考答案:

      2.結構程序設計方法的基本思想是自頂向下,逐步求精、模塊化的方法 程序包括順序結構、分支結構、循環(huán)結構

      請畫出求100以內能夠被7整除的數的算法流程圖。

      填空題 [填空題]

      16.設char s[3]=”AB“,*p=s;,則*(p+2)的值是_______。

      17.在VC環(huán)境下,編譯C語言的源程序文件f1.cpp時出現的錯誤是__________。18.一個C語言函數由函數的首部和__________組成。

      19.設float a,b,c;,函數調用語句f(((a,b),a+c),5);中參數的個數是。

      20.設int a[][3]={1,2,3,4,5,6};,其中缺省的行長度是。

      21、設int x=6;,執(zhí)行語句x+=x-=x*x;后,x的值是

      。22.設int a=3,b=8,c=10;,表達式(a,b),(c,10)的值是

      。23.設int a,b;,與a+=5-b;等價的賦值語句是__________。

      24.設int n=657;,執(zhí)行語句printf(”%d",n/10%10);后的輸出結果是_______。

      25、設int x=4,y=2;,表達式x

      26、執(zhí)行語句for(i=8;i>0;i--,);后,變量i的值是___________。

      參考答案: 16.設char s[3]=“AB”,*p=s;,則*(p+2)的值是____0___。

      17.在VC環(huán)境下,編譯C語言的源程序文件f1.cpp時出現的錯誤是____語法錯誤______。

      18.一個C語言函數由函數的首部和___函數體______組成。19.設float a,b,c;,函數調用語句f(((a,b),a+c),5);中參數的個數是 2。

      20.設int a[][3]={1,2,3,4,5,6};,其中缺省的行長度是 2。

      21、設int x=6;,執(zhí)行語句x+=x-=x*x;后,x的值是(-60)22.設int a=3,b=8,c=10;,表達式(a,b),(c,10)的值是(10)23.設int a,b;,與a+=5-b;等價的賦值語句是_____a=a+(5-b)______。24.設int n=657;,執(zhí)行語句printf(“%d",n/10%10);后的輸出結果是__5___。

      25、設int x=4,y=2;,表達式x

      26、執(zhí)行語句for(i=8;i>0;i--,);后,變量i的值是____0___。

      [填空題]

      27.計算1!+2!+3!的值并輸出,請完善程序。#include int f(int n){int c=1,i;

      for(i=1;i<=n;i++)c=c*i;return(①);

      } void main(){int i, k=0;

      for(i=1;i<=3;i++)k+=

      ;printf(”

      n“,k);}

      參考答案:

      27.計算1!+2!+3!的值并輸出,請完善程序。

      ① c

      ② f(i);

      ③ %d

      [填空題]

      1.設float x,y,z;, 式是__________。

      的C語言算術表達2.設int a,b;,與a*=5-b;等價的賦值語句是__________。3.系統(tǒng)函數sqrt()應使用的文件包含命令是__________。4.在C語言中,表示邏輯”假”的值是__________。

      5.設int n=123;,執(zhí)行語句printf(“%d",n/10%10);后的輸出結果是__________。

      6.在C語言中,將圓周率(PI=3.1415926)定義為常量的宏定義命令是__________。

      7.一個C程序由一個或多個__________組成。8.在VC環(huán)境下,對一個C語言的源程序文件f1.cpp進行編譯鏈接后生成的可行文件名是__________。

      9.x=(a=1),(b=2),(a+b);執(zhí)行該語句后,變量x的值為

      。10.(int)2.56被轉換后為。

      11.代數表達式 言表達式是_______。

      對應的C語12.設int a,b;,表達式(a=2)*(b=5)的值是__________。13.設int x=4,y=2;,表達式x

      14.執(zhí)行語句for(i=10;i>0;i--,);后,變量i的值是___________。15.若函數內定義變量的存儲類別是static,該變量被稱為___________靜態(tài)變量。

      參考答案:

      1.____2*a(x+y)______。2.____a=a*(5-b)______。

      3.__#include ”math.h“或#include ________。4.___0_______。4.__a,97________。5.___2_______。

      6._#define PI 3.1415926___。7.____函數______。8.在VC環(huán)境下,對一個C語言的源程序文件f1.cpp進行編譯鏈接后生成的可行文件名是___f1.exe_______。9.3.10..11._(-b+sqrt(b*b-4*a*c))/(2*a)______。

      12.設int a,b;,表達式(a=2)*(b=5)的值是__10________。13.設int x=4,y=2;,表達式x

      14.執(zhí)行語句for(i=10;i>0;i--,);后,變量i的值是______0_____。15.若函數內定義變量的存儲類別是static,該變量被稱為___局部____靜態(tài)變量。

      [填空題]

      29.鍵入數據至二維數組,求出其中的最大值、最小值及所有元素之和。void main(){ int i,j;

      int a[3][4],max, min, sum=0;for(i=0;i<3;i++)

      for(j =0;j <4;j ++)scanf(”%d“,(1));max=min=a[0][0];for(i=0;i<3;i++)for(j =0;j <4;j ++){

      (2)

      ;

      if(a[i] [j]>max)max=a[i] [j];if(a[i] [j]

      printf(”max=%d,min=%d,sum=%dn“,(3));

      }

      參考答案:

      29.鍵入數據至二維數組,求出其中的最大值、最小值及所有元素之和。(1)&a[i][j]

      (2)sum+= a[i][j]

      (3)max,min,sum

      [填空題]

      30.程序的功能是從鍵盤上任意輸入一個正整數,求各位數字之和。請用模塊化方法改寫下列程序,功能不變。

      #include ”stdio.h” void main(){int n;

      intr,s=0;

      scanf(“(1)”,&n);

      do{r=(2);

      s+=r;n=n/10;

      }while((3));printf(”%d”, s);

      }

      參考答案:

      30.(1)n%10(2)%d

      (3)n>0

      [填空題]

      28.以下程序的功能是:從鍵盤上輸入若干個學生的成績,統(tǒng)計計算出平均成績,并輸出低于平均分的學生成績,用輸入負數結束輸入。請?zhí)羁铡ain()

      {float x[1000],sum=0.0,ave,score; int n=0,i;

      printf(“Enter mark:\n”);scanf(”%f”,& score); while(①)

      {sum_

      _;x[n]= score ;n++;scanf(“%f”,& score);}

      ave=_ ③ __;

      printf(”O(jiān)utput:\n”);

      printf(“ave=%f\n”,ave);

      for(i=0;i

      參考答案:

      28.① score>=0

      ② =sum+ score;

      ③ sum/n

      程序分析 [論述題]

      1.#include void main(){ char op;int a=10,b=20;

      for(op='a';op<='d';op+=2)switch(op)

      {case'a':printf(”a+b=%dn“,a+b);break;case'b':printf(”a-b=%dn“,a-b);break;case'c':printf(”a*b=%dn“,a*b);break;case'd':printf(”a/b=%dn“,a/b);break;} }

      參考答案:

      1.a+b=30 a*b=200

      [論述題]

      2.#include ”stdio.h“ void sort(int x[],int n)

      {int i,j,k,t;

      for(i=0;i

      for(j=i+1;j

      if(x[k]>x[j])k=j;

      if(i!=k)

      {t=x[k];x[k]=x[i];x[i]=t;} } }

      void main()

      {inta[10]={34,50,89,67,102,11,75,30,125,145},i;

      sort(a,10);

      for(i=0;i<10;i++)printf(”%10d“,a[i]);

      }

      參考答案: 2.11 30

      50

      102

      125

      145

      [論述題]

      6.#include ”stdio.h” fun(int x,int y,int z){ z=x*x+y*x;} Void main(){ Int a=31;fun(5,2,a);printf(“%d”,a);}

      參考答案:

      6.31

      [論述題]

      4.#include #include int f(int x){int i;

      for(i=2;i<=sqrt(x);i++)

      if(x%i==0)return 0;

      return 1;

      }

      void main()

      {int a[10]={34,50,89,67,102,11,75,30,125,145};int i,n=0,j,t;

      for(i=0;i<10;i++)

      if(f(a[i]))

      printf(”%d “,a[i]);}

      參考答案:

      4.89 6711 [論述題]

      5、#include &stdio.h>

      void main()

      { int x ,*p;

      x=55;

      p=&x;

      printf(”%d,%un“, x, *p);

      *p=65;

      printf(”%d,%u“,x, *p);

      }

      參考答案: 5.55,55

      65,65 [論述題]

      3.#include ”stdio.h“ int fun(int num){int k=1;

      do

      {k*=num%10;

      num/=10;}while(num);

      return k;}

      void main(){int x=651,y=123;

      printf(”%d,%d“,fun(x),fun(y));}

      參考答案:

      3.30 6

      程序設計 [論述題] 1.從鍵盤上輸入x,依據公式 算y的 值。要求有輸入輸出提示,計算結果精度為3。

      計2.從鍵盤輸入一個正整數n,若能同時被3和5整除,則輸出”Yes”,否則輸出“No”。3.編一程序找出所有三位整數的”水仙花數”并輸出結果。其中“水仙花數”是指一個三位數,其各位數字立方和等于該數本身。例如:153是一”水仙花數”,因為153=13+53+33。

      4.編寫程序找出200以內能夠被9整除的所有整數,并輸出結果。5.利用循環(huán)結構輸出下列圖形。

      A BBB CCCCC DDDDDD

      6.依據下列計算公式,編寫一個程序將輸入的華氏溫度轉換為對應的攝氏溫度。要求有輸入輸出提示,計算結果精度為2。

      7.編一程序求:s=1+(1+2)+(1+2+3)+……+(1+2+3+……+10)

      8.從鍵盤上輸入三條邊a、b和c,若能構成三角形則輸出其面積,否則輸出不能構成三

      角形的提示信息“No triangle”。三角形面積計算公式 其中:s=(a+b+c)/2。9.從鍵盤上任意輸入一個正整數,求各位數字之和。10.編寫程序打印下列圖形

      11.從鍵盤輸入一個正整數n,若能同時被2和3整除,則輸出”O(jiān)K”,否則輸出"No”。

      12.編寫程序找出100以內能夠被7整除的所有整數,并輸出。

      第二篇:C語言程序設計

      1.Problem A: Hello world!Description Xiao_ming有兩個哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放學回家,父母分別跟他們打招呼。

      Input 無

      Output 請輸出: Hello Da_min, Hello Er_min, Hello Xiao_ming!

      Sample Input Sample Output Hello Da_min, Hello Er_min, Hello Xiao_ming!

      HINT 請注意換行符

      Append Code #include int main(){

      printf(“Hello Da_min,n”);

      printf(“Hello Er_min,n”);

      printf(“Hello Xiao_ming!n”);} 2.Problem B: 求圓的面積和周長 Description 從鍵盤輸入圓的半徑,求圓的面積和周長,圓周率取3.14。

      Input 輸入一個浮點型數據,有效數字不會超過十進制的6位。

      Output 輸出為兩行。

      第一行為圓的面積,第二行為圓的周長,格式見sample。

      Sample Input 3

      Sample Output Area: 28.260000 Perimeter: 18.840000

      HINT 了解浮點類型的輸入、輸出和算術運算符

      Append Code 法一

      #include int main(){ double r,p,s;scanf(“%lf”,&r);p=2*3.14*r;s=3.14*r*r;printf(“Area: %lfn”,s);printf(“Perimeter: %lfn”,p);} 法二

      #include #define pi 3.14 int main(){

      double r;

      scanf(“%d”,&r);

      printf(“Area: %lfn”,pi*r*r);

      printf(“Perimeter: %lfn”,2*pi*r);

      }

      3.Problem C:平均值 Description 求3個數的平均值。

      Input 輸入只有一行,為3個較小的整數。

      Output 輸出為這3個整數的平均值,保留3位小數。

      Sample Input 1 2 3 Sample Output 2.000

      HINT 注意除法運算對整型數據和浮點型數據是不一樣的。

      Append Code #include int main(){ int a,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%.3lf”,(a+b+c)/3.0);}

      4.Problem D: 求字符的值 Description 從鍵盤輸入3個字符(不含雙字節(jié)字符),分別輸出每個字符的十進制值(ASCII碼)、八進制值和十六進制值。

      Input 輸入為3個字符。

      Output 輸出為3行。

      每一行為每個字符(對應輸入順序)的十進制、八進制和十六進制值,用空格分隔開。每個輸出的值占3個字符,不足3個字符前面補0。

      Sample Input 0 A

      Sample Output 048 060 030 032 040 020 065 101 041

      HINT 了解字符值的存儲和整型的關系。

      Append Code #include int main(){ char a,b,c;scanf(“%c%c%c”,&a,&b,&c);printf(“%.3d %.3o %.3xn”,a,a,a);printf(“%.3d %.3o %.3xn”,b,b,b);printf(“%.3d %.3o %.3xn”,c,c,c);}

      5.Problem A: 最簡單的程序 Description 輸出一行“Hello world!”。

      Input 無

      Output Hello world!

      Sample Input Sample Output Hello world!

      HINT Append Code #include int main(){

      printf(“Hello world!”);}

      6.Problem B: 算術基本運算 Description 計算兩整數x和y(0

      Input 輸入只有一行,格式見sample。

      Output 輸出為多行,按順序每行輸出x,y的和、差、積、商、余數、x的平方和y的三次方,格式見sample

      Sample Input x = 11, y = 3

      Sample Output x + y : 14 xy : %dn“,x-y);

      printf(”x * y : %dn“,x*y);

      printf(”x / y quotient: %d, remainder: %dn“,x/y,x%y);

      printf(”x ^ 2 : %dn“,x*x);

      printf(”y ^ 3 : %dn“,y*y*y);} 7.Problem C: 自增自減運算 Description C語言中有自增運算++、自減運算--,并且可以前置和后置。

      編寫一個程序:對輸入的一個整數a,輸出a++、a--、++a、--a的值。

      Input 一個整數a,a是很小的整數。

      Output 輸出為5行,第一行為a的值,后面依次為--a、a--、a++、++a的值。

      5行輸出縱向a要對齊,“:”對齊,“:”前后各一個空格,后面的數值不用對齊。每行行尾都有回車。

      Sample Input 0

      Sample Output a : 0--a :-1 a--: 0 a++ : 0 ++a : 1

      HINT Append Code #include int main(){ int a,x;scanf(”%dn“,&x);a=x;printf(” a

      : %dn“,a);printf(”--a

      : %dn“,--a);a=x;printf(” a--: %dn“,a--);a=x;printf(” a++ : %dn“,a++);a=x;printf(”++a

      : %dn“,++a);}

      8.Problem F: 絕對值 Description 求整型數據和浮點型數據的絕對值。

      Input 輸入兩個數,第一個是整數,第二個是浮點數。

      Output 輸出為兩行,第一行為整數的絕對值,第二行為浮點數的絕對值,注意浮點數的絕對值不輸出無意義的0。

      Sample Input-1 1

      Sample Output 1 1

      HINT 求絕對值可以用標準庫函數來完成,也可以自己判斷。注意浮點數的輸出格式。求絕對值的函數在哪個頭文件?貌似很多人會搞錯,包括很多編書的人!

      Append Code #include //#include int main(){

      int n;

      float m;

      scanf(”%d%f“,&n,&m);

      //n=abs(n);

      //m=fabs(m);

      if(n<0)

      {

      n=-n;

      }

      if(m<0)

      {

      m=-m;

      }

      printf(”%dn“,n);

      printf(”%g“,m);

      return 0;}

      9.Problem A: 奇數還是偶數? Description 輸入一個整數,判讀它是奇數還是偶數。

      Input 輸入只有一行,為一個100以內的正整數。

      Output 輸出為一行。

      若輸入為偶數則輸出“even”,奇數輸出“odd”。Sample Input 30

      Sample Output even

      HINT 用整數運算可以解決,練習“?:”表達式。

      Append Code #include int main(){

      int n;

      scanf(”%d“,&n);

      if(n>=0&&n<=100){

      if(n%2==0)printf(”evenn“);

      else printf(”oddn“);

      }

      return 0;}

      10.Problem B: 簡單的打折計算 Description 商店規(guī)定:消費滿n元,可以打八八折。設某件商品標價m元,輸入購買的件數x,計算出需要支付的金額(單位:元),精確到分。

      Input 輸入只有一行,三個整數m、n和x,且0

      Sample Input 95 300 4

      Sample Output 334.40

      HINT 了解浮點型的輸出控制,注意整型和浮點型混合運算過程中的數據類型轉換。

      Append Code #include int main(){

      int m,x,n,a;

      float b;

      scanf(”%d%d%d“,&m,&n,&x);

      0

      x

      m

      a=m*x;

      if(a>n)

      b=0.88*a;

      else

      b=a;

      printf(”%.2fn“,b);

      }

      11.Problem C: 判斷閏年 Description 輸入一個正整數的年份,判斷是否為閏年。

      Input 輸入只有一行,為一個10000以內的正整數。

      Output 輸出為一行。

      若輸入為閏年偶數則輸出“Yes”,否則輸出“No”。

      Sample Input 2010

      Sample Output No

      HINT 了解邏輯運算符和關系運算符。

      Append Code #include int main(){

      int x;

      scanf(”%d“,&x);

      if(x>0&&x<10000)

      {

      if(x%4==0&&x%100!=0)

      printf(”Yesn“);

      else if(x%400==0)

      printf(”Yesn“);

      else

      printf(”Non“);

      }

      else

      printf(”error“);}

      12.Problem D: 水仙花數 Description 如果一個三位十進制數等于其各位數字的立方和,則稱這個數為水仙花數。如:13+53+33=153。

      Input 一個整數x,100<=x<=999。

      Output x是水仙花數,則輸出“YES”,否則為“NO”。

      Sample Input 153

      Sample Output YES

      HINT Append Code #include int main(){

      int a,b,c,x;

      scanf(”%d“,&x);

      a=x/100;

      b=x/10%10;

      c=x%10;

      if(x==a*a*a+b*b*b+c*c*c)

      printf(”Yes“);

      else

      printf(”No“);}

      13.Problem E: 三個數比較大小 Description 從鍵盤上輸入0~100之間的三個數,按從小到大的順序輸出。

      Input 輸入只有一行,為三個整數。

      Output 按從小到大輸出這三個數。

      Sample Input 15 10 20

      Sample Output 10 15 20

      HINT 用if語句判斷各種情況可以解決這個問題。

      Append Code #include int main(){

      int a,b,c;

      scanf(”%d%d%d“,&a,&b,&c);

      if(a>=b)

      {

      if(b>=c)

      printf(”%d %d %dn“,c,b,a);

      else if(c>=a)

      printf(”%d %d %dn“,b,a,c);

      else

      printf(”%d %d %dn“,b,c,a);

      }

      else

      {

      if(a>=c)

      printf(”%d %d %dn“,c,a,b);

      else if(b>=c)

      printf(”%d %d %dn“,a,c,b);

      else

      printf(”%d %d %dn“,a,b,c);

      } }

      14.Problem F: 奇怪的求和之一 Description 給定3個正整數a、b和c,按照如下規(guī)則求和: 如果這個數字是偶數,則累加到和中;

      如果這個數字是奇數,則將大于該數的最小偶數累加到和中。

      Input 三個正整數,均在100以內。

      Output 一個和。

      Sample Input 2 3 5

      Sample Output 12

      HINT 如果不會使用分支語句,可使用條件運算符判斷到底將哪個數累積到和中。

      Append Code #include int main(){

      int a,b,c;

      scanf(”%d%d%d“,&a,&b,&c);

      if(a%2!=0)a++;

      if(b%2!=0)b++;

      if(c%2!=0)c++;

      printf(”%dn“,a+b+c);

      }

      15.Problem G: 你過線了嗎? Description 經過四年的學習,你決定報考我國著名的“285”高校之一的北青大學,經過認真的復習,殘酷的考試,終于知曉了自己的考試成績,也知道了北青大學的錄取分數線,請你編程判斷,自己過線了嗎? Input 輸入有2行,第一行有4個正整數,分別表示三門課程的分數線以及總分分數線。第二行有3個非負整數,分別表示你考的三門課程的成績。

      Output 如果你的三門課程成績都不低于相應課程的分數線,且你的考試總分也不低于北青大學的總分分數線要求,則輸出“congratulations”,否則輸出“sorry”。

      Sample Input 70 80 70 240 80 80 82

      Sample Output congratulations

      HINT 如果你不會使用分支語句,同樣可以使用條件運算符實現該程序。

      Append Code #include int main(){

      int a,b,c,d,e,f,g,h;

      scanf(”%d %d %d %dn%d %d %d“,&a,&b,&c,&d,&e,&f,&g);

      h=e+f+g;

      if(e>=a&&f>=b&&g>=c&&h>=d)

      printf(”congratulations“);

      else

      printf(”sorry“);} 16.Problem I: A+B Problem(II): Input/Output

      Practice Description 計算a+b,0<=a,b<1000。

      Input 輸入的第一行是一個整數N,后面有N對整數a和b,每對a和b占一行,a,b用空格分開。

      Output 每行輸出一個a+b的和,順序與輸入對應。

      Sample Input 2 1 2 10 20

      Sample Output 3 30

      HINT N給出了測試樣例數,用for循環(huán)處理方便。

      Append Code #include int main(){

      int n,a,b,i;Scanf(“%d”,&n);For(i=0;i

      17.Problem H: A+B Problem Description 計算a+b,0<=a,b<1000。

      Input 輸入有多對整數a和b組成,每對a和b占一行,a,b用空格分開。

      Output 每行輸出一個a+b的值,順序與輸入對應。

      Sample Input 1 2 10 20

      Sample Output 3 30

      HINT OJ系統(tǒng)上測試輸入結束符為EOF(End Of File),其值為-1。用scanf()把文件所有內容讀完后,會讀到EOF,所以可以用來判斷輸入是否完成,測試時可以用Ctrl+Z產生EOF。本題解法參看FAQ。Append Code #include int main(){

      int a,b;

      while(scanf(”%d%d“,&a,&b)!=EOF){

      printf(”%dn“,a+b);

      }

      return 0;}

      18.Problem A: 判斷是否是元音字母 Description 輸入一個英文字母,判斷是否是元音字母。元音字母是:a,e,i,o u,A,E,I,O,U

      Input 輸入一個英文字母

      Output 是元音字母,輸出“yes”,否則輸出“no”,行尾沒有回車。

      Sample Input A

      Sample Output yes

      HINT Append Code #include void main(){

      char ch;

      scanf(”%c“,&ch);

      if(ch>='A'&&ch<='Z')

      ch=ch+32;

      if(ch=='a')

      printf(”yes“);

      else if(ch=='e')

      printf(”yes“);

      else if(ch=='i')

      printf(”yes“);

      else if(ch=='o')

      printf(”yes“);

      else if(ch=='u')

      printf(”yes“);

      else

      printf(”no“);

      }

      19.Problem B: 按順序輸出三個數 Description 對于輸入的3個整數,按照從小到大的順序輸出。

      Input 輸入3個int類型內的整數,兩兩之間用一個空格隔開。

      Output 按照從小到大的順序輸出上述三個數,兩兩之間用一個空格隔開。

      Sample Input 2 1 3 Sample Output 1 2 3

      HINT Append Code #include void main(){

      int a,b,c,temp;

      scanf(”%d%d%d“,&a,&b,&c);

      if(a

      {

      temp=a;

      a=b;

      b=temp;

      }

      if(a

      {

      temp=a;

      a=c;

      c=temp;

      }

      if(b

      {

      temp=b;

      b=c;

      c=temp;

      }

      printf(”%d %d %dn“,c,b,a);}

      20.Problem E: Description 判斷輸入整數的奇偶性。

      判斷奇偶數 Input 輸入為一個整數。

      Output 輸出只有一行,代表判斷結果。如果輸入的整數n是一個偶數,輸出: n is an even number.否則輸出:

      n is an odd number.見樣例。

      Sample Input 12

      Sample Output 12 is an even number.HINT Append Code #include int main(){

      int a;

      scanf(”%d“,&a);

      if(a%2==0)

      printf(”%d is an even number.“,a);

      else

      printf(”%d is an odd number.“,a);}

      21.Problem A: 判斷兩個整數的大小關系 Description 輸入2個整數a和b,如果a>b,則輸出1,否則輸出0。

      Input 兩個整數a和b,均不超過int類型的表示范圍。

      Output 表示a>b的結果:如果a>b,則輸出1,否則輸出0。

      Sample Input 3 4

      Sample Output 0

      HINT

      Append Code #include int main(){ int a,b;scanf(”%d %d“,&a,&b);if(a>b)

      printf(”1“);

      else

      printf(”0“);return 0;} 22.Problem D: 成績的等級 Description 把百分制的考試成績轉換成五級制的成績: 90~100:Excellent 80~89:Good 70~79:Average 60~69:Pass 0~59:Failing

      不在0~100之間的輸入是非法數據,輸出“Error”。

      Input 輸入多行,每行一個整數。

      Output 輸入所對應的成績等級。

      Sample Input-1 81 92 35 68 72 100

      Sample Output Error Good Excellent Failing Pass Average Excellent HINT 用switch語句解決這個問題比較方便。

      Append Code #include int main(){

      int score;

      while(scanf(”%d“,&score)!=EOF)

      {

      if(score<0||score>100)

      printf(”Errorn“);

      else

      {

      switch(score/10)

      {

      case 0:

      case 1:

      case 2:

      case 3:

      case 4:

      case 5:printf(”Failingn“);break;

      case 6:printf(”Passn“);break;

      case 7:printf(”Averagen“);break;

      case 8:printf(”Goodn“);break;

      case 9:

      case 10:printf(”Excellentn“);break;

      }

      }

      }

      return 0;}

      23.Problem E: 輸出是m的倍數或n的倍數、但不是

      m和n的公倍數的數 Description 輸出1~k之間是m的倍數或n的倍數、但不是m和n的公倍數的數,其中1<=m,n

      Input 輸入三個整數,依次為k、m、n。

      Output 從小到大輸出符合題意的所有整數,兩數之間用一個空格分開。

      Sample Input 15 2 3

      Sample Output 2 3 4 8 9 10 14 15

      HINT 難點在于輸出格式的控制:空格在數的中間,學會用循環(huán)時邊界情況的特殊處理。

      Append Code #include int main(){ int k,m,n,a,i=1;scanf(”%d %d %d“,&k,&m,&n);if(m

      a=m;else

      a=n;printf(”%d“,a);for(i=a+1;i<=k;i++){

      }

      if((i%m==0&&i%n!=0)||(i%n==0&&i%m!=0))

      printf(” %d“,i);} return 0;

      24.Problem B: 兩整數相加減 Description 計算a+b和a-b。

      Input 輸入為一對整數a和b。a,b用空格分開。

      Output 輸出a+b和a-b的計算結果,各占一行。

      Sample Input 1 2

      Sample Output 3-1

      HINT Append Code #include int main(){ int a,b;scanf(”%d %d“,&a,&b);

      printf(”%dn“,a+b);

      printf(”%dn“,a-b);} 25 Problem C: 它滿足條件嗎? Description 需要判斷給定的一個整數是否同時滿足如下三個條件: 1.它是一個完全平方數。2.它是一個偶數。3.它是一個正數。

      注:若一個數能表示成某個自然數的平方的形式,則稱這個數為完全平方數。例如:

      0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529 Input 一個int范圍內的整數。

      Output 如果輸入的數字滿足條件,則輸出yes,否則輸出no。

      Sample Input 100

      Sample Output yes

      HINT 注意邏輯表達式判斷三個條件的順序。如果你不會使用分支語句,同樣可以使用條件運算符實現該程序。

      庫函數sqrt()可以用于求一個數的平方根。

      Append Code #include #include int main(){ int a;scanf(”%d“,&a);

      if(a==sqrt(a)*sqrt(a)&&a%2==0&&a>0)

      printf(”yes“);

      else

      printf(”no“);}

      26.Problem F: 多路分支 Description 編寫一個完整的程序,運行時向用戶提問”你考試考了多少分?(0-100)“接受輸入后判斷其等級并顯示出來等級: 優(yōu):90<=分數<=100 良:80<=分數<90 中:60<=分數<80 差:0<=分數<60

      Input 輸入任意一個整數分數值,顯示等級;再輸入任意一個整數分數值,顯示等級;....直到測試數據較充分,可輸入-1止。

      Output 對任意輸入的分數值,輸出對應的等級,直到輸入的數為-1時才退出運行.Sample Input 102 100 90 80 70 60 50 0-80-1

      Sample Output grad must between 0 and 100 優(yōu)

      優(yōu)

      grad must between 0 and 100 grad must between 0 and 100

      HINT Append Code #include int main(){

      int x;

      while(scanf(”%d“,&x)!=EOF)

      {

      if(x<0||x>100)

      printf(”grad must between 0 and 100n“);

      else if(x>=90)

      printf(”優(yōu)n“);

      else if(x>=80)

      printf(”良n“);

      else if(x>=60)

      printf(”中n“);

      else if(x>=0)

      printf(”差n“);

      }

      return 0;} Problem D: 有多少人? Description 學校舉行運動會,如果全體學生按照3人一隊列隊,則多了1個人;如果按照4人一隊列隊,則多了2個人;如果按照5人一隊排隊,則多了3個人。請問這個學校有多少學生?

      Input 一個int類型的正整數N,是學生人數的上界,即:該校學生數不超過N。

      Output 所有可能的學生數,每個數占一行。

      Sample Input 200

      Sample Output 58 118 178

      HINT Append Code #include #include int main(){

      int n,i;

      scanf(”%d“,&n);

      for(i==1;i<=n;i++){ if(i%3==1&&i%4==2&&i%5==3)

      printf(”%dn“,i);}

      return 0;} Problem C: 正負數各有幾個? Description 輸入若干個整數,求其中正數、負數的個數。

      Input 輸入分為2行:第一行是一個數字N>0,表示下面有N個整數。第2行是N個整數,都是int類型的。

      Output 輸出所輸入的N個整數的正數個數和負數個數,并用空格分開2個輸出。Sample Input 10 2 3 4 5-1-2-3-4-5

      Sample Output 5 5

      HINT 貌似還有一種叫做0的數。

      Append Code #include int main(){

      int n,a,i,num1=0,num2=0;

      scanf(”%d“,&n);for(i=0;i

      {

      scanf(”%d“,&a);

      if(a>0)

      num1++;

      else if(a<0)

      num2++;

      }

      printf(”%d %dn“,num1,num2);

      return 0;} Problem A: A+B Problem(III): Input/Output

      Practice Description 計算a+b,0<=a,b<1000。

      Input 輸入有多對整數a和b組成,每對a和b占一行,a,b用空格分開。當測試樣為0 0時表示輸入結束,0 0不參與運算。

      Output 每行輸出一個a+b的值,順序與輸入對應。

      Sample Input 1 2 10 20 0 0

      Sample Output 3 30

      HINT 練習break的使用。

      Append Code #include int main(){ int a,b;while(scanf(”%d %d“,&a,&b)!=EOF)

      {

      if(a!=0||b!=0)

      }

      printf(”%dn“,a+b);

      else

      break;

      return 0;} 30 Problem B: A+B Problem(IV): Input/Output

      Practice Description 計算a+b,0<=a,b<1000。

      Input 輸入有多對整數a和b組成,每對a和b占一行,a,b用空格分開。

      Output 每行輸出一個a+b的值,順序與輸入對應。每個格式樣例之間用一個空行分隔開。

      Sample Input 1 2 10 20 15 35

      Sample Output 3 30 50

      HINT 由于輸出的和比空行多一個,所以全部計算放在一個循環(huán)里是不行的,必須要特殊處理開頭或者結尾。

      Append Code #include int main(){ int a,b,n=0;while(scanf(”%d %d“,&a,&b)!=EOF){

      n++;

      if(n==1)

      printf(”%dn“,a+b);

      else

      printf(”n%dn“,a+b);

      }

      return 0;}

      Problem C: n個數的最大值和最小值 Description 找出n個數中最大的數和最小的數,并將它們的值輸出出來。

      Input 輸入為n+1個整數,都在int類型范圍內。這些數可能用若干空格或者換行符分隔開。輸入的第1個數為n,表示后續(xù)有n個數輸入。從輸入的第2個數開始,求出直到第n+1個數中最大的數和最小的數。

      Output 輸出為兩行,格式見sample。

      Sample Input 3 0 1-1

      Sample Output The maximum number is 1.The minimum number is-1.HINT 分隔符是空格還是回車都是空白符,對scanf(”%d“)來說沒有區(qū)別;先讀入n,然后用for循環(huán)就很容易控制讀入n個數的過程。

      Append Code #include int main(){

      int n,i,max,min;

      scanf(”%d“,&n);

      int a[n];

      for(i=0;i

      scanf(”%d“,&a[i]);

      max=a[0];

      min=a[0];

      for(i=0;i

      {

      if(max

      max=a[i];

      if(min>a[i])

      min=a[i];

      }

      printf(”The maximum number is %d.n“,max);

      printf(”The minimum number is %d.“,min);

      return 0;} 32.Problem D: 求100以內的素數 Description 素數是只能被1和自身整除的正整數,根據數學定義1不是素數。素數也叫質數。

      Input 輸入為兩個整數m和n,滿足0<=m<=n<=100。

      Output 從大到小輸出m~n之間的所有素數,一個素數一行。如果m~n之間沒有素數,則不輸出任何數。

      輸出的所有數在兩行“=====”之間。

      Sample Input 2 12

      Sample Output ===== 11 7 5 3 2 =====

      HINT 利用素數的數學規(guī)律可以很容易的解出此題,題目給出的數據范圍是關鍵。

      Append Code #include #include int main(){ int m,n,i,j,k,t;scanf(”%d %d“,&m,&n);printf(”=====n“);for(i=n;i>=m;i--){

      t=0;

      for(j=2;j<=sqrt(i);j++)

      if(i%j==0)

      t=1;

      if(t==0&&i>1)

      printf(”%dn“,i);} printf(”=====“);return 0;} 33.Problem E: 是否構成三角形? Description 給出三個整數,代表三條邊的長度,判斷這三條邊的長度是否能構成一個三角形?

      Input 第一行是n(1<=n<=100),表示有n組測試數據

      接下來有n行,每一行包含三個整數,表示三個邊長(1<=邊長<=100)

      Output 如果三條邊能構成三角形,輸出YES,否則輸出NO

      Sample Input 3 1 2 3 2 8 7 20 20 1

      Sample Output NO YES YES

      HINT Append Code #include int main(){ int a,b,c,n,i;scanf(”%d“,&n);for(i=0;i

      {scanf(”%d%d%d“,&a,&b,&c);

      if(a+b>c&&a+c>b&&b+c>a)

      printf(”YESn“);else printf(”NOn“);}

      return 0;} 34.Problem C: 簡單的整數排序 Description 對給出的若干整數按從小到大排序。

      Input 輸入的第一個數為n(n<=1000),后接n個整數。

      Output 按從小到大的順序輸出這些整數,每兩個整數之間用一個空格分隔開,最后一個整數后面沒有空格。

      Sample Input 10 3 9 1 5 2 8 5 6 7 3

      Sample Output 1 2 3 3 5 5 6 7 8 9

      HINT 排序前必須把所有的整數都存儲下來。因為只有最多1000個數,1秒的時間足夠任何排序算法運行處結果來。

      Append Code #include int main(){

      int c,i,n,j;

      int a[1000];

      scanf(”%d“,&n);

      for(i=0;i

      scanf(”%d“,&a[i]);

      for(i=1;i<=n-1;i++)

      {

      for(j=0;j

      {

      if(a[j]>a[j+1])

      {

      c=a[j];

      a[j]=a[j+1];

      a[j+1]=c;

      }

      }

      }

      printf(”%d“,a[0]);

      for(i=1;i

      printf(” %d“,a[i]);

      return 0;}

      35.Problem A: Description

      購物的路程 Saya和Kudo一起去購物。假定她們逛的街是一條直線,而商鋪是這條直線上的一些點。她們將車停在該直線最左端的店鋪處,然后從左向右開始逛每一個店鋪,然后從最右邊的店鋪再返回到停車處。你的任務是計算她們走了多少路。

      Input 輸入有多組。每一組的第一行是N(0

      Output 對每組輸入,輸出她們走的路長。

      Sample Input 4 13 89 37 6 7 30 41 14 39 42 0

      Sample Output 152 70

      HINT Append Code #include int main(){

      int n,i,max,min,a[100001];

      while(scanf(”%d“,&n)&&n!=0)

      {

      scanf(”%d“,&a[0]);

      min=max=a[0];

      for(i=1;i

      {

      scanf(”%d“,&a[i]);

      if(a[i]>max)

      max=a[i];

      if(a[i]

      min=a[i];

      }

      printf(”%dn“,(max-min)*2);

      }

      return 0;} 36.Problem B: 求累加和 Description 編程求min~max的累加和(含min和max),其中max>=min>0。部分程序已經給出,請?zhí)畛淦渲械目瞻渍Z句,并提交填充后的完整程序。

      Input 輸入為多行。第一行是一個整數N>0,表示后面有N個測試用例。后面有N行,每行包含2個整數,分別是min和max。

      Output 輸出為N行,每個測試用例的計算結果占據一行。每行的格式為: case i:sum=s.其中i表示測試用例的編號(從1開始),s是該測試用例對應的累加和(設不超過int的表示范圍)。

      Sample Input 3 1 10 1 100 1 1

      Sample Output case 1:sum=55.case 2:sum=5050.case 3:sum=1.HINT Append Code #include int main(){

      int n,i,j,max,min,sum;

      scanf(”%d“,&n);

      for(i=0;i

      { sum=0;

      scanf(”%d%d“,&min,&max);

      if(max==min)

      printf(”case %d:sum=%d.n“,i+1,min);

      else

      {

      for(j=min;j<=max;j++)

      sum=sum+j;

      printf(”case %d:sum=%d.n“,i+1,sum);

      }

      } return 0;} 37.Problem G: 順序輸出字母 Description 按字母順序輸出兩個字母st和ed之間的所有字母,但不包括st和ed。不輸出逆序。

      Input 兩個字母st和ed,都是大寫字母,用一個空格分開。

      Output 在一行內按順序輸出st和ed之間的所有字母,但不包括st和ed。例如:

      輸入為A和E,則輸出為BCD;

      輸入為A和B,則什么字母也不輸出,只有一個空行; 輸入為E和A,也是什么字母也不輸出,只有一個空行。最后要輸出一行(行尾不回車): ***END***

      Sample Input A C

      Sample Output B

      ***END***

      HINT Append Code #include int main(){

      char st,ed,a;

      int i;

      scanf(”%c%c%c“,&st,&a,&ed);

      {

      for(i=st+1;i

      printf(”%c“,i);

      printf(”n***END***“);

      }

      return 0;} 38.Problem F: 單字母變換 Description Tom和Jack是密碼學愛好者,他們在聊天時經常使用一些暗語。他們使用的一種最簡單的暗語是:將要說的每句話里面的英文字母變成這個字母之后的某個字母?,F在要求你寫一個程序,將一個字母變成它之后的某個字母。

      Input 輸入有2個:一個大寫字母c和一個正整數d(0

      Output 輸出字母c之后的第d個字母。大小寫與c一致。如果c之后的某個字母已經超出'Z',則再從字母'A'開始計數。

      如:c='A',d=3,則輸出應為:D。若:c='Y',d=3,則輸出應為:B。

      Sample Input A 3

      Sample Output D

      HINT Append Code #include int main(){

      char c;

      int d;

      scanf(”%c%d“,&c,&d);

      if(c+d<='Z')

      printf(”%c“,c+d);

      else

      printf(”%c“,c+d-26);

      return 0;}

      39.Problem B: 登錄密碼驗證 Description 編寫一個程序,模擬用戶登錄系統(tǒng)的密碼驗證過程。系統(tǒng)提供給用戶的密碼長度最長為20個字符,若密碼輸入錯誤可以再次輸入。但為了保證用戶密碼安全,若連續(xù)輸入密碼錯誤超過5次就會鎖定賬號一段時間。

      Input 輸入為若干個串,至EOF結束。輸入的第一個串是用戶的正確密碼,后面的串為模擬用戶登錄時的輸入的密碼。

      Output 每次輸入錯誤的密碼,輸出一個“Wrong!”,若輸入的密碼為正確的,輸出一個“Welcome!”,并結束密碼測試。若前5次輸入的密碼都是錯誤的,則后面的輸入中不管是否有正確的密碼都輸出“Out of limited!”。

      Sample Input abcdefg

      123456 kkkkkkkk abcdefg

      Sample Output Wrong!Wrong!Welcome!

      HINT 輸入可以用scanf(”%s“)處理,密碼比較用字符串的比較可以完成。

      Append Code #include #include int main(){

      char a[20],b[20];

      int i,j=1;

      scanf(”%s“,a);

      while(scanf(”%s“,b)!=EOF)

      {

      if(j<=5)

      {

      if((strcmp(a,b)==0))

      {

      printf(”Welcome!n“);

      break;

      }

      else

      printf(”Wrong!n“);

      j++;

      }

      else printf(”O(jiān)ut of limited!n");

      } } 40.Problem C: 兔子的繁殖問題 Description 假設一對兔子每月能生一對小兔(一雌一雄),每對小兔出生后的下一個月是沒有繁殖能力的,至出生后的第三個月開始又可以每月生一隊小兔,問從一對剛出生的小兔開始,經過若干個月后一共有多少兔子(假設在此過程中兔子沒有死亡)?

      這個問題是意大利數學家菲波那契(Fibonacci)在他1202年出版的《算盤全書》中提出來的,從第一對剛出生的小兔開始每月的兔子數被乘坐菲波那契序列。

      Input 輸入的第一個數為n,接下來有n個數字。每個數字為一個月份m(m<=45)。

      Output 輸出為n行,每行為第m個月后的兔子總數。

      第三篇:C 語言程序設計

      《C 語言程序設計》主要在計算機軟件、計算機網絡、計算機應用、通信技術、智能電子、電子信息工程、多媒體以及核工程與核技術等專業(yè)中開設,是電子信息類、機械類等工科專業(yè)的重要專業(yè)基礎課。

      本校從2001至今,每年都開設《C語言程序設計》課程,由于,我校最開始時的特殊情況,主要把重點放在C語言中的各類重點、難點的語法、語義上,使得學生經過比較復雜和痛苦的過程后,對C語言在使用上很難做到自己編寫程序。而且很多學生產生了畏懼心理。

      2004年,學院成立計算機科學與技術系,為了更好學習和掌握C語言,計算機科學與技術專業(yè)和計算機維護專業(yè)(計算機應用技術前身)除了開設《C語言程序設計》課程外,在后續(xù)一學期還開設了《C語言程序設計課程設計》,使得計算機專業(yè)學生編程思想和能力得到了極大提高。

      2005年,為了讓我院工科學生更好的掌握C語言編程以及通過四川省計算機二級考試,在《C語言程序設計》課程后設置《C語言程序設計課程設計》,極大地提高了學生的動手機會和能力,過級率顯著提高!

      2007年,依托我校建設精品課程的契機,我們將C語言中的各個知識點進行重新規(guī)整,提出適用于三本院校學生的語言設計學習的方法。我們提出,先了解C語言,再學習C語言,再用C語言的思想。即在開始時讓學生初步知道C語言,然后引入比較簡單的運算符以及基本輸入、輸出和簡單的順序結構程序設計。通過這樣的方式,我們發(fā)現,學生在C語言的學習就不會從開始的時候陷入大量難懂的語法、語義和數據結構中。有了以上鋪墊再層層進入,最終進入復雜的各類數據結構以及指針等學習。通過以上的內容規(guī)整后,教學效果有明顯提高。

      第四篇:經典C語言程序設計例題

      經典C語言程序設計例題

      【程序1】

      題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少? 1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去

      掉不滿足條件的排列。2.程序源代碼: main(){ int i,j,k;printf(“n”);for(i=1;i<5;i++)

      /*以下為三重循環(huán)*/ for(j=1;j<5;j++)

      for(k=1;k<5;k++)

      {

      if(i!=k&&i!=j&&j!=k)

      /*確保i、j、k三位互不相同*/

      printf(“%d,%d,%dn”,i,j,k);

      } }

      【程序2】

      題目:企業(yè)發(fā)放的獎金根據利潤提成。利潤(I)低于或等于10萬元時,獎金可提10%;利潤高

      于10萬元,低于20萬元時,低于10萬元的部分按10%提成,高于10萬元的部分,可可提

      成7.5%;20萬到40萬之間時,高于20萬元的部分,可提成5%;40萬到60萬之間時高于

      40萬元的部分,可提成3%;60萬到100萬之間時,高于60萬元的部分,可提成1.5%,高于

      100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發(fā)放獎金總數?

      1.程序分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。

      2.程序源代碼: main(){ long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf(“%ld”,&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)

      bonus=i*0.1;else if(i<=200000)

      bonus=bonus1+(i-100000)*0.075;

      else if(i<=400000)

      bonus=bonus2+(i-200000)*0.05;

      else if(i<=600000)

      bonus=bonus4+(i-400000)*0.03;

      else if(i<=1000000)

      bonus=bonus6+(i-600000)*0.015;

      else

      bonus=bonus10+(i-1000000)*0.01;printf(“bonus=%d”,bonus);}

      ---------------【程序3】

      題目:一個整數,它加上100后是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?

      1.程序分析:在10萬以內判斷,先將該數加上100后再開方,再將該數加上268后再開方,如果開方后

      的結果滿足如下條件,即是結果。請看具體分析: 2.程序源代碼: #include “math.h” main(){ long int i,x,y,z;for(i=1;i<100000;i++){ x=sqrt(i+100);/*x為加上100后開方后的結果*/

      y=sqrt(i+268);/*y為再加上168后開方后的結果*/

      if(x*x==i+100&&y*y==i+268)/*如果一個數的平方根的平方等于該數,這說明此數是完全平方數*/

      printf(“n%ldn”,i);} }---------------【程序4】

      題目:輸入某年某月某日,判斷這一天是這一年的第幾天?

      1.程序分析:以3月5日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊

      情況,閏年且輸入月份大于3時需考慮多加一天。2.程序源代碼: main(){ int day,month,year,sum,leap;printf(“nplease input year,month,dayn”);scanf(“%d,%d,%d”,&year,&month,&day);switch(month)/*先計算某月以前月份的總天數*/ { case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf(“data error”);break;} sum=sum+day;/*再加上某天的天數*/ if(year%400==0||(year%4==0&&year%100!=0))/*判斷是不是閏年*/

      leap=1;else

      leap=0;if(leap==1&&month>2)/*如果是閏年且月份大于2,總天數應該加一天*/ sum++;printf(“It is the %dth day.”,sum);}---------------【程序5】

      題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。

      1.程序分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,然后再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。

      2.程序源代碼: main(){ int x,y,z,t;scanf(“%d%d%d”,&x,&y,&z);if(x>y){t=x;x=y;y=t;} /*交換x,y的值*/ if(x>z){t=z;z=x;x=t;}/*交換x,z的值*/ if(y>z){t=y;y=z;z=t;}/*交換z,y的值*/ printf(“small to big: %d %d %dn”,x,y,z);}---------------【程序6】

      題目:用*號輸出字母C的圖案。

      1.程序分析:可先用'*'號在紙上寫出字母C,再分行輸出。2.程序源代碼: #include “stdio.h” main(){ printf(“Hello C-world!n”);printf(“ ****n”);printf(“ *n”);printf(“ * n”);printf(“ ****n”);}---------------【程序7】

      題目:輸出特殊圖案,請在c環(huán)境中運行,看一看,Very Beautiful!1.程序分析:字符共有256個。不同字符,圖形不一樣。

      2.程序源代碼: #include “stdio.h” main(){ char a=176,b=219;printf(“%c%c%c%c%cn”,b,a,a,a,b);printf(“%c%c%c%c%cn”,a,b,a,b,a);printf(“%c%c%c%c%cn”,a,a,b,a,a);printf(“%c%c%c%c%cn”,a,b,a,b,a);printf(“%c%c%c%c%cn”,b,a,a,a,b);}---------------【程序8】

      題目:輸出9*9口訣。

      1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。2.程序源代碼: #include “stdio.h” main(){ int i,j,result;printf(“n”);for(i=1;i<10;i++)

      { for(j=1;j<10;j++)

      {

      result=i*j;

      printf(“%d*%d=%-3d”,i,j,result);/*-3d表示左對齊,占3位*/

      }

      printf(“n”);/*每一行后換行*/

      } }---------------【程序9】

      題目:要求輸出國際象棋棋盤。

      1.程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。

      2.程序源代碼: #include “stdio.h” main(){ int i,j;for(i=0;i<8;i++){

      for(j=0;j<8;j++)

      if((i+j)%2==0)

      printf(“%c%c”,219,219);

      else

      printf(“ ”);

      printf(“n”);} }---------------【程序10】

      題目:打印樓梯,同時在樓梯上方打印兩個笑臉。

      1.程序分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數。2.程序源代碼: #include “stdio.h” main(){ int i,j;printf(“11n”);/*輸出兩個笑臉*/ for(i=1;i<11;i++){ for(j=1;j<=i;j++)

      printf(“%c%c”,219,219);printf(“n”);} } 【程序11】

      題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月

      后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? 1.程序分析: 兔子的規(guī)律為數列1,1,2,3,5,8,13,21....2.程序源代碼: main(){ long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++){ printf(“%12ld %12ld”,f1,f2);

      if(i%2==0)printf(“n”);/*控制輸出,每行四個*/

      f1=f1+f2;/*前兩個月加起來賦值給第三個月*/

      f2=f1+f2;/*前兩個月加起來賦值給第三個月*/ } }---------------【程序12】

      題目:判斷101-200之間有多少個素數,并輸出所有素數。

      1.程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。

      2.程序源代碼: #include “math.h” main(){ int m,i,k,h=0,leap=1;printf(“n”);for(m=101;m<=200;m++)

      { k=sqrt(m+1);

      for(i=2;i<=k;i++)

      if(m%i==0)

      {leap=0;break;}

      if(leap){printf(“%-4d”,m);h++;

      if(h%10==0)

      printf(“n”);

      }

      leap=1;

      } printf(“nThe total is %d”,h);}---------------【程序13】

      題目:打印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等于該數

      本身。例如:153是一個“水仙花數”,因為153=1的三次方+5的三次方+3的三次方。

      1.程序分析:利用for循環(huán)控制100-999個數,每個數分解出個位,十位,百位。2.程序源代碼: main(){ int i,j,k,n;printf(“'water flower'number is:”);for(n=100;n<1000;n++){

      i=n/100;/*分解出百位*/

      j=n/10%10;/*分解出十位*/

      k=n%10;/*分解出個位*/

      if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

      {

      printf(“%-5d”,n);

      } } printf(“n”);}---------------【程序14】

      題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。

      程序分析:對n進行分解質因數,應先找到一個最小的質數k,然后按下述步驟完成:(1)如果這個質數恰等于n,則說明分解質因數的過程已經結束,打印出即可。

      (2)如果n<>k,但n能被k整除,則應打印出k的值,并用n除以k的商,作為新的正整數你n,重復執(zhí)行第一步。

      (3)如果n不能被k整除,則用k+1作為k的值,重復執(zhí)行第一步。2.程序源代碼:

      /* zheng int is divided yinshu*/ main(){ int n,i;printf(“nplease input a number:n”);scanf(“%d”,&n);printf(“%d=”,n);for(i=2;i<=n;i++){

      while(n!=i)

      {

      if(n%i==0)

      { printf(“%d*”,i);

      n=n/i;

      }

      else

      break;

      } } printf(“%d”,n);}---------------【程序15】

      題目:利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。

      1.程序分析:(a>b)?a:b這是條件運算符的基本例子。2.程序源代碼: main(){ int score;char grade;printf(“please input a scoren”);scanf(“%d”,&score);grade=score>=90?'A':(score>=60?'B':'C');printf(“%d belongs to %c”,score,grade);}---------------【程序16】

      題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。1.程序分析:利用輾除法。

      2.程序源代碼: main(){ int a,b,num1,num2,temp;printf(“please input two numbers:n”);scanf(“%d,%d”,&num1,&num2);if(num1

      num1=num2;

      num2=temp;} a=num1;b=num2;while(b!=0)/*利用輾除法,直到b為0為止*/ {

      temp=a%b;

      a=b;

      b=temp;} printf(“gongyueshu:%dn”,a);printf(“gongbeishu:%dn”,num1*num2/a);}---------------【程序17】

      題目:輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數字和其它字符的個數。1.程序分析:利用while語句,條件為輸入的字符不為'n'.2.程序源代碼: #include “stdio.h” main(){char c;int letters=0,space=0,digit=0,others=0;printf(“please input some charactersn”);while((c=getchar())!='n'){ if(c>='a'&&c<='z'||c>='A'&&c<='Z')

      letters++;else if(c==' ')

      space++;

      else if(c>='0'&&c<='9')

      digit++;

      else

      others++;} printf(“all in all:char=%d space=%d digit=%d others=%dn”,letters, space,digit,others);}---------------【程序18】 題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時

      共有5個數相加),幾個數相加有鍵盤控制。1.程序分析:關鍵是計算出每一項的值。2.程序源代碼: main(){ int a,n,count=1;long int sn=0,tn=0;printf(“please input a and nn”);scanf(“%d,%d”,&a,&n);printf(“a=%d,n=%dn”,a,n);while(count<=n){

      tn=tn+a;

      sn=sn+tn;

      a=a*10;

      ++count;} printf(“a+aa+...=%ldn”,sn);}---------------【程序19】

      題目:一個數如果恰好等于它的因子之和,這個數就稱為“完數”。例如6=1+2+3.編程

      找出1000以內的所有完數。

      1.程序分析:請參照程序<--上頁程序14.2.程序源代碼: main(){ static int k[10];int i,j,n,s;for(j=2;j<1000;j++){ n=-1;s=j;

      for(i=1;i

      {

      if((j%i)==0)

      { n++;

      s=s-i;

      k[n]=i;

      }

      } if(s==0){ printf(“%d is a wanshu”,j);for(i=0;i

      題目:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地時,共經過多少米?第10次反彈多高? 1.程序分析:見下面注釋 2.程序源代碼: main(){ float sn=100.0,hn=sn/2;int n;for(n=2;n<=10;n++){

      sn=sn+2*hn;/*第n次落地時共經過的米數*/

      hn=hn/2;/*第n次反跳高度*/ } printf(“the total of road is %fn”,sn);printf(“the tenth is %f metern”,hn);} 【程序21】

      題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個

      第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下 的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。

      1.程序分析:采取逆向思維的方法,從后往前推斷。2.程序源代碼: main(){ int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2;/*第一天的桃子數是第2天桃子數加1后的2倍*/ x2=x1;day--;} printf(“the total is %dn”,x1);}---------------【程序22】

      題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定

      比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出

      三隊賽手的名單。

      1.程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。

      2.程序源代碼: main(){ char i,j,k;/*i是a的對手,j是b的對手,k是c的對手*/ for(i='x';i<='z';i++)for(j='x';j<='z';j++){ if(i!=j)

      for(k='x';k<='z';k++)

      { if(i!=k&&j!=k)

      { if(i!='x'&&k!='x'&&k!='z')

      printf(“order is a--%ctb--%ctc--%cn”,i,j,k);

      }

      } } }---------------【程序23】

      題目:打印出如下圖案(菱形)

      * *** ****** ******** ****** *** * 1.程序分析:先把圖形分成兩部分來看待,前四行一個規(guī)律,后三行一個規(guī)律,利用雙重

      for循環(huán),第一層控制行,第二層控制列。2.程序源代碼: main(){ int i,j,k;for(i=0;i<=3;i++){ for(j=0;j<=2-i;j++)

      printf(“ ”);for(k=0;k<=2*i;k++)

      printf(“*”);printf(“n”);} for(i=0;i<=2;i++){ for(j=0;j<=i;j++)

      printf(“ ”);for(k=0;k<=4-2*i;k++)

      printf(“*”);printf(“n”);} }---------------【程序24】

      題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。1.程序分析:請抓住分子與分母的變化規(guī)律。2.程序源代碼: main(){ int n,t,number=20;float a=2,b=1,s=0;for(n=1;n<=number;n++){ s=s+a/b;t=a;a=a+b;b=t;/*這部分是程序的關鍵,請讀者猜猜t的作用*/ } printf(“sum is %9.6fn”,s);}---------------【程序25】

      題目:求1+2!+3!+...+20!的和

      1.程序分析:此程序只是把累加變成了累乘。2.程序源代碼: main(){ float n,s=0,t=1;for(n=1;n<=20;n++){ t*=n;s+=t;} printf(“1+2!+3!...+20!=%en”,s);}---------------【程序26】

      題目:利用遞歸方法求5!。1.程序分析:遞歸公式:fn=fn_1*4!2.程序源代碼: #include “stdio.h” main(){ int i;int fact();for(i=0;i<5;i++)printf(“40:%d!=%dn”,i,fact(i));} int fact(j)int j;{ int sum;if(j==0)sum=1;else sum=j*fact(j-1);return sum;}---------------【程序27】

      題目:利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來。1.程序分析: 2.程序源代碼: #include “stdio.h” main(){ int i=5;void palin(int n);printf(“40:”);palin(i);printf(“n”);} void palin(n)int n;{ char next;if(n<=1){ next=getchar();printf(“n