當前位置:首頁 > 資訊 > info6 > 正文

AnyviewC編程作業系統——支持程序可視化運行、調試和測評

發表于: 2017-02-11   作者:chen_shiqiang   來源:轉載   瀏覽:
摘要: AnyviewC編程作業系統——支持程序可視化運行、調試和測評AnyviewC題庫:C程序設計??例題62--習題239(2012-4-27)1.025?編寫一個C程序,用函數printf(char*s)輸出以下3行信息:第1章?程序設計和C語言(例題0--習題0/2)*********************???VeryGood!???*********************注意:(1)要求

AnyviewC編程作業系統——支持程序可視化運行、調試和測評

AnyviewC題庫:C程序設計  例題62--習題239(2012-4-27)


1.025
 編寫一個C程序,用函數printf(char *s)輸出以下3行信息:1章  程序設計和C語言(例題0--習題0/2)

********************

*    Very Good!    *

********************

注意:(1)要求精確到每個字符、空格、字母及其大小寫。

2)可多次調用printf(char *s),每次僅一個字符串參數。

 

1.055 編寫一個程序,輸入abc三個值,輸出其中最大值。要求不改變下列給定的程序框架內容,填入合適語句,使其成為滿足題目要求的正確程序。

void main()  

{  int a,b,c,max;  

   scanf("%d,%d,%d",&a,&b,&c);  /*請輸入三個數*/

 

 

 

   printf("最大數為:"%d",max);  

}

 

2章  算法——程序的靈魂

3章  最簡單的程序設計——順序結構程序設計(例題49--習題0/61)

(含:數據類型、運算和表達式)

【例題3.010e】顯示字符串

編寫程序,顯示字符串"Let's study C."并換行。

【程序】

void main()

{  printf("Let's study C.\n"); //'\n'為換行符,可出現在字符串中

}

 

【習題3.012】用printf語句顯示一行字符編寫程序,顯示字符串"I am a student."后換行。

【程序】

void main()

{

  printf(    );

}

 

【習題3.013】顯示一行

編寫程序,顯示字符串"C Language Program"后換行。

 

【例題3.020e】用printf語句顯示多個字符串

編寫程序,用printf語句將3個字符串"Let's""study""programming"用空格分隔顯示在同一行。

【程序】

void main()

{  printf("Let's "); //末尾加一個空格,但不換行

   printf("study "); //末尾加一個空格,但不換行

   printf("programming\n"); //顯示后換行

}

 

【習題3.023】用printf語句在一行上顯示多個字符串編寫程序,用printf語句將3個字符串"I""love""China"用空格分隔顯示在同一行。

【程序】

void main()

{  printf(    );

   printf(    );

   printf(    ); //注意:最后要換行

}

 

【例題3.030e】換行顯示

編寫程序,在顯示字符串"C Language"后,換行顯示字符串"C++ Language"

【程序】

void main()

{  printf("C Language\n");   //顯示后換行

   printf("C++ Language\n"); //顯示后換行

}

 

【習題3.032】換行顯示

編寫程序,顯示字符串"Apple is red."后,換行顯示"Banana is yellow."

【程序】

void main()

{  printf(    );

   printf(    ); //最后一行顯示后,通常也換行

}

 

【習題3.033】顯示多行

編寫程序,將字符串"Apple iPad""Apple iPhone""Apple iPod"分三行顯示。注意:最后一行顯示后,也應換行。

 

【例題3.040e】隔行顯示

編寫程序,在顯示字符串"C Language"后,隔1行再顯示字符串"C++ Language"

【程序】

void main()

{  printf("C Language\n");   //顯示后換行

   printf("\n");             //只換行,即隔1行再顯示

   printf("C++ Language\n"); //顯示后換行

}

 

【習題3.042】隔行顯示

編寫程序,在顯示字符串"Apple is red."后,隔1行再顯示"Banana is yellow."

【程序】

void main()

{  printf(    );

   printf(    ); //只換行,實現“隔1行”

   printf(    ); //最后一行顯示后,通常也換行

}

 

【例題3.050e】注釋

編寫程序,顯示字符串"C Language Exercise",要求在主函數之前加上內容為C Language Exercise的注釋。

【程序】

/*C Language Exercise*/  //符合題意的注釋

void main()

{  printf("C Language Exercise\n");//顯示

}

 

【習題3.053】注釋

編寫程序,顯示字符串"C Program",并要求在第一行加注釋"Printf Test"

 

【例題3.060e】整型變量,賦值,四則運算

編寫程序,分別給變量a賦值15和變量b賦值3,然后依次求并顯示兩者的和、差、積、商。

【程序】

void main()

{  int a,b,sum,min,tim,sep; //整形變量說明

   a=15; //賦值

   b=3;  //賦值

   sum=a+b; //

   min=a-b; //

   tim=a*b; //

   sep=a/b; //

   printf("%d+%d=%d\n",a,b,sum);

   printf("%d-%d=%d\n",a,b,min);

   printf("%d*%d=%d\n",a,b,tim);

   printf("%d/%d=%d\n",a,b,sep);

}

 

【習題3.063】整型變量,賦值,加減四則運算

編寫程序,分別給變量a賦值7和變量b賦值5,求ab賦給ca減去b賦給d,并顯示。

【程序】

void main()

{  int a,b,c,d;

   a=  ;  

   b=  ;   

   c=    ; //

   d=    ; //

   printf("%d+%d=%d\n",a,b,c);

   printf("%d-%d=%d\n",a,b,d);

}

 

【例題3.070e】余數

編寫程序,將215÷9的商和余數分別賦給cd

【程序】

void main()

{  int a,b,c,d; //整形變量說明

   a=215; //賦值

   b=9;   //賦值

   c=a/b; //將商賦給c

   d=a%b; //將余數賦給d

   printf("%d/%d=%d...%d\n",a,b,c,d); //顯示

}

 

【習題3.073】整型變量,求商和余數

在以下程序空缺處填寫合適內容,使得程序能夠分別給變量a賦值215,變量b賦值19c賦值75,然后依次求a除以ba除以c的商和余數并顯示結果。

void main()

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

   a=215;

   b=19;

   c=75;

   d=    /*a除以b的商*/

   e=    /*a除以b的余數*/

   f=    /*a除以c的商*/

   g=    /*a除以c的余數*/

   printf("%d/%d=%d...%d\n",a,b,d,e);

   printf("%d/%d=%d...%d\n",a,c,f,g);

}

 

【習題3.076】整型變量,賦值,乘除余四則運算

編寫程序,分別給變量a賦值17和變量b賦值5,求ab賦給ca÷b的商賦給d,余賦給e,并顯示。

【程序】

void main()

{  int a,b,c,d,e;

   a=

   b=

   c=

   d=

   e=

   printf("%d*%d=%d\n",a,b,c); /* 顯示ab的積c */

   printf("%d/%d=%d...%d\n",a,b,d); /* 顯示a除以b的商d */

   printf("%d%%%d=%d...%d\n",a,b,e); /* 顯示a除以b的余數e */

}

 

【例題3.080e】算術表達式

編寫程序,不使用變量,顯示35*25的值。

【程序】

void main()

{  printf("%d*%d=%d\n",35,25,35*25);//顯示結果

}

 

【習題3.083】算術表達式

編寫程序,不使用變量,顯示11+2*3的值。

【程序】

void main()

{   printf("%d+%d*%d=%d\n",       );

}

 

【例題3.090e】算術表達式

編寫程序,先對整型變量a賦值15b賦值10,然后將a+ba-b的商賦給c,并顯示c的值。

【程序】

void main()

{  int a,b,c;

   a=15;

   b=10;

   c=(a+b)/(a-b);

   printf("(%d+%d)/(%d-%d)=%d\n",a,b,a,b,c);//顯示結果

}

 

【習題3.092】算術表達式

編寫程序,先對整型變量a賦值11b賦值2,然后將a/bb-a%10的乘積賦給c,并顯示c的值。

【程序】

void main()

{  int a,b,c;

   a=   ;

   b=   ;

   c=   ;

   printf(    );

}

 

【習題3.093】算術表達式

在以下程序空缺處填寫合適內容,使得程序能夠分別給變量a賦值511,變量b賦值246c賦值257d賦值495,然后求(a+b)(b-c)*(a-d)的商并賦給e和顯示結果。

void main()

{  int a,b,c,d,e;

 

   printf("(%d+%d)/((%d-%d)*(%d-%d))=%d\n",a,b,b,c,a,d,e);

}

 

【例題3.100e】逗號運算符(也稱為順序運算符)

編寫程序,求a*bc*d之和,其中用順序運算符對變量abcd依次賦值為8756

【程序】

void main()

{  int a,b,c,d,timsum;

   a=8,b=7,c=5,d=6; //使用逗號分隔,4個賦值構成一個語句

   timsum=a*b+c*d;

   printf("%d*%d+%d*%d=%d\n",a,b,c,d,timsum);

}

 

【習題3.103

在空缺處填寫合適內容,使得程序能夠在一個語句中,用逗號運算符依次對變量abc賦值為27367,求a+bc的商并賦給d和顯示結果。

void main()

{  int a,b,c,d;

 

   printf("(%d+%d)/%d=%d\n",a,b,c,d);

}

 

【習題3.106】逗號運算符(也稱為順序運算符)

在以下程序空缺處填寫合適內容,使得程序能夠在一個語句中利用逗號運算符依次將-25賦給a5賦給ba/b賦給c,最后顯示c的值。

【程序】

void main()

{  int a,b,c;

   c=

   printf("c=%d\n",c);

}

 

【例題3.110e】重復賦值

編寫程序,對變量ab均賦值為5,變量c賦值為8,分行顯示abc的平方值。

【程序】

void main()

{  int a,b,c;

   a=b=5,c=8; //ab重復賦值

   printf("%d*%d=%d\n",a,a,a*a);

   printf("%d*%d=%d\n",b,b,b*b);

   printf("%d*%d=%d\n",c,c,c*c);

}

 

【習題3.113】重復賦值,表達式,顯示

在以下程序空缺處填寫合適內容,使得程序能夠將變量a和b均賦值為20c賦值為58d賦值為表達式c-a/5除以c-2*b的商,并顯示該表達式和變量d的值的等式。

【程序】

void main()

{  int a,b,c,d;

   a=b=

   d=

   printf("(%d-%d/5)/(%d-2*%d)=%d\n",c,a,c,b,d);

}

 

【例題3.120e】變量初始化

編寫程序,變量ab分別賦值為12320,求ab的乘積。要求在進行變量說明的同時給變量賦值。

【程序】

void main()

{  int a=123,b=20; //在說明變量ab的同時對其賦值(初始化)

   int c;

   c=a*b;

   printf("%d*%d=%d\n",a,b,c);

}

 

【習題3.123】整型變量初始化,表達式,顯示

在以下程序空缺處填寫合適內容,使得程序能夠分別對變量a賦值12b賦值34c賦值56d賦值表達式a*b*c的值,并顯示該表達式和變量d的值的等式。

【程序】

void main()

{

   printf("%d*%d*%d=%d\n",a,b,c,d);

}

 

【例題3.130e】浮點數(實數)

編寫程序,將789.456123賦給變量a28.2468賦給變量b,求ab的和、差、積、商。

【程序】

void main()

{  float a,b,sum,min,tim,sep; //實數型變量說明

   a=789.456123;

   b=28.2468;

   sum=a+b;

   min=a-b;

   tim=a*b;

   sep=a/b;

   

   printf("%f+%f=%f\n",a,b,sum);

   printf("%f-%f=%f\n",a,b,min);

   printf("%f*%f=%f\n",a,b,tim);

   printf("%f/%f=%f\n",a,b,sep);

}

 

【習題3.132】浮點數,賦值,加減四則運算

編寫程序,將1.234賦給變量a23.456賦給變量b,求ab賦給ca減去b賦給d,并顯示。

【程序】

void main()

{  float a,b,c,d;

   a=  ;  

   b=  ;   

   c=    ; //

   d=    ; //

   printf("%f+%f=%f\n",a,b,c);

   printf("%f-%f=%f\n",a,b,d);

}

 

【習題3.133】浮點型變量,賦值,表達式,顯示

在以下程序空缺處填寫合適內容,使得程序能夠分別對變量f賦值12.345g賦值67.89h賦值表達式f*g的值,并顯示該表達式和變量h的值的等式。

【程序】

void main()

{

   

   f=     ,g=

   h=

   printf("%.3f*%.2f=%f\n",f,g,h);

}

 

【習題3.135】浮點數,賦值,乘除四則運算

編寫程序,將111.234賦給變量a23.456賦給變量b,求ab賦給ca÷b賦給d,并顯示。

【程序】

void main()

{  float a,b,c,d;

 

 

   printf("%.3f*%.3f=%f\n",a,b,c);

   printf("%.3f/%.3f=%f\n",a,b,d);

}

 

【例題3.140e】浮點數計算

編寫程序,將圓周率3.14159賦給變量a,半徑7.24賦給變量b,求其圓面積和圓周長。

【程序】

void main()

{  float a,b,c,d;

   a=3.14159;

   b=7.24;

   c=b*b*a;

   d=2*a*b;

   printf("area=%.3f\n",c); //3位小數的格式顯示結果

   printf("circ=%.4f\n",d); //4位小數的格式顯示結果

}

 

【習題3.142】浮點數計算

編寫程序,給三角形的三邊長分別賦值:3.45賦給a4.56賦給b5.67賦給c,求其三邊長之和。

【程序】

void main()

{  float a,b,c;

 

 

   printf("%.2f+%.2f+%.2f=%.2f\n",a,b,c,a+b+c);

}

 

【習題3.143】浮點型變量,賦值,表達式,顯示

在以下程序空缺處填寫合適內容,使得程序能夠分別對變量f賦值2.345g賦值6.789h賦值fg的平方和,并顯示h的值。

【程序】

void main()

{

   

   printf("%f\n",h);

}

 

【習題3.145】浮點型變量,賦值,表達式,顯示在以下程序空缺處填寫合適內容, 使得程序能夠分別對變量f賦值-2.345g賦值6.789h賦值fg3次方和,并顯示h的值。

【程序】

void main()

{

 

   printf("%f\n",h);

}

 

【例題3.150e】將整數轉換為浮點數

編寫程序,對變量a賦值為321b賦值為123.4567,求其浮點數的和。

【程序】

void main()

{  int a;

   float b,c;

   a=321,b=123.4567;

   c=(float)a+b;

   printf("%f\n",c);

}

 

【習題3.153】賦值,表達式,類型轉換,顯示

在以下程序空缺處填寫合適內容,使得程序能夠分別對變量a賦值12b賦值345.678,將a實數化后求a*b賦給a

【程序】

void main()

{  int a;

   float b,c;

   a=   ,b=

   c=

   printf("%f\n",c);

}

 

【例題3.160e】浮點數轉換為整數

編寫程序,令變量b取值35.425c取值52.954,先將b+c的結果轉換為整數后賦給變量a1,然后將bc的值分別轉換為整數后求和賦給變量a2

【程序】

void main()

{  int a1,a2;

   float b,c;

   b=35.425,c=52.954;

   a1=(int)(b+c);

   a2=(int)b+(int)c;

   printf("%d\n",a1);

   printf("%d\n",a2);

}

 

【習題3.162】強制類型轉換運算符

編寫程序,對變量a賦值為1.63b賦值為4.46,將a+b的和取整后賦給c,并顯示c

【程序】

void main()

{  float a,b;

   int c;

   a=   ;

   b=   ;

   c=   ;

   printf("c=%d\n",c);

}

 

【習題3.163】浮點型變量,賦值,表達式,類型轉換,顯示

在以下程序空缺處填寫合適內容,使得程序能夠分別對變量b賦值34.567c賦值56.789,將b*c的值整數化后賦給a1,再將bc分別整數化后求積賦給a2

【程序】

void main()

{  int a1,a2;

 

   printf("a1=%d\n",a1);

   printf("a2=%d\n",a2);

}

 

【習題3.166】浮點變量,賦值,表達式,類型轉換,顯示

在以下程序空缺處填寫合適內容,使得程序能夠分別對變量b賦值2.34567c賦值56.789,將bc分別整數化后求和賦給a

【程序】

void main()

{  int a;

 

   printf("a=%d\n",a);

}

 

【習題3.168】浮點變量,賦值,表達式,類型轉換,顯示

在以下程序空缺處填寫合適內容,使得程序能夠先后對浮點型變量y賦值1/31.0/3.0。請觀察程序運行輸出的結果。

【程序】

void main()

{

   float y;

   y=

   printf("y=%f\n",y); /*輸出*/

   y=

   printf("y=%f\n",y); /*再次輸出*/

}

 

【例題3.170e】組合運算符

編寫程序,首先令變量a值為2b值為5c值為6d值為10,然后依次將ab的值賦予abc的值賦予bc乘以d的值賦予cd除以a的值賦予da除以c的余數賦予a

【程序】

void main()

{  int a=2,b=5,c=6,d=10;

   a+=b;

   b-=c;

   c*=d;

   d/=a;

   a%=c;

   printf("%d %d %d %d %d\n",a,b,c,d,a);

         //用空格分隔,在同一行顯示各運算結果

}

 

【習題3.173】自反運算賦值,顯示

在以下程序空缺處填寫合適內容,使得程序能夠分別對變量a賦值34b賦值56,用自反運算賦值將a+b的值賦給ab*a的值賦給b,并顯示ab的值。

【程序】

void main()

{

 

  a+=

  b*=

  printf("a=%d b=%d\n",a,b);

}

 

【習題3.175】自反運算賦值,顯示

在以下程序空缺處填寫合適內容,使得程序能夠分別對變量a賦值567b賦值18c賦值5,用自反運算賦值將a÷b的商賦給ab÷c的余數賦給b,并顯示ab的值。

【程序】

void main()

{

   a/=

   b%=

   printf("%d %d %d\n",a,b,c);

}

 

【例題3.180e】增1運算:++

編寫程序,先對整型變量a賦值為80,然后依次分行顯示++aa++a的值。

【程序】

void main()

{  int a=80;

   printf("%d\n",++a); //++

   printf("%d\n",a++); //++

   printf("%d\n",a);

}

 

【習題3.183】增1運算:++

編寫程序,先對整型變量a賦值600,然后依次分行顯示a++++a的值。

【程序】

void main()

{  int a=600;

   printf("%d\n",    );

   printf("%d\n",    );

}

 

【習題3.184】增1運算:++

編寫程序,先對整型變量a賦值為10,然后依次分行顯示a++a++a,和a的值。

【程序】

void main()

{  int a=10;

   printf("%d\n",    );

   printf("%d\n",    );

   printf("%d\n",    );

   printf("%d\n",    );

}

 

【習題3.185】增1運算:++

編寫程序,先對整型變量a賦值1;接著將++a+10賦給b,顯示b的值;然后將10-a++賦給c,顯示c的值;最后再次顯示a的值。

【程序】

void main()

{  int a=1,b,c;

   b=     

   printf("b=%d ",b);

   c=     

   printf("c=%d ",c);

   printf("a=%d\n",a);

}

 

【習題3.186】增1運算:++

編寫程序,先對整型變量a賦值10,顯示a的值;接著將++a+5賦給b,顯示b的值;然后將7+a++賦給c,顯示c的值;最后再次顯示a的值。

【程序】

void main()

{  int a=10,b,c;

   printf("a=%d ",a);

   b=

   printf("b=%d ",b);

   c=

   printf("c=%d ",c);

   printf("a=%d\n",a);

}

 

【例題3.190e】減1運算:--

編寫程序,先令整型變量a的值為80,然后依次分行顯示--aa--a的值。

【程序】

void main()

{  int a=80;

   printf("%d\n",--a);

   printf("%d\n",a--);

   printf("%d\n",a);

}

 

【習題3.193】減1運算:--

編寫程序,先對整型變量a賦值600,然后依次分行顯示a----a的值。

【程序】

void main()

{  int a=600;

   printf("%d\n",   );

   printf("%d\n",   );

}

 

【習題3.194】減1運算:--

編寫程序,先對整型變量a賦值為10,然后依次分行顯示a--a--a,和a的值。

【程序】

void main()

{  int a=10;

   printf("%d\n",    );

   printf("%d\n",    );

   printf("%d\n",    );

   printf("%d\n",    );

}

 

【習題3.196】減1運算:--

編寫程序,先對整型變量a賦值10,顯示a的值;接著將--a+5賦給b,顯示b的值;然后將7+a--賦給c,顯示c的值;最后再次顯示a的值。

【程序】

void main()

{  int a=10,b,c;

   printf("a=%d ",a);

   b=

   printf("b=%d ",b);

   c=

   printf("c=%d ",c);

   printf("a=%d\n",a);

}

 

【習題3.197】減1運算:--

編寫程序,先對整型變量a賦值100;接著將--a-10賦給b,顯示b的值;然后將10+a--賦給c,顯示c的值;最后再次顯示a的值。

【程序】

void main()

{  int a=100,b,c;

   b=     ;

   printf("b=%d ",b);

   c=     ;

   printf("c=%d ",c);

   printf("a=%d\n",a);

}

 

【例題3.210e】移位運算:左移 <<,右移 >>

編寫程序,先令整型變量a值為7b值為11,依次將a的值右移1位賦給c,將b的值左移3位賦給d,最后顯示cd的值。

【程序】

void main()

{  int a=7,b=11;

   int c,d;

   c=a>>1; //c賦值為a的值右移1個二進位的結果

   d=b<<3; //d賦值為b的值左移3個二進位的結果

   printf("%d %d\n",c,d);

}

 

【習題3.213】移位運算:左移 <<,右移 >>

編寫程序,先令整型變量a值為9b值為11,依次將a的值右移2位賦給c,將b的值左移2位賦給d,最后顯示cd的值。

【程序】

void main()

{  int a=9,b=11;

   int c,d;

   c=

   d=

   printf("c=%d d=%d\n",c,d);

}

 

【例題3.220e】按位運算符

編寫程序,先令整型變量a取值7b取值11,依次求出并顯示abANDORXOR的結果。

【程序】

void main()

{  int a=7,b=11;

   int c,d,e;

   c=a&b;

   d=a|b;

   e=a^b;

   printf("%d&%d=%d\n",a,b,c);

   printf("%d|%d=%d\n",a,b,d);

   printf("%d^%d=%d\n",a,b,e);

}

 

【習題3.22316進制數,按位與運算:&

編寫程序,先令整型變量a值為16進制數0x123ab值為0x1100,將ab按位與的值賦給c之后,顯示abc的值。

【程序】

void main()

{

 

   c=

   printf("%x & %x = %x\n",a,b,c);

}

 

【例題3.230e】運算符&|^的組合運用

編寫程序,先令變量a取值5b取值12c取值4,求a|ba^c的結果的&

【程序】

void main()

{  int a=5,b=12,c=4;

   int er,ok;

   er=a&b|a^c;     //不符合題意

   ok=(a|b)&(a^c); //注意運算的優先級和括號的使用

   printf("%d|%d&%d^%d=%d   error\n",a,b,a,c,er);

   printf("(%d|%d)&(%d^%d)=%d  ok\n",a,b,a,c,ok);

}

 

【例題3.240e】按位取反運算:~

編寫程序,先令整型變量a取值9,然后對a的值按位取反后賦給b,顯示b的值。

【程序】

void main()

{  int a=9;

   int b;

   b=~a;

   printf("%d\n",b);

}

 

【習題3.243】長整型,16進制數,按位取反運算:~

編寫程序,先令整型變量a值為16進制數0x12ac,顯示a的值;然后將a的值按位求反后賦給b,顯示b的值。

【程序】

void main()

{  long a=

   long b;

   printf("a=%x\n",a);

   b=

   printf("b=%x\n",b);

}

 

【例題3.270e】字符型變量

編寫程序,先將字符'C'賦予變量a'H'賦予b,字符'N'賦予c,然后在同一行用空格分隔顯示abc的值。

【程序】

void main_ans()

{  char a,b,c;

   a='C';

   b='H';

   c='N';

   printf("%c %c %c\n",a,b,c);

}

 

【例題3.280e】字符顯示

編寫程序,先將字符'A''n''y''v''i''e''w'分別賦給變量abcdefg,然后在同一行依次顯示各變量的值。

【程序】

void main()

{  char a,b,c,d,e,f,g;

   a='A',b='n',c='y',d='v';

   e='i',f='e',g='w';

   printf("%c%c%c%c%c%c%c\n",a,b,c,d,e,f,g);

}

 

【例題3.290e】字符和ASCII

編寫程序,先將字符'C''H''N'分別賦給變量abc,然后顯示變量abc的字符值和ASCII碼。

【程序】

void main()

{  char a,b,c;

   a='C',b='H',c='N';

   printf("%c:%d %c:%d %c:%d\n",a,a,b,b,c,c);

}

 

【習題3.293】字符的ASCII

在以下程序空缺處填寫合適內容,使得程序能夠對字符變量a、bc分別賦值為'O''K''!',顯示各變量的字符值和ASCII碼。

【程序】

void main()

{

 

   printf("%c:%d %c:%d %c:%d\n",a,a,b,b,c,c);

}

 

【例題3.300eASCII碼和字符

編寫程序,先將677278分別賦給整型變量abc,然后顯示三個變量值及其作為ASCII碼所對應的字符。

【程序】

void main()

{  int a,b,c;

   a=67,b=72,c=78;

   printf("%d:%c %d:%c %d:%c\n",a,a,b,b,c,c);

}

 

【習題3.303ASCII碼對應的字符

在以下程序空缺處填寫合適內容,使得程序能夠對整型變量a、bc分別賦值為797533,顯示各變量的值和以其為ASCII碼的字符。

【程序】

void main()

{

 

   printf("%d:%c %d:%c %d:%c\n",a,a,b,b,c,c);

}

 

【習題3.305ASCII碼對應的字符

在以下程序空缺處填寫合適內容,使得程序能夠對整型變量a、bcde分別賦值為83116117100121,顯示以各變量的值作為ASCII碼的字符。

【程序】

void main()

{

 

   printf("%c%c%c%c%c\n",a,b,c,d,e);

}

 

【習題3.542ab是系統給定的外部整型變量(不需要自行定義)。編寫程序,取a的值并將其個位數清0后存放到b。例如,若a=1,b=0;若a=12,b=10;若a=123,b=120

 

【習題3.544ab是系統給定的外部整型變量(不需要自行定義)。編寫程序,取a的值并將其個位和十位數清0后存放到b。例如,若a=1,b=0;若a=12,b=0;若a=123,b=100

 

【習題3.546ab是系統給定的外部整型變量(不需要自行定義)。編寫程序,取a的值并將其十位數清0后存放到b。例如,若a=1,b=1;若a=12,b=2;若a=123,b=103

 

【習題3.554ab是系統給定的外部整型變量(不需要自行定義)。編寫程序,將a的十位數和個位數“組成”一個整數,并將結果存放到b。例如,若a=12,b=12;若a=123,b=23

 

【習題3.555ab是系統給定的外部整型變量(不需要自行定義)。編寫程序,將a的個位數和十位數逆位“組成”一個整數,并將結果存放到b。例如,若a=12,b=21;若a=123,b=32

 

【習題3.556a是系統給定的外部整型變量(不需要自行定義)。編寫程序,將a的個位數和十位數互換。例如,若a=12,則互換后a=21;若a=123,則互換后a=132

 

【習題3.557a是系統給定的外部整型變量(不需要自行定義),其值是一個3位十進制數。編寫程序,將a的值循環右移1位。例如,若a=123,則移位后a=312;若a=360,則移位后a=36

 

【習題3.558a是系統給定的外部整型變量(不需要自行定義),其值是一個3位十進制數。編寫程序,將a的值循環左移1位。例如,若a=123,則移位后a=231;若a=408,則移位后a=84

 

【習題3.560 abc是系統給定的外部整型變量(不需要自行定義)。編寫程序,將ab的個位數順位“拼接”為整數,并將結果存放到c。例如,若a=123,b=456,c=36;若a=100,b=357,c=7

 

【習題3.561 abc是系統給定的外部整型變量(不需要自行定義)。編寫程序,將ab的個位數逆位“拼接”為整數,并將結果存放到c。例如,若a=123,b=456,c=63;若a=100,b=357,c=70

 

【習題3.562 abc是系統給定的外部整型變量(不需要自行定義)。編寫程序,將ab的低2位數順位“拼接”為整數,并將結果存放到c。例如,若a=123,b=456,c=2356;若a=300,b=108,c=8

 

【習題3.563 abc是系統給定的外部整型變量(不需要自行定義)。編寫程序,將ab的低2位數逆位“拼接”為整數,并將結果存放到c。例如,若a=123,b=456,c=3265;若a=300,b=108,c=80

 

【習題3.566】 系統給定外部整型變量ab,長整型變量c(不需要自行定義)。編寫程序,將ab的低3位數順位“拼接”為整數,并將結果存放到c。例如,若a=1234,b=4567,c=234567;若a=3000,b=1080,c=80

 

【習題3.567】 系統給定外部整型變量ab,長整型變量c(不需要自行定義)。編寫程序,將ab的低3位數逆位“拼接”為整數,并將結果存放到c。例如,若a=1234,b=4567,c=432765;若a=6003,b=2800,則c=300008

 

【例題3.710e】用scanf輸入

編寫程序,用scanf輸入一個整數并將其顯示。

【程序】

void main()

{  int a;

   scanf("%d",&a);

   printf("%d\n",a);

}

 

【習題3.713】輸入整數

在以下程序空缺處填寫合適內容,使得程序能夠通過scanf語句輸入一個整數到整型變量a,計算a的立方值并賦給整型變量b

【程序】

void main()

{

 

  printf("%d^3=%d\n",a,b);

}

 

【例題3.720e】用scanf輸入

編寫程序,用scanf輸入2個整數到變量ab,求其之積并顯示等式。

【程序】

void main()

{  int a,b,c;

   scanf("%d",&a);

   scanf("%d",&b);

   c=a*b;

   printf("%d*%d=%d\n",a,b,c);

}

 

【習題3.723】輸入整數

在以下程序空缺處填寫合適內容,使得程序能夠通過兩個scanf語句分別輸入整數到整型變量a和b,計算ab的平方和并賦給整型變量c

【程序】

void main()

{

 

  printf("%d^2+%d^2=%d\n",a,b,c);

}

 

【例題3.730e】用一個scanf語句輸入兩個整數

編寫程序,用一個scanf語句輸入兩個整數,求其和并顯示等式。

【程序】

void main()

{  int a,b,c;

   scanf("%d %d",&a,&b);

   c=a+b;

   printf("%d+%d=%d\n",a,b,c);

}

 

【例題3.740e】用一個scanf語句輸入兩個實數

編寫程序,用一個scanf語句輸入兩個實數,求其差并顯示等式。

【程序】

void main()

{  float a,b,c;

   scanf("%f %f",&a,&b);

   c=a-b;

   printf("%f-%f=%f\n",a,b,c);

}

 

【例題3.750e】用scanf語句輸入一個字符

編寫程序,用scanf語句輸入1個字符到字符變量a,顯示其字符值和ASCII碼。

【程序】

void main()

{  char a;

   scanf("%c",&a);

   printf("%c:%d\n",a,a);

}

 

【例題3.760e】用一個scanf語句輸入兩個字符

編寫程序,用一個scanf語句輸入兩個字符到字符變量ab,顯示其字符值和ASCII碼。

【程序】

void main()

{

   char a,b;

   scanf("%c%c",&a,&b);

   printf("%c:%d %c:%d\n",a,a,b,b);

}

 

【例題3.770e】用一個scanf語句輸入兩個字符(忽略分隔空格)

編寫程序,用一個scanf語句,忽略分隔空格,輸入兩個字符到字符變量ab,顯示其字符值和ASCII碼。

【程序】

void main()

{  char a,b;

   scanf("%c %c",&a,&b);

   printf("%c:%d %c:%d\n",a,a,b,b);

}

 

【例題3.780e】用兩個scanf語句各輸入一個字符

編寫程序,用兩個scanf語句各輸入一個字符到字符變量ab,顯示其字符值和ASCII碼。

【程序】

void main( )

{

   char a,b;    

   scanf("%c",&a);

   scanf("%c",&b);

   printf("%c:%d %c:%d\n",a,a,b,b);

}

 

【例題3.790e】忽略中間一個字符的輸入

編寫程序,用兩個scanf語句,忽略中間一個字符,分別輸入一個字符到字符變量ab,顯示其字符值和ASCII碼。

【程序】

void main()

{  char a,b;

   scanf("%c",&a);

   scanf("%*c%c",&b);

   printf("%c:%d %c:%d\n",a,a,b,b);

}

 

【例題3.800e16進制數和8進制數的輸出

編寫程序,顯示17516進制表示和238進制表示。

【程序】

void main()

{  int a,b;

   a=175;

   b=23;

   printf("a=(%d)10#=(%x)16#\n",a,a);

   printf("b=(%d)10#=(%o)8#\n",b,b);

}

 

【例題3.810e】科學記數法

編寫程序,分別賦值變量a123.4567b97531.68,并用科學記數法形式顯示。

【程序】

void main()

{  float a,b;

   a=123.4567;

   b=97531.68;

   printf("a=%f=%e\n",a,a);  /*a=123.456700=1.234567e+002*/

   printf("b=%f=%e\n",b,b);  /*b=97531.680000=9.753168e+004*/

}   

 

【例題3.820e】輸入和顯示16進制數

編寫程序,用scanf語句輸入一個16進制數到變量a,并顯示其16進制和10進制表示。

【程序】

void main()

{  int a;

   scanf("%x",&a);

   printf("a=(%x)16#=(%d)10#\n",a,a);

}

 

【例題3.830e】輸入和顯示8進制數

編寫程序,用一個scanf語句輸入兩個8進制數到變量ab,顯示ab的乘積。

【程序】

void main()

{

   int a,b;

   scanf("%o %o",&a,&b);

   printf("%o*%o=%o\n",a,b,a*b);

}

 

【例題3.840elong長整型變量

編寫程序,將12345678987654321分別賦給長整型變量ab,求其和賦給sum并顯示結果。

【程序】

void main()

{  long  a,b,sum;

   a=123456789;

   b=87654321;

   sum=a+b;

   printf("%ld+%ld=%ld\n",a,b,sum);

}

 

【例題3.850eunsigned int無符號整型變量

編寫程序,將888990分別賦給無符號整型變量abc,顯示其值和相應字符。

【程序】

void main()

{  unsigned int a,b,c;

   a=88;

   b=89;

   c=90;

   printf("%d:%c %d:%c %d:%c\n",a,a,b,b,c,c);

}

 

【例題3.860e】指定顯示位數

編寫程序,將135436789依次賦給整型變量abc,分別用域寬5位、3位、9位進行顯示。

【程序】

void main()

{  int a,b,c;

   a=135,b=43,c=6789;

   printf("123456789\n");

   printf("%5d\n",a);

   printf("%3d\n",b);

   printf("%9d\n",c);

}

 

【例題3.870e】指定浮點數的顯示格式

編寫程序,將543.345623.4567賦給浮點型變量ab,求其和、差、積、商,并在顯示時分別指定了不同的域寬和小數點后的位數。

【程序】

void main()

{  float a,b,sum,min,tim,sep;

   a=543.3456;

   b=23.4567;

   sum=a+b;

   min=a-b;

   tim=a*b;

   sep=a/b;

   printf("%10.4f+%10.4f=%10.4f\n",a,b,sum);

   printf("%10.2f-%10.2f=%10.2f\n",a,b,min);

   printf("%10.5f*%10.5f=%10.5f\n",a,b,tim);

   printf("%10.4f/%10.4f=%5.2f\n",a,b,sep);

}

 

【例題3.880e】指定小數點后的顯示位數

編寫程序,輸入一個浮點數,分別按小數點后3位、2位和1位的格式顯示。

【程序】

void main()

{  float a;

   scanf("%f",&a);

   printf("%.3f %.2f %.1f\n",a,a,a);

}

 

【例題3.890e】字符顯示格式

編寫程序,將'X'賦給字符變量a,分別按1位、2位、3位和4位域寬的格式顯示。

【程序】

void main()

{  char a;

   a='x';

   printf("%1c%2c%3c%4c\n",a,a,a,a);

}

 

【例題3.900e】顯示字符圖案

編寫程序,顯示字符圖案:

x    x

 x  x

  xx

  xx

 x  x

x    x

【程序】

void main()

{  char a;

   a='x';

   printf("%1c%5c\n",a,a);

   printf("%2c%3c\n",a,a);

   printf("%3c%1c\n",a,a);

   printf("%3c%1c\n",a,a);

   printf("%2c%3c\n",a,a);

   printf("%1c%5c\n",a,a);

}

 

【習題3.905】顯示多個相關字符

s是系統給定的外部字符型變量(不需要自行定義)。編寫程序,依次以空格分隔輸出s字符的前導字符、s字符和s的后續字符。例如,若s='b',則輸出 a b c

【程序】

void main()

{

   printf("%c %c %c\n",  , s,  );

}

 

【例題3.910e】指定有效輸入位數

編寫程序,輸入一個不超過3位的整數。

【程序】

void main()

{  int a;

   scanf("%3d",&a);

   printf("%d\n",a);

}

 

【例題3.920e】指定有效輸入位數

編寫程序,分別按1位和2位輸入兩個整數到整型變量ab,求其積賦給c并顯示。

【程序】

void main()

{  int a,b,c;

   scanf("%1d%2d",&a,&b);

   c=a*b;

   printf("%d*%d=%d\n",a,b,c);

}

 

4章  選擇結構程序設計(例題13—習題0/13)

【例題4.010eif語句

編寫程序,輸入一個整數到變量a,若其值為0或正數,則顯示其值。

【程序】

void main()

{  int a;

   scanf("%d",&a); /*輸入a*/

   if(a>=0)

      printf("a=%d\n",a);

}

 

【習題4.011】關系表達式,if語句第一種形式

在以下程序空缺處填寫合適內容,使得程序能夠判斷用戶輸入的字符是否為'@',若是則顯示:"輸入正確"

【程序】

#include<stdio.h>

void main()

{  char c;

   scanf("%c",&c);

   if(    ) printf("輸入正確\n");

}

 

【習題4.012】關系表達式,if語句第一種形式

在以下程序空缺處填寫合適內容,使得程序能夠輸入一個整數賦給變量a,計算并輸出a的絕對值a1

【程序】

#include<stdio.h>

void main( )

{  int a,a1;

   scanf("%d",&a);

 

 

   printf("|%d| = %d\n",a,a1);

}

 

【習題4.013】邏輯表達式,if語句第一種形式

在以下程序空缺處填寫合適內容,使得程序能夠對輸入的整型變量x的值進行判斷,若變量x值為“假”時輸出

False”。

【程序】

#include<stdio.h>

int main( )

{  int x;

   scanf("%d",&x);

   if(   )

     printf("False!\n");

   return 0;

}

 

【例題4.015eif語句

編寫程序,輸入兩個整數到變量ab,使用if語句由小到大顯示這兩個數。

【程序】

void main()

{  int a,b,t;

   scanf("%d %d",&a,&b);

   if(a>b){

      t=a; a=b; b=t;

   }

   printf("%d %d\n",a,b);

}

 

【習題4.016if語句的子句為復合語句

在以下程序空缺處填寫合適內容,使得程序能夠將輸入到變量ab的兩個整數按照由大到小的順序輸出。

【程序】

#include<stdio.h>

void main( )

{  int a,b,t;

   scanf("%d %d",&a,&b);

   if(     )

   {            }

   printf("%d  %d\n",a,b);

}

 

【例題4.020eif-else語句

編寫程序,輸入兩個整數到變量ab,使用if-else語句由小到大顯示這兩個數。

【程序】

void main()

{  int a,b;

   scanf("%d %d",&a,&b);

   if(a<b)

      printf("%d %d\n",a,b);

   else   

      printf("%d %d\n",b,a);   

}

 

【例題4.025e】條件表達式

編寫程序,輸入兩個整數到變量ab,使用條件表達式顯示這兩個數中的較大者。

【程序】

void main()

{  int a,b;

   scanf("%d %d",&a,&b);

   printf("%d\n",a>b?a:b);

}

 

【例題4.030eif-else語句

編寫程序,輸入一個整數到變量a,若為0或正數,則顯示:其值及“is positive”;若為負數,則顯示:其值及“is negative”。

【程序】

void main()

{  int a;

   scanf("%d",&a); /*輸入a*/

   if (a>=0)

      printf("%d is positive\n", a); /*a0或正數*/

   else

      printf("%d is negative\n", a); /*a為負數*/

}

 

【例題4.040eif-else語句

編寫程序,輸入兩個整數到變量ab,若a<=b,則求其積賦給c并顯示,否則求其商賦給c并顯示。

【程序】

void main()

{  int a,b,c;

   scanf("%d %d",&a,&b);

   if (a<=b) {

      c=a*b;

      printf("%d*%d=%d\n",a,b,c);

   } else {

      c=a/b;

      printf("%d/%d=%d\n",a,b,c);

   }

}

 

【例題4.050e】嵌套if-else語句

編寫程序,輸入一個整數到變量a,按其數值小于1010-99100-9991000以上等四種情形分類并顯示。例如:輸入248時,顯示:“248[100,999]”。

【程序】

void main()

{  int a;

   scanf("%d",&a);

   if (a>=100) {

      if (a>=1000)

         printf("%d[1000,+)\n",a);

      else

         printf("%d[100,999]\n",a);

   } else {

      if (a<10)

         printf("%d(-,10]\n",a);

      else

         printf("%d[10,99]\n",a);

   }

}

 

【例題4.060eswitch語句

編寫程序,輸入一個整數到變量x,若x的值在14之間,則顯示x個城市的市名,否則不顯示。

【程序】

void main()

{  int x;

   scanf("%d",&x);

   switch (x) {

      case 4: printf("Shenzhen\n");

      case 3: printf("Guangzhou\n");

      case 2: printf("Beijing\n");

      case 1: printf("Shanghai\n");

   }

}

 

【例題4.070eswitchbreak語句

編寫程序,輸入brics”中的一個字母到變量x,顯示“金磚5國”中以該字母打頭的國家名稱。

【程序】

void main()

{  char x;

   scanf("%c",&x);

   switch (x) {

      case 'b':

         printf("Brazil\n") ;

         break;

      case 'r':

         printf("Russia\n");

         break;

      case 'i':

         printf("India\n");

         break;

      case 'c':

         printf("China\n");

         break;

      case 's':

         printf("South Africa\n");

   }

}

 

【例題4.080eswitchbreak語句

編寫程序,輸入三個整數到變量abc,當a1時顯示bc之和,a2時顯示bc之差,a3時顯示bc之積,a為其他值時顯示b+cb-c之積。

【程序】

void main()

{  int a,b,c;

   scanf("%d %d %d",&a,&b,&c);

   switch (a) {

      case 1:

         printf("%d+%d=%d\n",b,c,b+c);

         break;

      case 2:

         printf("%d-%d=%d\n",b,c,b-c);

         break;

      case 3:

         printf("%d*%d=%d\n",b,c,b*c);

         break;

      default:

         printf("(%d+%d)*(%d-%d)=%d\n",b,c,b,c,(b+c)*(b-c));

   }

}

 

【例題4.200e】條件運算(3目運算)

編寫程序,令整型變量a取值52b取值25,若a>b成立則將a的值賦予c,否則將b的值賦予c。同時,若a<b成立則將a的值賦予d,否則將b的平方值賦予d

【程序】

void main()

{  int a=52,b=25;

   int c,d;

   c=((a>b)?a:b);

   d=((a<b)?a:b*b);

   printf("%d\n",c);

   printf("%d\n",d);

}

 

【習題4.203】條件運算(3目運算)

編寫程序,先令整型變量a取值0b取值-20;然后用條件運算實現:若a>b成立則將b的平方值賦予c,否則將0賦予c;最后顯示c的值。

【程序】

void main()

{  int a=0,b=-20,c;

   c=

   printf("c=%d\n",c);

}

 

【習題4.211】已知3個非零整數被分別輸入到整型變量a,bc。編寫一個條件表達式,判定這3個值能否作為一個三角形的3條邊的長度?若能,則該表達式的值為1,否則值為0

 

【習題4.213】已知3個非零整數被分別輸入到整型變量a,bc。編寫一個條件表達式,判定這3個值能否作為一個等腰三角形的3條邊的長度?若能,則該表達式的值為1,否則值為0

 

【習題4.215】已知3個非零整數被分別輸入到整型變量a,bc。編寫一個條件表達式,判定這3個值能否作為一個等邊三角形的3條邊的長度?若能,則該表達式的值為1,否則值為0

 

【習題4.223】已知3個非零整數被分別輸入到整型變量a,bc。編寫一個條件表達式,判定這3個值能否作為一個直角三角形的3條邊的長度?若能,則該表達式的值為1,否則值為0

 

【習題4.225】已知3個非零整數被分別輸入到整型變量a,bc。編寫一個條件表達式,判定這3個值能否作為一個銳角三角形的3條邊的長度?若能,則該表達式的值為1,否則值為0

 

【習題4.227】已知3個非零整數被分別輸入到整型變量a,bc。編寫一個條件表達式,判定這3個值能否作為一個鈍角三角形的3條邊的長度?若能,則該表達式的值為1,否則值為0

 

【例題4.250e】邏輯運算:&&||

編寫程序,先將6賦予a9賦予b0賦予c,然后依次求a&&ba||ba&&c并顯示結果。

【程序】

void main()

{  int a=6,b=9,c=0;

   int d,e,f;

   d=a&&b;

   e=a||b;

   f=a&&c;

   printf("%d&&%d=%d\n",a,b,d);

   printf("%d||%d=%d\n",a,b,e);

   printf("%d&&%d=%d\n",a,c,f);

}

 

【習題4.253】邏輯運算:&& ||

編寫程序,先令整型變量ab的值均為34c的值為78,然后依次將ab的邏輯與賦給dac的邏輯或賦給eac的邏輯與賦給f,最后分行顯示def的值。

【程序】

void main()

{  int a=34,b=34,c=78;

   int d,e,f;

   d=

   e=

   f=

   printf("%d && %d = %d\n",a,b,d);

   printf("%d || %d = %d\n",a,c,e);

   printf("%d && %d = %d\n",a,c,f);

}

 

【例題4.260e】邏輯運算:!(邏輯非)

編寫程序,先對整型變量a賦值1b賦值0,然后分別求其邏輯非。

【程序】

void main()

{  int a=1,b=0;

   int c,d;

   c=!a;

   d=!b;

   printf("!%d=%d\n",a,c);

   printf("!%d=%d\n",b,d);

}

 

【習題4.263】邏輯非運算:!

編寫程序,先令整型變量a的值為700b的值為-30,然后依次將a的邏輯非賦給cb的邏輯非賦給d,最后分行顯示cd的值。

【程序】

void main()

{

 

   c=

   d=

   printf("!%d=%d\n",a,c);

   printf("!%d=%d\n",b,d);

}

 

5章  循環結構程序設計(含:序列求和)(例題0—習題41)

【習題5.002】編寫程序,利用while語句在同一行中逐個顯示從15的數字,每個數字之前保留2個空格。

 

【習題5.003】編寫程序,利用for語句在同一行中逐個顯示從16的數字,每個數字之前保留2個空格。

 

【習題5.004n是系統給定的外部整型變量(不需要自行定義)。編寫程序,利用循環語句在同一行中逐個顯示從1n的數字,每個數字之前保留2個空格。

 

【習題5.012】請僅在程序空缺處填入合適內容,使其實現功能:依次入5個整數,計算它們之和并輸出。

#include <stdio.h>

void main()

{  int i,sum=0, n;

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

   {  scanf("%d",  );

      sum=  ;

   }

   printf("sum = %d",sum);

}

 

【習題5.020ns是系統給定的外部整型變量(不需要自行定義)。編寫程序,求1n之間的整數之和,并將結果存放到s

 

【習題5.022n是系統給定的外部變量。編寫程序,求1n間的自然數之和。請定義局部變量s存放求和的結果,并用下列語句輸出結果

      printf("1+2+...+n=%d\n",s);

 

【習題5.026ns是系統給定的外部整型變量(不需要自行定義)。編寫程序,求1n之間的奇數之和,并將結果存放到s

 

【習題5.028ns是系統給定的外部整型變量(不需要自行定義)。編寫程序,求1n之間的偶數之和,并將結果存放到s

 

【習題5.029】請僅在程序空缺處填入合適內容,使其實現功能:輸入大于1的整數到n,在同一個循環語句中分別計算1n之間的奇數和偶數之和。

#include<stdio.h>

void main()

{  int odd,even,i,n;

   scanf("%d", &n);

    

 

   printf("sum of odd=%d   ",odd);   /*奇數之和*/

   printf("sum of even=%d\n", even);/*偶數之和*/

}

 

【習題5.030】系統給定外部整型變量n和長整型變量f(不需要自行定義)。編寫程序,求n的階乘n!,并將結果存放到f

例如,當n=6時,f=6!=1*2*...*6=720。注意:0=1

 

【習題5.032】系統給定外部整型變量n和長整型變量f(不需要自行定義)。編寫程序,求n的雙階乘n!!,并將結果存放到f。雙階乘的定義是:

    n是奇數時,n!為不大于n的所有奇數的乘積,如:7!!=1×3×5×7

    n為偶數時表示不大于n的所有偶數的乘積(0除外),如:8!!=2×4×6×8

 

【習題5.034】系統給定外部整型變量n和浮點變量f(不需要自行定義)。編寫程序,求負整數n的階乘n!,并將結果存放到f。假設m是正整數,負整數-m的階乘定義是:(-m)!=1/(m+1)!

 

【習題5.040m,ns是系統定義的外部整型變量(不需要自行定義)。編寫程序,根據m的值求滿足1+2+...+n>=m的最小n,并將1+2+...+n的結果存放到s。例如,若m=50,則n=10s=55

 

【習題5.042 m,ns是系統定義的外部整型變量(不需要自行定義)。編寫程序,根據m的值求滿足1+2+...+n<m的最大n,并將1+2+...+n的結果存放到s。例如,若m=50,則n=9s=45

 

【習題5.050ns是系統給定的外部整型變量(不需要自行定義)。編寫程序,求1+1/2+1/3+...+1/n,并將結果存放到s

 

【習題5.051】系統給定外部整型變量n和浮點型變量s(不需要自行定義)。編寫程序,求1-1/2+1/3-1/4+...1/n,并將結果存放到s

 

【習題5.053】系統給定外部整型變量n和浮點型變量s(不需要自行定義)。編寫程序,求1+1/(1+2)+1/(1+2+3)+...+1/(1+2+...+n),并將結果存放到s

 

【習題5.055】系統給定外部整型變量n和浮點型變量pi(不需要自行定義)。編寫程序,求序列4,-4/3,4/5,-4/7,4/9,-4/11...的前n項和,并將結果存放到pi

 

【習題5.056】系統給定外部整型變量n和浮點型變量pi2(不需要自行定義)。編寫程序,求1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+...+1*2*...*n/(3*5*7*...*(2n+1)),并將結果存放到pi2

 

【習題5.062】請僅在程序空缺處填入合適內容,使其實現功能:逐個輸入整數,直到輸入0為止,計算所輸入數值之和并輸出。

#include <stdio.h>

void main()

{  int sum=0, n=0;

   scanf("%d",&n);

   while(   )

   {   

       

   }

   printf("sum = %d",sum);

}

 

【習題5.095ns是分別是系統給定的外部整型變量和實型變量(不需要自行定義)。編寫程序,求分數序列2/1,3/2,5/3,8/5,13/8,21/13,...的前n項和,并將結果存放到s

 

【習題5.112】請僅在程序空缺處填入合適內容,使其實現功能:計算正整數n的各位數字之和。例如,輸入n的值是12345時,1+2+3+4+5=15,輸出sum=15

#include <stdio.h>

void main()

{  int n,sum=0;

   scanf("%d",&n);

   do

   {  sum=sum+    ;

      n=   ;

   }while(n);

   printf("sum = %d",sum);

}

 

【習題5.125】請僅在程序空缺處填入合適內容,使其實現功能:從鍵盤輸入一批整數,直到輸入0時結束,輸出其中百位數字是3的整數之和。

#include <stdio.h>

void main()

{  int num,sum=0;

   scanf("%d",&num);

   do

   {  if(    )    ;

      scanf("%ld",&num);

   }while(  );

   printf("sum = %ld",sum);

}

 

【習題5.132】請僅在程序空缺處填入合適內容,使其實現功能:輸入大于1的整數到n,計算1n中是7的倍數的整數之和。

#include<stdio.h>

void main()

{  int i,sum,n;

   scanf("%d",&n);

    

 

   printf("sum = %d",sum);

}

 

【習題5.161ns是分別是系統給定的外部整型變量和長整型變量(不需要自行定義)。編寫程序,求1!+2!+3!+4!+5!++n!,并將結果存放到s

 

【習題5.163ne是分別是系統給定的外部整型變量和浮點型變量(不需要自行定義)。編寫程序,求1+1/1!+1/2!+1/3!++1/n!,并將結果存放到e

 

【習題5.165】系統給定外部整型變量n和浮點型變量xe(不需要自行定義)。編寫程序,求1+x/1!+x^2/2!+x^3/3!++x^n/n!,并將結果存放到e,其中,^是冪運算,x^2表示x的平方,x^n表示xn次方。

 

【習題5.172】系統給定外部長整型變量s,整型變量an,且an的值均在09之間(不需要自行定義)。編寫程序,求a+aa+aaa++aaaaa(有na)之值,并將結果存放到s。例如:a=3n=5時,求3+33+333+3333+33333

 

【習題5.175】系統給定外部長整型變量s,整型變量amn1<=a<=91<=m<=n<=9(不需要自行定義)。編寫程序,求序列a,aa,aaa,,aaa(n項為na)中,第m項至第n項之和,并將結果存放到s。例如:當a=8m=3n=6時,置s=888+8888+88888+888888

 

【習題5.176】系統給定外部長整型變量s,整型變量amk1<=a<=91<=m<=9m+k<=9(不需要自行定義)。編寫程序,求數列a,aa,aaa,,aaa,(i項為ia)中,第m項起的k項之和,并將結果存放到s。例如:當a=6m=4k=3時,置s=6666+66666+666666

 

【習題5.183】系統給定外部長整型變量s和整型變量n,且n的值在09之間(不需要自行定義)。編寫程序,求1+12+123++12n之值,并將結果存放到s。例如,n=5時,置s=1+12+123+1234+12345

 

【習題5.184】系統給定外部長整型變量s和整型變量n,且n的值在09之間(不需要自行定義)。編寫程序,求1+21+321++n21之值,并將結果存放到s。例如,n=5時,置s=1+21+321+4321+54321

 

【習題5.186】系統給定外部長整型變量s,整型變量mn,且1<=m<=n<=9(不需要自行定義)。編寫程序,求12m+12(m+1)++12n之值,并將結果存放到s。例如,m=3n=6時,置s=123+1234+12345+123456

 

【習題5.187】系統給定外部長整型變量s,整型變量mn,且1<=m<=n<=9(不需要自行定義)。編寫程序,求m21+(m+1)21++n21之值,并將結果存放到s。例如,m=3n=6時,置s=321+4321+54321+654321

 

【習題5.203】已知雞和貓共有30只,腳共有90只。請僅在程序空缺處填入合適內容,實現功能:計算雞和貓各有幾只?

#include <stdio.h>

void main()

{  int x,y,heads=30,feet=90;

   for(x=1;          )

   {  y=

      if(        )  

      {  printf("chicken:%d, cat:%d\n",x,y);

         break;

      }

   }

}

 

【習題5.205】有一堆蘋果(數量在100200之間),如果分成4個蘋果一組的若干組,則多2個蘋果;若分成7個蘋果一組,則多4個蘋果; 若分成9個蘋果一組,則多5個蘋果。請僅在程序空缺處填入合適內容,實現功能:求這堆蘋果的總數。

#include <stdio.h>

void main()

{  int i;

   for(i=100;i<=200;i++)

   {

      if(   )

      {     

        printf("total: %d",i);

        

      }

   }

}

 

【習題5.215】請僅在程序空缺處填入合適內容,實現功能:求等式xyz+yzz=532x,yz的值(其中xyzyzz分別表示一個三位數)。

#include<stdio.h>

void main()

{  int x,y,z,i,result=532;

  

          

   //程序輸出要用語句 printf("x=%d,y=%d,z=%d\n",x,y,z);

       

}

 

【習題5.223】請僅在程序空缺處填入合適內容,使其實現功能:輸入并計算一個只包含加減運算的表達式,其中每個運算數都是正整數,運算符都是“+”或“-”,除第一個數以外,其余每個數前面都有一個運算符,當運算數為0時表達式終止。

#include<stdio.h>

void main()

{  int term,result;

   char ch;

   scanf("%d",&result);

   ch=getchar();

   //可以使用while循環

 

 

   printf("result: %d\n",result);

}

 

【習題5.225】請僅在程序空缺處填入合適內容,使其實現功能:輸入并計算一個只包含加減運算的表達式,其中每個運算數都是正整數,運算符都是“+”或“-”,除第一個數以外,其余每個數前面都有一個運算符,表達式以分號“;”終止,例如“23+43-234+157;”。

#include<stdio.h>

void main()

{  int term,result;

   char ch;

   scanf("%d",&result);

   ch=getchar();

   //可以使用while循環

 

 

   printf("result: %d\n",result);

}

 

【習題5.233】請僅在程序空缺處填入合適內容,使其實現功能:輸入并計算一個只包含乘除運算的表達式,其中每個運算數都是正整數,運算符都是“*”或“\”,除第一個數以外,其余每個數前面都有一個運算符,表達式以分號“;”終止,例如“9/3*7;”。

#include<stdio.h>

void main()

{  int term,result;

   char ch;

   scanf("%d",&result);

   ch=getchar( );

   //可以使用while循環

 

 

   printf("result: %d\n",result);

}

 

【習題5.255】請僅在程序空缺處填入合適內容,使其實現功能:輸入非負整數到變量n09中的某一個數到變量d,統計n的各位數字中值為d的個數num,并求各位數字中的最小值m

#include<stdio.h>

void main()

{  long int n;

   int d,num,m=9,t;

   num=0;

   scanf("%d %d",&n,&d);

   do

   {

 

 

   }while(n);

   printf("num=%d, min=%d",num,m);

}

 

6章  利用數組處理批量數據(例題0—習題24+13)

【習題6.033】系統給定外部整型數組a、整型變量nmaxmin和實型變量avg(不需要自行定義)。編寫程序,求數組a中前n個元素的最大值max、最小值min及平均值avg

 

【習題6.043系統給定外部整型變量n和整型數組a(不需要自行定義)。編寫程序,找出數組a中前n個元素中的最小元素及其下標,然后把它和數組中最前面的元素a[0]換位置。

 

【習題6.050】系統給定外部字符串s和整型數組c[26](不需要自行定義)。編寫程序,將字符串s26個小寫字母出現的次數依次統計到數組c中。例如,當s=abcijkabcdexyzuvwx”時,數組c26個元素值依次為:2 2 2 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 2 1 1

 

【習題6.051】系統給定外部字符串s和整型數組c[26](不需要自行定義)。編寫程序,將字符串s26個字母(不區分大小寫)出現的次數依次統計到數組c中。例如,當s=AbcijKaBcdEXyzuvwx”時,數組c26個元素值依次為:2 2 2 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 2 1 1

 

【習題6.110】系統給定外部字符數組變量s和數組長度n(不需要自行定義)。main函數的功能是:把字符串s中所有小寫字母轉換為大寫字母,其他字符不變。例如,當s="68abcdEFGhijkLM86"時,轉換后s="68ABCDEFGHIJKLM86"

請僅在空缺處填入合適內容,使其實現上述功能。

 

【習題6.120】系統給定外部長整型變量n和字符數組變量s(不需要自行定義)。main函數的功能是:把n的整數值轉換成字符串,并逆序保存在s中。例如,當n=20120826時,由n轉換得到s="62802102"

請僅在空缺處填入合適內容,使其實現上述功能。

 

【習題6.121】系統給定外部長整型變量n和字符數組變量s(不需要自行定義)。main函數的功能是:把n的整數值轉換成字符串,并保存在s中。例如,當n=20120826時,由n轉換得到s="20120826"

請僅在空缺處填入合適內容,使其實現上述功能。

 

【習題6.225】系統給定外部整型變量ne和整型數組a(不需要自行定義),其中數組a中前n個元素(a[0],a[1],,a[n-1])已經按元素值由小到大排序。編寫程序,把變量e的值插入到數組a中,并且仍然保持a中元素由小到大的排列順序。若e的值比原有所有的數都大時,插入在末尾的a[n]。若比原有的數都小時,則插入在最前面的a[0]

 

【習題6.255】系統給定外部整型變量n和整型數組a(不需要自行定義)。編寫程序,用起泡法對數組a中前n個元素(a[0],a[1],…,a[n-1]進行分段排序,其中前一半為從小到大排序,后一半為從大到小排序,n為奇數時,位于中間點的數不需要排序。

 

【習題6.265系統給定外部整型變量n和整型數組a(不需要自行定義)。編寫程序,用起泡法對數組a中前n個元素(a[0],a[1],…,a[n-1]進行分段排序,其中前一半為從排序,后一半為從排序,并把n個數的平均值存在a[n]中,n為奇數時,位于中間點的數不需要排序。

 

【習題6.425】系統給定外部整型變量n和整型數組a(不需要自行定義)。編寫程序,求某數列中前n個數,并依次存放在數組a中,該數列的前兩個數為23,以后每一個數都是前兩個數之差(后面的數減去前面的數)2倍,如前6個數依次為:232-2-8-12)。

 

【習題6.435】系統給定外部整型變量n和整型數組ab(不需要自行定義)。編寫程序,對數組a的前n個元素依次賦予從2開始的偶數然后按順序每5個數求出一個平均值并依次存儲在另一數組b中。

 

【習題6.615系統給定外部整型變量mn和整型二維數組ab(不需要自行定義)。編寫程序,m′n二維數組a的行和列元素互換,存到n′m二維數組b中。

 

【習題6.621】系統給定外部整型變量niimin和整型二維數組a(不需要自行定義)。編寫程序,n*n二維數組a中第i的元素最imin

 

【習題6.622系統給定外部整型變量niimax和整型二維數組a(不需要自行定義)。編寫程序,n*n二維數組a中第i的元素最imax

 

【習題6.623系統給定外部整型變量njjmin和整型二維數組a(不需要自行定義)。編寫程序,n*n二維數組a中第j的元素最jmin

 

【習題6.624系統給定外部整型變量njjmax和整型二維數組a(不需要自行定義)。編寫程序,n*n二維數組a中第j的元素最jmax

 

【習題6.625】系統給定外部整型變量ndmin和整型二維數組a(不需要自行定義)。編寫程序,n*n二維數組a的主對角線元素的最小值dmin

 

【習題6.626系統給定外部整型變量ndmax和整型二維數組a(不需要自行定義)。編寫程序,n*n二維數組a的主對角線元素的最大值dmax

 

【習題6.633】系統給定外部整型變量nmin和整型二維數組a(不需要自行定義)。編寫程序,n*n二維數組a的元素最小值min

 

【習題6.634系統給定外部整型變量nmax和整型二維數組a(不需要自行定義)。編寫程序,n*n二維數組a的元素最max

 

【習題6.636】系統給定外部整型變量nd2min和整型二維數組a(不需要自行定義)。編寫程序,n*n二維數組a的兩條對角線上的元素的最小值d2min

 

【習題6.637系統給定外部整型變量nd2max和整型二維數組a(不需要自行定義)。編寫程序,n*n二維數組a的兩條對角線上的元素的最大值d2max

 

【習題6.641】系統給定外部整型變量niisum和整型二維數組a(不需要自行定義)。編寫程序,n*n二維數組a中第i的元素之和isum

 

【習題6.642系統給定外部整型二維數組a、整型變量ni和實型變量iavg(不需要自行定義)。編寫程序,n*n二維數組a中第i的元素平均iavg

 

【習題6.643系統給定外部整型變量njjsum和整型二維數組a(不需要自行定義)。編寫程序,n*n二維數組a中第j的元素之和jsum

 

【習題6.644】系統給定外部整型二維數組a、整型變量nj和實型變量javg(不需要自行定義)。編寫程序,n*n二維數組a中第j的元素平均javg

 

【習題6.645系統給定外部整型變量ndsum和整型二維數組a(不需要自行定義)。編寫程序,n*n二維數組a的主對角線元素之和dsum

 

【習題6.646】系統給定外部整型變量n、整型二維數組a和實型變量davg(不需要自行定義)。編寫程序,n*n二維數組a的主對角線元素平均值davg

 

【習題6.653】系統給定外部整型變量nsum和整型二維數組a(不需要自行定義)。編寫程序,n*n二維數組a全部元素之和sum

 

【習題6.654系統給定外部整型二維數組a、整型變量n和實型變量avg(不需要自行定義)。編寫程序,n*n二維數組a全部元素平均avg

 

【習題6.656】系統給定外部整型二維數組a和整型變量nd2s(不需要自行定義)。編寫程序,n*n二維數組a兩條對角線上各元素值之和d2s。注意:對角線的元素能計算一次。

 

【習題6.657系統給定外部整型二維數組a、整型變量n和實型變量d2avg(不需要自行定義)。編寫程序,n*n二維數組a兩條對角線上各元素值的平均值d2avg。注意:對角線的元素能計算一次。

 

【習題6.662】系統給定外部整型變量nss和整型二維數組a(不需要自行定義)。編寫程序,n*n二維數組a周邊元素之和ss

 

【習題6.663系統給定外部整型二維數組a、整型變量n和實型變量savg(不需要自行定義)。編寫程序,n*n二維數組a周邊元素的平均值savg

 

【習題6.664】系統給定外部整型變量nsmin和整型二維數組a(不需要自行定義)。編寫程序,n*n二維數組a周邊元素的最小值smin

 

【習題6.665系統給定外部整型變量nsmax和整型二維數組a(不需要自行定義)。編寫程序,n*n二維數組a周邊元素的最大值smax

 

【習題6.725】系統給定外部整型變量n和整型二維數組a(不需要自行定義)。編寫程序,檢驗n×n的二維整型數組a,是否為魔方矩陣。說明:每一行、每一列、每一對角線上的元素之和都是相等的為魔方矩陣。(初始化值為如下矩陣)

17 24  1  8 15

23  5  7  14 16

4  6  13 20 22

10 12 19 21  3

11 18 25  2  9

 

【習題6.755找出一個二維數組的鞍點,即該位置上的元素在該行上最大,在該列上最小。也可能沒有鞍點。如:下面數組存在鞍點6

12223

365

179

 

7章  用函數實現模塊化程序設計(例題0—習題42)

【習題7.010】寫一函數求3個整數中最小的數。

要求實現下列函數:

int min(int x,int y,int z);

 

【習題7.020】編寫函數,求將整筆錢換為1元、5元和10元的零錢共有多少種換法?

要求實現下列函數:

int change(int n);

 

【習題7.030】先編寫一個判斷素數的函數。再編寫一個函數將一個偶數表示為兩個素數之和,并返回其中較小的素數。注:素數指只能被1和自身整除的正整數。規定01不是素數。

要求實現下列2個函數:

int prime(int n);

/* 判斷素數,如果是素數返回1,不是素數則返回0 */

int f(int i);   

/* 將偶數i表示為兩個素數之和,返回其中較小的素數*/

 

【習題7.050】編寫函數,將字符串中ASCII碼最小的字符放在第一個字符位置,其余字符依次往后移。

要求實現下列函數:

void func(char str[]);

 

【習題7.060】編寫函數將一個nxn的二維數組按次對角線翻轉。

例如:翻轉前的數組   翻轉后的數組

        1  2  3        9  6  3

        4  5  6  ---> 8  5  2

        7  8  9        7  4  1

要求實現的函數原型為:

void invert(char a[N][N]);

 

【習題7.064】編寫函數將一個NxN的二維數組水平翻轉。

例如:翻轉前的數組   翻轉后的數組

        1  2  3        7  8  9

        4  5  6  ---> 4  5  6

        7  8  9        1  2  3

要求實現的函數原型為:

void invertH(char a[N][N]);

 

【習題7.065】編寫函數將一個NxN的二維數組垂直翻轉。

例如:翻轉前的數組   翻轉后的數組

        1  2  3        3  2  1

        4  5  6  ---> 6  5  4

        7  8  9        9  8  7

要求實現的函數原型為:

void invertV(char a[N][N]);

 

【習題7.067】編寫函數將一個NxN的二維數組的周邊元素順時針輪轉1位。

例如:輪轉前的數組   輪轉后的數組

        1  2  3        4  1  2

        4  5  6  ---> 7  5  3

        7  8  9        8  9  6

要求實現的函數原型為:

void turningClockwise(char a[N][N]);

 

【習題7.068】編寫函數將一個NxN的二維數組的周邊元素“逆時針”輪轉1位。

例如:輪轉前的數組   輪轉后的數組

        1  2  3        2  3  6

        4  5  6  ---> 1  5  9

        7  8  9        4  7  8

要求實現的函數原型為:

void turningAnticlockwise(char a[N][N]);

 

【習題7.072】編寫函數將一個NxN的二維數組a的元素按行向右輪轉1位。

例如:輪轉前的數組   輪轉后的數組

        1  2  3        3  1  2

        4  5  6  ---> 6  4  5

        7  8  9        9  7  8

要求實現的函數原型為:

void turningRight(char a[N][N]);

 

【習題7.075】編寫函數將一個NxN的二維數組a的元素按行向左輪轉1位。

例如:輪轉前的數組   輪轉后的數組

        1  2  3        2  3  1

        4  5  6  ---> 5  6  4

        7  8  9        8  9  7

要求實現的函數原型為:

void turningLeft(char a[N][N]);

 

【習題7.082】編寫函數將一個NxN的二維數組a的元素按列向下輪轉1位。

例如:輪轉前的數組   輪轉后的數組

        1  2  3        7  8  9

        4  5  6  ---> 1  2  3

        7  8  9        4  5  6

要求實現的函數原型為:

void turningDown(char a[N][N]);

 

【習題7.085】編寫函數將一個NxN的二維數組a的元素按列向上輪轉1位。

例如:輪轉前的數組   輪轉后的數組

        1  2  3        4  5  6

        4  5  6  ---> 7  8  9

        7  8  9        1  2  3

要求實現的函數原型為:

void turningUp(char a[N][N]);

 

【習題7.103】編寫函數,求整數mn的最大公約數,并作為函數的返回值。

要求實現的函數原型為:

int gdc(int m, int n);

 

【習題7.105】編寫函數,求整數mn的最小公倍數,并作為函數的返回值。

要求實現的函數原型為:

int lcm(int m, int n);

 

【習題7.115】 編寫函數,將兩個兩位數的正整數ab合并形成一個整數c且作為函數值返回。合并的方式是:將a的十位和個位數分別作為c的千位和十位數,b的十位和個位數分別作為c的百位和個位數。例如,若a=45b=12,則該函數返回值為4152

要求實現的函數原型為:

int func(int a, int b);

 

【習題7.125】編寫函數,對非負浮點數r的值的第三位小數四舍五入,返回保留2位小數的值。例如:若r的值為8.32488,則函數返回8.32;若r的值為8.32533,則返回8.33

要求實現的函數原型為:

float func(float r);

 

【習題7.135】假設n是一個k(k2)位的正整數,編寫函數,求出由n的低k-1位構成的數并作為函數值返回。例如:若n值為5923,則函數返回923;若n值為923,則函數返回23

要求實現的函數原型為:

int func(int n);

 

【習題7.175】編寫函數,求n以內(不包括n)同時能被37整除的所有自然數之和的平方根,并作為函數值返回。例如,若n100時,函數返回值應為14.491

要求實現的函數原型為:

float func(int n);

 

【習題7.184】編寫函數,根據公式s=1+1/(1+2)+1/(1+2+3)+……+1/(1+2+3++n)計算s,并作函數值返回。例如:若n的值為11時,函數的值為1.833333

要求實現的函數原型為:

float func(int n);

 

【習題7.187】編寫函數,計算下列級數和:1/(1*2)+1/(2*3)+1/(3*4)+ +1/(n*(n+1)),并返回結果。例如,當n=10時,函數值為0.90909

要求實現的函數原型為:

float func(int n);

 

【習題7.195】編寫函數,求m!/(n!(m-n)!)的值,結果由函數值返回。mn為兩個正整數且要求m>n。例如:m=12n=8時,運行結果為495.000000

要求實現的函數原型為:

float func(int m, int n);

 

【習題7.205】編寫函數,計算并返回給定整數n除了1與自身之外的所有因子之和。例如,若n=8,則函數返回6=2+4)。

要求實現的函數原型為:

int func(int n);

 

【習題7.255】編寫函數,根據以下公式返回π的值

 π/2 = 1+1!/3+2!/(3*5)+...+n!/(3*5*7*...*(2*n+1))

要求滿足精度eps,即一旦有小于eps的項值加入后停止迭代。例如,若精度eps=0.0005,則返回值為3.141106

要求實現的函數原型為:

float func(float eps);

 

【習題7.265】編寫函數,將數組s所存字符串中下標和ASCII碼均為偶數的字符,依次存入數組t中,并構成一個新串。例如,若s中的字符串值為ABCD123456,則t中的串值應為246

要求實現的函數原型為:

void func(char s[], char t[]);

 

【習題7.275】假定字符串s中可能含有字符'*'。請編寫函數,若字符串s的尾部連續的'*'多于n個,則刪除多余的'*'。例如,若s="*****A*BCDE**F*******"n=4,則調用函數后,字符串s="****A*BCDE**F****";若n7,則字符串s中的內容不變。注意:函數中不得調用C語言提供的字符串函數。

要求實現的函數原型為:

void func(char s[], int n);

 

【習題7.315】編寫函數,求出1n之間(n)能被711整除的所有整數并依次存入數組a中,函數值為這些數的個數。例如,若n=15,則依次存入數組a中的數為71114,函數值為3

要求實現的函數原型為:

int func(int n, int a[]);

 

【習題7.317】編寫函數,求出1n之間(n)都能被cd整除的所有整數并依次存入數組a中,函數值為這些數的個數。例如,若n=20c=2d=3,則依次存入數組a中的數為61218,函數值為3

要求實現的函數原型為:

int func(int n, int c, int d, int a[]);

 

【習題7.325】假設數組a存放了n個人的年齡。編寫函數,用數組c統計各年齡段的人數,其中c[0]09歲年齡段的人數,c[1]1019歲年齡段的人數,c[2]2029歲年齡段的人數,其余依此類推,c[10]100(100)以上年齡的人數。

要求實現的函數原型為:

void func(int n, int a[], int c[]);

 

【習題7.335】假設字符數組a中存放了按由小到大連續存放的字符構成的字符串(后跟一個'\0'作為結束符)。編寫函數,刪去字符串中所有重復的字符(各自只保留一個),并使得保留的字符仍構成一個字符串(連續存放,'\0'作為結束符)。函數返回a中保留的字符串長度。例如,若a中的字符串值為:AAABBCDFFFHHHKLMMM,則刪除重復字符之后,函數返回值為9a中的字符串值為:ABCDFHKLM

要求實現的函數原型為:

int func(char a[]);

 

【習題7.345】假設字符數組s中存放了一行字符串,含有由小寫字母組成的若干單詞,單詞之間由若干個空格隔開(串的開頭沒有空格)。編寫函數,統計一行字符串中單詞的個數,并作為函數值返回。

要求實現的函數原型為:

int func(char s[]);

 

【習題7.355】假定字符串s中可能含有字符'*'。請編寫函數,將字符串s中前導'*'全部移到字符串的尾部。例如,若s的串值為***A*BC*DEF*G**,移動后,串值應為A*BC*DEF*G*****。注意:不得調用C語言提供的字符串函數。

要求實現的函數原型為:

int func(char s[]);

 

【習題7.513】編寫函數,計算并返回數組a中頭n個元素的乘積。

要求實現的函數原型為:

long func(int a[], int n);

 

【習題7.523】編寫函數,計算并返回數組a中頭n個元素的平方和。

要求實現的函數原型為:

long func(int a[], int n);

 

【習題7.533】假設某班選舉班長,k位候選人的號碼分別為1kn張選票已存入數組v(每個元素值在1k之間)。編寫函數,用數組c統計各位候選人的得票(c[i]i號候選人的得票數)。

要求實現的函數原型為:

void func(int v[], int n, int k, int c[]);

 

【習題7.535】假設某班選舉班長,k位候選人的號碼分別為1kn張選票已存入數組v(每個元素值在1k之間)。編寫函數,用數組c統計各位候選人的得票(c[i]i號候選人的得票數),并返回得票最高的人的號碼。

要求實現的函數原型為:

int func(int v[], int n, int k, int c[]);

 

【習題7.563】編寫函數,把長整數n的各位數字從低位到高位依次存儲在數組d中,并返回n的位數。例如,若n=2579,則n的位數為4d[0..3]=9,7,5,2

要求實現的函數原型為:

int func(long n, int d[]);

 

【習題7.563】編寫函數,把長整數n的各位數字從高位到低位依次存儲在數組d中,并返回n的位數。例如,若n=2579,則n的位數為4d[0..3]=2,5,7,9

要求實現的函數原型為:

int func(long n, int d[]);

 

【習題7.655】編寫函數,用數組num統計字符串s中各元音字母(即:AEIOU)的個數。注意:不分大、小寫。例如,若s="THIs is a book",則num[0..4]={1,0,2,2,0}

要求實現的函數原型為:

void func(char *s, int *num);

/* 功能:用數組num統計符串s中元音字母出現的個數 */

 

【習題7.675】假設在數組s中存放了n位學生的成績。編寫函數,用數組p統計各分數段的人數,其中p[0]為不足60分的人數,p[1]6069分的人數,p[2]7079分的人數,p[3]8089分的人數,p[4]90100分的人數。

要求實現的函數原型為:

void func(int s[], int n, int p[]);

 

【習題7.685】編寫函數,從小到大依次求出能整除m的各整數,并存放在數組d中,這些除數的個數由n返回。例如,若m=20,則有6個數能整除它,依次是1,2,4,5,10,20

要求實現的函數原型為:

void func(int m, int d[], int *n);

 

【習題7.755】通信時經常用到加密技術,把消息加密后再傳輸。編寫一個用于加密消息的函數,把字符串str中的小寫字母改成“(ASCII+ key字符串中每個字符ASCII碼平方)除以128的余數”所對應的字符,其它的字符不變,其中str稱為消息原文,key稱為密鑰。

請思考:如何解密恢復原文,這種加密方法能準確地恢復原文嗎?

要求實現的函數原型為:

void func(char *str,char *key);

/* 功能:用key作為密鑰對字符串str進行加密處理 */

 

8章  善于利用指針(數組、指針和字符串)(例題0—習題29)

【習題8.011】請編寫一個函數func(char s[], char t[], int n),由數組s中長度為n的字符序列構造其逆序列,并存儲在數組t中。例如,由給定字符序列s=“are”求得逆序列t=“era”;由s=“time”求得t=“emit”

要求實現函數:

void func(char s[], char t[], int n);

/* 數組s的前n個元素存放給定的字符序列,

   數組t的前n個元素存放s的逆序列。

   注意:數組的下標從0開始。

*/

 

【習題8.012】請編寫一個函數func(char*s, char *t),由字符串s構造其逆串t

例如,由給定串s=“are”求得逆串t=“era”;由s=“time”求得t=“emit”

要求實現函數:

void func(char *s, char *t);

/* s是給定字符串的起始地址,

   t是新字符串的起始地址

*/

 

【習題8.015】對長度為n的字符串s1,除首、尾字符外,將其余字符按ASCII碼降序排列,組合成一個新的字符串s2

要求實現函數:

void func(char *s1, char *s2, int n);

/* s1為字符串的起始地址,

   s2為新字符串的起始地址,

   n是字符串的長度。

   要求:s1串不能發生改變,

         s2串存放新的字符串。

*/

 

【習題8.016】對字符串s1,除首、尾字符外,將其余字符按ASCII碼降序排列,組合成一個新的字符串s2

要求實現函數:

void func(char *s1, char *s2);

/* s1為字符串的起始地址,

   s2為新字符串的起始地址,

   注意:字符串尾字符之后跟隨著一個結束符‘\0’

         ASCII碼為0的字符,結束符不屬于字符串。

   要求:s1串不能發生改變,

         s2串存放新的字符串。

*/

 

【習題8.018】以字符串sm(>=0)個字符開始的所有字符,按升序的次序構成字符串t

要求實現函數:

void substr(char *s, int m, char *t);

/* s為字符串的起始地址,

   m>=0

   t為新字符串的起始地址,

   注意:字符串尾字符之后跟隨著一個結束符\0’,

         ASCII碼為0的字符,結束符不屬于字符串。

   要求:s串不能發生改變,

         t串存放新的字符串。

*/

 

【習題8.020】在字符串s中查找字符c,如果找到,返回字符c首次出現在字符串s中的位置指針;否則,返回空指針NULL

要求實現函數:

char *match(char *s, char c);

/* s為字符串的起始地址,

   c為要查找的字符,

   返回值為字符c在字符串s中首次出現的位置指針,

   c未在s中出現,則返回空指針NULL

*/

 

【習題8.033】編寫函數,計算年份year中第yearday天相應的月和日。例如,調用函數month_day(2000,61,&m,&d)之后,m=3d=1,即2000年的第61天是31日。

要求實現函數:

int month_day(int year, int yearday, int *pmonth, int *pday)

/* year是年,

   yearday是天數,

   yearyearday合理,

   *pmonth*pday是計算得出的月和日,函數返回1

   否則,函數返回0

*/

 

【習題8.044】請編寫一個函數func,通過略去非數字字符,將字符串s轉換為一個整數(不得調用C語言提供的將字符串轉換為整數的函數)

要求實現函數:

long func(char *s);

/* s是一個數字字符串的地址,

   函數返回值為由s含有的數字字符轉換得到的數(包含正負數情況) 

*/

 

【習題8.105】請編寫一個函數findmax(int s[], int n),返回數組sn(>0)個整數中的最大值。注意:要求在函數中采用指針(而不是下標)來處理數組元素。

要求實現函數:

int findmax(int s[], int n);

/* 返回sn(>0)個整數的最大值。

   注意:要求在函數中采用指針(而不是下標)來處理數組元素。

*/

 

【習題8.124】請編寫一個函數min3adj(int s[], int n),數組s中有n(>0)個整數,返回在s中相鄰三個數的和中的最小值。

要求實現函數:

int min3adj(int s[], int n);

/* 數組sn(>0)個整數,

   返回在s中相鄰三個數的和中的最小值。

*/

 

【習題8.132】編寫函數,通過指針參數sumxy的和賦給相應實際參數。例如,若x=134y=378,則sum的實參變量被賦值512

要求實現的函數原型為:

void func(int x, int y, int *sum);

 

【習題8.136】編寫函數,返回指針參數xy所指向的變量的值之和。

要求實現的函數原型為:

int func(int *x, int *y);

 

【習題8.138】編寫函數,比較指針參數xy分別指向的變量,若前者的值較大,則交換兩者的值,并返回1;否則無須交換,返回0

要求實現的函數原型為:

int func(int *x, int *y);

 

【習題8.143】假設指針a指向某數組中的一個元素。編寫函數,在從元素*a開始的n個元素范圍內,向后查找給定值x,一旦找到值等于x的元素,則返回該元素的序號;若找不到,則返回0。例如,假定a指向的10個元素依次為5,6,3,0,-4,8,9,-6,8,-7,若x=5,則返回1;若x=8,則返回6;若y=4,則返回0

要求實現的函數原型為:

int func(int n, int *a, int x);

 

【習題8.146】假設指針a指向某數組中的一個元素。編寫函數,對從元素*a開始的n個元素,統計并返回值為x的元素個數(若不存在這樣的元素,則返回0)。

要求實現的函數原型為:

int func(int n, int *a, int x);

 

【習題8.203】編寫函數,返回指針參數s所指向的字符串的長度。例如,若該串為"I am a teacher.",則函數返回值是15。注意:字符串結束符是'\0',不計入長度。不允許調用庫函數strlen()

要求實現的函數原型為:

int func(char *s);

 

【習題8.212】編寫函數,在指針參數s所指向的字符串中順序查找由c指定的字符。一旦找到,則返回該字符在串中的序號(串的首個字符的序號為1),否則返回0。例如,若該串為"I am a student."c='t',則函數返回值為9。注意:字符串結束符是'\0',不允許調用字符串庫函數。

要求實現的函數原型為:

int func(char *s, char c);

 

【習題8.215】編寫函數,在指針參數s所指向的字符串中統計并返回由c指定的字符的個數。例如,若該串為"I am a student."c='t',則函數返回值為2。注意:字符串結束符是'\0',不允許調用字符串庫函數。

要求實現的函數原型為:

int func(char *s, char c);

 

【習題8.222】編寫函數,復制指針參數s指向的字符串到由指針參數t已經指向的存儲區域。注意:字符串結束符是'\0',不允許調用字符串庫函數。

要求實現的函數原型為:

void func(char *s, char *t);

 

【習題8.225】編寫函數,由指針參數s指向的字符串頭n個字符構造一個字符串,并存儲到到由指針參數t已經指向的存儲區域。例如,若s指向的字符串為"I am a student."n=4,則t指向的串為"I am"。注意:字符串結束符是'\0',不允許調用字符串庫函數。

要求實現的函數原型為:

void func(char *s, int n, char *t);

 

【習題8.228】編寫函數,由指針參數s指向的字符串后n個字符構造一個字符串,并存儲到到由指針參數t已經指向的存儲區域。例如,若s指向的字符串為"I am a student."n=8,則t指向的串為"student."。注意:字符串結束符是'\0',不允許調用字符串庫函數。

要求實現的函數原型為:

void func(char *s, int n, char *t);

 

【習題8.231】編寫函數,由指針參數s指向的字符串中第i個字符開始的n個字符構造一個字符串,并存儲到到由指針參數t已經指向的存儲區域。例如,若s指向的串為"I am a student."i=8n=7,則t指向的串為"student"。注意:字符串結束符是'\0',不允許調用字符串庫函數。

要求實現的函數原型為:

void func(char *s, int i, int n, char *t);

 

【習題8.234】編寫函數,通過將s字符串中所有小寫字母轉換成大寫字母,構造一個字符串并存儲在t已經指向的存儲區域,但原來的s串不改變。例如,若s字符串為"I am a student.",則構造的t串為"I AM A STUDENT.”。

要求實現的函數原型為:

void func(char *s, char *t);

 

【習題8.237】編寫函數,通過將s字符串中所有大寫字母轉換成小寫字母,構造一個字符串并存儲在t已經指向的存儲區域,但原來的s串不改變。例如,若s字符串為"I Am a Student.",則構造的t串為"i am a student.”。

要求實現的函數原型為:

void func(char *s, char *t);

 

【習題8.243】編寫函數,在字符串s中順序查找字符串t,若找到,則返回其出現的位置,否則返回0。例如,設s="I am a student.",若t="stu",則返回值是8;若t="an",則返回值是0。注意:字符串結束符是'\0',不允許調用字符串庫函數。

要求實現的函數原型為:

int func(char *s, char *t);

 

【習題8.246】假設字符串中每個連續字母序列稱為“單詞”。編寫函數,在字符串s中順序獲取每個單詞,依次存入w指示的二維數組,并返回單詞個數。例如,若有s="I am a student",則w={"I","am","a","student"}。注意:字符串結束符是'\0',不允許調用字符串庫函數。

要求實現的函數原型為:

int func(char *s, char (*w)[10]);

 

【習題8.282】編寫函數,查找并返回p指示的二維數組中的元素最大值。例如,二維數組的元素值依次為{{45,38,-6,78},{34,48,70,4},{-9,0,4,20}},則函數返回值為78

要求實現的函數原型為:

int func(int (*p)[4], int n);

/* 求二維數組中的最大值 */

 

【習題8.285】編寫函數,依次對p指示的二維數組的每一行元素值求和,并存入數組sum中。例如,若二維數組的元素值依次為{{45,38,-6,78},{34,48,70,4},{-9,0,4,20}},則sum[0..2]={155,156,15}

要求實現的函數原型為:

void func(int (*p)[4], int n, int *sum);

/* 求二維數組中各行元素值的和 */

 

【習題8.288】編寫函數,依次對p指示的二維數組的每一列元素值求平均值,并存入數組avg中。例如,若二維數組的元素值依次為{{45,38,-6,78},{34,48,70,4},{-9,0,4,20}},則avg[0..2]={23.33,28.67,34.00}

要求實現的函數原型為:

void func(int (*p)[4], int n, float *avg);

/* 求二維數組中各列元素值的平均值 */

 

9章  用戶自己建立數據類型(結構體和鏈表)(例題0—習題14)

【習題9.023】結構體類型定義如下:

    struct date{int year; int month; int day;}; //定義日期結構體類型

    struct student

    {  char name[10];      //人名

       struct date birth; //出生日期

    };

結構體數組s存儲了n個人的名字和出生日期。寫一函數,求這n個人中年齡最大(即出生日期最小)者的姓名。

要求實現下列函數:

char *oldest(struct student s[], int n);

 

【習題9.025】結構體類型定義如下:

    struct date{int year; int month; int day;}; //定義日期結構體類型

    struct student

    {  char id[10];        //學號

       char name[20];      //姓名

       struct date birth;  //出生日期

    };

結構體數組s存儲了n個人的學號、名字和出生日期。寫一函數,以結構體的形式返回這n個人中年齡最大(即出生日期最小)者的信息。

要求實現下列函數:

struct student oldest(struct student s[], int n);

 

【習題9.027】結構體類型定義如下:

    struct student

    {  char id[10];    //學號

       char name[10];  //姓名

       int  score[5];  //各門課成績

    };

結構體數組s存儲了n個學生的學號、名字和各門課成績。編寫函數,返回這n個人中第i門課成績最高者的學號。

要求實現下列函數:

char *best(struct student s[], int n, int i);

 

【習題9.029】結構體類型定義如下:

    struct student

    {  char id[10];    //學號

       char name[10];  //姓名

       int  score[5];  //各門課成績

    };

結構體數組s存儲了n個學生的學號、名字及其5門課成績。編寫函數,返回這n個人中5門課成績總分最高者的學號。

要求實現下列函數:

char *best(struct student s[], int n);

 

【習題9.033】日期和鏈表結點的結構體類型定義如下:

    struct date{int year; int month; int day;}; //日期結構體類型

    struct studentNode    //鏈表結點的結構體類型

    {  char name[10];      //人名

       struct date birth; //出生日期

       struct studentNode *next

    };

結構體鏈表L存儲了n個人的名字和出生日期。寫一函數,求這n個人中年齡最大(即出生日期最小)者的名字。

要求實現下列函數:

char *oldest(struct studentNode *L);

/* L是空表,則返回空指針null

   否則返回表中年齡最大者的名字

 */

 

【習題9.053】結構體類型定義如下:

    struct person

    {  int   id;        //員工號

       char  name[10];  //姓名

       int   age;       //年齡

       char  sex;       //性別

    };

結構體數組personnel[n]存儲了n位員工的信息。寫一函數,返回年齡在a及以上的員工數。

要求實現下列函數:

int count(struct person personnel[], int n, int a);

 

【習題9.055】結構體類型定義如下:

    struct person

    {  int   id;        //員工號

       char  name[10];  //姓名

       int   age;       //年齡

       char  sex;       //性別

    };

結構體數組personnel[n]存儲了n位員工的信息。寫一函數,返回年齡在a及以上的x性別的員工數。

要求實現下列函數:

int count(struct person personnel[], int n, int a, char x);

 

【習題9.063】結構體類型定義如下:

    struct course

    {  int   cID;        //課程號,取值0~99

       char  name[10];  //課程名

       float credit;    //學分,取值0~5

       int   semester;  //學期,取值1~8

    };

結構體數組c存儲了n門課程的信息。寫一函數,求學期s的總學分。

要求實現下列函數:

float creditSum(struct course c[], int n, int s);

 

【習題9.073】課程鏈表結點的結構體類型定義如下:

    struct courseNode  //課程鏈表結點的結構體類型

    {  int   cID;        //課程號,取值0~99

       char  name[10];  //課程名

       float credit;    //學分,取值0~5

       int   semester;  //學期,取值1~8

       struct courseNode *next;

    };

結構體鏈表Lc存儲了各學期多門課程的信息。寫一函數,求學期s的總學分。

要求實現下列函數:

float creditSum(struct courseNode *Lc, int s);

/* Lc是空表,則返回0;

   否則返回學期s的總學分

 */

 

【習題9.133】日期和結構體類型定義如下:

    struct date{int year; int month; int day;}; //日期結構體類型

    struct student         //結構體類型

    {  char name[10];      //人名

       struct date birth; //出生日期

    };

結構體數組s存儲了n個人的名字和出生日期。寫一函數,由數組sn個人

的信息及其順序構造相應的鏈表。鏈表的結點的結構體類型定義如下:

    struct studentNode    //結構體類型

    {  char name[10];      //人名

       struct date birth; //出生日期

       struct studentNode *next

    };

要求實現下列函數:

struct studentNode *CreateLinkList(struct student s[], int n);

 

【習題9.173】課程鏈表結點的結構體類型定義如下:

    struct courseNode   //課程鏈表結點的結構體類型

    {  int   cID;        //課程號,取值0~99

       char  name[10];  //課程名

       float credit;    //學分,取值0~5

       int   semester;  //學期,取值1~8

       struct courseNode *next;

    };

結構體鏈表Lc存儲了多門課程的信息。寫一函數,將課程號為c的課程的學分修改為t

要求實現下列函數:

struct courseNode *creditChange(struct courseNode *Lc, int c, float t);

/* 若課程c不存在,則修改不成功,返回null;

   否則修改該課程的學分為t,返回指向該課程結點的指針。

 */

 

【習題9.183】課程鏈表結點的結構體類型定義如下:

    struct courseNode   //課程鏈表結點的結構體類型

    {  int   cID;        //課程號,取值0~99

       char  name[10];  //課程名

       float credit;    //學分,取值0~5

       int   semester;  //學期,取值1~8

       struct courseNode *next;

    };

結構體鏈表Lc存儲了多門課程的信息。寫一函數,將課程號為c的課程結點刪除。

要求實現下列函數:

struct courseNode *deleteCourse(struct courseNode **Lc, int c);

/* 若在鏈表Lc中課程c不存在,則刪除不成功,返回null;

   否則從鏈表Lc中刪除該課程結點,并返回指向該課程結點的指針。

 */

 

【習題9.302】單向鏈表的結點類型定義如下:

struct node{

      char  ch;

      struct node *next;

};

編寫函數,對單向鏈表L實現就地逆置,即將所有結點的指針反向,原鏈頭當作鏈尾,原鏈尾當作鏈頭,并返回逆置后鏈表的頭指針。

實現下列函數:

struct node *inverse(struct node *L);

/* 對單向鏈表L實現就地逆置,并返回逆置后鏈表的頭指針。*/

 

【習題9.352】單向鏈表的結點類型定義如下:

    struct node{

      char  ch;

      struct node *next;

    };

編寫函數,對單向鏈表L實現排序,即按結點的ch值,從小到大重構鏈表L,并返回排序后的鏈表的頭指針。

實現下列函數:

struct node *sorting(struct node *L);

/* 對單向鏈表L實現從小到大排序,并返回重構后的鏈表的頭指針。*/

AnyviewC編程作業系統——支持程序可視化運行、調試和測評

版權所有 IT知識庫 CopyRight ? 2009-2015 IT知識庫 IT610.com , All Rights Reserved. 京ICP備09083238號
广东25选5开奖结果