日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c程序设计语言 练习1-6,C程序设计语言:第一章练习

發布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c程序设计语言 练习1-6,C程序设计语言:第一章练习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

練習1-1?在你自己的系統中運行”hello,world“程序。再有意去掉部分內容,會看到什么出錯信息。

練習1-2?做個實驗,當printf函數的參數字符串中包含\c(其中c是上面的轉義字符序列中未曾列出的某一個字符)時,觀察一下啊情況。

warning C4129: “c”: 不可識別的字符轉義序列

練習1-3?修改溫度轉換程序,使之能在轉換表的頂部打印一個標題。

#include

int main()

{

float fahr, celsius;

float lower, upper, step;

lower = 0;

upper = 300;

step = 20;

fahr = lower;

printf(" Fahr Celsius\n");

while (fahr<=upper)

{

celsius = 5 * (fahr - 32) / 9;

printf("%3.0f\t%6.1f\n", fahr, celsius);

fahr = fahr + step;

}

getchar();

}

練習1-4?編寫一個程序打印攝氏溫度轉換為相應華氏溫度的的對照表。

#include

int main()

{

float fahr, celsius;

float lower, upper, step;

lower = 0;

upper = 300;

step = 20;

celsius= lower;

printf(" Celsius Fahr\n");

while (celsius<=upper)

{

fahr = celsius * 9 / 5 + 32;

printf("%3.0f\t%6.1f\n", celsius, fahr);

celsius = celsius +step;

}

getchar();

}

練習1-5?修改溫度轉換程序,要求以逆序(即按照從300度到0度的順序)打印溫度轉換表。(嘗試用for語句)

#include

int main()

{

float fahr, celsius;

float lower, upper, step;

lower = 0;

upper = 300;

step = 20;

printf(" Fahr Celsius\n");

for (fahr = lower; fahr <= upper; fahr = fahr + step)

{

printf("%3.0f\t%6.1f\n", fahr, 5 * (fahr - 32) / 9);

}

getchar();

}

練習1-6?驗證表達式getchar()!=EOF的值是0還是1。

#include

int main()

{

int c;

while (c=(getchar()!=EOF))

{

printf("%d isn't EOF\n", c);

}

printf("%d is EOF", c);

getchar();

}

練習1-7?編寫一個打印EOF值的程序。

#include

int main()

{

printf("%d is EOF", EOF);

getchar();

}

練習1-8?編寫一個統計空格、制表符、換行符個數的程序。

#include

int main()

{

int c, row_num, blank_num, t_num;

row_num = blank_num = t_num = 0;

while ((c=getchar())!=EOF)

{

switch (c)

{

case '\n':

row_num++;

break;

case ' ':

blank_num++;

break;

case '\t':

t_num++;

default:

break;

}

printf("row_num:%d,blank_num:%d,t_num:%d\n", row_num, blank_num, t_num);

}

}

練習1-9?編寫一個將輸入復制到輸出的程序,并將其中連續多個空格用一個空格代替。

#include

int main()

{

int a,b;

while ((a=getchar())!=EOF)

{

if (a == ' '&& b==' ') //如果發現a為空格,且排在后面的b也為空格則直接跳過該a

{

continue;

}

else

{

b = a;

}

printf("%c", b);

}

}

練習1-10?編寫一個將輸入復制到輸出的程序,并將其中的制表符替換為\t,并把回退符替換為\b,并把反斜杠替換為\。這樣可以將制表符和回退符以可見的方式顯現出來。

#include

int main()

{

int c;

while ((c=getchar())!=EOF)

{

switch (c)

{

case '\t':

printf("\\t"); //putchar()一次只能輸出一個字符不好實現效果

break;

case '\b':

printf("\\b");

break;

case '\\':

printf("\\\\");

break;

default:

break;

}

}

}

練習1-11?你準備如何測試單詞計數程序?如果程序存在某種錯誤,那么什么樣的輸入最可能發現這類錯誤?

該單詞計數程序:

#include

#define IN 1 //在單詞內

#define OUT 0 //在單詞外

//統計輸入行數、單詞數與字符數

int main()

{

int c, nl, nw, nc, state;

state = OUT;

nl = nw = nc = 0;

while ((c=getchar())!=EOF)

{

++nc;

if (c == '\n')

{

++nl;

}

if (c == ' ' || c == '\n' || c == '\t')

{

state = OUT;

}

else if (state == OUT)

{

state = IN;

++nw;

}

printf("%d %d %d\n", nl, nw, nc);

}

}

答:單詞計數工作要從沒有任何輸入的情況下開始。此時,該程序的輸出結果應該是“0 0 0”,即零行、零單詞、零字符。

接下來測試輸入的單字符單詞的情況。此時,該程序的輸入結構應該是“1 1 2”,即一行、一個單詞、兩個字符(一個字符加上一個換行符)。

再測試一個由兩個字符組成的單詞。此時,該程序的輸入結果為“1 1 3”,即一行、一個單詞、三個字符(兩個字母加上一個換行符)。

讓后再測試兩個單詞的情況。首先,兩個單詞出現在同一行,此時的輸出結果應該是“1 2 4”;然后,兩個單詞各占一行,此時的輸出結果應該是“2 2 4”。

那些滿足邊界條件的輸入情況最有助于發現單詞計數程序中的錯誤。這些邊界條件包括:

——沒有輸入

——沒有單詞(只有換行符)

——沒有單詞(只有空格、制表符、和換行符)

——每個單詞各占一行的情況(沒有空格和制表符)

——單詞出現于文本行行首的情況

——單詞出現于一串空格之后的情況

練習1-12?編寫一個程序,以每行一個單詞的形式打印其輸入。

自己的答案:

#include

int main()

{

int a, b, state;

while ((a=getchar())!=EOF)

{ //a不為空時,直接賦值給b

if (a != ' ')

{

b = a;

putchar(b);

}

//a位空時分b也為空即連續空格的情況,和b不為空格的情況

if ((a == ' ')&&(b==' '))

{

continue;

}

if ((a == ' ') && (b != ' '))

{

b = a;

putchar('\n');

}

}

}

標準答案:

#include

#define IN 1 //在單詞內

#define OUT 0 //在單詞外

//統計輸入行數、單詞數與字符數

int main()

{

int c, state;

state = OUT;

while ((c=getchar())!=EOF)

{

if (c == ' ' || c == '\n' || c == '\t')

{

if (state == IN)

{

putchar('\n'); //一個單詞輸入結束

state = OUT;

}

}

else if (state == OUT)

{

state = IN;

putchar(c); //一個單詞輸入開始

}

else

{

putchar(c); //在輸入一個單詞時

}

}

}

練習1-13?編寫一個程序,打印輸入中單詞長度的直方圖。水平方向的直方圖比較容易繪制,垂直方向的直方圖則要困難些。

#include

#define IN 1 //在單詞內

#define OUT 0 //在單詞外

int main()

{

//c為輸入的字符,state為當前狀態,wLength為當前單詞長度

//Maxnum為數量最大的單詞單詞長度的個數

int c,a,b,state,wLength,Maxnum;

int wordLength[10]; //設置一個記錄對應單詞長度的個數的數組

for (int i = 0; i < 10; i++) //比如wordLength[1]表示單詞長度為1的單詞個數

{

wordLength[i] = 0;

}

state = OUT;

wLength = 0;

//記錄輸入中統計的得出的繪圖數據

//第一種方法

while ((c=getchar())!=EOF)

{

if ((c == ' ') || (c == '\t') || (c == '\n'))

{

if (state == IN)

{

state = OUT;

++wordLength[wLength];

wLength = 0;

}

else

{

continue;

}

}

else if(state==OUT)

{

wLength=1;

state = IN;

}

else

{

++wLength;

}

}

//第二種統計數據方法

/*

while ((a = getchar()) != EOF)

{

if ((a != ' ') && (a != '\n'))

{

wLength++;

b = a;

}

if (((a == ' ') || (a == '\n')) && (b == ' '))

{

continue;

}

else if (((a == ' ') || (a == '\n')) && (b != ' '))

{

wordLength[wLength]++;

b = ' ';

wLength = 0;

}

}

*/

Maxnum = 9;

/*這樣寫圖表不漂亮

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

{

if (Maxnum < wordLength[i + 1])

{

Maxnum = wordLength[i + 1];

}

}

*/

for (int i = Maxnum; i >= 0; i--)

{

printf("%4d", i);

for (int j = 0; j < 10; j++)

{

if (wordLength[j] >= i)

{

printf(" * ");

}

else

{

printf(" ");

}

}

printf("\n");

}

printf(" ");

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

{

printf("%3d", i);

}

getchar();

}

練習1-14?編寫一個程序,打印輸入各個字符出現頻度的直方圖。

基本思想跟上題類似。分三大塊,第一塊初始化各個數據,第二塊采集各個數據,第三塊畫出直方圖。本題可以利用ascii碼來作為數組序號。

練習1-15?重新編寫1.2中的溫度轉換程序,使用函數實現溫度轉換計算。

#include

void change(int lower, int upper, int step);

int main()

{

float lower, upper, step;

lower = 0;

upper = 300;

step = 20;

change(lower, upper, step);

getchar();

}

void change(int lower,int upper,int step)

{

float fahr,celsius;

fahr = lower;

printf(" Fahr Celsius\n");

while (fahr <= upper)

{

celsius = 5 * (fahr - 32) / 9;

printf("%3.0f\t%6.1f\n", fahr, celsius);

fahr = fahr + step;

}

}

總結

以上是生活随笔為你收集整理的c程序设计语言 练习1-6,C程序设计语言:第一章练习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。