C語言程序設計任務式教程趙秀芝課后參考答案_第1頁
C語言程序設計任務式教程趙秀芝課后參考答案_第2頁
C語言程序設計任務式教程趙秀芝課后參考答案_第3頁
C語言程序設計任務式教程趙秀芝課后參考答案_第4頁
C語言程序設計任務式教程趙秀芝課后參考答案_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

【練習1】模仿案例1,在屏幕上輸出“我愛你,中國!”。#include<stdio.h>

intmain(){

printf("我愛你,中國!\n");

return0;

}使用流程圖描述求兩個整數(shù)x和y最大值的算法。程序設計的一般步驟是什么?分析問題設計算法編寫程序運行程序,分析結果編寫程序文檔【練習1】指出表2.2中的詞匯,哪些可以作為標識符,哪些不可以作為標識符,并給出原因。表2.2判斷哪些可以作為標識符intINThelloHellohello2hello2.8#hello2helloCC++Python3.7x+yx<y>windowsiOSx=?int:不可以,因為int是c語言里的關鍵字INT:可以hello:可以Hello:可以hello2:可以Hello2.8:不可以,因為標識符只能由下劃線(_)、英文字母(A~Z和a~z)以及數(shù)字字符(0~9)構成,并且不能以數(shù)字字符開頭#hello:不可以,因為標識符只能由下劃線(_)、英文字母(A~Z和a~z)以及數(shù)字字符(0~9)構成,并且不能以數(shù)字字符開頭2hello:不可以,因為標識符只能由下劃線(_)、英文字母(A~Z和a~z)以及數(shù)字字符(0~9)構成,并且不能以數(shù)字字符開頭C:可以C++:不可以,因為標識符只能由下劃線(_)、英文字母(A~Z和a~z)以及數(shù)字字符(0~9)構成,并且不能以數(shù)字字符開頭Python3.7:不可以,因為標識符只能由下劃線(_)、英文字母(A~Z和a~z)以及數(shù)字字符(0~9)構成,并且不能以數(shù)字字符開頭x+y:不可以,因為標識符只能由下劃線(_)、英文字母(A~Z和a~z)以及數(shù)字字符(0~9)構成,并且不能以數(shù)字字符開頭x<y>:不可以,因為標識符只能由下劃線(_)、英文字母(A~Z和a~z)以及數(shù)字字符(0~9)構成,并且不能以數(shù)字字符開頭windows:可以iOS:可以x=?:不可以,因為標識符只能由下劃線(_)、英文字母(A~Z和a~z)以及數(shù)字字符(0~9)構成,并且不能以數(shù)字字符開頭【練習2】許多編譯器允許美元符$出現(xiàn)在標識符之中,例如,$、$1、a$等在這些編譯環(huán)境中都是合法標識符。測試你使用的編譯器是否支持在標識符中使用美元符$?!揪毩?】使用宏定義和常變量兩種方式分別定義符號N,令N代表100。#defineN100constintN=100;【練習4】嘗試給出表2.3中各個類型對應的無符號整型的取值范圍。類型縮寫占用字節(jié)取值范圍shortintshort2?intint32位系統(tǒng)中占4字節(jié)(?2longintlong4?longlongintlonglong8?類型字節(jié)取值范圍unsignedshortint20~65,535unsignedint40~4,294,967,295unsignedlongint40~4294967295unsignedlonglongint80~18,446,744,073,709,551,615【練習5】為表2.6中的屬性填寫合適的數(shù)據(jù)類型,并給出理由。表2.6為屬性填寫數(shù)據(jù)類型屬性類型理由年齡int年齡只能是整數(shù)月工資double工作可能會出現(xiàn)小數(shù)考試分數(shù)double平時分和期末分折算后可能會出現(xiàn)小數(shù)性別char性別“男”“女”應用字符類型跳高成績double跳高的高度可能會出現(xiàn)小數(shù)【練習6】在程序中定義一些變量,表示某人的出生日期、身高和體重信息,并使用自己的信息作為初始值。intyear=2005;

intmonth=1;

intday=1;

intheight=175;

doubleweight=65.3;【練習7】指出表達式2.5f+(int)7.8%2中存在的類型轉換。double-->int(7.8-->7)int-->float((int)7.8%2-->1.000000)【練習8】指出下面代碼片段中存在的隱式類型轉換。chara='A';---->?shortb=32;---->?intc=1+1.5;---->int-->float(1+1.5-->2.5)doubled=a+b;---->char-->int('A'-->65)【練習9】模仿案例6使用printf輸出今天的天氣情況,溫度、濕度、風力等可能是變量數(shù)據(jù)利用“占位”形式輸出。#include<stdio.h>

intmain(){

floattemperature=37.1;//溫度

floathumidity=47.3;//濕度

floatwindPower=3.5;//風力

printf("%f攝氏度\n",temperature);

printf("%f級\n",humidity);

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

return0;

}【練習10】改寫案例6,要求輸出小明體重和身高信息時保留2位小數(shù)。#include<stdio.h>

intmain()

{

intage=18;//定義變量保存年齡

floatweight=70.25f;//定義變量保存體重

doubleheight=1.85;//定義變量保存身高

chargender='M';//定義變量保存性別

printf("年齡:%d\n",age);//輸出年齡

printf("體重(公斤):%0.2f\n",weight);//輸出體重

printf("身高(米):%0.2f\n",height);//輸出身高

printf("性別(男M/女F)%c\n",gender);//輸出性別

printf("愛好:%s\n","編程序、打游戲");//輸出愛好

return0;

}【練習11】使用%u、%o和%x分別輸出123和-1,并觀察顯示結果,分析原因。#include<stdio.h>

intmain(){

printf("%u,%u\n",123,-1);

printf("%o,%o\n",123,-1);

printf("%x,%x\n",123,-1);

return0;

}【練習12】嘗試分別使用%d和%lld輸出longlong型數(shù)據(jù)9876543210,并觀察顯示結果。#include<stdio.h>

intmain(){

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

printf("%lld\n",9876543210);

return0;

}【練習13】定義double變量d,輸入變量d,四舍五入輸出整數(shù)部分。#include<stdio.h>

intmain(){

doubled;

intnext;

scanf("%lf",&d);

next=(int)(d*10)%10;

if(next<5){

printf("%d",(int)d);

}else{

printf("%d",(int)d+1);

}

return0;

}【練習14】在程序中定義一些變量,表示某人的出生日期、身高和體重信息,將自己的信息輸入這些變量,并輸出?!揪毩?5】修改案例11的代碼,將其中的++換成--,觀察運行結果并分析原因?!揪毩?6】指出表2.13中算術表達式的值和類型,并使用printf輸出。表2.13算術表達式1+3.53.5f+8'A'+17/3/27/(3/2)-7%3-7%-37%-31+3.5-->4.5f3.5f+8-->12.5f‘A’+1-->‘B’(char)或66(int)7/3/2-->1(int)7/(3/2)-->7(int)-7%3-->-1(int)-7%-3-->-1(int)【練習17】分析下面程序的輸出結果。源程序:#include<stdio.h>intmain(){ inta=33,b=33,c=4,d=4; a%=c++; b%=++d; printf("%d,%d,%d,%d\n",a,b,c,d); return0;}【練習18】分析下面程序的輸出結果。源程序:#include<stdio.h>intmain(){ printf("%d\n",sizeof1.2+4); printf("%d\n",sizeof(1.2+4)); printf("%d\n",sizeof-3.8); printf("%d\n",-sizeof3.8); return0;}【練習19】使用sizeof運算符和printf函數(shù),打印表2.3和表2.4中數(shù)據(jù)類型占用的字節(jié)數(shù)。#include<stdio.h>

intmain()

{

printf("shortint-->%d字節(jié)\n",sizeof(shortint));

printf("int-->%d字節(jié)\n",sizeof(int));

printf("longint-->%d字節(jié)\n",sizeof(longint));

printf("longlongint-->%d字節(jié)\n",sizeof(longlongint));

printf("float-->%d字節(jié)\n",sizeof(float));

printf("double-->%d字節(jié)\n",sizeof(double));

return0;

}編寫程序提示用戶輸入浮點數(shù)表示華氏溫度值,輸出對應的攝氏溫度值。攝氏度(C)=(華氏度(F)-32)÷1.8。#include<stdio.h>

intmain(){

floatF,C;

scanf("%f",&F);

C=(F-32)/1.8;

printf("攝氏度:%f\n",C);

return0;

}編寫程序提示用戶輸入浮點數(shù)表示攝氏溫度值,輸出對應的華氏溫度值。華氏度(F)=32+攝氏度(C)×1.8。#include<stdio.h>

intmain(){

floatF,C;

scanf("%f",&C);

F=32+C*1.8;

printf("華氏度:%f\n",F);

return0;

}【練習1】假設有整型變量x,按要求寫出表達式。判斷x能否被3整除; if(x%3==0)判斷x是否為5和7的公倍數(shù); if(x%5==0&&x%7==0)判斷x不在閉區(qū)間[1,10]; if(x<1&&x>10)判斷x是否為正偶數(shù)。 if(x%2==0)【練習2】在表3.4中填寫常量表達式對應的邏輯值。表3.4判斷表達式的“真/假”表達式真/假表達式真/假表達式真/假表達式真/假5>6假-8.6假!5+6真4<7&&9%3假6/7假6%7真!(5+6)假4<7||9%3真【練習3】給出下面程序運行結果,分析原因。源程序:#include<stdio.h>intmain(){ inta=3,b=4,c=5; printf("%d\n",a>b&&b++&&c--);printf("%d,%d\n",b,c);}【練習4】給出下面程序運行結果,分析原因。源程序:#include<stdio.h>intmain(){ unsigneda=100,b=1; intc=100,d=1; printf("%d\n",-1>a&&b++); printf("%d\n",-1>c&&d++); printf("b=%d,d=%d\n",b,d); return0;}【練習5】編寫程序,輸入一個整數(shù)表示年份,判斷該年份是否是閏年,閏年輸出1,平年輸出0。閏年的判斷標準是:能被400整除的年份是閏年,例如2000年是閏年;或者,能被4整除同時不能被100整除的年份是閏年,例如2020年是閏年,1900年不是閏年(雖然1900能被4整除,也能被100整除,但1900不能被400整除)。#include<stdio.h>

intmain()

{

intyear;

scanf("%d",&year);

if(year%400==0||year%4==0&&year%100!=0){

printf("是閏年");

}else{

printf("不是閏年");

}

return0;

}【練習6】模仿案例4輸入兩個浮點數(shù),求最小值,并輸出結果。#include<stdio.h>

intmain()

{

floatx,y;

printf("請輸入兩個浮點數(shù):\n");

scanf("%f%f",&x,&y);

if(x<y)//if語句,判斷x是否小于y,滿足條件執(zhí)行x=y

{

x=y;

}

printf("大數(shù)=%f\n",x);

return0;

}【練習7】模仿案例5的代碼,實現(xiàn)三值排降序,并測試所有可能的輸入。#include<stdio.h>

intmain()

{

intx,y,z;

printf("請輸入三個整數(shù):\n");

scanf("%d%d%d",&x,&y,&z);

intt;

if(y>x)//第一次比較前兩個數(shù),滿足條件交換

{

t=y;

y=x;

x=t;

}

if(z>y)//第二次比較后兩個數(shù),滿足條件交換

{

t=z;

z=y;

y=t;

}

if(y>x)//第三次再次比較前兩個數(shù),滿足條件交換

{

t=y;

y=x;

x=t;

}

printf("x=%d,y=%d,z=%d\n",x,y,z);

return0;

}【練習8】分析以下代碼實現(xiàn)的功能。源程序:#include<stdio.h>intmain(){ intscore; printf("輸入一個整數(shù):\n"); scanf("%d",&score); if(score>100||score<0) printf("輸入有誤\n"); if(score>=90&&score<=100) printf("A\n"); if(score>=80&&score<90) printf("B\n"); if(score>=70&&score<80) printf("C\n"); if(score>=60&&score<70) printf("D\n"); if(score>=0&&score<60) printf("E\n"); return0;}score90~100為Ascore80~89為Bscore70~79為Cscore60~69為Dscore60以下為E【練習9】糾正下面代碼中的錯誤,實現(xiàn)輸入月份,并輸出對應季度的功能。源程序:#include<stdio.h>intmain(){ intmonth; printf("輸入一個整數(shù)代表月份:\n"); scanf("%d",&month); if(month>12||month<1) printf("輸入有誤\n"); if(month>=1&&month<=3) printf("第一季度\n"); if(month>=4||month<=6) printf("第二季度\n"); if(month>=7&month<=9) printf("第三季度\n"); if(month>=10&&month<=12); printf("第四季度\n"); return0;}#include<stdio.h>

intmain()

{

intmonth;

printf("輸入一個整數(shù)代表月份:\n");

scanf("%d",&month);

if(month>12||month<1)

printf("輸入有誤\n");

if(month>=1&&month<=3)

printf("第一季度\n");

if(month>=4&&month<=6)

printf("第二季度\n");

if(month>=7&&month<=9)

printf("第三季度\n");

if(month>=10&&month<=12)

printf("第四季度\n");

return0;

}【練習10】輸入兩個整數(shù),使用if-else語句輸出兩個整數(shù)的最大值。#include<stdio.h>

intmain()

{

intx,y;

printf("請輸入兩個整數(shù):\n");

scanf("%d%d",&x,&y);

if(x<y)//if語句,判斷x是否小于y,滿足條件執(zhí)行x=y

{

x=y;

}

printf("大數(shù)=%d\n",x);

return0;

}【練習11】輸入兩個整數(shù),使用條件表達式輸出兩個整數(shù)的最大值。#include<stdio.h>

intmain()

{

intx,y;

printf("請輸入兩個整數(shù):\n");

scanf("%d%d",&x,&y);

printf("大數(shù)=%d\n",x<y?x=y:y);

return0;

}【練習12】輸入三個整數(shù),輸出三個整數(shù)的最大值。#include<stdio.h>

intmain()

{

intx,y,z;

printf("請輸入三個整數(shù):\n");

scanf("%d%d%d",&x,&y,&z);

intt;

if(y<x)//第一次比較前兩個數(shù),滿足條件交換

{

t=y;

y=x;

x=t;

}

if(z<y)//第二次比較后兩個數(shù),滿足條件交換

{

t=z;

z=y;

y=t;

}

if(y<x)//第三次再次比較前兩個數(shù),滿足條件交換

{

t=y;

y=x;

x=t;

}

printf("最大值=%d\n",z);

return0;

}【練習13】計算分段函數(shù)的值。要求從鍵盤輸入一個浮點型變量,根據(jù)f(x)的表達式,求分段函數(shù)y=f(x)的值,其f(x)表達式如下所示:

y#include<stdio.h>

intmain()

{

floatx,y;

scanf("%f",&x);

if(x>10){

y=x+2;

}elseif(x<0){

y=2*x-2;

}else{

y=0;

}

printf("y=%f\n",y);

return0;

}【練習14】輸入月份,輸出對應季度,使用嵌套if-else語句的方式實現(xiàn)。#include<stdio.h>

intmain()

{

intmonth;

printf("輸入一個整數(shù)代表月份:\n");

scanf("%d",&month);

if(month>12||month<1)

printf("輸入有誤\n");

if(month>=1&&month<=3)

printf("第一季度\n");

if(month>=4&&month<=6)

printf("第二季度\n");

if(month>=7&&month<=9)

printf("第三季度\n");

if(month>=10&&month<=12)

printf("第四季度\n");

return0;

}【練習15】使用switch語句完成練習14的內(nèi)容。#include<stdio.h>

intmain(){

intmonth;

printf("輸入一個整數(shù)代表月份:\n");

scanf("%d",&month);

switch(month){

case1:

printf("第一季度\n");

break;

case2:

printf("第一季度\n");

break;

case3:

printf("第一季度\n");

break;

case4:

printf("第二季度\n");

break;

case5:

printf("第二季度\n");

break;

case6:

printf("第二季度\n");

break;

case7:

printf("第三季度\n");

break;

case8:

printf("第三季度\n");

break;

case9:

printf("第三季度\n");

break;

case10:

printf("第四季度\n");

break;

case11:

printf("第四季度\n");

break;

case12:

printf("第四季度\n");

break;

default:

printf("輸入有誤\n");

break;

}

return0;

}【練習16】輸入一個整數(shù)表示月份,輸出平年中,該月份的天數(shù)。注意,程序中要有輸入合法性驗證的分支。#include<stdio.h>

intmain(){

intmonth;

printf("輸入一個整數(shù)代表月份:\n");

scanf("%d",&month);

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){

printf("%d月有31天\n",month);

}elseif(month==4||month==6||month==9||month==11){

printf("%d月有30天\n",month);

}elseif(month==2){

printf("%d月有28天\n",month);

}else{

printf("月份輸入有誤\n");

}

return0;

}【練習17】以“按1杭州、按2寧波、……、按11麗水”的形式提供用戶選擇界面,界面中需要包含浙江省11個地級城市;在接受用戶輸入的整數(shù)后,輸出對應城市的簡介,簡介的內(nèi)容自擬。#include<stdio.h>

intmain(){

intn;

printf("1.杭州市\(zhòng)n2.寧波市\(zhòng)n3.溫州市\(zhòng)n4.嘉興市\(zhòng)n5.湖州市\(zhòng)n6.紹興市\(zhòng)n7.金華市\(zhòng)n8.衢州市\(zhòng)n9.舟山市\(zhòng)n10.臺州市\(zhòng)n11.麗水市\(zhòng)n");

printf("請選擇你要查看的城市序號:\n");

scanf("%d",&n);

if(n==1){

printf("杭州市");

}elseif(n==2){

printf("寧波市");

}elseif(n==3){

printf("溫州市");

}elseif(n==4){

printf("嘉興市");

}elseif(n==5){

printf("湖州市");

}elseif(n==6){

printf("紹興市");

}elseif(n==7){

printf("金華市");

}elseif(n==8){

printf("衢州市");

}elseif(n==9){

printf("舟山市");

}elseif(n==10){

printf("臺州市");

}elseif(n==11){

printf("麗水市");

}else{

printf("輸入的序號錯誤\n");

}

return0;

}輸入兩個整數(shù)表示出生日期的月和日,輸出該出生日期對應的星座。輸入合法性驗證中,2月按照29天計算,即2月29日是合法日期。#include<stdio.h>intmain(){intmonth,day;printf("請輸入出生日期的月份和日期(以空格分隔):");scanf("%d%d",&month,&day);if((month==1&&day>=20)||(month==2&&day<=18)){printf("水瓶座");}elseif((month==2&&day>=19)||(month==3&&day<=20)){printf("雙魚座");}elseif((month==3&&day>=21)||(month==4&&day<=19)){printf("白羊座");}elseif((month==4&&day>=20)||(month==5&&day<=20)){printf("金牛座");}elseif((month==5&&day>=21)||(month==6&&day<=21)){printf("雙子座");}elseif((month==6&&day>=22)||(month==7&&day<=22)){printf("巨蟹座");}elseif((month==7&&day>=23)||(month==8&&day<=22)){printf("獅子座");}elseif((month==8&&day>=23)||(month==9&&day<=22)){printf("處女座");}elseif((month==9&&day>=23)||(month==10&&day<=23)){printf("天秤座");}elseif((month==10&&day>=24)||(month==11&&day<=22)){printf("天蝎座");}elseif((month==11&&day>=23)||(month==12&&day<=21)){printf("射手座");}elseif((month==12&&day>=22)||(month==1&&day<=19)){printf("摩羯座");}else{printf("輸入的日期不合法");}return0;}以分別輸入年、月、日的方式讀入一個合法日期,輸出該日期是當年的第幾天(注意閏年與平年)。#include<stdio.h>intmain(){intyear,month,day;intdaysOfMonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};inttotalDays=0;printf("請輸入年份:");scanf("%d",&year);printf("請輸入月份:");scanf("%d",&month);printf("請輸入日期:");scanf("%d",&day);if(year%4==0&&year%100!=0||year%400==0){daysOfMonth[2]=29;}for(inti=1;i<month;i++){totalDays+=daysOfMonth[i];}totalDays+=day;printf("該日期是當年的第%d天",totalDays);return0;}編寫程序,提示用戶輸入一個整數(shù)表示每周工作的小時數(shù),輸入一個浮點數(shù)表示時薪,輸出本周的工資收入。當周工作時間小于或等于40小時時,工資收入等于小時數(shù)乘以時薪;工作時間超過40小時且小于或等于80小時時,超出40小時的部分可獲得1.5倍的時薪;工作時間超過80小時,不輸出工資收入,提示用戶“注意身體”。#include<stdio.h>intmain(){inthours;floathourlyRate;floatincome;printf("請輸入每周工作的小時數(shù):");scanf("%d",&hours);printf("請輸入時薪:");scanf("%f",&hourlyRate);if(hours<=40){income=hours*hourlyRate;}elseif(hours<=80){income=40*hourlyRate+(hours-40)*hourlyRate*1.5;}else{printf("注意身體");return0;}printf("本周的工資收入為:%.2f",income);return0;}某市出租車分為A、B、C三個檔次。A檔出租車起步價20元,超過3公里每公里按5元計費;B檔出租車起步價15元,超過3公里每公里按4元計費;C檔出租車起步價10元,超過3公里每公里按3元計費。編寫一個程序,用戶以字母的形式輸入出租車檔次,以浮點數(shù)形式輸入乘坐里程,根據(jù)用戶的輸入,計算車費,并以四舍五入的方式輸出車費的整數(shù)部分。#include<stdio.h>#include<math.h>intmain(){chargrade;floatdistance;intfare;printf("請輸入出租車檔次(A/B/C):");scanf("%c",&grade);printf("請輸入乘坐里程(公里):");scanf("%f",&distance);if(grade=='A'){fare=20+ceil(fmax(distance-3,0))*5;}elseif(grade=='B'){fare=15+ceil(fmax(distance-3,0))*4;}elseif(grade=='C'){fare=10+ceil(fmax(distance-3,0))*3;}else{printf("輸入的檔次無效");return0;}printf("車費為:%d",fare);return0;}“甲、乙、丙、丁、戊、己、庚、辛、壬、癸”稱為十天干,“子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥”稱為十二地支。把干支順序相配,正好60為一周期,周而復始,循環(huán)記錄。這就是“干支紀年”。已知2023年癸卯年。編寫程序,輸入一個代表年份的整數(shù),輸出相應的天干和地支。#include<stdio.h>intmain(){chartg[10][3]={"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};chardz[12][3]={"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"};intyear;scanf("%d",&year);intt=(year-4)%10;intd=(year-4)%12;printf("%d年%s%s年",year,tg[t],dz[d]);return0;}嚴謹細致的工作態(tài)度是程序員必備的職業(yè)素養(yǎng)。在本項目案例6中,用于求解一元二次方程ax2+bx+c=0的代碼不夠“完美”,其中沒有考慮用戶為a或b輸入0值的極端情況。編寫程序,使用if和if-else的嵌套改寫案例6,考慮a為0且b不為0時,一元一次方程的解;以及a和b同為0且c不為0時,方程無解的情況。#include<stdio.h>#include<math.h>intmain(){doublea,b,c;printf("請輸入三個浮點數(shù):\n");scanf("%lf%lf%lf",&a,&b,&c);if(a==0&&b!=0){printf("x=%lf",-c/b);}elseif(a==0&&b==0&&c!=0){printf("x屬于R\n");}else{doubledelta=b*b-4*a*c;//delta代表一元二次方程的根判別式?if(delta<0)////通過根判別式?決定流程{printf("方程無解\n");}else{//存在實數(shù)解的分支delta=sqrt(delta);//開方printf("x1=%lf,x2=%lf\n",(-b-delta)/2/a,(-b+delta)/2/a);//輸出解}}return0;}【練習1】案例2中用戶輸入整數(shù)的個數(shù)是固定值4,即使不使用循環(huán)也能很容易地寫出代碼。請改寫案例2,使程序能夠計算“任意多個”同學成績的和。提示:增加變量n表示要輸入成績的個數(shù),用戶在輸入n個成績之前,先輸入n。#include<stdio.h>

intmain()

{

intn=0,x=0,sum=0,i=0;//定義并初始變量

scanf("%d",&n);

while(i<n)//循環(huán)條件

{

scanf("%d",&x);//讀入x

sum+=x;//累加

++i;//改變循環(huán)變量

}

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

return0;

}【練習2】模仿案例3,實現(xiàn)求一組數(shù)平均數(shù)的功能。提示:需要增加一個變量記錄用戶輸入數(shù)據(jù)的個數(shù)。#include<stdio.h>

intmain()

