5.編寫一個模擬簡單計算器的程序,計算表達式:a1 op a2的值,要求 a1、op、a2從盤輸入。其中a1、a2(作除數(shù)時不能為0)為數(shù)值,op為運算符+、-、*、/。
【解析】本程序首先要定義相關(guān)的變量,a1和a2為單精度實型,op為字符型。接著要輸入兩個運算數(shù)和運算符。最后要按照運算符進行分支處理,由于分支的條件是運算符op等于不同的值,所以可以選取swtch語句來完成。其中當(dāng)op為'\'時,要注意區(qū)分出除數(shù)a2為0的異常情況。
【參考答案】#include "math.h"
main()
{ float a1,a2;
char op;
scanf("%f,%c,%f",&a1,&op,&a2);
switch(op)
{ case'+':printf("a1+a2=%f\n",a1+a2);break;
case'-':printf("a1-a2=%f\n",a1-a2); break;
case'*':printf("a1*a2=%f\n", a1*a2);break;
case'/':if(fabs(a2)<1e-4)
printf("division by zero.\n");
else
printf("a1/a2=%f\n",a1/a2);
break;
default:printf("unknown operator.\n");
}
}
6.編寫一程序,從鍵盤輸入10個實數(shù),計算并輸出算術(shù)平均值。
【解析】相關(guān)的變量和數(shù)組:用來存放算術(shù)平均值的變量(例如用ave)、存放10個實數(shù)的一準(zhǔn)數(shù)組(例如用a[10」)。因為ave要求和,所以事先要賦初值0.0。第1個次數(shù)為10的循環(huán)用于輸入10個實數(shù)存入數(shù)組a,可以使用for循環(huán),利用下標(biāo)變量i來控制循環(huán)。第2個次數(shù)為10的循環(huán)用于求10個數(shù)組元素之和存入變量刪,可以使用for循環(huán),利用下標(biāo)變量i來控制循環(huán)。最后是輸出結(jié)果,要注意變量ave中存放的是和,必須除10后才是平均值。
【參考答案】 main()
{ int i;
float ave=0.0,a[10];
for(i=0;i<10;i++)
scanf("%f",&a[i]);
for(i=0;i<10;i++)
ave+=a[i];
printf(".4f\n",ave/10.0);.
。
7.編程序輸入50個學(xué)生的學(xué)號、姓名、3門課程的成績存入一個結(jié)構(gòu)型的數(shù)組。統(tǒng)計每個學(xué)生的總分并輸出學(xué)生的學(xué)號、姓名、總分。
【解析】首先要設(shè)計一個結(jié)構(gòu)型,其成員包括學(xué)號(長整型)、姓名(字符數(shù)組)、3個成績(實型或?qū)嵭蛿?shù)組)、總分(實型)。定義長度為50的這種結(jié)構(gòu)型數(shù)組。用單重50次的次數(shù)型循環(huán)輸出50個學(xué)生的信息。再用次數(shù)為50的單重循環(huán)依次求出每個學(xué)生的總分(等于3科成績之和)存入成員總分中。最后仍然用50次的單重循環(huán)輸出50個學(xué)生的學(xué)號、姓名和總分。
【參考答案】main()
{ struct{ long num;
char name[20];
float score1;
float score2;
float score3;
float total;
}stu[50」;
int i;
float x1,x2,x3
for(i=0;i<50;i++)
{ scanf(",%s",&stu[i].num,stu[i].name);
scanf("%f,%f,%f",&x1,&x2,&x3);
stu[i].score=x1,stu[i].score2=x2,stu[i].score3=x3;
。
for (i=0;i<50;i++)
stu[i].total=stu[i].scorel+stu[i].score2+stu[i].score3;
for(i=0;i<50;i++)
printf("%name%f\n:", stu[i].num,stu[i].total);
。
8.編寫一程序,輸出如下圖形。
*****
*****
*****
*****
【解析】分析題目中給出的圖形,可以看出需要使用二重循環(huán)結(jié)構(gòu)。外層循環(huán)控制行,這是次數(shù)為4的次數(shù)型循環(huán)結(jié)構(gòu),可以使用for語句,其控制循環(huán)的變量i依次等于1、2.3、4,循環(huán)體中的工作有兩項:一項是輸出前面的空格,第二項是輸出該行上的符號串”*****”。由此得出外層循環(huán)結(jié)構(gòu)如下:
for(i=1;i<=4;i++)
{ 輸出前面的空格;
輸出符號串”*****”;
輸出前面的空格需要使用循環(huán)。我們來看題目中給出的圖形,第1行上要輸出的空格數(shù)目是0,即“1-1”。第2行上要輸出的空格數(shù)目是1,即“2-1”,…。顯然,第i行上要輸出的空格數(shù)目是“i一1”。由此可以得出這個循環(huán)也是次數(shù)型循環(huán),控制循環(huán)的變量j依次等于 1、2、…、 i-1。其中的i是行數(shù)。由此可以得出這個內(nèi)層循環(huán)的結(jié)構(gòu)如下:
for(j=1;i<=i-1;j++)
輸出1個空格;
外層循環(huán)體中的第二項是輸出本行上的符號串”*****”。這項工作比較簡單,用一條輸出語句“printf(“*****\n”);”即可。
依據(jù)上述分析,可以很容易寫出程序清單。
【參考答案】 main()
{ int i,j;
for(i=1;i<=4;i++)
{ for(j=1;j<=i-1;j++)
printf("");
printf(”*****\n”);
。
。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |