當前位置:首頁 » 編程語言 » c語言現代方法答案

c語言現代方法答案

發布時間: 2023-05-29 19:13:00

『壹』 如何學習c語言程序設計:現代方法

學唯虧習C語言切莫對著別人指槐神的代碼照抄明薯,這是做無用功,就像抄作文

『貳』 c語言scanf函數問題

輸入123<空格>456<空格>789<回車>後,所有信息存放在緩存中"123 456 789",計算機開備春茄始判斷提取的信息:第一個為%c,就是一森森個字元「1」;第仿察二個為%d,就是一個十進制數23,;第三個為%s(注意,%s是見到空格停止的),就是456,至於789那他就被截掉了。

『叄』 C語言解答

C語言程序設計復習:

1、理解以下術語的含義鎮羨拍判:數組、函數、地址 指針 指針變數 直接訪問 間接訪問、結構體
2、用起泡法對10個數由小到大排御賀拍序(P134例題)
5、輸入10個學生的成績,分別用函數實現下列功能:
1)計算所有學生的平均分;
2) 計算學生成績中最高分;
3) 計算學生成績中最低分;
4) 統計及格學生人數;
5) 查找成績為指定成績(如90)記錄,如果沒有,請給出提示,如果有,請統計滿足條件的記錄數。
6、有一個已經排好序的數組,今輸入一個數,要求按原來排序的規律將它插入數組中。(P153習題7.4)
7、編寫一個函數,輸入一個4位數字,要求輸出這4個數字字元,但每兩個數字字元間空一個空格。如輸入1990,應輸出「1 9 9 0」。(要求用函數)(P202習題8.8)
8、編寫一個函數,求一個字元串的長度。在main函數中輸入字元串,並輸出其長度。(要求用指針,不能使用strlen()函數) (P279習題10.6)
9、編寫一個程序,打入月份號,輸出該月的英文月名。例如,輸入「3」則輸出「March」(要求用指針數組)。(P279習題10.18)
10、將一個數組中的值按逆序重新存放。例如,輸入的數組順序為8,6,5,4,1,要求改為1,4,5,6,8。(P153習題7.5)
11、編寫一個函數用「起泡法」對輸入的10個字元按由小到大順序排序(要用函數)。(P202習題8.11)
12、將數組a中n個整數按相反順序存放(要用函數)。(P237例題10.7)
13、輸入一行文字,找出其中大寫字母、小寫字母、空格、數字及其他字元各有多少。(要求用指針實現)(P279習題10.8)
14、編寫一個函數,將兩個字元串連接(要用自定義函數,不能用strcat函數)。(P202習題8.6)
15、輸入3個字元串,按照由小到大的順序輸出。(要求用指針) (P278習題10.2)
16、輸入10整數,將其中最小的數與第一個數對換,把最大的數與最後一個數對換。寫三個函數:1、輸入10個數; 2、進行處理; 3、輸出10個數(數據對換要求用指針實現)(P278習題10.3)

參考答案:
2、用起泡法對10個數由小到大排序
#include <stdio.h>
void main()
{ int a[10]; int i,j,t;
printf("input 10 numbers :\n");
for (i=0;i<10;i++)
scanf("%d「,&a[i]);
printf(「\n");
for(j=0;j<9;j++)
for(i=0;i<10-j;i++)
if (a[i]>a[i+1])

printf("the sorted numbers :\n");
for(i=0;i<10;i++)
printf(「%d 「,a[i]);
}
3、用遞歸方法求n階勒讓德多項式的值,遞歸公式為(要求用函數):(P202習題8.13)

pn(x)= 1 n=0
x n=1
((2n-1)*x-pn-1(x)-(n-1)*pn-2(x)/n n>1

3、#include <stdio.h>
void main()
{
int x,n;
float p(int,int);
printf(「input n & x:」);
scanf(「%d,%d」,&n,&x);
printf(「n=%d,x=%d\n」,n,x);
printf(「P%d(%d)=%6.2f\n」,n,x,p(n,x));
}
float p(int n,int x)
{
if(n==0)
return 1;
else if(n==1)
return x;
else
return ((2*n-1)*x*p((n-1),x)-(n-1)*p((n-2),x))/n;
}
4、輸入3個整數,按由小到大的順序輸出(要求用指針類型)(P228例題)

4、輸入3個整數,按由小到大的順序輸出(要求用指針類型)
#include <stdio.h>
void main()
{
void sort (int*a, int*b,int*c);
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
sort(&a,&b,&c);
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
void sort (int *a, int *b,int *c)
{
int tmp;
if (*a>*b)
{
tmp=*a;
*a=*b;
*b=tmp;
}
if (*a>*c)
{
tmp=*a;
*a=*c;
*c=tmp;
}
if (*b>*c)
{
tmp=*b;
*b=*c;
*c=tmp;
}

}
5、輸入10個學生的成績,分別用函數實現下列功能:
1)計算所有學生的平均分;
6) 計算學生成績中最高分;
7) 計算學生成績中最低分;
8) 統計及格學生人數;
9) 查找成績為指定成績(如90)記錄,如果沒有,請給出提示,如果有,請統計滿足條件的記錄數。

#include <stdio.h>
void main()
{
int average(int a[]);
int max(int a[]);
int min(int a[]);
int pass(int a[]);
int search(int a[],int g);
int i,j,g;
int score[10],aver,m1,m2,p,s;
printf("Please input 10 scores:\n");
for(i=0;i<10;i++)
scanf("%d",&score[i]);
printf("\n");
aver=average(score);
m1=max(score);
m2=min(score);
p=pass(score);
printf("平均分為: %d\n",aver);
printf("最高分為: %d\n",m1);
printf("最低分為: %d\n",m2);
printf("及格人數為: %d\n",p);
printf("需要查找嗎?\n");
printf("輸入1繼續查找,輸入0退出(1/0):");
scanf("%d",&j);
if(j==1)
{
printf("請輸入要查找的分數: \n");
scanf("%d",&g);
s=search(score,g);
if(s==0)
printf("沒有滿足條件的記錄");
else
printf("成績為%d的學生共有%d名\n",g,s);
}
}
int average(int a[])
{
int i;
int aver,sum=a[0];
for(i=1;i<10;i++)
sum=sum+a[i];
aver=sum/10;
return aver;
}
int max(int a[])
{
int i;
int m=a[0];
for(i=1;i<10;i++)
if(m<a[i])
m=a[i];
return m;
}
int min(int a[])
{
int i;
int m=a[0];
for(i=1;i<10;i++)
if(m>a[i])
m=a[i];
return m;
}
int pass(int a[])
{
int i;
int s=0;
for(i=0;i<10;i++)
if(a[i]>=60)
s++;
return s;
}
int search(int a[],int g)
{
int i;
int s=0;
for(i=0;i<10;i++)
if(a[i]==g)
s++;
return s;
}

6、已有一個已排好次序的數組,要求輸入一個數後,按原先排序的規律將它插入數組中。
Void main()
;
int temp1,temp2,number,end,i,j;
printf("初始數組如下:");
for (i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("輸入插入數據:");
scanf("%d",&number);
end=a[9];
if(number>end)
a[10]=number;
else
{for(i=0;i<10;i++)
{ if(a[i]>number)
{temp1=a[i];
a[i]=number;
for(j=i+1;j<1;j++)
{temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
for(i=0;i<11;i++)
printf("a%6d",a[i]);
}

7、編寫一個函數,輸入一個4位數字,要求輸出這4個數字字元,但每兩個數字字元間空一個空格。如輸入1990,應輸出「1 9 9 0」。
#include <iostream>
void main()
{
void stradd(char str[]);
char str[80];
printf("輸入一串數字\n\n");
gets(str);
stradd(str);
printf("\n\n加空格後的字元串\n\n");
puts(str);
}
void stradd(char str[])
{
char a[80];
int i=0,j;
for(j=0;str[j]!='\0';j++)
{
a[i]=str[j];
a[i+1]=' ';
i+=2;
}
a[i]='\0';
for(i=0;a[i]!='\0';i++)
{
str[i]=a[i];
}
str[i]='\0';
}

8、編寫一個函數,求一個字元串的長度。在main函數中輸入字元串,並輸出其長度。(要求用指針實現)
#include "stdio.h"
int stringlength( char *str )
{int n;
n=0;
While(*str!=0)
{n++;
str++;
}
Return(n);
}

int main()
{
char str〔100〕,
int len,

printf("Please input a string: "),
scanf("%s".str),
len = stringlength( str ),

printf("The string』s length is %d.".len),
return 0;
}

9、編寫一個程序,打入月份號,輸出該月的英文月名 n。例如,輸入「3」則輸出「March」,要求用指針數組處理。
#include <stdio.h>
main()
{ char *month_name[13]={"illegal month","January","February","March","April",
"May","June","July","August","September","October","November","December"};
int n;
printf("Input month: ");
scanf("%d",&n);
if((n<=12)&&(n>=1))
printf("It is %s.\n",*(month_name+n));
else
printf("It is wrong.\n");
}
10、將一個數組中的值按逆序重新存放。例如,輸入的數組順序為8,6,5,4,1,要求改為1,4,5,6,8。
#include <stdio.h>
#define N 5;
void main()
{
int a[N],i,temp;
printf(「enter array a:\n」);
for(i=0;i<N;i++)
scanf(「%d」,&a[i]);
printf(「array a:\n」);
for(i=0;i<N;i++)

printf(「\nNow, array a:\n」);
for(i=0;i<N;i++)
printf(「%4d」,a[i]);
printf(「\n」);
}

11、編寫一個函數用「起泡法」對輸入的10個字元按由小到大順序排序(要用函數)。
#include <stdio.h>
void main()
{ char str[80];
void sort(char str[]);
printf("輸入一個字元串\n\n");
gets(str);
sort(str);
printf("\n\n字元由小到大排序為:\n\n");
puts(str);
}
void sort(char str[])
{ int i,j;
char temp;
for(i=0;i<strlen(str);i++)
{
for(j=0;j<strlen(str)-i-1;j++)
{
if(str[j]>str[j+1])
{
temp=str[j];
str[j]=str[j+1];
str[j+1]=temp;
}
}
}
}

12、將數組a中n個整數按相反順序存放(要用函數)。
#include <stdio.h>
void inv(int x[ ],int n)/*形參x是數組名*/

int temp,i,j,m=(n-1)/2;
for(i=0;i<=m;i++)
{j=n-1-i;
temp=x[i];x[i]=x[j];x[j]=temp;}
return;

void main()
{ int i,a[10]={3,7,9,11,0,6,7,5,4,2};
printf(「轉換前的數組為:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
inv(a,10);
printf(「轉換後的數組為:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");

13、輸入一行文字,找出期中大寫字母、小寫字母、空格、數字及其他字元各有多少?(要求用指針實現)
#include<stdio.h>
#include<string.h>
int main()
{
char str[40];//創建字元串數組
int count[5]=;//創建計數器數組並初始化
printf("Please input a string .\n");
scanf("%s",str);
char *p=str;//指針p指向字元串數組str
int n=strlen(str);//確定輸入字元串的長度
for(int i=0;i<n;i++)
{
if(*(p+i)>='A'&&*(p+i)<='Z')
{
count[0]++;//統計大寫字母數目
}
else if(*(p+i)>='a'&&*(p+i)<='z')
{
count[1]++;//統計小寫字母數目
}
else if(*(p+i)>='0'&&*(p+i)<='9')
{
count[2]++;//統計數字數目
}
else if(*(p+i)=='')
{
count[3]++;//統計空格數目
}
else
{
count[4]++;//統計其他字元數目
}
}
printf("大寫字母 小寫字母 數字 空格 其他字元:\n");
for(i=0;i<5;i++)
{
printf("%d\t ",count[i]);//列印各統計數目
}
printf("\n\n");
return 0;
}

14、編寫一個函數,將兩個字元串連接。
#include < stdio.h >
#include<string.h>
void concatenate(char string1[],char string2[],char string[])
{
int i,j;
for(i=0;string1[i]!=』\0』;i++)
string[i]=string1[i];
for(j=0;string2[j]!=』\0』;j++)
string[i+j]=string2[j];
string[i+j]=』\0』;
}
void main()
{
char s1[100],s2[100],s[100];
printf(「input string1:」);
scanf(「%s」,s1);
printf(「input string2:」);
scanf(「%s」,s2);
concatenate(s1,s2,s)
printf(「the new string is %s」,s);
}
15、輸入3個字元串,按照由小到大的順序輸出。 (要求用指針實現)
#include <stdio.h>
void main()
{
void sort (int*a, int*b,int*c);
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
sort(&a,&b,&c);
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
void sort (int *a, int *b,int *c)
{
int tmp;
if (*a>*b)
{
tmp=*a;
*a=*b;
*b=tmp;
}
if (*a>*c)
{
tmp=*a;
*a=*c;
*c=tmp;
}
if (*b>*c)
{
tmp=*b;
*b=*c;
*c=tmp;
}
}

16、輸入10整數,將其中最小的數與第一個數對換,把最大的數與最後一個數對換。寫三個函數:1、輸入10個數; 2、進行處理; 3、輸出10個數(數據對換要求用指針實現)
#include <stdio.h>
void input(int number[])
{
Int I;
Printf(「input 10 numbers:」);
For(i=0;i<10;i++)
Scanf(「%d」,&number[i]);
}
void max_min_value(int number[])
{
int *max,*min,*p,temp;
max=min=number;
For(p=number+1;p<number+10;p++)
if(*p>*max)
max=p;
else if(*p<*min)
min=p;
temp=number[0];number[0]=*min;*min=temp;
if(max=number) max=min;
temp=number[9];number[9]=*max;*max=temp;
}
void output(int number[])
{
int *p;
printf(「Now, they are: 「);
for(p=number;p<number+10;p++)
Printf(「%d」,*p);
printf(「\n」);
}
void main()
{
int number[10];
input(number);
max_min_value(number);
output(number);
}

『肆』 【c語言現代方法第七章編程題4】 求大佬解答-- 編寫程序可以把字母格式的電話號碼翻譯成數值格式 2=ABC等

你的問題關鍵 是如何 把 電話機 鍵盤字母 翻譯成 數字御殲轎。
可以用 表格:
int key[26]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9};
char s[27];
若 ( (s[i] >鎮肆= 'A') && (s[i] <= 'Z') ) 則 翻譯成 數字 key[ s[i]-'A' ]
---
驗證鍵盤 字母-〉數字 程序:
#include<stdio.h>
int main(){
int i;
int key[26]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9};
char s[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (i=0;i<strlen(s);i++){
printf("改鬧%c %d\n",s[i],key[s[i]-'A']);
}
return 0;
}

『伍』 C語言 練習題 使用typedef創建名為Int8,Int16,Int32的類型,定義這些類型分別表示8位,16位,和32位的整數

好像不能這么定義吧。如果需要,可以在你的頭文件中賣輪寫上上亂配團面的類型定義。最好先理解一下typedef 的含嘩橘義。

『陸』 誰有C語言程序設計(第三版)杜友福主編的答案啊

C語言程序設計(第三版)習題答案
習題一
一、名詞解釋
(1)程序P1 (2)程序設計P1 (3)機器語言P1 (4)高級語言P2
(5)匯編程序P3 (6)編譯程序P4 (7)演算法P5 (8)結構化程序設計方法P10

二、簡答題
1. 設計程序時應遵循哪些基本原則?P4
答:正確性、可靠性、簡明性、有效性、可維護性、可移植性。
2. 演算法具有哪些特點?
答:有窮性、確定性、有效性、有零個或多個輸入、有一個或多個輸出。
3. 演算法的表示形式有哪幾種?
答:自然語言、偽代碼、傳統流程圖、N-S流程圖、計算機語言。
4. 結構化程序設計方法的三種基本結構是什麼?
答:順序結構、選擇結構和循環結構。
5. 傳統流程圖與N-S流程圖最大的區別是什麼?
答:N-S流程圖去掉了在傳統流程圖中常用的流程線,使得程序的結構顯得更加清晰、簡單。

三、用傳統流程圖或N-S流程圖表示求解以下問題的演算法。
1. 從鍵盤輸入10個和塌整數,求出其中的最小數並輸出。

2. 求1 2 3 … 100的值。

3. 求10~50的所有素數之和。

4. 求下列分段函數的值。

四、請參照本章例題,編寫一個簡單的C程序,輸出以下三行信息。
**************************
Yangtze University
**************************

#include <stdio.h>
void main()
{
printf("**************************\n");
printf(" Yangtze University\n");
printf("**************************\n");
}

習題二
一、選擇題
1~10: B C D C D D B C A A
11~20: D A C D B D B A C D

二、填空題
1.字母 L 或字母 l
2. %c(或字元) 、 %d(或整數)
3. 在程序運行過程中,其值可以在一定的范圍內變化的量
4. '\0'
5. 小數形式 、 指數形式
6. 關鍵字 、 預定義標識符 、 用戶標識符
7. 字母 、 數字 、 下劃線 、 數字
8. 18
9. 2 、 1 、 30
10. 雙精度實數或double
11. 賦值 、 逗號 、 20 、 20 、 20 、 4
12. 4 、 4

習題三
一、選擇題
1~10: B C C B C C C D C C
註:第4題答案D為: 10 22↙
33↙

二、填空題
1. printf 、 scanf
2. h
3. "]"
4. '\0'
5. e 、 E
6. 6
7. s 、 c
8. *
9. - 、
10. i

三、編程題
1. 編寫程序,從鍵盤輸入一個以秒為單位的時間數,將其換算成幾小時幾分幾秒,然後進
行輸出。例如輸入的時間為4258秒,則輸出結果為:1小時10分58秒。
#include <stdio.h>
void main()
{
int x,h,m,s;
scanf("%d",&x);
h=x/3600; m=x600/60; s=x`;
printf("%ds=%d:%d:%d!\n",x,h,m,s);
}
2. 編寫程序,讀入三個整數給變數a、b、c,然後交換它們中的數,把a中原來的值給b,
把b中原來的值給c,把c中原皮念來的值給a。
#include <stdio.h>
void main()
{
int a,b,c,t;
printf("input a b c:");
scanf("%d%d%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d\n",a,b,c);
t=a;a=c;c=b;b=t;
printf("a=%d,b=%d,c=%d\n",a,b,c);
}

習題四
一、填空題
1. 1 、喚握圓 0
2. ! % + <= != && || =
3. x==0
4. 0 、 2
5. 20 、 0 、 0

二、選擇題
1~7:D D C A D D C

三、程序閱讀題
1. 595959
2. 0.500000
3. 1
4. 2
5. 6
6. a=2,b=1
7. pass
warn
8. 1

四、編程題
1. 設a為整型變數且其值大於零,請將以下if語句改寫成switch語句。
if(a<60) m=1;
else if(a<70) m=2;
else if(a<80) m=3;
else if(a<90) m=4;
else m=5;
方法1
#include <stdio.h>
void main()
{
int a,m;
scanf("%d",&a);
switch(a/10)
{
case 0:case 1:case 2:case 3:
case 4:case 5:m=1;break;
case 6:m=2;break;
case 7:m=3;break;
case 8:m=4;break;
default:m=5;break;
}
printf("m=%d\n",m);
}
方法2
#include <stdio.h>
void main()
{
int a,m;
scanf("%d",&a);
m=0;
switch(a/10)
{
default:m ;
case 8:m ;
case 7:m ;
case 6:m ;
case 5:case 4:case 3:case 2:
case 1:case 0:m ;
}
printf("m=%d\n",m);
}
2. 編寫程序,從鍵盤輸入一個整數,列印出它是奇數還是偶數。
#include <stdio.h>
void main()
{
int a;
scanf("%d",&a);
if(a%2==1)
printf("%d is a odd number!\n",a);
else
printf("%d is a even number!\n",a);
}
3. 編寫程序,從鍵盤輸入一個字元,判別它是否是小寫字母,如果是,將它轉換為大寫字母;如果不是,不轉換。然後輸出最後得到的字元。
#include <stdio.h>
void main()
{
char ch;
scanf("%c",&ch);
if(ch>='a' && ch<='z')
ch=ch-32;
printf("%c\n",ch);
}
4. 編寫程序,從鍵盤輸入一個不多於4位的正整數,列印出它是幾位數。
#include <stdio.h>
void main()
{
int x,n;
scanf("%d",&x);
if(x>1000) n=4;
else if(x>100) n=3;
else if(x>10) n=2;
else n=1;
printf("%d\n",n);
}
5. 當一個人的月收入在3500元以下時免稅;月收入在3500元到5000元之間時,超過3500的部分納稅3%;月收入在5000元以上時,3500至5000之間的部分納稅3%,超過5000的部分納稅10%。編寫程序從鍵盤輸入月收入income,計算並輸出應交稅款tax。
#include <stdio.h>
void main()
{
int income;
float tax;
scanf("%d",&income);
if(income<=3500) tax=0;
else if(income<=5000) tax=0.03*(income-3500);
else tax=0.03*(5000-3500) 0.10*(income-5000);
printf("tax=%f\n",tax);
}
6. 迴文是指正讀和反讀都一樣的數或字元串。例如:12321、55455、35553等都是迴文。請編寫一個程序,從鍵盤上讀取一個包含五位數字的長整數,並判斷它是否是迴文。(提示:用除法運算和求余運算把一個數的個位、十位、百位、千位等分別分離出來。)
#include <stdio.h>
void main()
{
long x;
int a,b,d,e;
scanf("%ld",&x);
a=x/10000;
b=x000/1000;
d=x0/10;
e=x;
if(a==e && b==d)
printf("%ld is huiwen!\n",x);
else
printf("%ld is not huiwen!\n",x);
}

習題五
一、閱讀題
1. 8
2. 4321
3. X
4. -1
5. 23
6. 52
7. 5
8. 3

二、填空題
1. 18
2. 2
3. b=i 1
4. 17
5. i<=9 、 j%3!=0
6. d=1.0 、 k=k 1 、 k<=10

三、選擇題
1~8:A D D A B D D A

四、編程題
1. 編寫程序,列印出所有的「水仙花數」,所謂「水仙花數」是指一個三位數,其各位數字的立方之和等於該數本身。例如,407是一個「水仙花數」,因為407=43 03 73。(註:若將題意改為列印出最大的或最小的「水仙花數」,則應將循環語句作如何調整?)。
#include <stdio.h>
void main()
{
int a,b,c,k;
for(k=100;k<=999;k )
//求最大的「水仙花數」改用:for(k=999;k>=100;k--)
{
a=k/100;b=k/10;c=k;
if(k==a*a*a b*b*b c*c*c)
{
printf("]",k);
//求最大或最小」水仙花數」時增加一個語句:break;
}
}
printf("\n");
}
2. 編寫程序,輸出1980~2880年所有閏年的年號。每輸出5個年號換一行。
#include <stdio.h>
void main()
{
int k,flag,n=0;
for(k=1980;k<=2880;k )
{
flag=(k%4==0)&&(k0!=0)||(k@0==0);
if(flag)
{
printf("]",k);
n ;
if(n==0)
printf("\n");
}
}
printf("\n");
}
3. 編寫程序,求1-3 5-7 …-99 101的值。
#include <stdio.h>
void main()
{
int n,t=1,s=1;
for(n=3;n<=101;n =2)
{ t=-t; s=s t*n; }
printf("s=%d\n",s);
}
4. 編寫程序,計算並輸出下列級數的前n項之和Sn。n的值從鍵盤輸入。

#include <stdio.h>
void main()
{
int fz,fm,n,i;
float s,t;
fz=2;fm=1;s=0;
scanf("%d",&n);
for(i=1;i<=n;i )
{
t=(1.0*fz)/fm;
s=s t;
fz=fz fm;
fm=fz-fm;
}
printf("s=%f\n",s);
}
5.編寫程序,求e的值e=1 1/1! 1/2! 1/3! 1/4! … 1/n!
#include <stdio.h>
void main()
{
int n,i;
float t,fm=1,e=1;
scanf("%d",&n);
for(i=1;i<=n;i )
{ fm=fm*i; t=1.0/fm; e=e t; }
printf("n=%d,e=%f\n",n,e);
}
6. 已知某球從80米高度自由落下,落地後反復彈起,每次彈起的高度都是上次高度的一半。求此球8次落地所經過的總路程。
#include <stdio.h>
void main()
{
int n;
float s=80,h=s/2;
for(n=2;n<=8;n )
{
s=s 2*h;
h=h/2;
}
printf("s=%f\n",s);
}
7. 用牛頓迭代法求高次方程f(x)=2x3-4x2 5x-18=0的根(約為2.466)。
註:牛頓迭代公式為:x2=x1-f(x1)/f』(x1),其中f』(x1)為導函數在點x1的值。
#include <stdio.h>
#include <math.h>
void main()
{
float x,f,f1;
x=8; // x的初值可為任意值
do
{ f=2*x*x*x-4*x*x 5*x-18; f1=6*x*x-8*x 5; x=x-f/f1;
}while(fabs(f)>0.00001);
printf("x=%f,f=%f\n",x,f);
}
8. 有這樣一些真分數:其分子和分母都是兩位正整數,且分子的個位數與分母的十位數相同,如果把該分數的分子的個位數與分母的十位數同時去掉,所得到的新的分數正好與原分數的值相等,如26/65=2/5。試編程求出所有滿足上述條件的真分數。
#include <stdio.h>
void main()
{
int a,b,c; // 設這個分數為ab/bc
for(a=1;a<=9;a )
for(b=1;b<=9;b )
for(c=1;c<=9;c )
if((a<c)&&(1.0*a/c==(a*10.0 b)/(b*10.0 c)))
printf("%d/%d=%d%d/%d%d=%f\n",a,c,a,b,b,c,1.0*a/c);
}
9. 編寫程序,求數列:1,(1 1/2),(1 1/2 1/3),(1 1/2 1/3 1/4),(1 1/2 1/3 1/4 1/5),…的前10項之和。
#include <stdio.h>
void main()
{
float s,t;
int i;
s=0,t=0;
for(i=1;i<=10;i )
{ t=t 1.0/i; s=s t; }
printf("s=%f\n",s);
}
10. 編寫程序,求3到100之間的所有素數之和。
#include <stdio.h>
void main()
{
int s,i,k,flag;
s=0;
for(i=3;i<=100;i )
{
flag=1;
for(k=2;k<i;k )
if(i%k==0)
{ flag=0; break; }
if(flag)
{ s=s i; printf("M",i); }
}
printf("\nsum=%d\n",s);
}
11. 編寫程序,求Fibonacci數列中大於800的最小的一個數(結果為987)。
#include <stdio.h>
void main()
{
int f1=1,f2=1,f3;
while(f3<=800)
{
f3=f1 f2;
f1=f2;
f2=f3;
}
printf("Fibonacci數列中大於800的最小數是]\n",f3);
}

習題六
一、選擇題
1~10:D D C B A B C D C D
11~20:A B B C C D C A B B
21~30:B B D D D D C D C A
註:第16題答案C為:字元串"SHORT"與"SHORT "相等
第19題題目為:已知:char str1[10],str2[10]={"books"};則在程序中能夠將字元串
"books"賦給數組str1的正確語句是 。
第21題題目為:設有:char str1[20]="abcde",str2[20]="xyz";則執行語句:
printf("%d",strlen(strcpy(str1,str2)); 的結果是 。
第28題答案D為: aaaa
bbbb

cccc dddd

二、填空題
1. 9 、 0
2. 先行後列
3.

『柒』 c語言里,怎樣判斷共用體union的數據類型

我剛好也在考慮此問題,答案給各位補充完整:

ps:<C語言程序設計現代方法第二版>,該書明確說明。要判斷設置的是什麼類型的值只有增加標識。

可以這樣設計數據結構:

structmydata{
intsetflag;
union{
intstate;
char*msg;
}data;
};

mydata 自己設計得數據類型,setflag 標識設置的是哪個成員,從上到下可以從union的第一個成員開始:

如果第一個成員被設置,則setflag的最低位置1,其他位清零;

如果第二個成員被設置則,則setflag的倒數第二位置1,其他位清零;

以此類推,int一般是32位的,union最多可以有32個成員,成員多了可以再擴展標識變數(比如使用64位的long long 類型)。

然後寫一套操作函數:初始化mydata,設置成員值,獲取當前設置的成員值(可返回具體類型,union的每個成員需要對應一個get),判斷當前某個成員被設置,判斷當前是否設置過成員值。

自己實現的一套訪問函數簽名,如下:

//不知道編譯器會在setflag中放啥值,這個函數用來把setflag初始化為0
voidinitiate(structmydata*ptrdata);
//設置值得時候同時設置標識位
voidset(constvoid*ptrval,intbit);
//成功返回0,失敗返回-1,ptrintval指向預先分配的int地址空間
intgetstate(int*constptrintval);
//成功返回指向msg的指針,失敗返回NULL
char*getmsg();
//判斷當前設置的是哪個成員變數,取值1到32。如果給定的位被設置返回1,否則返回0
intissetmember(intflag);
//判斷當前是否設置過成員,setflag=0說明沒有設置過返回0,否則設置過返回1
intisset();

//initiate必須先調用,否則後面的判斷會有問題。弄得有點像C++或java的類了。

『捌』 c語言程序設計:現代方法 第二版p44中有一段語句: i = 2; j = i*i++; 的問題。

別聽他們胡說 書上說得對 未定義行為指 在表達式[兩個順序點之間]裡面 多次修改同行此一個變數

用編譯器得到同樣的結果也說明不了什麼
i*i++ 是這樣的做法
那麼編譯器怎麼實現就不好說了

原文
C語言標准明確說過:
Undefined behavior:
Between two sequence points, an object is modified more than once, or is modified and the prior value is read other than to determine the value to be stored (6.5).

譯文
在序列點間
多次修改同一個對象(i=++i/++i + ++i/ i++ + ++i/...)
除當前修改的需要存儲的值的以外再讀取該值(i+i++/++i*i/...)
或者說在修改的同時在別的表達式中再用這個對象
是未定義的行為

i*i++
可以對應 在序列點之間 在當前修改姿帶漏需要存儲的值以外再讀取該值 後面的例子 有跡爛
i+i++
這個和你的i*i++ 雷同

『玖』 c語言程序設計 現代方法 第二版 課後答案 (美 K.N.king)

if (entity != null) {
final InputStream instream = entity.getContent();
try {
final StringBuilder sb = new StringBuilder();
final char[] tmp = new char[1024];
final Reader reader = new InputStreamReader(instream,encoding);
int l;
while ((l = reader.read(tmp)) != -1) {
sb.append(tmp, 0, l);
}
body = sb.toString();
} finally {
instream.close();
EntityUtils.consume(entity);
}

『拾』 現代編譯原理c語言描述 這本書有答案嗎

新手的話建議可以看看譚浩強的C程序設計,基本語法會了,可以看下數據結構和演算法,接下來看計算機組成原理-->編譯原理-->操作系統-->計算機網路。這些學好了,可以深入研究演算法,另外可以看點計算機圖形學和人工智慧。程序最核心的是演算法,所以數學基礎要好,不能只能做一輩子碼奴。其次英語要好,只要能看懂一般的英文文檔就OK了。給你介紹一些書。1、演算法計算機程序設計藝術-------Donald.E.Knuth----------演算法「倚天屠龍」雙劍演算法導論-----------------ThomasH.Cormen--------演算法「倚天屠龍」雙劍離散數學及其應用----------KennethH.Rosen具體數學—計算機科學基礎--------Donald.E.Knuth2、數據結構數據結構C++數據結構演算法與應用3、C語言C程序設計語言(第2版·新版)---C語言「倚天屠龍雙劍」---BrianW.Kernighan「C語言之父」CPrimerPlus中文版(第五版)--------C語言「倚天屠龍雙劍」---StephenPrataC程序設計(第三版)---------------------------譚浩強C語言大全(第四版)---------------------------HERBERTSCHILDTC語言介面與實現:創建可重用軟體的技術-------------DAVIDR.HANSONC語言參考手冊(原書第5版)--------------------------SamuelP.HarbisonC程序設計教程---------------------------------H.M.Deitel/P.J.DeitelC陷阱與缺陷-----------------------------------AndrewKoenig5、C++C++程序設計語言(特別版)---c++八大金剛----BjarneStroustrup「C++之父」C++Primer(第3版)中文版----c++八大金剛---StanleyB.LippmanC++Primer(第4版)中文版----c++八大金剛---StanleyB.LippmanC++標准程序庫—自修教程與參考手冊--c++八大金剛--NicolaiM.JosuttisC++語言的設計和演化-----c++八大金剛----BjarneStroustrup「C++之父」深度探索C++對象模型---c++八大金剛----StanleyB.LippmanEssentialC++中文版---c++八大金剛---StanleyB.LippmanEffectiveC++中文版2ndEdition-----c++八大金剛------ScottMeyersMoreEffectiveC++中文版----c++八大金剛------ScottMeyersC++編程思想(第2版)第1卷:標准C++導引--------BruceEckelC++編程思想(第2版)第2卷:實用編程技術--------BruceEckelC++程序設計--------------------------譚浩強C++程序設計教程(第2版)--------------錢能C++PrimerPlus(第五版)中文版---StephenPrata6、操作系統深入理解計算機系統(修訂版)-------RANDALE.BRYANT計算機操作系統(第六版)7、編譯原理跟我一起寫makefile《編譯原理技術和工具》-------Alfred-------龍書《現代編譯原理-C語言描述》-----------AndrewW.Appel-----------虎書《高級編譯器設計與實現》-----------StevenS.Muchnick-----------鯨書8、網路計算機網路第四版中文版-----------AndrewS.Tanenbaum-------網路編程三劍客TCP/IP詳解3卷本--------------------RichardStevens----網路編程三劍客UNIX網路編程2卷本--------------------RichardStevens----網路編程三劍客用TCP/IP進行網際互聯-----------DouglasE.Comer高級TCP/IP編程-------------------JonC.SnaderC++網路編程-----------------------DouglasSchmidtUNIX環境高級編程(第2版)--------------------RichardStevens9、LinuxLinux內核設計與實現Linux內核完全注釋LINUX內核分析及編程

熱點內容
美團商家新增的技術伺服器是什麼 發布:2024-04-27 12:12:35 瀏覽:343
得到腳本 發布:2024-04-27 12:06:25 瀏覽:936
三星手機鎖屏忘記密碼了怎麼辦 發布:2024-04-27 12:05:41 瀏覽:519
python基礎語言 發布:2024-04-27 11:54:40 瀏覽:84
ioshttp伺服器搭建 發布:2024-04-27 11:40:26 瀏覽:913
忘記密碼如何強制刷機vivo 發布:2024-04-27 11:28:40 瀏覽:385
c語言讀取指定行 發布:2024-04-27 11:28:30 瀏覽:52
c語言中a10什麼意思 發布:2024-04-27 10:45:43 瀏覽:58
物聯網中ftp是什麼意思 發布:2024-04-27 10:41:17 瀏覽:986
銀行密碼保護在哪裡 發布:2024-04-27 10:25:23 瀏覽:189