{

intx,sum=0,cnt=0;//定義并初始變量

scanf("%d",&x);//第一次讀入x

while(x!=-1){//循環(huán)條件

sum+=x;//累加

++cnt;

scanf("%d",&x);//循環(huán)體中讀入x

}

printf("avg=%f\n",sum*1.0/cnt);

return0;

}【練習3】模擬“請輸入密碼并以#號鍵結束”,要求對輸入的密碼進行+1顯示。例如:輸入abc123#,則輸出bcd234。#include<stdio.h>

intmain()

{

charx;

charstr[1000000];

intcnt=0;

scanf("%c",&x);//第一次讀入x

while(x!='#'){//循環(huán)條件

str[cnt]=x+1;

++cnt;

scanf("%c",&x);//循環(huán)體中讀入x

}

printf("%s",str);

return0;

}【練習4】輸入一個正整數(shù),輸出該數(shù)有幾位。#include<stdio.h>

intmain()

{

intx;

intcnt=0;

scanf("%d",&x);//第一次讀入x

while(x!=0){//循環(huán)條件

x/=10;

++cnt;

}

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

return0;

}【練習5】編寫程序計算n的階乘。#include<stdio.h>

intmain()

{

intx;

intsum=1;

scanf("%d",&x);//第一次讀入x

while(x!=0){//循環(huán)條件

sum*=x;

--x;

}

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

return0;

}【練習6】給出下面程序運行結果,分析原因。源程序:#include<stdio.h>intmain(){ inti=1,j=0; while(i<100) { i*=2; ++j; } printf("i=%d,j=%d\n",i,j); return0;}i=128,j=7【練習7】完善案例8的代碼,使其面對小于2的輸入時,能夠輸出“輸入有誤”的提示信息。#include<stdio.h>

#include<math.h>

intmain()

{

inti,n,nSqrt;

scanf("%d",&n);

if(n<2){

printf("輸入有誤");

return0;

}

nSqrt=sqrt(n);//計算n的算術平方根并取整

for(i=2;i<=nSqrt;++i){//逐個判斷2~nSqrt是否存在n的因數(shù)

if(n%i==0){//n能被i整除立即跳出

break;

}

}

if(i>nSqrt){//使用i>nSqrt來決定輸出

printf("%u是素數(shù)\n",n);

}

else{

printf("%u不是素數(shù)\n",n);

}

return0;

}【練習8】求最小的n,滿足n的階乘大于10000。#include<stdio.h>

intmain()

{

intn=1,sum=1;

while(sum<100000){

sum*=n;

n++;

}

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

return0;

}【練習9】改寫案例9,要求在循環(huán)體中不使用continue,并能完成與案例9相同的功能。#include<stdio.h>

intmain()

{

inti;

for(i=1;i<=25;++i){

if(i%3!=0){

printf("%d",i);

}

}

return0;

}【練習10】輸入n,打印下面圖形的前n行。122333……#include<stdio.h>

intmain()

{

intn,temp=1;

scanf("%d",&n);

for(inti=0;i<n;++i){

for(intj=0;j<i+1;++j){

printf("%d",i+1);

}

if(i!=n-1)printf("\n");

}

return0;

}【練習11】使用兩重循環(huán)完成案例11。#include<stdio.h>

intmain()

{

inti,j;

for(i=1;i<=9;++i){//將循環(huán)體執(zhí)行9次

for(j=1;j<=i;++j){//循環(huán)打印i個hello

printf("%d*%d=%d",j,i,i*j);

}

printf("\n");//打印換行符號

}

return0;

}升序打印1到100之間所有能被7整除的數(shù)。#include<stdio.h>

intmain()

{

for(inti=0;i<100;++i){

if((i+1)%7==0){

printf("%d",i+1);

}

}

return0;

}降序打印1到100之間所有能被7整除的數(shù)。#include<stdio.h>

intmain()

{

for(inti=100;i>0;--i){

if(i%7==0){

printf("%d",i);

}

}

return0;

}輸入一個整數(shù),輸出其所有因數(shù)。例如:輸入10,輸出1、2和5。#include<stdio.h>

intmain()

{

intn;

scanf("%d",&n);

for(inti=1;i<n;++i){

if(n%i==0){

printf("%d",i);

}

}

return0;

}輸入兩個非負整數(shù),輸出這兩個整數(shù)的最大公約數(shù)。#include<stdio.h>

intmain()

{

intn,m;

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

for(inti=n;i>1;--i){

if(n%i==0&&m%i==0){

printf("%d",i);

break;

}

}

return0;

}輸出數(shù)列1.00!#include<stdio.h>

intmain()

{

inttemp=1;

floatsum=1;

for(inti=1;i<=10;++i){

sum+=(1.0/temp);

temp*=i;

}

printf("%f",sum);

return0;

}水仙花數(shù)是一個3位整數(shù),各個數(shù)位上數(shù)的立方之和恰好等于這個數(shù)本身。例如,153=1×1×1+5×5×5+3×3×3。編程打印所有的水仙花數(shù)。#include<stdio.h>

intmain()

{

for(inti=100;i<1000;++i){

intsum=0;

inttemp=i;

while(temp!=0){

intitem=temp%10;

temp/=10;

sum+=item*item*item;

}

if(sum==i){

printf("%d",i);

}

}

return0;

}輸入一個整數(shù),輸出該整數(shù)所有因數(shù)之和。例如:輸入10,10的因數(shù)包括1、2和5,所以輸出8。#include<stdio.h>

intmain()

{

intn;

intsum=0;

scanf("%d",&n);

for(inti=1;i<n;++i){

if(n%i==0){

sum+=i;

}

}

printf("%d",sum);

return0;

}輸入一個合數(shù)n,將n進行質(zhì)因數(shù)分解。例如,輸入100,輸出2、2、5、5。#include<stdio.h>

intmain(){

intn,i;

scanf("%d",&n);

for(i=2;i<=n;i++){

while(n%i==0){

printf("%d",i);

n/=i;

}

}

return0;

}冰雹猜想的內(nèi)容是:任何一個大于1的整數(shù)n,按照n為偶數(shù)則除等2,n為奇數(shù)則乘3后再加1的規(guī)則不斷變化,最終都可以變化為1。例如,n等于20,變化過程為:20、10、5、16、8、4、2、1。編寫程序,用戶輸入n,輸出變化過程以及變化的次數(shù)。#include<stdio.h>

intmain(){

intn,count=0;

scanf("%d",&n);

while(n!=1){

printf("%d",n);

if(n%2==0){

n/=2;

}else{

n=n*3+1;

}

count++;

}

printf("%dcount=%d",n,count);

return0;

}10、輸入正整數(shù)n,打印由“*”組成的(2*n-1)×(2*n-1)菱形圖案。例如,輸入為3,輸出以下圖案:*************#include<stdio.h>

#include<stdlib.h>

intmain(){

intn,i,j;

scanf("%d",&n);

for(i=1;i<=2*n-1;i++){

for(j=1;j<=2*n-1;j++){

if(abs(i-n)+abs(j-n)<=n-1){

printf("*");

}else{

printf("");

}

}

printf("\n");

}

return0;

}哥德巴赫猜想的內(nèi)容是:任何一個大于4的偶數(shù),均可拆分成兩個奇素數(shù)的和。編寫程序,在有限的范圍內(nèi)驗證哥德巴赫猜想。輸入一個偶數(shù)n,輸出n的所有奇素數(shù)拆分方法。例如,輸入16,輸出3+13、5+11;再如,輸入20,輸出3+17、7+13。#include<stdio.h>

intmain(){

intn,i,j;

intis_prime;

scanf("%d",&n);

for(i=3;i<=n/2;i+=2){

is_prime=1;

for(j=2;j*j<=i;j++){

if(i%j==0){

is_prime=0;

break;

}

}

if(is_prime){

is_prime=1;

for(j=2;j*j<=n-i;j++){

if((n-i)%j==0){

is_prime=0;

break;

}

}

if(is_prime){

printf("%d+%d\n",i,n-i);

}

}

}

return0;

}整數(shù)6的因子包括1、2和3,巧合的是6=1+2+3,像6這樣所有因子之和恰好等于自身的數(shù)稱為“完數(shù)”。編寫程序找出2至10000之間的所有完數(shù)。#include<stdio.h>

intmain(){

inti,j,sum;

for(i=2;i<=10000;i++){

sum=0;

for(j=1;j<=i/2;j++){

if(i%j==0){

sum+=j;

}

}

if(sum==i){

printf("%d:",i);

for(j=1;j<=i/2;j++){

if(i%j==0){

printf("%d",j);

}

}

printf("\n");

}

}

return0;

}12、計算2到100之間所有素數(shù)的和。#include<stdio.h>

intmain(){

inti,j,sum=0;

intis_prime;

for(i=2;i<=100;i++){

is_prime=1;

for(j=2;j*j<=i;j++){

if(i%j==0){

is_prime=0;

break;

}

}

if(is_prime){

sum+=i;

}

}

printf("%d",sum);

return0;

}【練習1】定義長度為12的整型數(shù)組,將你所在班級每個月過生日的人數(shù)輸入數(shù)組中相應元素(1月對應下標0,2月對應下標1,……,12月對應下標11),并統(tǒng)計輸出各個季度過生日的人數(shù)。#include<stdio.h>

intmain(){

intn,x,i;

scanf("%d",&n);

inta[12]={0};

for(i=0;i<n;i++){

scanf("%d",&x);

a[x-1]++;

}

printf("第一季度生日的人數(shù)=%d\n",a[0]+a[1]+a[2]);

printf("第二季度生日的人數(shù)=%d\n",a[3]+a[4]+a[5]);

printf("第三季度生日的人數(shù)=%d\n",a[6]+a[7]+a[8]);

printf("第四季度生日的人數(shù)=%d\n",a[9]+a[10]+a[11]);

return0;

}【練習2】定義長度為12的整型數(shù)組,初始化為平年中每個月的天數(shù),并輸出。#include<stdio.h>

intmain(){

inta[12]={31,28,31,30,31,30,31,31,30,31,30,31};

for(inti=0;i<a[i];i++){

printf("%d",a[i]);

}

return0;

}【練習3】定義長度為100的數(shù)組,為每個元素存入0~9的隨機數(shù),再用一個長度為10數(shù)組統(tǒng)計,第一個數(shù)組中各個整數(shù)出現(xiàn)的次數(shù)。#include<stdio.h>

#include<stdlib.h>

#include<time.h>

intmain(){

//定義長度為100的數(shù)組

intarr[100];

//定義長度為10的數(shù)組用于統(tǒng)計次數(shù)

intcount[10]={0};

//生成隨機數(shù)種子

srand(time(NULL));

//為每個元素存入0~9的隨機數(shù)

for(inti=0;i<100;i++){

arr[i]=rand()%10;

}

//統(tǒng)計各個整數(shù)出現(xiàn)的次數(shù)

for(inti=0;i<100;i++){

count[arr[i]]++;

}

//輸出統(tǒng)計結果

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

printf("%d出現(xiàn)的次數(shù):%d\n",i,count[i]);

}

return0;

}【練習4】定義長度為10的數(shù)組,存儲0至9的階乘,并輸出。#include<stdio.h>

intfactorial(intn){

if(n<=1){

return1;

}else{

returnn*factorial(n-1);

}

}

intmain(){

//定義長度為10的數(shù)組

intarr[10];

//計算并存儲0至9的階乘

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

arr[i]=factorial(i);

}

//輸出結果

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

printf("%d的階乘為:%d\n",i,arr[i]);

}

return0;

}【練習5】模仿案例4,實現(xiàn)對數(shù)組元素排降序。并嘗試在排序過程中,判斷當前輪次是否發(fā)生了“交換”,如果在外層循環(huán)的某一輪次中,內(nèi)層循環(huán)沒有任何一次“交換”發(fā)生,便可以使用break語句提前結束排序算法。#include<stdio.h>

#include<stdlib.h>

#defineN(10)

intmain()

{

intscores[N],i,j,flag;

for(i=0;i<N;++i){//隨機生成數(shù)組元素

scores[i]=rand()%101;

}

printf("排序前:\n");//排序前打印數(shù)組

for(i=0;i<N;++i){

printf("%d",scores[i]);

}

printf("\n---------------\n");

for(i=0;i<N-1;++i){//冒泡排序的外層循環(huán)進行N-1輪

flag=0;

for(j=0;j<N-1-i;++j){//內(nèi)層循環(huán)進行N-1-i次,比上一輪少1次比較

if(scores[j+1]<scores[j]){//如果相鄰元素逆序則交換位置

intt=scores[j+1];

scores[j+1]=scores[j];

scores[j]=t;

flag=1;

}

}

if(flag==0)break;

}

printf("排序后:\n");//排序后打印數(shù)組

for(i=0;i<N;++i){

printf("%d",scores[i]);

}

return0;

}【練習6】楊輝三角中的各項與組合數(shù)相對應,例如,圖5.12右圖中第4行第2列元素值等于6,表示從4個物品中選擇2個物品,共有6種完全不同的組合方法(從a、b、c、d選擇2個字母有ab、ac、ad、bc、bd和cd等6種組合)。請利用楊輝三角算一算師生報名志愿者活動被錄取的概率。提示:學生是33人中選6名,老師是16人中選1名,選中的概率是1÷16÷楊輝三角第33行第6列上的數(shù)。#include<stdio.h>

//計算組合數(shù)

intcombination(intn,intm){

if(m==0||m==n){

return1;

}else{

returncombination(n-1,m-1)+combination(n-1,m);

}

}

intmain(){

intstudents=33;//學生總人數(shù)

intteachers=16;//老師總人數(shù)

intselected_students=6;//選中的學生人數(shù)

intselected_teachers=1;//選中的老師人數(shù)

//計算楊輝三角第33行第6列的組合數(shù)

intcoeff=combination(students,selected_students)*combination(teachers,selected_teachers);

//計算被錄取的概率

doubleprobability=1.0/coeff;

printf("被錄取的概率為:%0.12f%%",probability);

return0;

}【練習7】定義長度為19的字符數(shù)組將自己的身份證號碼作為初始值。提示:使用字符串字面常量的方式初始更加簡便。#include<stdio.h>

intmain(){

//定義長度為19的字符數(shù)組,并將身份證號碼作為初始值

charidNumber[19]="123456789012345678";

//輸出身份證號碼

printf("身份證號碼:%s",idNumber);

return0;

}【練習8】定義2個長度適合的字符數(shù)組,分別輸入自己的學號和姓名,并輸出。提示:一個漢字字符占用2個或更多字節(jié)的內(nèi)存,所以保存姓名的字符數(shù)組要有足夠的空間。#include<stdio.h>

intmain(){

//定義長度適合的字符數(shù)組

charstudentID[10];

charname[20];

//輸入學號和姓名

printf("請輸入學號:");

scanf("%s",studentID);

printf("請輸入姓名:");

scanf("%s",name);

//輸出學號和姓名

printf("學號:%s\n",studentID);

printf("姓名:%s\n",name);

return0;

}【練習9】完善案例8,要求用戶設置的密碼必須同時包含大小寫字母、數(shù)字字符和其他字符。#include<stdio.h>

#include<string.h>

#include<ctype.h>

intcheckPassword(charpassword[]){

intlengt

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論